使用維納濾波對(duì)噪聲圖像恢復(fù)
題目及濾波圖像恢復(fù)簡(jiǎn)介
題目
將維納濾波應(yīng)用于圖像恢復(fù),假設(shè)退化圖像為一加性高斯白噪聲污染的圖像,試用逆濾波方法和維納濾波方法恢復(fù)圖像,并比較其效果;查閱文獻(xiàn),嘗試使用迭代維納濾波的方法進(jìn)一步提高效果,注意構(gòu)建正確的修正項(xiàng)。
逆濾波用于圖像恢復(fù)簡(jiǎn)介
逆濾波法是一種從添加了噪聲的圖像中恢復(fù)原始圖像的技術(shù),它的基本思想是使用濾波器和濾波器的逆濾波器。在這種方法中,首先用一個(gè)適當(dāng)?shù)臑V波器(如維納濾波器)對(duì)污染圖像進(jìn)行濾波,然后再使用該濾波器的逆濾波器對(duì)濾波后的圖像進(jìn)行濾波,從而恢復(fù)出原始圖像。由于在濾波器的逆濾波器中,噪聲的影響會(huì)被抵消,因此可以有效地恢復(fù)原始圖像。
維納濾波用于圖像恢復(fù)簡(jiǎn)介
維納濾波是一種基于信號(hào)模型的迭代濾波算法,它假設(shè)信號(hào)為有噪聲的線性系統(tǒng)動(dòng)態(tài)響應(yīng)和加性高斯噪聲的組合。維納濾波的基本思想是,首先估計(jì)信號(hào)和噪聲的模型參數(shù),然后根據(jù)模型參數(shù)來(lái)構(gòu)造濾波器,最后使用濾波器消除噪聲。
維納濾波可以對(duì)噪聲圖像進(jìn)行恢復(fù),因?yàn)樗梢愿鶕?jù)信號(hào)和噪聲的模型參數(shù)構(gòu)造濾波器,然后通過(guò)濾波器消除噪聲,從而恢復(fù)噪聲圖像。
逆濾波與維納濾波的原理
逆濾波的原理
一般來(lái)說(shuō),圖像的退化模型可以表示為

其中,g(x,y) 表示退化后的圖像,h(x,y)為點(diǎn)擴(kuò)散函數(shù),f(x,y) 為原始圖像,n(x,y) 為引入的噪聲。在頻域上面可以表示為

將其變換到頻域可以得到

所以

將其進(jìn)行傅里葉反變換可以得到復(fù)原圖像。
維納濾波的原理
維納濾波是另外一種比較常見的圖像復(fù)原方法,計(jì)算復(fù)雜度相對(duì)較小并且考慮了噪聲的影響。通常情況下,假設(shè)圖像和噪聲是相互獨(dú)立的且至少存在一個(gè)均值為零,恢復(fù)圖像和模糊圖像兩者的灰度級(jí)呈線性關(guān)系時(shí),維納濾波可表示為

其中,Sn(u,v)為噪聲功率譜,Sf(u,v)為原圖像功率譜。
Matlab仿真結(jié)果
逆濾波仿真結(jié)果

由上圖可見,原始圖像是一幅極光景色且無(wú)肉眼可見噪聲,經(jīng)過(guò)加入高斯白噪聲后,圖像中出現(xiàn)了隨機(jī)位置的細(xì)小的白點(diǎn),經(jīng)過(guò)逆濾波恢復(fù)后,圖像中的噪點(diǎn)明顯減少,但同時(shí)也會(huì)過(guò)濾掉原始圖像的與噪點(diǎn)類似的星星。
維納濾波仿真結(jié)果

經(jīng)過(guò)維納濾波恢復(fù)后,圖像中的噪點(diǎn)明顯減少,但是與逆濾波不同,維納濾波后的圖像中的星星并沒有被認(rèn)為是噪點(diǎn)而完全濾除。
迭代維納濾波仿真結(jié)果

如上圖所示,迭代維納濾波對(duì)于圖像恢復(fù)有著很好的效果,能夠?yàn)V除大部分的噪點(diǎn)。經(jīng)過(guò)數(shù)次迭代后,圖像已經(jīng)恢復(fù)的很好。迭代次數(shù)達(dá)到一定上限后,效果則變化不明顯。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-446825.html
代碼文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-446825.html
% Load image
img = imread('C:\Users\songy\OneDrive\Pictures\sample.png');
% Convert to grayscale
img_gray = rgb2gray(img);
% Add Gaussian white noise
noisy_img = imnoise(img_gray, 'gaussian', 0, 0.01);
% Perform Wiener filtering
filtered_img = wiener2(noisy_img, [5 5]);
% Display the filtered image
subplot(1,3,1)
imshow(img_gray)
title('原圖')
subplot(1,3,2)
imshow(noisy_img)
title('加入高斯白噪聲的圖像')
subplot(1,3,3)
imshow(filtered_img)
title('維納濾波后的圖像')
%迭代部分,單獨(dú)執(zhí)行
img1=wiener2(noisy_img, [5 5]);
img2=wiener2(img1, [5 5]);
img3=wiener2(img2, [5 5]);
img4=wiener2(img3, [5 5]);
subplot(2,2,1)
imshow(noisy_img)
title('帶噪聲圖')
subplot(2,2,2)
imshow(img1)
title('第一次迭代')
subplot(2,2,3)
imshow(img2)
title('第二次迭代')
subplot(2,2,4)
imshow(img3)
title('第三次迭代')
%% 加載圖像
I=imread('C:\Users\songy\OneDrive\Pictures\sample.png');
%% 生成維納濾波器
% Convert to grayscale
img_gray = rgb2gray(I);
% Add Gaussian white noise
noisy_img = imnoise(img_gray, 'gaussian', 0, 0.01);
N=5; % 維納濾波器大小
sigma=2; % 標(biāo)準(zhǔn)差
h=fspecial('gaussian',N,sigma);
%% 逆濾波處理
J=imfilter(noisy_img,h,'symmetric');
%% 顯示結(jié)果
figure;
subplot(1,3,1);
imshow(img_gray);
title('原始圖像');
subplot(1,3,2);
imshow(noisy_img);
title('加入高斯白噪聲');
subplot(1,3,3);
imshow(J);
title('逆濾波恢復(fù)后的圖像');
到了這里,關(guān)于統(tǒng)計(jì)信號(hào)處理-使用維納濾波和逆濾波對(duì)圖像進(jìn)行恢復(fù)-matlab仿真-附代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!