ホモグラフィ
読み: ほもぐらふぃ
2 つの平面間の射影変換を表す 3×3 行列。パノラマ合成、射影補正、AR マーカー認識などで画像間の幾何学的対応を記述する。
ホモグラフィ (Homography) とは、ある平面から別の平面への射影変換 (Projective Transformation) を表す 3×3 の変換行列である。2 枚の画像間で同一平面上の点がどのように対応するかを記述し、パノラマ合成、射影歪み補正、AR (拡張現実) のマーカー認識に不可欠な概念である。
ホモグラフィ行列 H は 8 つの自由度を持ち、同次座標系で以下のように表される。
- 変換前の点
(x, y, 1)に H を掛けると、変換後の点(x', y', w')が得られる - 実際の座標は
(x'/w', y'/w')として正規化する - 最低 4 組の対応点があれば H を一意に決定できる
ホモグラフィの推定手順は以下のとおりである。
- 特徴点検出: SIFT、ORB などで両画像の特徴点を抽出する
- マッチング: 記述子の類似度で対応点ペアを見つける
- RANSAC: 外れ値 (誤対応) を除去しながらロバストに H を推定する
- 最適化: Levenberg-Marquardt 法で再投影誤差を最小化し、H を精緻化する
ホモグラフィはアフィン変換の上位概念であり、平行線の保存を要求しない。そのため台形歪みや遠近感の補正が可能である。ただし、シーン内の物体が単一平面上にない場合 (奥行きが異なる物体が混在する場合) は、単一のホモグラフィでは正確に変換できない点に注意が必要である。
OpenCV では cv2.findHomography() で推定し、cv2.warpPerspective() で画像を変換する。