傅里葉變換在圖像處理中的應用


1. 背景

  法國數學家吉恩·巴普提斯特·約瑟夫·傅里葉被世人銘記的最大的貢獻是:他指出任何周期函數都可以表示為不同頻率的正弦和/或余弦之和的形式,每個正弦項和/或余弦項乘以不同的系數(現在稱該和為傅里葉級數)。無論函數多么復雜,只要它是周期的,並且滿足某些適度的數學條件,都可以用這樣的和來表示。即一個復雜的函數可以表示為簡單的正弦和余弦之和。甚至非周期函數(單該曲線下的面積是有限的)也可以用正弦和/或許·余弦乘以加權函數的積分來表示。在這種情況下的公式就是傅里葉變換

  傅里葉變換在物理學、數論、組合數學、信號處理、概率、統計、密碼學、聲學、光學等領域都有着廣泛的應用。這里主要從多篇文章中總結一下傅里葉變換和在圖像中的應用。在不同的研究領域,傅立葉變換具有多種不同的變體形式,如連續傅立葉變換和離散傅立葉變換。最初傅立葉分析是作為熱過程的解析分析的工具被提出的。傅里葉變換是一種分析信號的方法,它可分析信號的成分,也可用這些成分合成信號。許多波形可作為信號的成分,比如正弦波、方波、鋸齒波等,傅里葉變換用正弦波作為信號的成分。


  傅里葉變換的實質是將一個信號分離為無窮多多正弦/復指數信號的加成,也就是說,把信號變成正弦信號相加的形式——既然是無窮多個信號相加,那對於非周期信號來說,每個信號的加權應該都是零——但有密度上的差別,你可以對比概率論中的概率密度來思考一下——落到每一個點的概率都是無限小,但這些無限小是有差別的所以,傅里葉變換之后,橫坐標即為分離出的正弦信號的頻率,縱坐標對應的是加權密度。有點暈


  那么傅里葉變換有什么用呢?

  例如:傅里葉變換可以將一個時域信號轉換成在不同頻率下對應的振幅及相位,其頻譜就是時域信號在頻域下的表現,而反傅里葉變換可以將頻譜再轉換回時域的信號。最簡單最直接的應用就是時頻域轉換,比如在移動通信的LTE系統中,要把接收的信號從時域變成頻域,就需要使用FFT。又例如對一個采集到的聲音做傅立葉變化就能分出好幾個頻率的信號。比如南非世界杯時,南非人吹的嗚嗚主拉的聲音太吵了,那么對現場的音頻做傅立葉變化(當然是對聲音的數據做),會得到一個展開式,然后找出嗚嗚主拉的特征頻率,去掉展開式中的那個頻率的sin函數,再還原數據,就得到了沒有嗚嗚主拉的嗡嗡聲的現場聲音。而對圖片的數據做傅立葉,然后增大高頻信號的系數就可以提高圖像的對比度。同樣,相機自動對焦就是通過找圖像的高頻分量最大的時候,就是對好了。

2. 基本概念

2.1 復數

  復數$C$的定義如下:

                     $ C = R + jI$

  其中,$R$ 和 $I$ 是實數,$j$ 是一個等於-1平方根的虛數,即 $j = \sqrt{-1}$。$R$ 表示復數的實部,$I$ 是復數的虛部。

 

  在極坐標下表示為:

      $ C = \left| C \right|(\cos\theta + j\sin\theta)$

  其中,$\left| C \right| = \sqrt{R^{2}+I^{2}}$是復平面的原點到點$(R, I)$的向量的長度,$\theta$是該向量與實軸的夾角。

  使用歐拉公式

      $e^{j\theta} = \cos\theta + j\sin\theta$

其中 $e = 2.71828$···,可給出極坐標下我們很熟悉的如下復數表示:

      $C = \left| C \right|e^{j\theta}$

 2.2 傅里葉級數

  由上面的背景可知,具有周期 T 的連續變量 的周期函數 $f(t)$ 可以被描述為乘以適當系數的正弦和余弦和,這個和就是傅里葉級數。它具有如下形式:

      $f(t) = \sum\limits_{n=-\infty}^ {\infty} c_{n} e^{j\frac{2 \pi n}{T}t}$

2.3 時域與頻域

  (1)頻域(frequency domain)是指在對函數或信號進行分析時,分析其和頻率有關部份,而不是和時間有關的部分,和時域一詞相對。

  (2)時域是描述數學函數或物理信號對時間的關系。

例如一個信號的時域波形可以表達信號隨着時間的變化。
若考慮離散時間,時域中的函數或信號,在各個離散時間點的數值均為已知。
若考慮連續時間,則函數或信號在任意時間的數值均為已知。在研究時域的信號時,常會用示波器將信號轉換為其時域的波形。

(3)兩者相互間的變換

  時域(信號對時間的函數)和頻域(信號對頻率的函數)的變換在數學上是通過積分變換實現。對周期信號可以直接使用傅立葉變換,對非周期信號則要進行周期擴展,使用拉普拉斯變換。

 

3. 一維傅里葉變換

  

 

  一個信號能表示成傅里葉級數的形式是有條件的,首先它必須是周期信號,第二必須是滿足狄里赫利條件的周期信號。

 

4. 快速傅里葉變換(FFT)

  計算離散傅里葉變換的一種快速算法,簡稱FFT。函數或信號可以透過一對數學的運算子在時域及頻域之間轉換。快速傅里葉變換是1965年由J.W.庫利和T.W.圖基提出的。采用這種算法能使計算機計算離散傅里葉變換所需要的乘法次數大為減少,特別是被變換的抽樣點數N越多,FFT算法計算量的節省就越顯著。

  人們想讓計算機能處理信號,但由於信號都是連續的、無限的,計算機不能處理,於是就有了傅里葉級數、傅里葉變換,將信號由時域變到頻域,把一個信號變為有很多個不同頻率不同幅度的正弦信號組成,這樣計算機就能處理了,但又由於傅里葉變換中要用到卷積計算,計算量很大,計算機也算不過來,於是就有了快速傅里葉變換,大大降低了運算量,使得讓計算機處理信號成為可能。快速傅里葉變換是傅里葉變換的快速算法而已,主要是能減少運算量和存儲開銷,對於硬件實現特別有利。

5. 圖像中傅里葉變換的意義

 (1)圖像的頻率是表征圖像中灰度變化劇烈程度的指標,是灰度在平面空間上的梯度。如:大面積的沙漠在圖像中是一片灰度變化緩慢的區域,對應的頻率值很低;而對於地表屬性變換劇烈的邊緣區域在圖像中是一片灰度變化劇烈的區域,對應的頻率值較高。傅立葉變換在實際中有非常明顯的物理意義,設 $f$ 是一個能量有限的模擬信號,則其傅立葉變換就表示 $f$ 的譜。從純粹的數學意義上看,傅立葉變換是將一個函數轉換為一系列周期函數來處理的。從物理效果看,傅立葉變換是將圖像從空間域轉換到頻率域,其逆變換是將圖像從頻率域轉換到空間域。換句話說,傅立葉變換的物理意義是將圖像的灰度分布函數變換為圖像的頻率分布函數,傅立葉逆變換是將圖像的頻率分布函數變換為灰度分布函數

 (2)傅立葉變換以前,圖像(未壓縮的位圖)是由對在連續空間(現實空間)上的采樣得到一系列點的集合,我們習慣用一個二維矩陣表示空間上各點,則圖像可由 $z=f(x,y)$ 來表示。由於空間是三維的,圖像是二維的,因此空間中物體在另一個維度上的關系就由梯度來表示,這樣我們可以通過觀察圖像得知物體在三維空間中的對應關系。為什么要提梯度?因為實際上對圖像進行二維傅立葉變換得到頻譜圖,就是圖像梯度的分布圖,當然頻譜圖上的各點與圖像上各點並不存在一一對應的關系,即使在不移頻的情況下也是沒有。傅立葉頻譜圖上我們看到的明暗不一的亮點,實際上圖像上某一點與鄰域點差異的強弱,即梯度的大小,也即該點的頻率的大小(可以這么理解,圖像中的低頻部分指低梯度的點,高頻部分相反)。一般來講,梯度大則該點的亮度強,否則該點亮度弱。這樣通過觀察傅立葉變換后的頻譜圖,也叫功率圖,我們首先就可以看出,圖像的能量分布,如果頻譜圖中暗的點數更多,那么實際圖像是比較柔和的(因為各點與鄰域差異都不大,梯度相對較小),反之,如果頻譜圖中亮的點數多,那么實際圖像一定是尖銳的,邊界分明且邊界兩邊像素差異較大的。對頻譜移頻到原點以后,可以看出圖像的頻率分布是以原點為圓心,對稱分布的。將頻譜移頻到圓心除了可以清晰地看出圖像頻率分布以外,還有一個好處,它可以分離出有周期性規律的干擾信號,比如正弦干擾,一副帶有正弦干擾,移頻到原點的頻譜圖上可以看出除了中心以外還存在以某一點為中心,對稱分布的亮點集合,這個集合就是干擾噪音產生的,這時可以很直觀的通過在該位置放置帶阻濾波器消除干擾。


6. matlab代碼

[i,lcmp]=imread('F:/123.jpg');%=======讀取圖像 顯示圖像

subplot(2,2,1),imshow(i,lcmp);

title('original');

ii=im2double(i); %=====將圖像矩陣類型轉換為double(圖像計算很多是不能用整型的),沒有這個會報錯!! ,如果不用這個就必須轉化為灰度圖!

i1 = fft2(ii); %======傅里葉變換

i2 =fftshift(i1); %======將變換的頻率圖像四角移動到中心(原來良的部分在四角 現在移動中心,便於后面的處理)

i3=log(abs(i2)); %=====顯示中心低頻部分,加對數是為了更好的顯示

subplot(2,2,2),imshow(i3,[]);

title('Fourier');

map=colormap(lcmp); %===取色譜

imwrite(i3,map,'f:/ffttank.bmp'); %===將上面i3輸入到ffttank文件中

i5 = real(ifft2(ifftshift(i2))); %===頻域的圖反變換到空域 並取實部

i6 = im2uint8(mat2gray(i5)); %===取其灰度圖

imwrite(i6,map,'f:/tank2.bmp','bmp'); %===利用灰度圖和原來取得顏色模板 還原圖像

subplot(2,2,3),imshow(i6);

title('anti-Fourier');

i7=rgb2gray(i);

i8=fft2(i7);%===對灰色圖才能歸一化。因為那是2維矩陣,彩色圖是3維矩陣,需要轉化為2維灰圖

m=fftshift(i8); %直流分量移到頻譜中心

%RR=real(m); %取傅立葉變換的實部

%II=imag(m); %取傅立葉變換的虛部

A=abs(m);%計算頻譜幅值

%A=sqrt(RR.^2+II.^2);

A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225; %歸一化

subplot(2,2,4),imshow(A); %顯示原圖像

colorbar; %顯示圖像的顏色條

title('FFT spectrum'); %圖像命名

 

 

  

 

 

參考文章:

(1)https://blog.csdn.net/ebowtang/article/details/39004979

(2)孟凡文, 吳祿慎.基於FTP的二維傅里葉變換的研究.激光與紅外.第38卷第9期 2008年9月

(3)董健,鄧國輝,李金武. 基於二維傅里葉變換實現圖像變換的研究. 福建電腦. 2015年第 9期

 

  


免責聲明!

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



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