2016-03-13 200 views
0

如何恢復含鹽的RGB圖像&在Matlab中使用維納濾波器應用椒鹽濾波器?這是我的代碼在matlab中使用維納濾波器去除椒鹽噪音

image=imread('1.jpg'); 
sandpimage = imnoise(image, 'salt & pepper', 0.05); 

我想我必須使用deconvwnr功能,但它需要一個第二參數PSF給予

+0

.jpg圖像是Matlab中的3D真彩色圖像,如果您可以在.tif或.png(它們都支持2D圖片)中轉換此類圖片,則可以使用'wiener2() '或者中值濾波器('midfilt2()'),它在標準圖像恢復方面也有很好的表現。 – Alessiox

+0

我已經將圖像轉換爲.png和.tiff,並沒有幫助。仍在收到 '使用wiener2錯誤> ParseInputs(第139行) WIENER2不支持將3D真彩圖像作爲輸入。' 而我不能使用中位數,我需要這個完全維納過濾器 – Sheldon

回答

1

分別應用過濾器,以每種顏色層(R,G,B):

sandpimage_filtered = sandpimage; 

for layer=1:3 
    sandpimage_filtered(:,:,layer) = wiener2(sandpimage(:,:,layer), [5 5]); 
end 

%//plot the images to see the difference 
subplot(2,1,1) 
imshow(sandpimage) 
subplot(2,1,2) 
imshow(sandpimage_filtered) 

在上面的代碼中,我使用的窗口大小爲5x5。您可以更改wiener2函數中的窗口大小

+0

工程太棒了!還有一件事,我如何找到過濾故障?乾杯! – Sheldon

+0

@Sheldon過濾錯誤?我不熟悉這個術語:P – Lincoln

+0

我的意思是,我如何比較兩張圖像以獲得它們之間的差異百分比,以得出過濾器效果如何的結論?對不起,有點複雜:) – Sheldon