私は2D Scipy FFTで画像のデコンボリューションを行っています。しかし、Matplotlibは明らかな理由がなく、RGB値が正しいとしても、生成されたIFFT配列の配色を反転しています。Matplotlibは2D IFFT配列の色を反転します
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()
IFFTアレイと画像アレイはnumpy.array_equalによると等しく、さらに2番目の図のカラーマップは常に反転します。添付の画像を参照してください。配列は、文字通り同一であり、他のカラーマップが指定されていない、まだ私はこのような何か使用して手動で反転すべてに強制しています:astypeののfloat32への変換(またはそれ以前UINT32)が何かを変える可能性がある場合、私は疑問に思う
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]
をしかし、配列は同じなので、わかりません。
アイデア?また、配列内のすべてのエントリから手動で255を引くより効率的な代替方法である場合は、cmap全体を逆にする方法も理解したいと思います。
ifft2 imaginaryの結果ですか?もしそうなら、それをキャストして、IFFTの大きさ(絶対値)をプロットしてみてください。 – Suever
一部のRGB値は虚数成分を持ちますが、タイプ変換の代わりにnp.absoluteを使用しても、色は反転します。私はそれを考慮しなかったので、ありがとう。奇妙な問題。 – JAustin