3
Thc hành xlý nh - Tháng 10 năm 2013 Trn Nguyn Minh Thư ([email protected] ) 1 Bui 3: Xl ý nh cơ bn(tt) + Xl ý lân cn 1. Bài tâp 1. Biến đổi tuyến tính tchc đồ Gi ý: Xem li công thc biến đổi tuyến tính Duyt qua tt ccác đim nh, tìm giá trmin, max Duyt qua giá trcác đim nh ln na, thay đổi giá trcác đim nh bng công thc đã hc phn lý thuyết. Sdng nh Koala_Thieusang.jpg để có ththy rõ sthay đổi 2. Cân bng tchc đồ (histogram equalization) Gi ý : Xem li công thc cân bng tchc đồ Duyt qua các pixel mt ln để tính tchc đồ h[x]. Chun hóa tchc đồ h[x] thành hn[x] Tính hàm mt độ xác sut C[x]. Duyt qucác pixel mt ln na để tính giá trđầu ra theo công thc phn lý thuyết. Sdng nh Koala_Thieusang.jpg để có ththy rõ sthay đổi II. Xlý lân cn 1. Hướng dn thc hành Viết đon chương trình để sdng blc trung bình ci thin cht lượng nh. Bước 1: Viết code cho phép mhp hi hoi chn tên file và gán tên file vào ô txtTenFile. Bước 2: Viết code xlý và hin thnh xlý. Duyt tng đim nh, thay thế giá trvoid MainWindow::on_btnChon_clicked() { QString fname = QFileDialog::getOpenFileName(this,"open file"); if (fname.isEmpty()) return; ui->txtTenFile->setText(fname); }

Xu ly anh 2014_b3 CTU

Embed Size (px)

Citation preview

Page 1: Xu ly anh 2014_b3 CTU

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

Trần Nguyễn Minh Thư ([email protected] ) 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); }

Page 2: Xu ly anh 2014_b3 CTU

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

Trần Nguyễn Minh Thư ([email protected] ) 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(); }

Page 3: Xu ly anh 2014_b3 CTU

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

Trần Nguyễn Minh Thư ([email protected] ) 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