【发布时间】:2022-08-16 18:05:03
【问题描述】:
我正在从事一个涉及 Matlab 和 Python 的项目,并且正在制作一些图像。尽管我要转换为图像的矩阵是相同的,但我得到的图像却不一样。我认为这与用于显示图像的 Python 和 Matlab 命令之间的等效性有关,因此这就是我在这里的原因。
MATLAB代码:
fmn0 = imread(\'cameraman.tif\');
fmn=double(ifftshift(fmn0,2));
Fun=fftshift(fft(fmn,[],2),2);
imshow(real(Fun))
MATLAB 输出:
蟒蛇代码:
import numpy as np
import matplotlib.pyplot as plt
import cv2
def row_wise_fft(A):
A = np.asarray(A)
rowWiseFFT = np.zeros((A.shape[0], A.shape[1]), dtype=\'complex\')
for i in range(0, A.shape[0]):
rowWiseFFT[i, :] = np.fft.fft(A[i,:])
return rowWiseFFT
def row_wise_ifftshift(A):
for i in range(0, len(A)):
A[i] = np.fft.ifftshift(A[i])
return A
def row_wise_fftshift(A):
for i in range(0, len(A)):
A[i] = np.fft.fftshift(A[i])
return A
fmn = cv2.imread(\"cameraman.tif\", cv2.IMREAD_GRAYSCALE)
fun = row_wise_fftshift(row_wise_fft(row_wise_ifftshift(fmn)))
plt.set_cmap(\"Greys_r\")
plt.imshow(fun.real)
蟒蛇输出:
我可以看到一些相似之处,但是如何让 Python 输出与 Matlab 输出完全相同?请注意,有趣的矩阵是完全相同的。
-
做
imshow(real(Fun),[])并看到颜色自动调整的魔力消失! -
@AnderBiguri 您的评论很有用,如果我想将我的 Matlab 输出转换为我已经拥有的 python 输出,它就可以工作。但我想将 python 输出转换为 matlab 输出,而不是相反!
-
好吧....然后做相反的事情???让我换个说法,然后
do plt.clims([0 1])神奇地打开调整那个 MATLAB 的相同颜色! -
而已!谢谢您的帮助!如果您想在下面详细说明答案,我很高兴将其标记为正确的答案!只需注意一点:我使用了
plt.clim([0,1])
标签: python image matlab grayscale