前回紹介した、LPixel社のImageJ registration pluginに引き続き、今回は、FijiというImageJの拡張版ソフトを使った画像位置合わせを紹介しようと思います。
ちなみに、FijiでもImageJと同じくpluginやマクロを自作して追加することができますので、ご興味のある方は是非、研究者のためのImageJ勉強会#1(http://lpixel.connpass.com/event/30342/)で学ばれてみてください。
ちなみに、FijiでもImageJと同じくpluginやマクロを自作して追加することができますので、ご興味のある方は是非、研究者のためのImageJ勉強会#1(http://lpixel.connpass.com/event/30342/)で学ばれてみてください。
まず、位置合わせしたい2つの画像を開いてから、plugins > Registration > Rigid Registrationを選択します(図1)。Rigid Registrationとは、画像の平行移動と回転を組み合わせた位置合わせのことです。
今回は、元画像を時計周りに30度回転+縦横方向にそれぞれ20(pixels)平行移動させた処理画像を準備します(図2)。
まず、元画像を処理画像にRigid Registrationするためのパラメータを図2のように設定します。
まず、元画像を処理画像にRigid Registrationするためのパラメータを図2のように設定します。
Transforming: 動かす画像(ここでは元画像:original.raw)
Template: ターゲット画像(ここでは処理画像:After.raw)
Measure: 画像の類似度の評価関数(ここでは相互情報量:mutual information)
show transformed: 移動後の画像を表示します
show DifferenceImage: 移動後の画像とターゲット画像の差分を表示します
[OK]をクリックすると、
図3のように、元画像が、処理画像にRigid Registrationされた(左下)のが分かると思います。
また、右下に処理画像とregistration画像の差分画像が表示されています。多少の誤差はありますが、精度よく位置合わせが行われていることが分かります(参考までに差分画像のヒストグラムも表示しました)
内部で行われているプロセスは、画像類似度と移動・回転量の対応関係を表す分布を作り、その分布に基づいて、最も類似度が高い場所に画像を移動・回転する、ということです。
このように、任意の平行・回転移動は、このpluginで容易に行うことができます。
また、この機能の拡張版として、複数の画像を一度にregistrationしてしまう機能もあります。
同じくRegistrationの中の "Register Virtual Stack Slices" というpluginです(図4)。
また、右下に処理画像とregistration画像の差分画像が表示されています。多少の誤差はありますが、精度よく位置合わせが行われていることが分かります(参考までに差分画像のヒストグラムも表示しました)
内部で行われているプロセスは、画像類似度と移動・回転量の対応関係を表す分布を作り、その分布に基づいて、最も類似度が高い場所に画像を移動・回転する、ということです。
このように、任意の平行・回転移動は、このpluginで容易に行うことができます。
また、この機能の拡張版として、複数の画像を一度にregistrationしてしまう機能もあります。
同じくRegistrationの中の "Register Virtual Stack Slices" というpluginです(図4)。
このpluginを選択すると、図5のような画面が表示されるので、sourceフォルダとoutputフォルダの場所を入力します。
sourceフォルダに、位置合わせしたい画像群を入れます。今回は元画像を含めて10種類の異なる移動・回転処理を施した画像(.png)を入れました(図6)。
sourceフォルダに、位置合わせしたい画像群を入れます。今回は元画像を含めて10種類の異なる移動・回転処理を施した画像(.png)を入れました(図6)。
図5で[OK]をクリックすると、sourceフォルダが開くので、リファレンス画像(ターゲット画像)をsourceフォルダから1つ選びます。つまり、残り9つの画像がその選択された画像に向けてregistrationされます。今回は、元画像(original.png)をリファレンス画像として選びました(図7)。