2016年12月9日 更新

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

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

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

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

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

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

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

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

ここで、この内部構造について説明していきましょう。以下は画像解析における畳み込み(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の左側です。
 (1536)

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

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

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

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

 (1540)

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



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

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

29 件

関連する記事 こんな記事も人気です♪

30秒動画で学ぶ画像処理 #01〜フーリエ変換、フィルタ〜

30秒動画で学ぶ画像処理 #01〜フーリエ変換、フィルタ〜

30秒動画でわかる画像処理講座です。第一弾はフーリエ変換してハイパスフィルタの通し方についてご紹介します。
画像処理におけるフーリエ変換④〜pythonによるフィルタ設計〜

画像処理におけるフーリエ変換④〜pythonによるフィルタ設計〜

画像処理におけるフーリエ変換の最終回として、pythonによるフィルタ設定についてご紹介します。
【画像の再構成理論①】〜手ブレ、ピンボケ〜

【画像の再構成理論①】〜手ブレ、ピンボケ〜

今日は画像の再構成についてご紹介します。理論的なアプローチなので数式が少し出てきますが、行列計算くらいなので恐れず読んでくれると嬉しいです。
シリーズ6.マクロ言語を使った画像処理の応用編~ノイズ軽減① 空間フィルタ処理~

シリーズ6.マクロ言語を使った画像処理の応用編~ノイズ軽減① 空間フィルタ処理~

【記事の目標】 画像を触ったことがない人を対象として、適切な画像解析を施すまでのImageJのマクロ言語を用いた学習過程を示す。 今回の記事から応用編としてさらに詳しく画像処理を学んでいきます。最初のテーマはノイズ軽減です。
ImageJ Plugin で数値計算をしてみる #5

ImageJ Plugin で数値計算をしてみる #5

非情報科学研究者 (特に生物系研究者) が ImageJ plugin を作るために超えるべき壁やTipsをまとめます。今回は、面積の平均値や中央値、分散を出力するためのコードをご紹介します。
湖城 恵 | 10,223 view

この記事のキーワード

この記事のキュレーター

エルピクセル編集部 エルピクセル編集部