20180903頻率域、濾波、卷積、傅里葉變換的簡單總結

前段時間看了很多的概念和知識,發現因爲是走馬觀花的過了一遍,所以看得稀裏糊塗的,然後許多地方混淆了概念,特別是關於圖像頻率域的部分的理解(包括圖像頻率域濾波之類的),所以下面總結一下這段時間重新看《數字圖像處理》(電子工業出版社,Matlab本科教學版)第三章重新收穫的關於頻率域的理解。

首先,我們要明確的概念是空間域和頻率域,我們通過imread函數得到的一幅圖像(基本上也是我們平時說的圖像),是處在空間域的,也就是說用f(x,y)表徵的某一點的灰度值(或者是單色圖像中某一點的亮度)的這種形式,就是在空間域裏面。

那麼什麼是圖像的頻率域呢?理解了圖像的頻率的概念,就不難理解頻率域。我個人理解是這麼類比的,圖像可以看成是一個特殊的二維的信號,然後某一點的灰度級,其實就是圖像信號上這一點的”幅度“,那麼根據信號的概念,頻率就是信號變化的快慢,這樣就好理解了,所謂的頻率也就是這個圖空間上的灰度變換的快慢,或者是叫圖像的梯度變化,什麼地方梯度頻率比較大呢?這在圖像中自然是“邊界”比較大。舉個例子來講,如果一幅圖整體變化不大(比如說是一面牆的圖),那麼他在頻率域下低頻成分就很多,而高頻成分就極少。而顯然如果是一幅國際象棋棋盤,他的高頻成分相對剛纔那幅牆的圖片來說,肯定多得多。

然後從圖像域變換到頻率域,我們用的函數就是大名鼎鼎的二維離散傅里葉變換了:

令f(x,y)表示一幅大小爲MXN像素的數字圖像,其中,x=0,1,2······M-1, y=0,1,2······N-1,由F(u,v)表示的f(x,y)的二維離散傅里葉變換(DFT)由下式給出:

 

式子當中,u也是屬於0到M-1,v屬於0到N-1。頻率域就是屬於u,v作爲頻率變量,由F(u,v)構成的座標系,這塊MXN的區域我們通常稱爲頻率矩形,很明顯頻率矩形的大小和輸入圖像的大小相同。

有傅里葉變換,當然就有傅里葉反變換(IDFT):

 

這裏多提一句,按照書上的說法,在DFT的表達式中,1/MN項出現在正變換前面,而在有些表達式中就如上式那樣出現在反變換前面,因爲Matlab採用的是後者,所以書上的公式就是用的上式那種了。

由上面的公式可以看出幾個點:

1.    不難看出,F(0,0)等於f(x,y)平均值的MN倍,因爲帶入到傅里葉變換公式中可以得到F(0,0)實際上就是圖像中所有f(x,y)求和。所以我們也常把F(0,0)稱作傅里葉變換的直流分量。

2.    我們可以很明顯的看出,在頻率域中的一點(u,v)的值F(u,v),他並不決定於空間域中(x,y)的值,而是跟整個圖像空間域中的所有的點都有關係,因此,在頻率域中的一點(u,v)的值,例如說F(5,5)和空間域上的這一點f(5,5)並沒有什麼關係,而是決定於整幅圖像。

接下來書上講了傅里葉變換的一些性質,還有傅里葉譜,變換的相角定義,功率譜定義等等概念,因爲打公式太麻煩,這裏就不多贅述了,可以在網上找到現成的公式定義和概念。

    傅里葉變換性質裏面個人認爲比較重要的是週期性,因爲週期性的緣故,所以在傅里葉變換過後的頻率圖裏,四角的是低頻分量(具體的我也不太清楚,但是比如低頻分量),我們到時候會把低頻分量移到中心位置來,因爲大部分圖像的低頻分量其實更多,所以會在邊角上比較亮,放到中間來比較好看。

    下面舉例一幅圖說明看一幅頻率域傅里葉譜圖:

 


 
  1. f=imread('3.jpg');

  2. imshow(f);%顯示原圖

  3. F=fft2(f);%做傅里葉變換

  4. S=abs(F);%取傅里葉譜

  5.  
  6. figure,imshow(S,[]);%顯示傅里葉譜


 

    

左圖是原圖,右圖是頻率圖,頻率圖中的亮暗說明了對應頻率的多少,上面已經談過,如果從右圖可以看出來是邊上的四個點比較亮,這說明原圖中低頻分量比較多,也就是說原圖中的變化比較少。換句話來說,如果原圖看成地形的話,那說明大部分地形非常平坦。

我們可以通過公式(歐拉公式e^(2*pi*j)=1以及指數的計算),可以很容易發現(圖是盜的- -):

 

上式最左邊那個符號表示求傅里葉變換。由上式知道這麼弄一番之後,是可以把頻率圖的原點放到中心的。

在matlab中用的是fftshift函數。

居中過後的頻率譜顯示如下:

 

可以看得更清楚一些,這個時候因爲其實頻率譜的範圍是很大的,相對於低頻分量來說,高頻分量的值比較少,所以可以用對數變換(log(1+abs(F))將高頻細節擴展出來,顯示如下:

 

細節還是突出的比較明顯的哈!

下面談談對濾波的理解,不知道是不是完全正確。

濾波和算子都是數字圖像處理的基本操作,其中濾波是指在像素領域(空間域)內做領域處理(中值濾波、均值濾波)或者在圖像頻域內(需要先做傅里葉變換)做處理(低通濾波、高通濾波、帶通濾波)。算子一般就是指的是卷積算子了。

先來談談空間域的濾波。什麼叫領域處理呢?領域處理的就是對領域進行一系列的操作:

(1)    選取中心點(x,y);

(2)    僅對預先定義的點(x,y)的領域內的像素執行操作;

(3)    令運算結果爲該點處的響應;

(4)    對圖像中的每一點重複該處理。

中心點移動的過程中會產生新的領域,每個領域對應輸入圖像上的一個像素。用來標識該處理的兩個主要術語是領域處理和空間濾波,其中後者更爲通用。如果對領域中像素執行的計算是線性的,則稱該操作是線性空間濾波。(也用術語空間卷積);否則稱爲非線性空間濾波。

線性操作包括領域中的每個像素乘以相應的係數,將結果求和,從而得到點(x,y)處的響應。若領域的大小爲mxn,則需要mn個係數。這些係數被排列爲一個矩陣,稱爲濾波器(模板)/濾波模板/核/掩模或者窗口。其中前三個屬於最常見。爲變得更明顯一些,也用卷積濾波、卷積模板或者卷積核等術語。

再來說下卷積算子是個什麼意思:

在這裏盜一下網上的圖:

 

然後如上所示,圖片中右上角的那個矩陣h=[2 9 4;

                                        7 5 3;

                                        6 1 8;]

就是後面經常提到的模板了,在相關書本上一般也寫作w(x,y)。如果把基於乘積和的值用來替代成原來的(x,y)的值,那麼這種濾波方式叫做線性濾波(比如拉普拉斯算子)。其他的叫做非線性濾波。

空間域濾波的最常見的就是中值濾波和均值濾波,顧名思義,中值濾波就是用圖像領域中所包含的像素的排序集合的中值進行替代,而均值濾波是用領域像素們的均值進行濾波。中值濾波也屬於統計排序濾波。

接下來介紹頻率域的濾波:

首先,有個定理,叫做卷積定理:

   f(x,y)★h(x,y)óH(u,v)F(u,v)

上式中★代表卷積,ó代表一個傅里葉變換對。

頻率域的濾波比較多的就是高斯低通/高斯高通濾波器了,和空間域稍微有區別的是,在頻率域內不是進行的領域處理,而是進行的是函數修改:

G(u,v)= H(u,v)F(u,v)

函數H(u,v)又叫做濾波器傳遞函數,頻率域濾波的思想就是選擇一個濾波器傳遞函數,該函數按照指定的方式修改F(u,v)。

由卷積定理可知,在頻率域中讓F(u,v)乘以空間濾波器的傅里葉變換H(u,v),再做一個傅里葉反變換,就可以得到用空間域濾波器濾波後的圖像了(這也是相當於用DFT的方式在做卷積,用這種方式做卷積又叫循環卷積)。

值得一提的是,注意,當作循環卷積的時候,因爲F和H都是周期函數,所以G必然也是周期函數,在週期接近函數非零部分的持續週期時對周期函數進行卷積會引起相鄰週期的串擾(這種串擾又叫摺疊誤差),所以要通過補零的方法來避免。比較拗口,還是舉例來說明:一個上黑下白的方塊圖片,在DFT卷積的時候我們假設在處理上邊沿了,結果因爲是週期的所以上邊沿其實在處理時會受到上邊沿上面另一個方塊的下邊沿的白色部分的影響(具體的例子見書P63頁),補0之後就不會受影響了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章