圖像二維頻譜的理解


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

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

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

這個已經說得很詳細了。

 

不過這個說明只是針對一維的傅里葉變換,在圖像處理中我們最常見的還是二維頻譜,二維頻譜到底該怎么看呢?以下是我的理解,謝謝某人的幫助。

 

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自帶的圖,結果如下:

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

 

2.一個概念

我們知道矩形波可以看作是有無數的不同相位和幅值的正弦函數組成,類似的,一個任意的平面波也可以看成是特定的某幾種正弦波的組合。如圖所示

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

(a)圖上的“JC”的亮度不同,將其亮度作為縱坐標,於是得到圖(b)。圖(b)可以看作是圖(c)中的某幾個正弦平面波的組合,注意,正弦平面波的相角、幅值、傳播方向都可以是不同的。

 

3.推導一個結論

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

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

從z軸往下看去,得

繞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!

 

 

 


免責聲明!

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



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