【Python/OpenCV】高速フーリエ変換でローパスフィルタを実装してノイズ除去

Python版OpenCVとNumPyを用いてフーリエ変換とローパスフィルタを実装し、画像からノイズを除去する方法をソースコード付きで解説します。

フーリエ変換とは

フーリエ変換(Fourier Transform)とは、信号を時間領域から周波数領域に変換する処理です。 フーリエ変換では「一定の周期をもつ信号は複数の正弦波の和で表現できる」というフーリエ級数の性質を使って、周波数領域に変換します。 これにより、信号に「どのような周波数成分がどれだけ含まれているのか」を解析することができます。 変換後の信号、正弦波の和は$sin(wt)$でなく、複素正弦波$e^{jwt}$を使うため、複素数で表現されます。

逆に、周波数領域に一度変換された信号を時間領域に戻すこともできます。 これを逆フーリエ変換(Inverse Fourier Transform)といいます。フーリエ変換の詳細については以下ページで解説しています。

【フーリエ変換】計算式の原理・意味
フーリエ変換の原理について入門者向けに紹介します。

解説動画

本ページの内容は以下動画でも解説しています。

画像処理におけるフーリエ変換

フーリエ変換は周波数解析ができる便利なデータ変換です。 画像に対しても利用できますが、周波数の考え方が通常の信号とは異なるので注意する必要があります。

  • 通常の信号データ
    • 周波数=単位時間内にどのくらい振動するか
  • 画像データ
    • 周波数=単位ピクセル内に画素値がどのくらい変化するか
記事の監修者
西住技研

プログラミング言語「Python」を研究、仕事、趣味でデータ分析や作業自動化などに活用してきたノウハウを情報発信しています。
筆者の詳しいプロフィールやお問合せはこちらのページまで。
YoutubeX(旧Twitter)でも情報発信中です!

西住技研をフォローする
OpenCV

コメント