空間域和頻率域爲咱們提供了不一樣的視角. 在空域中. 函數的自變量(x, y)被視爲二維空間中的一點, 數字圖像J(x, y)即爲一個定義在二維空間中的矩形區域上的離散函數:換一個角度, 若是將j(x, y)視爲幅值變化的二維信號, 則能夠經過某些變換手段(如傅立葉變
換、離散餘弦變換、沃爾什變換和小波變換等〉在頻域下對它進行分析.html
本文主要包括如下內容 算法
頻率域濾波一一與空間域濾波異曲同工
在多數狀況下, 頻率域濾波和空間域濾披能夠視爲對同一個圖像加強問題的異曲同工的
兩種解決方式. 而在另一些狀況下, 有些加強問題更適合在頻域中完成(6.7節〉, 有些則
更適合在空域中完成. 咱們經常根據須要選擇是工做在空間域仍是頻率域, 並在必要時在這
二者之間相互轉換.
傅立葉變換提供了一種變換到頻率域的手段, 因爲用傅立葉變換表示的函數特徵能夠完
全經過傅立葉反變換進行重建而不丟失任何信息, 所以它可使咱們工做在頻率域而在轉換
回空域時不丟失任何信息. 數組
傅立葉變換在圖像處理中的應用
理解了如下倆點:markdown
就很容易明白傅立葉變換在圖像處理中的應用。函數
通俗解釋
到底什麼是傅立葉級數
如何理解傅里葉變換公式?
若是看了此文你還不懂傅里葉變換,那就過來掐死我吧優化
法國數學家傅立葉發現任何周期函數只要知足必定條件(狄利赫裏條件〉均可以用正弦函數和餘弦函數構成無窮級數,即以不一樣頻率的正弦和餘弦函數的加權和來表示,後世稱爲:傅立葉級數。
對於有限定義域的非周期函數,能夠對其進行週期拓延從而使其在整個擴展定義域上爲周期函數,從而也能夠展開爲傅立葉級數.
ui
傅立葉級數的復指數形式
除上面介紹的三角形式外,傅立葉級數還有其餘兩種經常使用的表現形式,即餘弦形式和復指數形式。藉助歐拉公式,上述3種形式能夠很方便地進行等價轉化,本質上它們都是同樣的。
復指數傅立葉級數即咱們常常說的傅立葉級數的複數形式,因具備簡潔的形式〈只需一個統一的表達式計算傅立葉係數〉,在進行信號和系統分析時一般令更易於使用:而餘弦傅立葉級數可以使週期信號的幅度譜和相位譜意義更加直觀,函數的餘弦傅立葉級數展開能夠解釋爲f(x)能夠由不一樣頻率和相位的餘弦披以不一樣係數組合在一塊兒來表示,而在三角形式中相位是隱藏在係數Dn和bn中的。下面主要介紹復指數傅立葉級數,在後面的傅立葉變換中要用到的正是這種形式,關於餘弦傅立葉級數的有關知識,感興趣的讀者請參考附錄。
由式(6-4)和(6-5)可見,復指數傅立葉級數形式比較簡潔,級教和係數均可以採用統一的公式計算.有關如何由式(6-1)推導出傅立葉級數復指數形式(6-4)的過程,因爲這裏咱們感興趣的井非傅立葉級數自己,所以不在正文中給出,詳細的內容可參考附錄。只要讀者理解不一樣的展開形式其本質上是等價的,並對復指數形式的傅立葉級數展開創建了一個基本的形式上的認識就足以繼續閱讀和理解後述內容。 編碼
式(6-6)和式(6-7) 即爲咱們一般所說的傅立葉變換對,6.1節中提到的函數能夠從它的反變換進行重建正是基於上面的傅立葉變換對。
因爲傅立葉變換與傅立葉級數涉及兩類不一樣的函數,在不少數字圖像處理的書中一般對它們分別進行處理,並無闡明它們之間存在的密切聯繫,這給不少初學者帶來了困擾,實際上咱們不妨認爲周期函數的週期能夠趨向無窮大,這樣能夠將傅立葉變換當作是傅立葉級數的推廣。 spa
仔細的觀察式(6-6)和式(6-7),對比復指數形式的傅立葉級數展開公式〈式6-4), 能夠發現這裏傅立葉變換的結果F(u)實際上至關於傅立葉級數展開中的傅立葉係數,而反變換公式(式6-7) 則體現出不一樣頻率復指數函數的加權和的形式,至關於復指數形式的傅立葉
級數展開公式,只不過這裏的頻率u變爲連續化,因此加權和採用了積分的形式。這是由於隨着式(6-5)的積分上下限的T向整個實數定義域擴展,即T→∞,頻率u則趨近於du (由於u= 1/T),致使原來離散變化的u的連續化.
顯然,這是f(x,y)各個像素的灰度之和。而若是將係數1/MN放在正變換以前, 則F(O, 0)對應於緣由像f(x, y) 的平均灰度。F(O, 0)有時被稱做頻譜的直流份量(DC)。
咱們以前曾指出一維函數能夠表示爲正弦〈餘弦〉函數的加權和形式:相似的, 二維函數f(x,y)能夠分解爲不一樣頻率的二維正弦〈餘弦〉平面波的按比例疊加。.net
幅度譜、相位譜和功率譜
幅度譜又叫頻率諧,是圖像加強中關心的主要對象,頻域下每一點(u,v)的幅度F(u,v)可用來表示該頻率的正弦〈餘弦)平面放在疊加中所佔的比例,如圖6.4所示.幅度譜直接反映頻率信息,是頻域濾波中的一個主要依據。
相位譜表面上看並不那麼直觀,但它隱含着實部與虛部之間的某種比例關係, 所以與圖像結構息息相關。
由於對於和空域等大的頻域空間下的每一點(u,v), 都可計算一個對應的|F(u,v)|和|U(u,v)|,因此能夠像顯示一幅圖像那樣顯示幅度譜和相位譜。
岡薩雷斯版<圖像處理>裏面的解釋很是形象:一個恰當的比喻是將傅里葉變換比做一個玻璃棱鏡。棱鏡是能夠將光分解爲不一樣顏色的物理儀器,每一個成分的顏色由波長(或頻率)來決定。傅里葉變換能夠看做是數學上的棱鏡,將函數基於頻率分解爲不一樣的成分。當咱們考慮光時,討論它的光譜或頻率譜。一樣, 傅立葉變換使咱們能經過頻率成分來分析一個函數。
Fourier theory講的就是:任何信號(如圖像信號)均可以表示成一系列正弦信號的疊加,在圖像領域就是將圖像brightness variation 做爲正弦變量。好比下圖的正弦模式可在單傅里葉中由三個份量編碼:頻率f、幅值A、相位γ 這三個value能夠描述正弦圖像中的全部信息。
圖像的頻率
直觀上說,頻率就是變化的快慢。傅立葉變換,把圖像從空域變換到頻域,在頻率域中,高頻份量表示圖像中灰度變換比較快的那些地方,好比物體的邊緣就是灰度的忽然變化,因此物體邊緣就是高頻份量。而物體內部比較平坦的區域,灰度基本沒有變化,對應的就是低頻份量。
好比低通濾波只讓低頻份量經過,每每就是使圖像模糊,由於邊緣信息被去除了。
幅值magnitude(amplitude)
sin函數的幅值用於描述對比度,或者說是圖像中最明和最暗的峯值之間的差。(一個負幅值表示一個對比逆轉,即明暗交換。)
相位
相位表示相對於原始波形,這個波形的偏移量(左or右)
一個傅里葉變換編碼是一系列正弦曲線的編碼,他們的頻率從0開始(即沒有調整,相位爲0,平均亮度處),到尼奎斯特頻率(即數字圖像中可被編碼的最高頻率,它和像素大小、resolution有關)。傅里葉變換同時將圖像中全部頻率進行編碼:一個只包含一個頻率f1的信號在頻譜上橫座標f爲f1的點處繪製一個單峯值,峯值高度等於對應的振幅amplitude,或者正弦曲線信號的高度。
DC term直流信號對應於頻率爲0的點,表示整幅圖像的平均亮度,若是直流信號DC=0就表示整幅圖像平均亮度的像素點個數=0,可推出 灰度圖中,正弦曲線在正負值之間交替變化,可是因爲灰度圖中沒有負值,因此全部的真實圖像都有一個正的DC term,如上圖所示。
出於某些數學分析緣由,咱們常常把傅里葉變換用mirror-image表示,在原點的的兩端,frequency都是增長的方向,具備相同的幅值。
上面講的都是一維信號,一個二維傅里葉變換是一維傅里葉變換在每個行掃描線和列掃描線上的傅里葉變換的疊加。
傅里葉譜圖上的每個像素點都表明一個頻率值,幅值由像素點亮度變碼而得。最中心的亮點是指直流份量,傅里葉譜圖中越亮的點,對應於灰度圖中對比越強烈(對比度越大)的點。
因爲每一列掃描線上沒有變化,因此相應的fourier spectrum上行向量爲0, 每一行掃描線上有contrast,因此有頻率幅值。
圖像傅立葉變換的物理意義
傅里葉提出任何周期函數均可以表示爲不一樣頻率的正弦和/或餘弦和的形式,每一個正弦和/或餘弦乘以不一樣的係數(傅里葉級數)。圖像的頻率是表徵圖像中灰度變化劇烈程度的指標,是灰度在平面空間上的梯度.在噪聲點和圖像邊緣處的頻率爲高頻。
傅立葉變換在實際中有很是明顯的物理意義,設f是一個能量有限的模擬信號,則其傅立葉變換就表示f的譜。從純粹的數學意義上看,傅立葉變換是將一個函數轉換爲一系列周期函數來處理的。從物理效果看,傅立葉變換是將圖像從空間域轉換到頻率域,其逆變換是將圖像從頻率域轉換到空間域。換句話說,傅立葉變換的物理意義是將圖像的灰度分佈函數變換爲圖像的頻率分佈函數,傅立葉逆變換是將圖像的頻率分佈函數變換爲灰度分佈函數.
傅立葉變換之前,圖像(未壓縮的位圖)是由對在連續空間(現實空間)上的採樣獲得一系列點的集合,咱們習慣用一個二維矩陣表示空間上各點,則圖像可由z=f(x,y)來表示。因爲空間是三維的,圖像是二維的,所以空間中物體在另外一個維度上的關係就由梯度來表示,這樣咱們能夠經過觀察圖像得知物體在三維空間中的對應關係。爲何要提梯度?由於實際上對圖像進行二維傅立葉變換獲得頻譜圖,就是圖像梯度的分佈圖,固然頻譜圖上的各點與圖像上各點並不存在一一對應的關係,即便在不移頻的狀況下也是沒有。傅立葉頻譜圖上咱們看到的明暗不一的亮點,實際上圖像上某一點與鄰域點差別的強弱,即梯度的大小,也即該點的頻率的大小(能夠這麼理解,圖像中的低頻部分指低梯度的點,高頻部分相反)。通常來說,梯度大則該點的亮度強,不然該點亮度弱。這樣經過觀察傅立葉變換後的頻譜圖,也叫功率圖,咱們首先就能夠看出,圖像的能量分佈,若是頻譜圖中暗的點數更多,那麼實際圖像是比較柔和的(由於各點與鄰域差別都不大,梯度相對較小),反之,若是頻譜圖中亮的點數多,那麼實際圖像必定是尖銳的,邊界分明且邊界兩邊像素差別較大的。對頻譜移頻到原點之後,能夠看出圖像的頻率分佈是以原點爲圓心,對稱分佈的。將頻譜移頻到圓心除了能夠清晰地看出圖像頻率分佈之外,還有一個好處,它能夠分離出有周期性規律的干擾信號,好比正弦干擾,一副帶有正弦干擾,移頻到原點的頻譜圖上能夠看出除了中心之外還存在以某一點爲中心,對稱分佈的亮點集合,這個集合就是干擾噪音產生的,這時能夠很直觀的經過在該位置放置帶阻濾波器消除干擾.
圖像是兩個參數的函數,經過一組正交函數的線性組合能夠將其分解,而傅里葉就是經過諧波函數來分解的。而對於離散傅里葉變換,傅里葉變換的條件是存在的
傅里葉變換進行圖像處理有幾個特色
1. 直流成分F(0,0)等於圖像的平均值;
2. 能量頻譜|F(u,v)|^2徹底對稱於原點;其中F=PfQ, f表示原圖,P和Q都是對稱的實正交矩陣,這個公式表示傅里葉變換就是個正交矩陣的正交變換
3.圖像f平移(a,b)後,F只有exp[-2pij(au/M+bv/M)]的相位變化,能量頻譜不發生變化。
4. 圖像f自乘平均等於能量頻譜的總和,f的分散等於能量頻譜中除直流成分後的總和。
5.圖像f(x,y)和g(x,y)的卷積h(x,y)=f(x,y)*g(x,y)的傅里葉變換H(u,v)等於f(x,y)和g(x,y)各自的傅里葉變換的乘積。
圖像中的每一個點經過傅里葉變換都成了諧波函數的組合,也就有了頻率,這個頻率則是在這一點上全部產生這個灰度的頻率之和,也就是說傅里葉變換能夠將這些頻率分開來。當想除去圖像背景時,只要去掉背景的頻率就能夠了。
參見:圖像傅里葉變換
不管是傅立葉變換、離散餘弦變換仍是小波變換,其本質都是基的變換。
對於給定函數f(x),關鍵是選擇合適的基,使得f(x)在這組基下的表現出咱們須要的特性,當某一組基不知足要求時, 就須要經過變換將函數轉換到另外一組基下表示,方可獲得咱們須要的函數表示。 經常使用的變換有傅立葉變換〈以正弦和餘弦函數爲基函數〉、 小波變換〈以各類小波函數爲基函數〉、 離散餘弦變換以及Walsh變換等
6.2節介紹了離散傅里葉變換(DFT)的原理,但並無涉及其實現問題,這主要是由於DFT的直接實現效率較低. 在工程實踐中,咱們迫切地須要一種可以快速計算離散傅立葉變換的高效算法,快速傅立葉變換(FFT)便應運而生.本節將給出快速傅立葉變換算法的原理及其實現細節.
這就是DFT的一種快速算法。
複數的加法乘法計算量很大,FFT利用了DFT中WN的週期性和對稱性,把一個N項序列按奇偶分組,分爲兩個N/2項的子序列,繼續分解,迭代下去,大大縮減計算量。具體算法就看那張蝶形圖吧。
FFT對傅氏變換的理論並無新的發現,可是對於在計算機系統或者說數字系統中應用離散傅里葉變換,能夠說是進了一大步。
之因此提出快速傅立葉變換(FFT)方法,是由於在計算離散域上的傅立葉變換時. 對於N點序列,它的 DFT變換與反變換對定義爲:
具體可參見: 10、從頭至尾完全理解傅里葉變換算法、上
Matlab中提供了fft和ifft函數分別計算二維傅立葉變換和反變換,它們都通過了優化,速度很快:
另外一個與傅立葉變換密切相關的函數是fftshft,常須要利用它來將傅立葉頻譜圖中的零頻點移動到頻譜圖的中心位置
fftshit函數
fft2函數輸出的頻譜分析數據是按原始計算所得的順序,來排列,而不是以零頻爲中心來排列,所以形成了零頻在輸頻譜矩陣的角上,顯示幅度譜圖像時表現爲4個亮度較高的角(零頻處的幅值較高)
fftshift函數利用了頻譜的週期性特色,將輸出圖像的一半平移到另外一端,從而使零頻被移動到圖像的中間。其調用語法爲:
Y = fftshift(X)
Y = fftshift(X,dim)
dim指出了在多維數組的哪一個維度上執行平移操做.
注意:在執行IFFT2函數以前,若是曾經使用FFTShift函數對頻域圖像進行過原點平移,則還須要4將原點平移回原位置.
I1 = imread('cell.tif');
fcoef = fft2(I1);
spectrum = fftshift(fcoef);
temp = log(1+abs(spectrum));
subplot(1,2,1);
imshow(temp,[]);
title('FFT');
subplot(1,2,2);
imshow(I1);
title('Source');
I2 = imread('circuit.tif');
fcoef = fft2(I2);
spectrum = fftshift(fcoef);
temp = log(1+abs(spectrum));
figure;
subplot(1,2,1);
imshow(temp,[]);
title('FFT');
subplot(1,2,2);
imshow(I2);
title('source');
能夠看出, 圖(b)中的圖像較爲平滑, 而在其傅立葉頻譜中,低頻部分對應的幅值較大,而對(d)中細節複雜的的圖像circuit.tif,灰度的變化趨勢更加重烈,相應的頻譜中高頻份量較強。
事實上,因爲(b)圖中基本只存在水平和垂直的線條,致使在輸出的頻譜中亮線集中存在於水平和垂直方向(而且通過原點〉。具體地說,原圖像中的水平邊緣對應頻譜中的豎直亮線,而豎直邊緣則對應頻譜中的水平響應。咱們不妨這樣理解,水平方向的邊緣能夠看做在堅直方向上的灰度值的矩形脈衝,而這樣的矩形脈衝能夠分解爲無數個豎直方向正弦平面波的疊加,從而對應頻域圖像中的垂直亮線:而對於豎直方向的邊緣,狀況相似。
經過例6.1,能夠發現一些頻譜與其空間域圖像之間的聯繫.實際上,低頻(頻譜圖像中靠近中心的區域〉對應圖像的慢變化份量:高頻〈頻譜圖像中遠離中心的區域〉對應一幅圖像中較快變化的灰度級, 經常對應圖像細節, 如物體的邊緣和噪聲等。以圖6.14 (c)的電
路圖像爲例,電路板的灰度較爲一致的背景區域就對應着頻譜的低頻部分,而橫豎電路線條的灰度變換則是相對高頻的成份,且灰度變換越劇烈,就對應越高的頻域份量.
美女與貓一一交換兩幅圖像的相位譜
圖a,(b)中分別是一張美女的照片和一張貓的照片,這裏咱們準備交換這兩幅
圖像的相位譜,然用美女的幅度譜加上貓的相位譜,而用貓的幅度譜加上美女的相位譜,然
後根據式(6-18)經過幅度譜和相位譜來還原傅立葉變換F(u,v),再經傅立葉反變換獲得文
又相位譜以後的圖像. 根據6.2.2小節中關於幅度譜和相位譜各自做用的討論,您能想到這樣
作將會產生怎樣的結果嗎?
% c6s2.m
% 讀取圖片
A = imread('beauty.jpg');
B = imread('cat.jpg');
% 求傅立葉變換
Af = fft2(A);
Bf = fft2(B);
% 分別求幅度譜和相位譜
AfA = abs(Af);
AfB = angle(Af);
BfA = abs(Bf);
BfB = angle(Bf);
% 交換相位譜並重建複數矩陣
AfR = AfA .* cos(BfB) + AfA .* sin(BfB) .* i;
BfR = BfA .* cos(AfB) + BfA .* sin(AfB) .* i;
% 傅立葉反變換
AR = abs(ifft2(AfR));
BR = abs(ifft2(BfR));
% 顯示圖像
subplot(2,2,1);
imshow(A);
title('美女原圖像');
subplot(2,2,2);
imshow(B);
title('貓的原圖像');
subplot(2,2,3);
imshow(AR, []);
title('美女的幅度譜和貓的相位譜組合');
subplot(2,2,4);
imshow(BR, []);
title('貓的幅度譜和美女的相位譜組合');
經過這個示例能夠發現, 經交換相位譜和反變換以後獲得的圖像內容與其相位譜對應的圖像一致, 這就印證了咱們以前關於相位譜決定圖像結構的論斷。 而圖像中總體灰度分佈特性, 如明暗、 灰度變化趨勢等則在較大程度上取決於對應的幅度譜, 由於幅度譜反映了圖像總體上各個方向的頻率份量的相對強度。