fspecial函數


參考:

https://blog.csdn.net/chaolei3/article/details/79400658

函數原型

h = fspecial(type)
h = fspecial(type,para)
根據函數原型對fspecial函數作個說明,fspecial是用來生成濾波器(也叫算子)的函數,使用type參數來指定濾波器的種類,使用para來對具體的濾波器種類添加額外的參數信息。h就是生成的濾波器。

濾波器的種類

type參數通常可以取gaussian、average、disk、laplacian、log、prewitt

高斯濾波器

H = fspecial(‘gaussian’,hsize,sigma) ;
當type = ‘gaussian’時就是高斯濾波器了,size指定濾波器的大小,默認值是3×3,sigma指定濾波器的標准差,默認值是0.5。要深刻理解的是,sigma決定了高斯模糊核的模糊程度。

從數學上來講, 高斯半徑(sigma)對曲線形狀的影響,sigma越小,曲線越高越尖,sigma越大,曲線越低越平緩。因此高斯半徑越小,則模糊越小,高斯半徑越大,則模糊程度越大。換句話說,sigma越小,數值分布就越集中,sigma越大,數值分布就越分散。所以當我們使用sigma的值很大的時候,然后運用此模糊核對圖像處理,會使圖像更加模糊。

h1 = fspecial('gaussian',5,1)
h2 = fspecial('gaussian')
% 測試sigma的作用
f1 =fspecial('gaussian',7,1);
f2 =fspecial('gaussian',7,1000000);
%卷積
img_1 =imfilter(img,f1,'replicate');
img_100 =imfilter(img,f2,'replicate');
%顯示圖像,觀察效果
figure;imshow(img_1,[]);title('sigma =1');
figure;imshow(img_100,[]);title('sigma =1000000000');

均值濾波器

函數形式:H =fspecial(‘average’,hsize) ;生成均值濾波器,hsize同樣指定濾波器的尺寸,默認是3×3。

% 你會發現h1的每個元素都等於 1/(5×5)
h1 = fspecial('average',5)
% h1的每個元素值等於 1/(3×3)
h2 = fspecial('average')

圓形均值濾波器

H = fspecialL(‘disk’,RADIUS) 生成圓形區域均值濾波,參數為radius代表區域半徑,默認值為5。值得注意的是,雖然說是圓形,但是H卻是一個同上面一樣長寬都相等的方形。尺寸為:2×RADIUS+1。

h1 = fspecial('disk',3)

% [7 7]

size(h1)

拉普拉斯濾波器

H = fspecial(’laplacian’,ALPHA)
生成拉普拉斯算子,參數alpha用於控制算子形狀,取值范圍為【0,1】,默認值為0.2。值得注意的是,拉普拉斯濾波器不再像前述的濾波器那樣可以指定尺寸,而一定是3×3。因為其一定是二維的,所以比較適合二維的操作。

h1 =fspecial('laplacian')

拉普拉斯高斯濾波器

H = fspecial(‘log’,hsize,sigma) 為拉普拉斯高斯算子,有兩個參數,hsize表示模板尺寸,默認值為【3 3】,sigma為濾波器的標准差,單位為像素,默認值為0.5。

h1 =fspecial('log',3,0.2)
% 使用默認值
h2 =fspecial('log')

prewitt

H = fspecial(‘prewitt’) 用於邊緣增強,大小為【3 3】,無參數。也就是說這個濾波器就是唯一的,元素都是固定的。

 h1 =fspecial('prewitt')
  1     1     1
  0     0     0
 -1    -1    -1

sobel

H = fspecial(‘sobel’)和上面的prewitt一樣無參數,用於邊緣的提取。

h1 = fspecial('sobel')

h1 =

     1     2     1
     0     0     0
    -1    -2    -1 

運動模糊(motion)濾波器

H = fspecial(‘motion’,len,theta) 為運動模糊算子,有兩個參數,表示攝像物體逆時針方向以theta角度運動了len個像素,len的默認值為9,theta的默認值為0。

unsharp

H = fspecial(‘unsharp’,alpha)為對比度增強濾波器。參數alpha用於控制濾波器的形狀,范圍為【0,1】,默認值為0.2。返回的也是3×3大小的矩陣。

使用代碼

在實踐下面的代碼的時候,可以使用:whos 變量名;來查看你所關心的變量的數據類型,大小等情況。

img = imread('images/apple.jpg');
% 依次替換為其他濾波器的語法即可
h1 = fspecial('gaussian',5);
img_new = imfilter(img,fspecial('gaussian',5,10),'replicate','same');

figure(1);
imshow(img)

figure(2);
imshow(img_new)

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM