圖像二維頻譜的理解

OpenCV17(圖像二維頻譜的理解,傅里葉頻譜分析)

原創 2016年09月21日 21:56:41

傅里葉變換的理解參考教程:http://blog.jobbole.com/70549/html

這個已經說得很詳細了。數組

 

不過這個說明只是針對一維的傅里葉變換,在圖像處理中咱們最多見的仍是二維頻譜,二維頻譜到底該怎麼看呢?如下是個人理解,謝謝某人的幫助。函數

 

1.先看一段MATLAB代碼

 

[plain]  view plain  copy
 
  1. I = imread('cell.tif');  
  2. fI = fft2(I);  
  3. sfI = fftshift(fI);  
  4. temp = log(1+abs(sfI));  
  5.   
  6. subplot(2,2,1),imshow(I),title('原圖');  
  7. subplot(2,2,2),imshow(fI,[]),title('二維傅里葉變換');  
  8. subplot(2,2,3),imshow(sfI,[]),title('對稱移動圖像,頻譜');  
  9. subplot(2,2,4),imshow(temp,[]),title('對數變換後的頻譜');  

 

cell.tif是MATLAB自帶的圖,結果以下:post

注意第三幅圖的中心有一個白點,這是理解的關鍵。這幾幅圖的來源,稍後會詳細介紹。

 

2.一個概念

咱們知道矩形波能夠看做是有無數的不一樣相位和幅值的正弦函數組成,相似的,一個任意的平面波也能夠當作是特定的某幾種正弦波的組合。如圖所示spa

(《數字圖像處理與機器視覺:Visual C++與Matlab實現》P183).net

(a)圖上的「JC」的亮度不一樣,將其亮度做爲縱座標,因而獲得圖(b)。圖(b)能夠看做是圖(c)中的某幾個正弦平面波的組合,注意,正弦平面波的相角、幅值、傳播方向均可以是不一樣的。htm

 

3.推導一個結論

想象有一個正弦平面波(書上原話,有點迷惑人,不是平面,是曲面其實),x向傳播,y的正負半軸都是曲面區域。blog

得正弦平面波的方程爲下式,w是相位,設相角爲零教程

從z軸往下看去,得ip

繞z軸旋轉座標系,得新座標系(x',y')

注意,這步是爲了推倒 x' 方向上的正弦平面波的方程。可知,這時候的正弦平面波方程爲

沿z軸旋轉 theta 角度 的旋轉矩陣是

 

因此得下式(這步計算不明白不要緊,只要知道這個矩陣能夠表示兩個座標的轉化關係便可,會用就行)

因此就等到,旋轉以後的正弦平面波的方程能夠表示爲

結論!!

其實這一堆只是爲找到通常正弦平面波的方程,有什麼用呢?有點用。

 

4.和頻譜的關係

頻譜的中心爲低頻,外圍是高頻成分

能夠將頻譜的中心看作座標原點,橫軸爲x軸,縱軸是y軸,創建座標系。

頻譜平面上的座標(X,Y)的黑白,表示圖像是否含有z = sin(Xw + Yw)這個正弦平面波成分,白便是有含有。

 

這裏就要再注意一個問題,這裏提到的頻譜是頻譜圖的圖3,再看一下頻譜圖,就是那個有圈圈的

是否是有點亂,因此最後咱們來講明這幾張圖都是怎麼來的。

 

5.頻譜圖的關係

fft2以後,結果是圖2,這是原始的頻譜,可是因爲計算中,高頻在中間,低頻在外圍,因此很差看。

fftshift以後,作了如下對稱變換,將低頻調整到中間,高頻在外圍。注意圖3中心的亮點。這表示原圖中的低頻成分比較多,也就是說圖像的灰度變化不大,沒有大的梯度值

因爲圖3的對比度不高,看不清楚,因此纔出現了最多見到的頻譜,圖4

對數變換log(1+abs(XXX)),這樣就看的清楚些了。

 

Bingo!

相關文章
相關標籤/搜索