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

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('平均后的图像');

原文地址:https://www.cnblogs.com/zhaopengcheng/p/5386595.html