チーム15C2

課題名

FFTを用いた画像の周波数成分の可視化

研究者名

3年14組42番 Kyu Matuura
3年14組45番 Satoru Murakami

概要

高速フーリエ変換(FFT)を用いて、画像の周波数成分を可視化するプログラムを作成した。

高速フーリエ変換というのはデジタル信号(いわゆる離散値)に対して行う離散フーリエ変換を
処理速度を速めたものである。フーリエ変換を行うと、周波数成分に変換をすることができる。
 変換の手順を示すと、
 変換したい画像を入力
 →入力画像をグレースケール処理
 →処理した画像をFFTで変換
 →変換した値(絶対値)を色で区別したものを出力

 実際に画像を処理しながら見ていく。
 まず、入力画像は以下のものとする。
lena.jpg

 この画像をグレースケール処理すると以下のようになる。つまり、白黒の画像に変換する。
gray.jpg

 そして、この処理をしてから高速フーリエ変換を行う。高速フーリエ変換を行うことで周波数成分
に変換することができると言ったが値は複素数で表現される。複素数のままでは大きさの判断というのが
し辛いので絶対値(=パワースペクトラム)に直してから値の比較を行っている。そして、値ごとに色を
付けることで成分の分布を表現した画像が出力される。その画像が以下のものである。
freq.jpg

 画像の四隅は低周波成分、中央は高周波成分を表している。
赤い部分は、その周波数成分が多く画像に含まれていることを表し、青い部分は含まれていないことを表す。

 以上の処理を行うプログラムを今回実装した。


FFTプログラムの内容

プログラムは以下の4つに分かれている(記述はjava)。簡単な説明も付随する。

・Complex:複素数を表すクラス。
・FFT:高速フーリエ変換の計算を行うクラス
・FFT2D:高速フーリエ変換を2次元の高速フーリエ変換に拡張したクラス
・ImageFFT:周波数成分ごとに色を区別して表示するクラス

それぞれソースコードを載せる。
(見たいプログラムの名前をクリックしてください)

Complex.java


FFT.java


FFT2D


ImageFFT.java

考察

 画像処理を行った結果、低周波成分が大半を占めていることが分かった。
つまり、高周波成分を除去しても元の画像を保つことができる。
逆に低周波成分を除去しすぎると元の画像が大きく崩れる。
 この処理を行うことによってどの成分が重要で、どの成分がいらないかの区別を行うことができる。
そして、この技術を応用するとJPEGなどの画像圧縮処理に利用することができる。
 先の画像の高周波数成分をゼロにし、逆離散フーリエ変換した。
高周波数成分を大きく除去しても、元の画像が概ね保たれる。
以下に、高周波成分を除去したパワースペクトラムとそれを逆離散フーリエ変換した画像を示す。

lpf_freq.jpg

lpf_gray.jpg

  • 最終更新:2023-05-15 14:26:55

このWIKIを編集するにはパスワード入力が必要です

認証パスワード