画像をフーリエ変換したい。しかし、どうすれば画像を配列に変更できますか?そしてこの後、変換にはnumpy.fft.rfft2を使用する必要があると思います。そして、配列から画像に戻す方法は?前もって感謝します。
8471 次
1 に答える
12
PILライブラリを使用して、画像をロード/保存したり、numpy配列との間で変換したりできます。
import Image, numpy
i = Image.open('img.png')
i = i.convert('L') #convert to grayscale
a = numpy.asarray(i) # a is readonly
b = abs(numpy.fft.rfft2(a))
j = Image.fromarray(b)
j.save('img2.png')
abs
FFTの結果は複雑な値であるため、画像に直接変換することは実際には意味がないため、上記で使用しました。グレースケールへの変換は、FFTが単一のチャネルでのみ行われるように行われます。代わりにチャネルを選択する別の方法を選択するか、正しいaxes
パラメータを渡してrfft2
後で必要なチャネルを抽出することができます。
編集:
また、逆FFTを実行して元の画像を取得するには、次のように機能します。
import Image, numpy
i = Image.open('img.png')
i = i.convert('L') #convert to grayscale
a = numpy.asarray(i)
b = numpy.fft.rfft2(a)
c = numpy.fft.irfft2(b)
j = Image.fromarray(c.astype(numpy.uint8))
j.save('img2.png')
于 2010-04-16T11:37:38.810 に答える