Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-14, 20:46   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 Matlab与Numpy + Python FFT2之间有差异吗?

所以我在Numpy上做一些关于Python绕射的作业。我的结果根本无法证明结果应该如何,我感到困惑。

我用来生成FFT的代码如下:

Python: aperaturearray = np.array(im) # Turn image into numpy array Ta = np.fft.fftshift(np.fft.fft2(aperaturearray)) ### I did some calculations here ### ftfm = Image.fromarray(np.uint8(Utfm)) ftfm.save(("Path")) Matlab: rect = imread('PATH\pyRectangle.jpg'); rectfft = fft2(rect); imwrite(rectfft, 'C:\Users\Dan\Documents\python\DiffPhotos\matlabRectfft','jpg') pyrectmat = ifft2(pyfftrect); imwrite(pyrectmat, 'Path','jpg') 图像在这里-> http://imgur.com/a/3Cw81#EdFoA

现在这是怎么回事?为什么FFT图像如此不同?不同的实现?为什么我的作业代码不起作用:(



回答:

首先,在Matlab中,从fft2返回的值很复杂。我不确定书写会如何处理它们。尝试使用此代码似乎可以得出明智的结果。 (使用log10有助于显示)

rect = imread('rect.jpg'); rectfft = fft2(rect); pcolor(log10(abs(rectfft))); shading flat 由于像素索引可能与图像的空间频率有关,因此图像在原点周围偏移。即低空间频率似乎接近0,0。较高的像素标记是这些频率的别名。您可以通过一些矩阵操作重新排列图像以将(0,0)放在中间。



更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 19:36


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.