天天看點

【濾波器】高斯濾波器【Matlab 995期】

一、高斯濾波器簡介

1 高斯濾波器簡介

高斯濾波器是一種線性濾波器,能夠有效的抑制噪聲,平滑圖像。其作用原理和均值濾波器類似,都是取濾波器視窗内的像素的均值作為輸出。但其視窗模闆的系數和均值濾波器不同,均值濾波器的模闆系數都是相同的為1,而高斯濾波器的模闆系數則随着距離模闆中心的增大而減小。是以,高斯濾波器相比于均值濾波器對圖像個模糊程度較小。

2 生成高斯濾波器模闆(掩模)

要産生一個3×3的高斯濾波器模闆,以模闆的中心位置為坐标原點進行取樣。模闆在各個位置的坐标,如下所示(x軸水準向右,y軸豎直向下)。

【濾波器】高斯濾波器【Matlab 995期】

其中(x,y)為點坐标,在圖像進行中可認為是整數,\sigma是标準差。将各個位置的坐标帶入到高斯函數中,得到的值就是模闆的系數,模闆中各個元素值的計算公式如下:

【濾波器】高斯濾波器【Matlab 995期】

當\sigma =0.8時,計算出來的模闆有兩種形式:小數和整數

1)小數形式的模闆,就是直接計算得到的值,沒有經過任何的處理;

2)整數形式的模闆需要進行歸一化處理,即将模闆左上角的值歸一化為1。

【濾波器】高斯濾波器【Matlab 995期】

取整後為:

【濾波器】高斯濾波器【Matlab 995期】

使用整數的模闆時,需要在模闆的前面加一個系數,該系數為模闆系數和的倒數,最終得到模闆如下:

【濾波器】高斯濾波器【Matlab 995期】

注意:由于最後要進行歸一化處理,是以在計算模闆中各個元素的值時,可以去掉高斯函數的系數

【濾波器】高斯濾波器【Matlab 995期】

3 值的意義及選取

通過上述的實作過程發現,生成高斯濾波器模闆最重要的參數就是高斯分布的标準差,标準差代表着資料的離散程度。

越小,模闆的中心系數越大,周圍的系數越小,這樣對圖像的平滑效果就不是很明顯;

越大,模闆的各個系數相差就不是很大,比較類似均值模闆,對圖像的平滑效果比較明顯。

4 高斯函數的五個性質

高斯平滑濾波器,無論在空間域還是在頻率域都是十分有效的低通濾波器,高斯函數具有五個十分重要的性質:

(1)二維高斯函數具有旋轉對稱性,即濾波器在各個方向上的平滑程度是相同的。一般來說,一幅圖像的邊緣方向是事先不知道的,是以,在濾波前是無法确定一個方向上比另一方向上需要更多的平滑。旋轉對稱性意味着高斯平滑濾波器在後續邊緣檢測中不會偏向任一方向。

(2)高斯函數是單值函數。這表明,高斯濾波器用像素鄰域的權重均值來代替該點的像素值,而每一鄰域像素點權值是随該點與中心點的距離單調增減的。這一性質是很重要的,因為邊緣是一種圖像局部特征,如果平滑運算對離算子中心很遠的像素點仍然有很大作用,則平滑運算會使圖像失真。

(3)高斯函數的傅裡葉變換頻譜是單瓣的。正如下面所示,這一性質是高斯函數的傅裡葉變換等于高斯函數本身(但幅值和方差發生了變化,尤其是方差變為倒數)這一事實的直接推論。圖像常被不希望的高頻信号所污染(噪聲和細紋理 )。而所希望的圖像特征(如邊緣),既含有低頻分量,又含有高頻分量。高斯函數傅裡葉變換的單瓣意味着平滑圖像不會被不需要的高頻信号所污染,同時保留了大部分所需信号。

(4)高斯濾波器寬度(決定着平滑程度)是由參數σ表征的,而且σ和平滑程度的關系是非常簡單的。σ越大,平滑程度就越好。通過調節平滑程度參數σ,可在圖像特征過分模糊(過平滑)與平滑圖像中由于噪聲和細紋理所引起的過多的不希望突變量(欠平滑)之間取得折中。

(5)由于高斯函數的可分離性,大高斯濾波器可以得以有效地實作。二維高斯函數卷積可以分兩步來進行,首先将圖像與一維高斯函數進行卷積,然後将卷積結果與方向垂直的相同一維高斯函數卷積。是以,二維高斯濾波的計算量随濾波模闆寬度成線性增長而不是成平方增長。

二、部分源代碼

t1=-1.5:0.01:1.5;
t2=-1.5:0.01:1.5;
%b1=ones(1,length(t2));
b1=[zeros(1,100),ones(1,100),zeros(1,101)];
%産生濾波器1
y1=sqrt(pi)/0.25*exp(-((pi*t1).^2)/0.25.^2);
z1=0.5*(erfc(pi/0.25*(t1-0.5))-erfc(pi/0.25*(t1+0.5)));
%産生濾波器2
y2=sqrt(pi)/0.5*exp(-((pi*t1).^2)/0.5.^2);
z2=0.5*(erfc(pi/0.5*(t1-1))-erfc(pi/0.5*(t1+1)));
%産生濾波器3
y3=sqrt(pi)*exp(-(pi*t1).^2);
z3=0.5*(erfc(pi*(t1-1))-erfc(pi*(t1+1)));
%産生濾波器4
y4=sqrt(pi)/2*exp(-((pi*t1).^2)/2.^2);
z4=0.5*(erfc(pi/2*(t1-1))-erfc(pi/2*(t1+1)));
subplot(3,1,1),plot(t2,b1);axis([-1.5 1.5 0 1.2]);xlabel('t/T');ylabel('b(t)');
title('高斯脈沖成形濾波器的輸入(矩形脈沖)');
subplot(3,1,2),plot(t1,y1,'r',t1,y2,'g',t1,y3,'b',t1,y4,'m');
           

三、運作結果

【濾波器】高斯濾波器【Matlab 995期】

四、matlab版本及參考文獻

1 matlab版本

2014a

2 參考文獻

[1] 沈再陽.精通MATLAB信号處理[M].清華大學出版社,2015.

[2]高寶建,彭進業,王琳,潘建壽.信号與系統——使用MATLAB分析與實作[M].清華大學出版社,2020.

[3]王文光,魏少明,任欣.信号處理與系統分析的MATLAB實作[M].電子工業出版社,2018.