Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
所以我在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)放在中间。 更多&回答... |
![]() |
![]() |