基于matlab的線性平滑濾波圖像增強(qiáng)并給出其PSNR指標(biāo)
最簡(jiǎn)單的平滑濾波是將原圖中一個(gè)像素的灰度值和它周圍鄰近8個(gè)像素的灰度值相加,然后將求得的平均值(除以9)作為新圖中該像素的灰度值。這種方法稱為鄰域平均法,它采用模板計(jì)算的思想,模板操作實(shí)現(xiàn)了一種鄰域運(yùn)算,即某個(gè)像素點(diǎn)的結(jié)果不僅與本像素灰度有關(guān),而且與其鄰域點(diǎn)的像素值有關(guān)。
鄰域平均處理方法是以圖像模糊為代價(jià)來減小噪聲的,且模板尺寸越大,噪聲減小的效果越顯著。如果f(x,i) 是噪聲點(diǎn),其鄰近像素灰度與之相差很大,采用鄰域平均法就是用鄰近像素的平均值來代替它,這樣能明顯消弱噪聲點(diǎn),使鄰域中灰度接近均勻,起到平滑灰度的作用。因此,鄰域平均法具有良好的噪聲平滑效果,是最簡(jiǎn)單的一種平滑方法.
Matlab代碼:
I= imread('1.jpg');%自己任意給出一張圖片
I=im2double(I);
H=rgb2gray(I);
J=imnoise(H, 'salt& pepper', 0.02);
h1=fspecial('average',3);
h2=fspecial('average',5);
h3=fspecial('average',7);
K1=filter2(h1, J);
K2=filter2(h2, J);
K3=filter2(h3, J);
subplot(221);imshow(J);title('0');
subplot(222);imshow(K1);title('1');
subplot(223);imshow(K2);title('2');
subplot(224);imshow(K3);title('3');
[g w]=size(K1);
L=imresize(K1,[floor(g/2)floor(w/2)]);
L=imresize(L,[gw]);
M=im2uint8(K1);
N=im2uint8(L);
B=8;
MAX=2^B-1;
MES=sum(sum((M-N).^2))/(g*w);
PSNR=20*log10(MAX/sqrt(MES))
[g w]=size(K2);
L=imresize(K2,[floor(g/2)floor(w/2)]);
L=imresize(L,[gw]);
M=im2uint8(K2);
N=im2uint8(L);
B=8;
MAX1=2^B-1;
MES1=sum(sum((M-N).^2))/(g*w);
PSNR1=20*log10(MAX1/sqrt(MES1))
[g w]=size(K3);
L=imresize(K3,[floor(g/2)floor(w/2)]);
L=imresize(L,[gw]);
M=im2uint8(K3);
N=im2uint8(L);
B=8;
MAX2=2^B-1;
MES2=sum(sum((M-N).^2))/(g*w);
PSNR2=20*log10(MAX2)/sqrt(MES2)
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |