天天看點

圖像的高斯平滑濾波

1:高斯平滑與濾波的作用

通過高斯平滑使整個圖檔過渡均勻平滑,去除細節,過濾掉噪聲。

2:高斯平滑濾波器簡介

高斯平滑濾波器被使用去模糊圖像,和均值濾波器差不多,但是和均值濾波器不一樣的地方就是核不同。均值濾波器的核每一個值都是相等,而高斯平滑濾波器的核内的數卻是呈現高斯分布的。

對于二維高斯分布:

圖像的高斯平滑濾波

 高斯函數具有5個重要性質:

(1)二維高斯函數具有旋轉對稱性, (2)高斯函數是單值函數。這表明,高斯濾波器用像素鄰域的權重均值來代替該點的像素值,而每一鄰域像素點的權值是随着該點與中心點距離單調遞減的。 (3)高斯函數的傅立葉變換頻譜是單瓣的。 (4)高斯濾波器的寬度(決定着平滑程度)是由參數σ表征的,而且σ和平滑程度的關系是非常簡單的。σ越大,高斯濾波器的頻帶就越寬,平滑程度就越好。 (5)可分離性

它的分布圖如下:

圖像的高斯平滑濾波

作為高斯平滑濾波器的核就應該呈現出上圖的布局,例如:

圖像的高斯平滑濾波

是一個5*5的模版

對于高斯函數參數σ值越大,則模分布圖越扁平,模版越大。

上圖分布凸顯出了高斯該有的特點,是以,一般而言,高斯平滑濾波器要優于均值濾波器。

3:函數實作

3.1二維高斯函數

1 X = -50 : 1 :50;
2 Y = -50 : 1: 50;
3 sigma=50;
4 [X,Y]=meshgrid(X,Y);
5 W=exp(-(X.^2+Y.^2)/sigma.^2);
6 Z=W/2*pi*sigma.^2
7 mesh(X,Y,Z);
8 title('權重分布圖');      
圖像的高斯平滑濾波

3.2高斯濾波

1 im=imread('D:\a2.jpg');
 2 imshow(im,[]);//1
 3 title('原圖');
 4 J=imnoise(im,'gaussian');//加上高斯噪聲
 5 figure
 6 imshow(J,[]);
 7 title('加高斯噪聲圖');
 8 f1=fspecial('gaussian',[3 3],0.5);//2生成高斯模版
 9 img_smooth1=imfilter(J,f1);//3濾波
10 figure
11 subplot 221
12 imshow(img_smooth1,[]);
13 title('0.5');
14 
15 f2=fspecial('gaussian',[3 3],1);
16 img_smooth2=imfilter(J,f2);
17 subplot 222
18 imshow(img_smooth2,[]);
19 title('1');
20 
21 f3=fspecial('gaussian',[3 3],2);
22 img_smooth3=imfilter(J,f3);
23 subplot 223
24 imshow(img_smooth3,[]);
25 title('2');
26 
27 f4=fspecial('gaussian',[3 3],4);
28 img_smooth4=imfilter(J,f4);
29 subplot 224
30 imshow(img_smooth4,[]);
31 title('4');
32 
33 f5=fspecial('gaussian',[3 3],8);
34 img_smooth5=imfilter(J,f5);
35 figure
36 subplot 121
37 imshow(img_smooth5,[]);
38 title('8');
39 
40 f6=fspecial('gaussian',[3 3],10);
41 img_smooth6=imfilter(J,f6);
42 subplot 122
43 imshow(img_smooth6,[]);
44 title('10');      

 運作結果如下

圖像的高斯平滑濾波
圖像的高斯平滑濾波
圖像的高斯平滑濾波
圖像的高斯平滑濾波

由實驗結果可知,随着σ值的增大,噪聲濾除的越幹淨,但同時,圖像也變得越模糊,輪廓不清晰。當σ增加到一定的程度時,濾波效果幾乎沒有變化,是以要選取合适的σ值。

4:函數介紹

 注釋1

文法:imshow ( f, G) 

          imshow (f, [low high])

          imshow (f, [ ])

說明:G是顯示該圖像的灰階級數;

      小于或等于low的值都顯示為黑色,大于或等于high的值都顯示為白色。

          [ ]自動将變量low設定為f的最小值,将high設定為f的最大值

注釋2

Fspecial函數用于建立預定義的濾波算子,其文法格式為:

h = fspecial(type)

h = fspecial(type,parameters,sigma)

參數type制定算子類型,parameters指定相應的參數,具體格式為:

type='average',為均值濾波,參數為n,代表模版尺寸,用向量表示,預設值為[3,3]。

type= 'gaussian',為高斯低通濾波器,參數有兩個,n表示模版尺寸,預設值為[3,3],sigma表示濾波器的标準差,

注釋3

imfilter(J,f1)

J為待處理的圖像,f為高斯模版。