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'
1 clear all; 2 i=imread('./pic/lena256.bmp'); 3 4 h=fspecial('sobel'); 5 h=h';
6 z=imfilter(i,h); 7 8 figure; 9 subplot(1,2,1) 10 imshow(i); 11 title('原始图像') 12 subplot(1,2,2) 13 imshow(z) 14 title('垂直锐化滤波')
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')
1 clear all; 2 img = imread('./pic/lena256.bmp'); 3 nimg=imnoise(img,'salt & pepper',0.05); 4 figure; 5 subplot(1,2,1); 6 imshow(img); 7 subplot(1,2,2); 8 imshow(nimg);
4、多图像平均法,在相同条件下,进行M次重复拍摄的图像相加,取平均作为输出值。z=imlincomb(k1,A1,k2,A2,k3,A,3...);
z=k1*A1+k2*A2+k3*A3...
例子:
1 clear all; 2 img=imread('./pic/lena256.bmp'); 3 n1=imnoise(img,'gaussian',0,0.02); 4 n2=imnoise(img,'gaussian',0,0.02); 5 n3=imnoise(img,'gaussian',0,0.02); 6 n4=imnoise(img,'gaussian',0,0.02); 7 n5=imnoise(img,'gaussian',0,0.02); 8 9 final = imlincomb(0.2,n1,0.2,n2,0.2,n3,0.2,n4,0.2,n5); 10 figure; 11 subplot(2,2,[1 2]); 12 imshow(img); 13 title('原始图像'); 14 subplot(2,2,3); 15 imshow(n1); 16 title('添加高斯噪声后的图像'); 17 subplot(2,2,4); 18 imshow(final); 19 title('平均后的图像');