2014-11-02 60 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