1. 程式人生 > >數字圖像處理之傅裏葉變換

數字圖像處理之傅裏葉變換

灰度 grid bmp 填充 erl pre light angle tex

數字圖像處理之傅裏葉變換

by方陽

版權聲明:本文為博主原創文章,轉載請指明轉載地址

http://www.cnblogs.com/fydeblog/p/7068986.html

1. 前言

今天將之前學的數字圖像處理的東西放到博客園裏,所以下面會有連續幾篇的博客都是關於數字圖像處理的!

這篇博客將介紹圖像的快速傅裏葉變換逆變換以及圖像的平移變換的實現,理論的知識還請看書和百度,這裏不再復述

2. 原理說明

(1) 圖像的二維FFT變換可以觀察圖像的頻譜,再進行逆變換即可復原圖像;

(2) 圖像的平移性:圖像在空間域乘以-1^(x+y),再進行傅裏葉變換,即可看出圖像的頻譜圖在x和y周平移了半個周期,原因是-1^(x+y)傅裏葉變換表現復指數函數,相當於頻譜的平移;

3. 實現內容

(1) 選擇一幅圖像,顯示傅裏葉變換頻譜。再對得到傅裏葉圖像做傅裏葉逆變換,顯示圖像,觀察是否與原圖像相同。

(2) 圖像做傅裏葉變換的平移性證明,將頻譜中心移至中央。

4. 程序實現及實驗結果

(1) 圖像的傅裏葉變換與反變換

參考代碼:

I=imread(‘lena.bmp‘);
I_2D=D3_To_D2(I);
I1=fft2(I_2D);
I2=uint8(real(ifft2(I1)));
I1=log(1+abs(fftshift(I1)));
figure;
subplot(1,3,1);
imshow(I);
title(‘原圖‘);
subplot(1,3,2);
imshow(I1,[]);
title(‘fft2後的頻譜‘);
subplot(1,3,3);
imshow(I2,[]);
title(‘ifft2後的復原圖像‘);

D3_To_D2函數(將三維降二維)參考代碼:

function image_out=D3_To_D2(image_in)
[m,n]=size(image_in);
 n=n/3;%由於我的灰度圖像是185x194x3的,所以除了3,你們如果是PxQ的,就不要加了
 A=zeros(m,n);%構造矩陣
 for i=1:m
     for j=1:n
        A(i,j)= image_in(i,j);%填充圖像到A
     end
 end
image_out=uint8(A);

運行結果:

技術分享

(2)平移驗證

參考代碼:

f(1000,1000)=0;
f=mat2gray(f);
[Y,X]=meshgrid(1:1000,1:1000);
f(350:649,475:524)=1;
f2=f.*(-1).^(X+Y);
f1=fft2(f);
f1_1=abs(f1);
f2=fft2(f2);
f3=log(1+abs(f2));
figure;
subplot(2,2,1);
imshow(f);
title(‘原圖‘);
subplot(2,2,2);
imshow(f1_1,[]);
title(‘fft2後的頻譜‘);
subplot(2,2,3);
imshow(abs(f2),[]);
title(‘中心化‘);
subplot(2,2,4);
imshow(f3,[]);
title(‘對數化‘);

運行結果:

技術分享

(3)相角復原(新添的)

參考代碼:

I=imread(‘boy.jpg‘);
I=D3_To_D2(I);
I=fft2(I);
I_angle=angle(I);
I4=exp(1i*I_angle);
I4=uint8(ifft2(I4)*256);
I5=ifft2(I);
figure;
subplot(2,2,1);
imshow(I_angle);
title(‘相角‘);
subplot(2,2,2);
imshow(I4,[]);
title(‘相角復原後的圖像‘);
subplot(2,2,3);
imshow(I5,[]);
title(‘譜復原後的圖像‘);

運行結果:

技術分享

五. 結果分析

1.由第一個圖可以看出,圖像經過傅裏葉變換再經過傅裏葉反變換是可以還原出原圖像的。

2.由第二個圖可以看出,圖像的平移性對觀察圖像的傅裏葉頻譜很有幫助,圖像的頻譜經過平移,低頻聚集在中心,易於觀察,對頻譜進行對數化可以更加直觀看圖像的頻譜分布。

3.由第三個圖可以看出,相角決定圖像的細節。

數字圖像處理之傅裏葉變換