我一直在使用2D Scipy FFT对图像进行反卷积处理。然而,Matplotlib似乎无缘无故地颠倒了生成的IFFT数组的颜色方案,尽管RGB值是正确的。
import numpy as np
from scipy import fftpack
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
image = mpimg.imread("C:/Users/-----/Desktop/image.jpg")
freq = fftpack.fft2(image)
IFFT = fftpack.ifft2(freq)
IFFT = IFFT.astype('float32')
plt.figure(1)
plt.imshow(image)
plt.figure(2)
plt.imshow(IFFT)
plt.show()
根据numpy.array_equal,IFFT数组和图像数组相等,但第二个图的颜色映射总是反转的。请参见附加的图像。这些数组完全相同,并且没有指定其他颜色映射,但我被迫手动反转所有内容,例如:
for i in range(0, freq.shape[1]):
for j in range (0, freq.shape[0]):
for k in range(0,3):
freq[j,i,k] = 255-freq[j,i,k]
我想知道astype转换为float32(或之前的uint32)是否可能会改变一些东西,但由于数组相同,我不知道。
有什么想法吗?我还想弄清楚如何反转整个cmap,如果这是手动从数组中减去255的更有效的替代方法。