GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
Xu ly anh 2014_b3 CTU
1. Thực hành xử lý ảnh - Tháng 10 năm 2013
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 đồ
void MainWindow::on_btnChon_clicked()
{
QString fname =
QFileDialog::getOpenFileName(this,"open file");
if (fname.isEmpty())
return;
ui->txtTenFile->setText(fname);
}
Trần Nguyễn Minh Thư (tnmthu@ctu.edu.vn ) 1
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ị
2. Thực hành xử lý ảnh - Tháng 10 năm 2013
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)
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++){
Trần Nguyễn Minh Thư (tnmthu@ctu.edu.vn ) 2
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
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();
}
3. Thực hành xử lý ảnh - Tháng 10 năm 2013
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ả
Trần Nguyễn Minh Thư (tnmthu@ctu.edu.vn ) 3
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