标题: 基于matlab的线性平滑滤波图像增强并给出其PSNR指标 [打印本页]

作者: CPTBTPTPYL    时间: 2018-8-24 15:49
标题: 基于matlab的线性平滑滤波图像增强并给出其PSNR指标

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







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1