基于matlab的線性平滑濾波圖像增強并給出其PSNR指標 最簡單的平滑濾波是將原圖中一個像素的灰度值和它周圍鄰近8個像素的灰度值相加,然后將求得的平均值(除以9)作為新圖中該像素的灰度值。這種方法稱為鄰域平均法,它采用模板計算的思想,模板操作實現了一種鄰域運算,即某個像素點的結果不僅與本像素灰度有關,而且與其鄰域點的像素值有關。 鄰域平均處理方法是以圖像模糊為代價來減小噪聲的,且模板尺寸越大,噪聲減小的效果越顯著。如果f(x,i) 是噪聲點,其鄰近像素灰度與之相差很大,采用鄰域平均法就是用鄰近像素的平均值來代替它,這樣能明顯消弱噪聲點,使鄰域中灰度接近均勻,起到平滑灰度的作用。因此,鄰域平均法具有良好的噪聲平滑效果,是最簡單的一種平滑方法. 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)
|