今回は、ImageJという画像解析ソフトを使って、画像位置合わせにトライしてみようと思います。
従来のImageJには、画像位置合わせの機能が搭載されていませんでした。
ところが、ImageJは、Pluginとして自作した機能を追加することができるのです。
今回は、Lpixel社が開発・公開しているPluginの中で、画像位置合わせのPluginを使ってみようと思います。
ImageJへのPluginのインストールについては、下記のリンクを参照してください。
従来のImageJには、画像位置合わせの機能が搭載されていませんでした。
ところが、ImageJは、Pluginとして自作した機能を追加することができるのです。
今回は、Lpixel社が開発・公開しているPluginの中で、画像位置合わせのPluginを使ってみようと思います。
ImageJへのPluginのインストールについては、下記のリンクを参照してください。
LPixel ImageJ Plugins
Lpixel社が開発・公開しているPluginです。
今回は、脳MRI画像を縦、横にそれぞれ30(pixels)平行移動させた画像を元画像に位置合わせする、という操作を行ってみます。
図1は、Plugin(Lpx registration)をインストールした状態です。左の画像は、(上)元画像と(下)移動画像です。右下方向に平行移動しているのがわかると思います。この2つの画像を位置合わせしようと思います。
図1は、Plugin(Lpx registration)をインストールした状態です。左の画像は、(上)元画像と(下)移動画像です。右下方向に平行移動しているのがわかると思います。この2つの画像を位置合わせしようと思います。
図1. 元画像と移動画像(左)pluginインストール時の表示(右)
① まず、元画像と移動画像をStackさせます。つまり、2枚の画像を積み重ねて1つのセットにして、図2左上(Stack)のようにします。わかりやすくするため、Stack画像を透かしてみると、図2の左下(SUM_Stack)のようになり、ずれているのが分かります。
②そして、図2右のparmsに示すようにパラメータを設定します。
②そして、図2右のparmsに示すようにパラメータを設定します。
modeは、[serialShiftXy]を選択します。
ssxyModeは、[getShiftMap]を選択します。これは、XY方向へのズレの度合(画像類似度)を表す画像を取得するモードです。
calcMethodは、計算領域を縮小し、時間を短縮できる[pso]を選択します。
tileAsは、[stack]を選択します。
similarityは、2つの画像の類似度の評価関数を意味し、16種類から選択できますが、今回はzncc(正規化相互相関)を用います。
図2. 元画像と移動画像のStack(左)とパラメータの設定(右)
[OK]をクリックすると、図3のような分布が現れます。これは、移動画像を移動させた時の元画像と移動画像の相互相関値と移動量の関係を表したものです(原点は画像中央の十字マーク)。
その証拠に、図3画像中央から左方向と上方向にそれぞれ30 pixels移動した点が、相互相関値が1.0(最大の類似度)となっています。
その証拠に、図3画像中央から左方向と上方向にそれぞれ30 pixels移動した点が、相互相関値が1.0(最大の類似度)となっています。
図3. 移動画像を移動させた時の元画像と移動画像の相互相関値(zncc)の分布(右)
では、この画像類似度の分布を用いて、画像位置合わせを行うモードに移りましょう。
パラメータは図4のようになります。
図2と変わったところは、
パラメータは図4のようになります。
図2と変わったところは、
ssModeは、[useShiftMap]を選択します。これは、画像類似度分布を用いて位置合わせを行うモードです。
Shiftmapは、画像類似度分布(今回は、[Stack_ssxyGetMapPso@zncc@1])を選択します。