2014-11-02 100 views
0

我一直在努力讓它對子圖像進行傅里葉變換。我忙於塊變換編碼,用於壓縮圖像。如何計算8×8子圖像上的離散傅立葉變換

這裏是我到目前爲止的代碼:

A=imread('bone.tif'); 
A=double(A); 
[M N]=size(A); 
sub=8; 

temp=double(zeros(size(A))); 
for y=1:sub:M-sub+1 
    for x=1:sub:N-sub+1 
     croppedImage = A((y:y+sub-1),(x:x+sub-1)); %get 8 by 8 image 
     %what must I do here, discrete fourier transform      
     temp((y:y+sub-1),(x:x+sub-1))=t;   %holder of results 
    end 
end 

figure(2), 
subplot(1,3,1),subimage(uint8(A)); title('orginal image'); 
subplot(1,3,2),subimage(temp); title('block transformed image'); 

請給予建議或代碼DFT,如代碼

回答

0

哪裏是你做的DFT碼指示?沒有它,我們不能說爲什麼你不能工作。 Matlab確實有很好的文檔。首先看一些例子來獲得總體思路的DFT是什麼做的實際:

http://www.mathworks.de/help/matlab/math/discrete-fourier-transform-dft.html http://www.mathworks.de/help/signal/ug/discrete-fourier-transform.html

如果你瞭解,擴大到二維的問題。

+0

感謝您的回覆。我沒有成功的dft代碼這就是爲什麼我把它排除在外。我已經瀏覽過已經鏈接過的頁面,但我無法理解使用8乘8與matlab提供的fft2函數的概念。 – cfl 2014-11-02 10:53:06

+0

So croppedImage_spectral = fft2(croppedImage);不適合你嗎?通常,二維dft沿着列和沿着圖像的行進行一維dft。你可以閱讀圖像處理書籍中的理論。還有很好的matlab書籍。 – 2014-11-02 11:35:19

+0

謝謝,最初我以爲它不工作,因爲我嘗試它時遇到了一個隨機錯誤。但只是在顯示子圖像(溫度)時才意識到發生了錯誤。但適用於我使用子圖像(真實(溫度))。感謝您的幫助Tanja – cfl 2014-11-02 11:46:54