Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Homography

ホモグラフィは、ビュー間で平面を対応付ける射影変換であり、透視補正、画像レジストレーション、パノラマスティッチングを可能にします。

ホモグラフィは、直線を保ちながら、一方の平面上の点を別の平面上の点に対応付ける可逆な射影変換です。コンピュータービジョンでは、平面が異なる視点からどのように見えるかを表します。たとえば、斜めから撮影した長方形のページを、正面向きの長方形に変換できます。ホモグラフィは、画像レジストレーション、透視補正、パノラマスティッチングに利用されます。「射影変換」は同義語です。一方、言語学用語の「同形異義語」は、綴りが同じ単語を指します。

ホモグラフィ行列の仕組み#

ホモグラフィは、通常 H と呼ばれる 3 x 3 の行列で表されます。この行列は、2次元の点を3つの値で表す同次座標に対して演算します。行列乗算の後、出力値の最初の2つを3つ目の値で割ると、通常の画像座標が得られます。

H は9つの要素を持ちますが、独立したパラメーターは8つ、つまり自由度は8です。すべての要素に同じゼロ以外の数を掛けても、マッピングは変わりません。この平面画像マッピングの幾何学により、適切な4組の点対応からホモグラフィを特定できる理由がわかります。

アフィン変換は、平行線を保つ制約付きのホモグラフィです。一般的なホモグラフィは、消失点に向かって平行な辺が収束する現象など、透視効果も表します。距離や角度は一般に変化します。ミシェル・シャルルは、1837年の双対性とホモグラフィに関する論考でこの概念を発展させました。

ホモグラフィの推定方法#

推定は対応点から始まります。対応点とは、2枚の画像内で同じ物理的特徴を示す位置です。手動で選択したコーナーや、特徴抽出によって得られた対応するキーポイントを使用できます。Scale-Invariant Feature Transformなどの手法では、ビュー間で特徴を照合するための記述子、つまり局所的な見た目を数値で要約したものを生成します。

必要な最小数は4組の点であり、どちらの集合でも3点が同一直線上にあってはなりません。直接線形変換(DLT)アルゴリズムは、点の座標関係を線形方程式系に変換します。測定にノイズが含まれる場合は、対応点を追加することで推定精度が向上します。

誤ったマッチには、ロバストなフィッティングが必要です。ランダムサンプルコンセンサス(RANSAC)は、小さなサブセットから候補変換を繰り返し推定し、候補と整合するマッチであるインライアを特定します。再投影誤差は、変換後の始点と観測された終点との距離を測定します。OpenCV のホモグラフィ推定 APIでは、この処理を cv2.findHomography を通じて実行でき、H とインライアマスクの両方が返されます。

Python でホモグラフィを適用する#

OpenCVには、行列の推定と画像のワーピングを行う個別の処理が用意されています。pip install opencv-python numpy で依存関係をインストールします。この例では、サンプル画像の長方形の境界を台形に変換します。

from urllib.request import urlopen

import cv2
import numpy as np

image_url = "https://ultralytics.com/images/bus.jpg"
with urlopen(image_url) as response:
    encoded = np.frombuffer(response.read(), dtype=np.uint8)
image = cv2.imdecode(encoded, cv2.IMREAD_COLOR)
height, width = image.shape[:2]

# 両方の配列で、同じ時計回りのコーナー順序を維持します。
source = np.float32([[0, 0], [width - 1, 0], [width - 1, height - 1], [0, height - 1]])
target = np.float32([[120, 80], [width - 121, 80], [width - 1, height - 1], [0, height - 1]])
matrix, _ = cv2.findHomography(source, target)
warped = cv2.warpPerspective(image, matrix, (width, height))
cv2.imwrite("homography_result.jpg", warped)

保存された画像では、透視による短縮が見られます。上辺は狭くなりますが、シーン内の直線の辺は直線のままです。

ホモグラフィの用途#

  • ドキュメント処理: 透視補正では、平面文書の4つのコーナーを長方形に対応付けます。この前処理により、光学文字認識の前にテキストのレイアウトを整えます。これは、OpenCV の透視補正の例で示されている平面ワープの幾何学と同じ原理に基づいています。
  • パノラマスティッチング: 重なり合う写真は、ブレンドする前に位置合わせされます。Matthew Brown と David Lowe のAutostitch システムは、対応する局所特徴を使ってパノラマの作成を自動化します。順序付けされていないコレクションから、重複する画像を特定する処理も含まれます。

Ultralytics YOLO では、RandomPerspective augmentationがトレーニング中に射影ワープを適用し、画像と、それに対応するバウンディングボックス、セグメンテーションの輪郭、キーポイントをまとめて変換します。perspective 設定は、このデータ拡張における透視成分を制御します。

単一のホモグラフィで、1つの平面を撮影した理想的なピンホールカメラのビュー間、または投影中心を中心にカメラを回転させて撮影したビュー間の関係を正確に表せます。カメラが並進し、異なる深度に物体がある場合、視差によって深度に応じた変位が生じます。背景平面を位置合わせすると、前景の物体はずれて残り、スティッチング画像に二重の輪郭やゴーストが発生します。

カメラキャリブレーションでは、平面の位置合わせの前に補正が必要な、画像の幾何学的形状を曲げるレンズ歪みを扱います。一般的な3次元シーンでは、エピポーラ幾何により、対応点が直線上にあるという制約が課されます。ホモグラフィは対応点の位置を直接予測します。ステレオビジョンでは、エピポーラ線上に残る位置が視差情報となり、深度推定に利用されます。

Explore solutions

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう