最初の関係式 AX=B を、 A の特異値分解によって得られた3つの行列 U, D, Vを用いて下のように同値変換していくと、最終的に、U, D, V の逆行列と変換後行列 B を用いてアフィン変換行列 X を表すことができます。(U, D, V は、ユニタリ行列と呼ばれ、逆行列=転置行列になります)
このように、6行1列のアフィン変換行列 X が得られました。
この値を元のアフィン変換行列の形に書き換えてみると、下式のようになります。
この値を元のアフィン変換行列の形に書き換えてみると、下式のようになります。
上式を解くと、λ ≃ 1.2、θ = 30°となります。
つまり、元の正方形を1.2倍に拡大し、反時計回りに30°回転させ、X方向に+0.6, y方向に+0.4平行移動させる、という変換を行ったことが分かりました。
このように、変換前と後の特徴点の座標の情報からアフィン変換行列求めることによって、施された変換の内容を明らかにすることができます。さらに、その変換行列を用いて画像全体の位置合わせが可能となります。
今回、アフィン変換行列を求めるプログラムをpythonで書きましたので参考にしてみてください。
つまり、元の正方形を1.2倍に拡大し、反時計回りに30°回転させ、X方向に+0.6, y方向に+0.4平行移動させる、という変換を行ったことが分かりました。
このように、変換前と後の特徴点の座標の情報からアフィン変換行列求めることによって、施された変換の内容を明らかにすることができます。さらに、その変換行列を用いて画像全体の位置合わせが可能となります。
今回、アフィン変換行列を求めるプログラムをpythonで書きましたので参考にしてみてください。
ちなみに、OpenCVにはアフィン変換行列を求める関数が用意されており、下記のように、変換前後の4点の座標を指定すれば、直ちにアフィン変換行列が求められます。(もちろん、内部では特異値分解を行っています)
次回は、アフィン変換を用いた画像位置合わせの実装を紹介します。
前回までの記事はこちらをご覧ください。
医用画像位置合わせの基礎① 〜画像の類似度とは?〜
医用画像位置合わせの基礎② 〜相互情報量とは?〜
医用画像位置合わせの基礎③ 〜MRI画像を使った相互情報量の計算〜
医用画像位置合わせの基礎④ 〜LPixel ImageJ pluginを用いた画像位置合わせ〜
医用画像位置合わせの基礎⑤ ~Fiji pluginを用いた画像位置合わせ~
前回までの記事はこちらをご覧ください。
医用画像位置合わせの基礎① 〜画像の類似度とは?〜
医用画像位置合わせの基礎② 〜相互情報量とは?〜
医用画像位置合わせの基礎③ 〜MRI画像を使った相互情報量の計算〜
医用画像位置合わせの基礎④ 〜LPixel ImageJ pluginを用いた画像位置合わせ〜
医用画像位置合わせの基礎⑤ ~Fiji pluginを用いた画像位置合わせ~