影象處理(3)頻率域濾波
阿新 • • 發佈:2018-11-25
- Fourier變換
Fourier變換最開始由傅立葉提出,當時為了解決熱力學問題。後來經過發展形成了一套完整的理論,應用在物理學、訊號學等很多方面。如果一個函式滿足絕對可積條件,即:
因為計算機處理的是離散值,要求對f(x)和F(w)都取樣,這時Fourier變換被稱為離散Fourier變換(DFT),為:
求出離散Fourier變換需要的計算次數很多,為了降低計算量,可以利用快速Fourier變換方法(FFT),其利用了相位因子對稱性和週期性:
將f(n)拆分為兩部分,分別計算這兩部分DFT,然後每個部分再進行拆分,直到不能再進行拆分為止。
由於A(k)和B(k)是關於N/2週期對稱,所以有:
然後一直不斷進行分割。這樣可以大大降低計算量。
附上MATLAB程式碼:
function y=FFT_recur(x)
N=length(x);
x1=zeros(1,N/2);
x2=zeros(1,N/2);
y=zeros(1,N);
%split x into two space: odd and even
for j=1:N
if mod(j,2)==0
x1(j/2)=x(j);
else
x2((j+1)/2)=x(j);
end
end
if N==2
y(1)=x(1)+x(2);
y(2)=x(1 )-x(2);
else
x_a=FFT_recur(x1);
x_b=FFT_recur(x2);
for k=1:N/2
y(k)=x_a(k)+exp(-i*2*pi*(k-1)/N)*x_b(k);
y(k+N/2)=x_a(k)-exp(-i*2*pi*(k-1)/N)*x_b(k);
end
end
- 二維影象頻率濾波
頻率域濾波方法有很多,主要是濾除某種頻率成分,從濾除成分來看分為低通濾波、高通濾波、帶通濾波等,技術手段上看有理想低通濾波、ButterWorth濾波,高斯濾波等。
現在分別討論這三種濾波器。低通濾波器可以表示為在某一個頻率範圍是1,而之外為0。對於一幅影象,其中心頻率位於DFT變換函式的矩形中心,即F(k,l)中心(N/2,M/2),則理想低通表示為:
對於理想低通濾波器,其Fourier反變換函式為sinc函式,其圖形如下
圖1 理想低通濾波器
低通濾波器頻率域相乘,在空間域為卷積,上述函式在和DFT變換前函式卷積時,其邊瓣會造成振鈴。
為了消除邊瓣的波動,產生了ButterWorth和高斯濾波,當然也是因為理想低通濾波無法在物理上實現。而ButterWorth濾波器為
MATLAB實現程式碼如下:
function ifft_image=filter_frequency(image,mode,mode_parameter)
%fourier transformation
fft_image=fft2(image);
fft_image=fftshift(fft_image);
[row,col]=size(fft_image);
filter_temp=zeros(row,col);
%Low Pass filter
if strcmp(mode,'LowPass')
for i=1:row
for j=1:col
if sqrt((i-row/2)^2+(j-col/2)^2)<=mode_parameter
filter_temp(i,j)=1;
else
filter_temp(i,j)=0;
end
end
end
%Butter Worth filter with n=2
elseif strcmp(mode,'ButterWorth')
for i=1:row
for j=1:col
filter_temp(i,j)=1/(1+(sqrt((i-row/2)^2+(j-col/2)^2)/mode_parameter)^4);
end
end
%gaussion filter
elseif strcmp(mode,'Gaussion')
for i=1:row
for j=1:col
filter_temp(i,j)=exp(-((i-row/2)^2+(j-col/2)^2)/(2*mode_parameter^2));
end
end
end
fft_image=fft_image.*filter_temp;
fft_image=ifftshift(fft_image);
ifft_image=ifft2(fft_image);
ifft_image=abs(ifft_image);
- 結果
圖2 (a)原始1024x1024影象 (b)加入了週期噪聲
圖3 低通濾波 (a)D0=100 (b)D0=300
圖4 ButterWorth濾波 (a)D0=100 (b)D0=300
圖5 高斯濾波 (a)D0=100 (b)D0=300