画像処理におけるフーリエ変換③〜ImageJでたたみこみ〜

今回は画像処理におけるフーリエ変換の3回目ということで、たたみこみについてご紹介します。

こんにちは、今回は画像処理におけるフーリエ変換の3回目ということで、たたみこみについてお話ししたいと思います。
たたみこみはフーリエ変換を理解するためにも非常に重要な概念です。また確率過程の計算においてもたたみこみが用いられています。ここではたたみこみがどのように計算されるのか、そして、フィルターとはどういうものかについて話していきたいと思います。

復習にはなりますがImageJで実装してみましょう。ImageJを起動して画像を開いてください。(画像はクリックすると拡大します)
そして、command+shift+Dで複製をし、command+Aで全て選択、command+Xで消去してください。すると下のような画面になったと思います。

ここで、たたみこむ画像を作ります。Tool Boxからどれでも選び、任意の場所に図形を書いてください。

次にこれにcommand+Fで白くしてください。(灰色になることもあるようです)、それかcommand+ shift+I で画素値で反転してもOKです。

次にこれをたたみこみます。Process -> FFT -> FDMath からconvolveにするとたたみこむことができます。

この場合は以下のようなピンボケ画像が得られたと思います。これは「画像の再構成理論①〜手ブレ、ピンボケ〜」でも説明したのと同じです。

ここで、この内部構造について説明していきましょう。以下は画像解析における畳み込み(http://www.clg.niigata-u.ac.jp/~medimg/practice_medical_imaging/imgproc_scion/4filter/index.htm
)を参考にしました。(少し式を訂正しました)

まず、一次元の信号において、たたみこみとは次のような演算です。

1.まずgの中心を注目する要素に合わせます。

2.注目する要素とgとをすべてかけます。
 例えば注目する要素がcの場合、[cx,cy,cz]という組ができます。

3.すべての部分の足しあわせを行います。
 例えばc'について計算する場合、c'は右から3番目であり、右から3番目の部分に影響を与えるのは、bを中心としたときのgの右側とcを中心としたときのgの中央とdを中心としたときのgの左側です。

それぞれについて計算すると以下のような結果が得られると思います。

ここで、なぜa'とg'は計算されていないのかと疑問に思う方もいらっしゃると思います。これは、画像の境界の外の設定の仕方によってその値が異なるからです。境界の外が繰り返しになっているか、それとも0かによってa',g'の値が違ってくることがわかります。

次に画像におけるたたみこみについて説明します。画像は信号が2次元になっただけで、1次元の信号と同じような計算によって畳み込みを実行することができます。

下に画像におけるたたみこみの計算例を一部示します。

ある1ピクセルを計算するときの手順は一次元の信号と同じです。画像の場合2次元信号になっただけで、計算量は増えますが、同じような処理をすればよいことがわかります。



ここで、境界部分をどう計算するかについての条件が必要であることがわかります。ImageJのConvolutionはdefaultでは境界条件として繰り返しを採用しています。表示されている画像の外側にもタイル状に画像がいくつも並んでいるのをイメージしてください。具体的にどういうことかを説明したいと思います。

例えば、以下の二つの画像をたたみこむとしましょう。どんな画像が得られるのでしょうか?

得られる画像は下のようになります。

画像が出現しました。これは一体何なんでしょうか。

これについては以下の二つの画像で納得していただけると思います。境界には繰り返し同じ画像があるとかんがえます。左上を計算するためには、繰り返して配置された画像の右下の部分が必要になるわけです。これによって、畳み込まれた画像には画像の右下の部分が出力されたわけですね。

以上で畳み込みについてわかったのではないでしょうか。たたみこみが膨大な量の計算によってなされていることがわかったとおもいます。

ここで、この章でのメインテーマである、フーリエ変換とたたみこみとの関係について述べたいと思います。

単純化するために、以下のように3×3の画像を二つ(X[n],Y[n])を用意して、二つをたたみこんで、Z[n]になったと仮定します。

X[n]は繰り返しになっているとしているので、Z[0]の成分は以下のように計算されます。nが負のときは X[n] = X[8+n]です。

一般的にZの成分は

と計算されそうです。
ここで離散フーリエ変換という技を使います。すると、上の式はフーリエ変換対にハット(^)をつけるとすると

と表されるのです。たたみこみはフーリエ変換の積になるということになるわけです。

つまり、たたみこみを計算する際、実際に計算する必要はなく、フーリエ変換という方法を絡めれば計算が簡単になるのです。

今回でフーリエ変換のたたみこみについてある程度イメージはつかめたのではないでしょうか?フーリエ変換のたたみ込みはいろんなところで使われることなので、ぜひともマスターしたいものですね!