今回は、非線形な画像変換を用いた位置合わせを紹介します。
線形あるいは非線形な変換とは、どういう意味でしょうか?
まず、平行移動と回転だけを用いた位置合わせは、形が変わらない(剛体)ので、「剛体位置合わせ」と呼ばれます。また、平行移動と回転だけでなく、拡大・縮小等の変形も含まれるアフィン変換は、形が変わっている(非剛体)ので、「非剛体位置合わせ」と呼ばれます。しかし、両者とも変換前後の座標の関係は、下のような線形変換な表現行列(アフィン変換行列)で表されるので、「線形変換による位置合わせ」と言えます。
線形あるいは非線形な変換とは、どういう意味でしょうか?
まず、平行移動と回転だけを用いた位置合わせは、形が変わらない(剛体)ので、「剛体位置合わせ」と呼ばれます。また、平行移動と回転だけでなく、拡大・縮小等の変形も含まれるアフィン変換は、形が変わっている(非剛体)ので、「非剛体位置合わせ」と呼ばれます。しかし、両者とも変換前後の座標の関係は、下のような線形変換な表現行列(アフィン変換行列)で表されるので、「線形変換による位置合わせ」と言えます。
図1. 線形変換による座標変換を表す式(λは拡大・縮小率、θは回転角度、Tx, Tyはx, y方向の平行移動)
一方、上のような線形変換な表現行列で表すことができないような画像変換による位置合わせを「非線形変換による位置合わせ」と呼びます。もちろん、形が変わるので、「非剛体位置合わせ」になります(図2)。
一方、上のような線形変換な表現行列で表すことができないような画像変換による位置合わせを「非線形変換による位置合わせ」と呼びます。もちろん、形が変わるので、「非剛体位置合わせ」になります(図2)。
図2. 原画像(左)に対して非線形な画像変換を施した画像(右)
非線形変換による位置合わせを実装できるplugin(bUnwarpJ)が、Fijiに搭載されています。
今回は、図2の2つの画像を用いて「非線形変換による位置合わせ」を実装してみようと思います。
非線形変換のアルゴリズムには、B-spline法が用いられています。
B-spline関数は、CGの分野などにおいても、空間の任意の位置における変位を記述する、自由形状変形(free form deformation)によく用いられます。
この手法では、画像上に制御点を格子状(間隔δ)に設定し、その点を移動させることで変形を行い、その他の点の移動は補間によって求めます(図3)。下式のように、任意の座標における変位場μ(x, y)は、近傍4点の制御点の変位場Φ(i, j)にB-spline関数を掛けたものの足し合わせで表わされます。これにより、なめらかな任意の変形が表現されます。
今回は、図2の2つの画像を用いて「非線形変換による位置合わせ」を実装してみようと思います。
非線形変換のアルゴリズムには、B-spline法が用いられています。
B-spline関数は、CGの分野などにおいても、空間の任意の位置における変位を記述する、自由形状変形(free form deformation)によく用いられます。
この手法では、画像上に制御点を格子状(間隔δ)に設定し、その点を移動させることで変形を行い、その他の点の移動は補間によって求めます(図3)。下式のように、任意の座標における変位場μ(x, y)は、近傍4点の制御点の変位場Φ(i, j)にB-spline関数を掛けたものの足し合わせで表わされます。これにより、なめらかな任意の変形が表現されます。
図3. 格子状に配置した制御点(黄色)を移動させて変形を行い、その他の点の移動は、B-spline関数で補間する。
では、位置合わせpluginを実装してみましょう。
まず、Fijiのplugins > Registration > bUnwarpJを選択します(図4)。
まず、Fijiのplugins > Registration > bUnwarpJを選択します(図4)。
図4. Fijiの非線形変換による位置合わせplugin(bUnwarpJ)を選択
各パラメータを設定します。Source画像とTarget画像を選択し、registrationのモードは精度や速度の好みに合わせて選択できます。Verboseにチェックを入れると変形場や変形後の制御点の位置情報も取得できます(図5)。