3

画像をフーリエ変換したい。しかし、どうすれば画像を配列に変更できますか?そしてこの後、変換にはnumpy.fft.rfft2を使用する必要があると思います。そして、配列から画像に戻す方法は?前もって感謝します。

4

1 に答える 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')

absFFTの結果は複雑な値であるため、画像に直接変換することは実際には意味がないため、上記で使用しました。グレースケールへの変換は、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 に答える