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