【Python/NumPy】高速フーリエ変換でスペクトル強度の算出

この記事では、Python+SciPy+NumPyを用いて、高速フーリエ変換によりスペクトル強度を算出する方法をソースコード付きで解説します。

スポンサーリンク

高速フーリエ変換でスペクトル強度算出

NumPyには、2次元配列の高速フーリエ変換をおこなうメソッド「numpy.fft.fft2(img)」があります。
今回はこれらを用いて、SciPyで読み込んだ画像を高速フーリエ変換し、スペクトル強度を算出してグラフ表示してみました。

スポンサーリンク

ソースコード(Python3+SciPy+NumPy)

サンプルプログラムのソースコードです。

# -*- coding: utf-8 -*-
import numpy as np
from scipy import ndimage
import matplotlib.pyplot as plt

def main():
    # 入力画像をグレースケールで読み込み
    img = ndimage.imread('input.jpg', mode='L')

    # 高速フーリエ変換(2次元)
    fimg = np.fft.fft2(img)

    # 零周波数成分を配列の左上から中心に移動
    fimg =  np.fft.fftshift(fimg)

    # 強度スペクトルの計算
    mag = 20*np.log(np.abs(fimg))

    # 入力画像とスペクトル画像をグラフ描画
    plt.subplot(121)
    plt.imshow(img, cmap = 'gray')
    plt.title('Input Image')
    plt.subplot(122)
    plt.imshow(mag, cmap = 'gray')
    plt.title('Magnitude Spectrum')
    plt.show()


if __name__ == "__main__":
    main()
スポンサーリンク

実行結果

サンプルプログラムの実行結果です。
■入力画像(左)と出力画像(右)

【Python超入門】使い方とサンプル集
Pythonとは、統計処理や機械学習、ディープラーニングといった数値計算分野を中心に幅広い用途で利用されている人気なプログラミング言語です。 主な特徴として「効率のよい、短くて読みやすいコードを書きやすい」、「ライブラリが豊富なのでサクッと...
Python画像処理
スポンサーリンク

コメント