1、线性空间滤波函数Z = imfilter(X,H,option1,option2,...)

X为输入图像矩阵,H为m*n维的掩膜矩阵,H中的数据类型必须是double类型。掩膜矩阵可以是用户定义,也可以是系统定义好的。返回矩阵Z和X有相同的数据结构和数据类型。

整个函数处理的中间过程都会使用double类型,所以不必担心中间结果的精度。

2、获取系统掩膜函数H=fspecial(type,parameters)

type为字符串,制定了掩膜类型。如'average'表示均值掩膜。H为返回的掩膜矩阵,数据类型为double.

  • 正方形均值掩膜,h=fspecial('average',n),n为掩膜大小,n*n,默认值是3.
  • 高斯低通掩膜,h=fspecial('gaussian',n,sigma),n为掩膜大小n*n,默认为3.sigma为高斯分布方差。
  • 二维拉普拉斯掩膜'laplacian',h=fspecial('laplacian',alpha),alpha控制掩膜形状,范围是[0 1],默认值0.2,
  • 反锐化掩膜'unsharp',h=fspecial('unsharp',alpha)alpha控制掩膜形状,范围是[0 1],默认值0.2
  • 水平锐化掩膜'prewit',h=fspecial('prewit'),如果想用垂直锐化,则用h'
  • sobel水平锐化,h=fspecial('sobel'),如果想用垂直锐化,则用h'
 clear all;
i=imread('./pic/lena256.bmp'); h=fspecial('sobel');
h=h'; z=imfilter(i,h); figure;
subplot(1,2,1)
imshow(i);
title('原始图像')
subplot(1,2,2)
imshow(z)
title('垂直锐化滤波')

图像的线性空间滤波matlab实现-LMLPHP

3、添加噪声,是用函数Z=imnoise(A,type,parameters);其中A是要添加噪声的图像,type为添加噪声类型,.

  •   高斯噪声Z=imnoise(A,'gausiaan',m,d);其中m是均值,d是方差
  • 注意高斯噪声中,m,d指定时要注意转换,例如,对于uint8类型的图像,添加均值为100,方差为200的高斯噪声,
  • m=100/255,d=200/(255^2);
  • 椒盐噪声Z=imnoise(A,'salt & pepper',d),d范围是[0 ,1],表示噪声密度,即含噪声值的图像区域的百分比。默认值是0.05。噪声是最小值和最大值两种。
  • 泊松分布噪声,Z=imnoise(A,'poisson')
 clear all;
img = imread('./pic/lena256.bmp');
nimg=imnoise(img,'salt & pepper',0.05);
figure;
subplot(1,2,1);
imshow(img);
subplot(1,2,2);
imshow(nimg);

图像的线性空间滤波matlab实现-LMLPHP

4、多图像平均法,在相同条件下,进行M次重复拍摄的图像相加,取平均作为输出值。z=imlincomb(k1,A1,k2,A2,k3,A,3...);

z=k1*A1+k2*A2+k3*A3...

例子:

 clear all;
img=imread('./pic/lena256.bmp');
n1=imnoise(img,'gaussian',,0.02);
n2=imnoise(img,'gaussian',,0.02);
n3=imnoise(img,'gaussian',,0.02);
n4=imnoise(img,'gaussian',,0.02);
n5=imnoise(img,'gaussian',,0.02); final = imlincomb(0.2,n1,0.2,n2,0.2,n3,0.2,n4,0.2,n5);
figure;
subplot(,,[ ]);
imshow(img);
title('原始图像');
subplot(,,);
imshow(n1);
title('添加高斯噪声后的图像');
subplot(,,);
imshow(final);
title('平均后的图像');

图像的线性空间滤波matlab实现-LMLPHP

05-11 20:55