基于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)
|