Jan Erik Solem によるProgramming Computer Vision with Pythonを読んでいますが、これはかなり良い本ですが、画像登録に関する質問を明確にすることができませんでした。
基本的に、少し位置合わせする必要がある画像 (顔) がたくさんあるので、最初に必要なのは相似変換を介して厳密な変換を実行することです。
x' = | sR t | x
| 0 1 |
ここで、x はベクトル (この場合は座標のセット) であり、回転 R、平行移動 t、場合によってはスケーリング s によって x' に変換されます。
Solem は、回転行列 R と並進ベクトルを tx と ty として返す各画像のこの剛体変換を計算します。
R,tx,ty = compute_rigid_transform(refpoints, points)
ただし、彼は何らかの理由で R の要素を並べ替えます。
T = array([[R[1][1], R[1][0]], [R[0][1], R[0][0]]])
その後、アフィン変換を実行します。
im2[:,:,i] = ndimage.affine_transform(im[:,:,i],linalg.inv(T),offset=[-ty,-tx])
この例では、このアフィン変換が各チャネルで実行されますが、それは関係ありません。im[:,:,i]
は処理するイメージで、このプロシージャは別のイメージを返します。
T
アフィン変換でその行列を逆にするのは何ですか?なぜですか? そして、画像登録を達成するための通常の手順は何ですか?
アップデート
ここでは、Google ブックスでこのコードの関連部分を見つけることができます。67ページの下から始まります。