xu ly anh 2014_b3 ctu

Post on 30-Jul-2015

102 Views

Category:

Education

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Thực hành xử lý ảnh - Tháng 10 năm 2013

Trần Nguyễn Minh Thư (tnmthu@ctu.edu.vn ) 1

Buổi 3: Xử lý ảnh cơ bản(tt) + Xử lý lân cận

1. Bài tâp 1. Biến đổi tuyến tính tổ chức đồ

Gợi ý: • Xem lại công thức biến đổi tuyến tính • Duyệt qua tất cả các điểm ảnh, tìm giá trị min, max • Duyệt qua giá trị các điểm ảnh lần nữa, thay đổi giá trị các điểm ảnh bằng

công thức đã học ở phần lý thuyết. • Sử dụng ảnh Koala_Thieusang.jpg để có thể thấy rõ sự thay đổi

2. Cân bằng tổ chức đồ (histogram equalization)

Gợi ý : • Xem lại công thức cân bằng tổ chức đồ • Duyệt qua các pixel một lần để tính tổ chức đồ h[x]. • Chuẩn hóa tổ chức đồ h[x] thành hn[x] • Tính hàm mật độ xác suất C[x]. • Duyệt quả các pixel một lần nữa để tính giá trị đầu ra theo công thức ở phần

lý thuyết. • Sử dụng ảnh Koala_Thieusang.jpg để có thể thấy rõ sự thay đổi

II. Xử lý lân cận

1. Hướng dẫn thực hành Viết đoạn chương trình để sử dụng bộ lọc trung bình cải thiện chất lượng ảnh. Bước 1:

Viết code cho phép mở hộp hội hoại chọn tên file và gán tên file vào ô txtTenFile.

Bước 2:

Viết code xử lý và hiển thị ảnh xử lý. Duyệt từng điểm ảnh, thay thế giá trị

void MainWindow::on_btnChon_clicked() { QString fname = QFileDialog::getOpenFileName(this,"open file"); if (fname.isEmpty()) return; ui->txtTenFile->setText(fname); }

Thực hành xử lý ảnh - Tháng 10 năm 2013

Trần Nguyễn Minh Thư (tnmthu@ctu.edu.vn ) 2

của các điểm ảnh bằng giá trị trung bình của các điểm ảnh lân cận. (Chú ý các điểm biên)

Bước 3: Chạy thử chương trình và nhận xét kết quả.

Bước 4: Thay đổi kích thước mặt nạ bằng cách thay đổi các thông số margin và cell Thử với : margin = 1, cell = 9; margin = 2, cell = 25;

margin = 4, cell = 81 Nhận xét về sự thay đổi??

2. Bài tập thực hành

void MainWindow::on_btnMeanFilter_clicked() { QImage image_in(ui->txtTenFile->text()); int margin = 1; int cells = 9;

QImage image_out(image_in.width()-margin, image_in.height()-margin, QImage::Format_RGB32);

int sumR, sumG, sumB; QColor color;

for (int x=margin; x<image_in.width() - 1; x++) for (int y=margin; y<image_in.height() - 1; y++){ sumR = sumG = sumB = 0;

for (int i=-margin; i<=margin; i++) for (int j=-margin; j<=margin; j++){ color = image_in.pixel(x+j, y+i); sumR += color.red(); sumG += color.green(); sumB += color.blue();

} image_out.setPixel(x,y,qRgb(sumR/cells, sumG/cells, sumB/cells));

} QLabel *label = new QLabel(); label->setPixmap(QPixmap::fromImage(image_out)); label->show(); }

Thực hành xử lý ảnh - Tháng 10 năm 2013

Trần Nguyễn Minh Thư (tnmthu@ctu.edu.vn ) 3

Viết chương trình để tạo bộ lọc khử nhiễu muối tiêu (median) với độ lớn của mặt nạ là 3x3.

Gợi ý: Dựa vào phần code tham khảo của bộ lọc Trung bình, thực hiện vài thay đổi dựa theo công thức của bộ lọc Median (thay thế giá trị 1 điểm ảnh bằng các giá trị trung vị của các điểm ảnh lân cận)

• Ở mỗi điểm ảnh, ta truy xuất đến 8 điểm lân cận của nó và đem chứa vào 1 mảng.

• Dùng hàm qSort(h, h + 9) để sắp xếp mảng vừa tạo. (h là tên của mảng chứa các lân cận.)

• Thay thế giá trị của điểm đang xét bằng giá trị ở giữa

Nên dử dụng ảnh Lena_Noise_saft_Pepper.jpg kèm theo để thực thi. Kết quả mong đợi :

Ảnh gốc Ảnh kết quả

III. Bài tập về nhà Xem lại các phép xử lý đường biên và cài đặt các phép xử lý này

top related