III. Mô phỏng thử nghiệm Wiener Filter
2. Tiến hành thử nghiệm
Quy trình:
∗ Dùng 1 ảnh có chất lượng tốt, coi như là ảnh lý tưởng ( không có sự xuống cấp
hay ảnh hưởng của nhiễu và quang học)
∗ Tạo ra sự xuống cấp lên ảnh như tạo nhiễu hay làm tác đông quang học do
chuyển đông
∗ Khôi phục lại bằng các hàm sử dụng bô lọc weiner được chương trình Matlab
cung cấp sẵn.
Thực hiện:
∗ Đọc vào ảnh đa mức xám lưu ma trận điểm ảnh
I = imread('D:\lena.jpg'); imshow(I); title('anh goc');
∗ Tạo nhiễu ngẫu nhiên, nhiễu trắng Gaussian:
noise_mean = 0; noise_var = 0.01;
J = imnoise(I, 'gaussian', noise_mean, noise_var); imshow(J); title('anhnhieu'); ∗ Khôi phục ảnh bằng hàm wiener2: K = wiener2(J,[5 5]); figure, imshow(K); title('anhphuchoi'); Kết quả:
Sau khi quan sát ảnh khôi phục có thể thấy nhiễu đã giảm, nhưng đồng thời đường
nét cũng không còn rõ ràng nữa, điều này là hiển nhiên.
Thuật toán mà wiener2() sử dụng:
Với NM chỉ lân cận của mỗi điểm ảnh trong hình ảnh. wiener2() sau đó tạo ra môt
bô lọc Wiener pixel thông minh bằng cách sử dụng những ước tính này
Trong đólà phương sai nhiễu. Nếu đúng nhiễu không phải là nhất
định, wiener2() sử dụng trung bình của tất cả các ước tính chênh lệch địa phương.
Rõ ràng từ 2 ảnh ta có thể thấy ảnh lọc bằng Wiener 2 sử dụng phương pháp
adaptive Wiener ảnh giữ lại nhiều đường nét hơn ảnh lọc bằng lọc trung vị
Thử nghiệm khôi phục ảnh bị ảnh hưởng quang học (do chuyển động) và có nhiễu
∗ Đọc ảnh vào coi như là ảnh lý tưởng
I = im2double(imread('D:\lena.jpg')); imshow(I); title('anh goc');
∗ Giả định rằng trong quá trình chụp ảnh ống kính bị rung hay do vật được chụp
chuyển đông nhanh qua ống kính khi chụp. Chúng ta sẽ mô phỏng hiện tượng
này bằng cách tạo ra đáp ứng xung H sau đó nhân chập ảnh với ảnh gốc để tạo
ra ảnh bị nhòe
H=fspecial('motion',11,5); anh_bi_mo=imfilter(I,H,'conv'); figure,imshow(anh_bi_mo); title('Anh bi lam mo');
∗ Sử dụng hàm imnoise để tạo thêm nhiễu gaussian lên ảnh
noise_mean = 0; noise_var = 0.001;
anh_bi_monhieu = imnoise(anh_bi_mo, 'gaussian', noise_mean, noise_var); figure, imshow(anh_bi_monhieu);
title('ANH BI LAM MO VA NHIEU');
∗ Khôi phục sử dụng bô lọc wiener có sử dụng ước lượng nhiễu khi biết phương
sai của hàm tạo nhiễu (noise_var).
uocluong_nhieu= noise_var / var(I(:));% day chinh la ti so SNR
wnr3 = deconvwnr(anh_bi_monhieu, H, uocluong_nhieu); % ti so SNR 0 figure, imshow(wnr3);
title('anh sau khi loc bang weiner');
Kết quả:
Ảnh thêm nhiễu nữa: Ảnh lọc bằng Wiener:
Thêm môt thử nghiệm nữa: ảnh mờ do chuyển đông + nhiễu Gauss được lọc bởi
lọc trung bình và kết quả sẽ được như sau:
I = imread('D:\lena_mo_nhieu.jpg'); H = fspecial('average');
K = imfilter(I,H,'conv');
Lọc bằng lọc ngược:
Có thể nhận xét từ các kết quả lọc Wiener và lọc trung bình thì lọc Wiener khôi
phục lại đường nét rõ ràng nhưng cũng đồng thời đã làm cho nhiễu tăng cường lên,
ảnh hưởng quang học (do chuyển đông) gần như đã mất. Ngược lại ảnh được lọc
loại bỏ. Đặc biệt lọc ngược rất nhạy cảm với nhiễu nên ta có được kết quả ảnh
Tài liệu tham khảo
Books:
1. Nhập môn xử lý ảnh Lương Mạnh Bá – Nguyễn Thanh Thủy
2. Adaptive filter theory (3rd_ed) Simon Haykin
3. Digital Image Processing 2nd by Rafael C. Gonzalez Richard E. Woods
Websites: 4. http://En.Wikipedia/wiki/Wiener_Filter 5. http://En.Wikipedia/wiki/Wiener_deconvolution 6. http://en.wikipedia.org/wiki/Least_mean_squares_filter 7. http://en.wikipedia.org/wiki/Minimum_mean-square_error 8. http://en.wikipedia.org/wiki/Wiener%E2%80%93Hopf_method 9. http://www.owlnet.rice.edu/~elec539/Projects99/BACH/proj2/wiener.html 10. http://www.mathworks.com/help/toolbox/images/ 11.