Homography
Eine Homographie ist eine projektive Transformation, die Ebenen zwischen Ansichten abbildet und so Perspektivkorrektur, Bildregistrierung und Panoramastitching ermöglicht.
Eine Homographie ist eine invertierbare projektive Transformation, die Punkte auf einer Ebene auf Punkte einer anderen Ebene abbildet und dabei Geraden erhält. In der Bildverarbeitung beschreibt sie, wie eine ebene Fläche aus verschiedenen Blickwinkeln erscheint: Eine schräg fotografierte rechteckige Seite lässt sich in ein frontal ausgerichtetes Rechteck transformieren. Homographien ermöglichen Bildregistrierung, Perspektivkorrektur und Panoramastitching. „Projektive Transformation“ ist ein Synonym; der sprachwissenschaftliche Begriff „Homograph“ bezeichnet Wörter mit identischer Schreibweise.
So funktioniert die Homographiematrix#
Eine Homographie wird durch eine 3 x 3-Matrix dargestellt, die üblicherweise H genannt wird. Sie arbeitet mit homogenen Koordinaten, die einen zweidimensionalen Punkt durch drei Werte darstellen. Nach der Matrixmultiplikation ergeben sich die gewöhnlichen Bildkoordinaten, indem die ersten beiden Ausgabewerte durch den dritten geteilt werden.
Obwohl H neun Einträge enthält, hat sie acht unabhängige Parameter, also Freiheitsgrade: Werden alle Einträge mit derselben Zahl ungleich null multipliziert, bleibt die Abbildung unverändert. Diese Geometrie ebener Bildabbildungen erklärt, warum vier geeignete Punktkorrespondenzen eine Homographie bestimmen.
Eine affine Transformation ist eine eingeschränkte Homographie, die parallele Geraden erhält. Eine allgemeine Homographie stellt auch Perspektiveffekte dar, darunter parallel verlaufende Kanten, die auf einen Fluchtpunkt zulaufen. Abstände und Winkel ändern sich im Allgemeinen. Michel Chasles entwickelte das Konzept in seiner Abhandlung von 1837 über Dualität und Homographie.
So schätzt du eine Homographie#
Die Schätzung beginnt mit korrespondierenden Punkten: Positionen, die in zwei Bildern dieselben physischen Merkmale darstellen. Dabei kann es sich um manuell ausgewählte Ecken oder durch Merkmalsextraktion ermittelte übereinstimmende Schlüsselpunkte handeln. Verfahren wie die skaleninvariante Merkmalstransformation liefern Deskriptoren – numerische Zusammenfassungen des lokalen Erscheinungsbilds –, mit denen sich Merkmale ansichtsübergreifend zuordnen lassen.
Erforderlich sind mindestens vier Punktpaare, wobei in keiner der beiden Punktmengen drei Punkte auf einer Geraden liegen dürfen. Der Algorithmus Direkte lineare Transformation (DLT) überführt die Koordinatenbeziehungen in ein lineares Gleichungssystem. Zusätzliche Korrespondenzen verbessern die Schätzung, wenn die Messungen verrauscht sind.
Falsche Zuordnungen erfordern eine robuste Anpassung. Zufallsstichproben-Konsens (RANSAC) passt wiederholt mögliche Transformationen an kleine Teilmengen an und ermittelt Ausreißer und Inlier: Zuordnungen, die mit einer möglichen Transformation übereinstimmen. Der Reprojektionsfehler misst den Abstand zwischen einem transformierten Quellpunkt und seinem beobachteten Zielpunkt. Die Homographieschätzungs-API von OpenCV stellt diesen Ablauf über cv2.findHomography bereit und gibt sowohl H als auch eine Inlier-Maske zurück.
Homographie in Python anwenden#
OpenCV bietet separate Funktionen zum Schätzen einer Matrix und zum Verzerren eines Bildes. Installiere die Abhängigkeiten mit pip install opencv-python numpy. Dieses Beispiel bildet die rechteckige Begrenzung des Beispielbilds auf ein Trapez ab:
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]
# Behalte in beiden Arrays dieselbe Reihenfolge der Ecken im Uhrzeigersinn bei.
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)Das gespeicherte Bild zeigt eine perspektivische Verkürzung: Seine obere Kante ist schmaler, während gerade Kanten in der Szene gerade bleiben.
Einsatzbereiche von Homographien#
- Dokumentenverarbeitung: Bei der Perspektivkorrektur werden die vier Ecken eines flachen Dokuments auf ein Rechteck abgebildet. Dieser Vorverarbeitungsschritt vereinheitlicht die Textanordnung vor der optischen Zeichenerkennung und folgt derselben Geometrie ebener Verzerrungen, die in den OpenCV-Beispielen zur Perspektivkorrektur gezeigt wird.
- Panoramastitching: Überlappende Fotos werden vor dem Überblenden ausgerichtet. Das Autostitch-System von Matthew Brown und David Lowe nutzt übereinstimmende lokale Merkmale, um die Erstellung von Panoramen zu automatisieren und überlappende Bilder in ungeordneten Sammlungen zu erkennen.
In Ultralytics YOLO wendet RandomPerspective Augmentation während des Trainings projektive Verzerrungen an und transformiert dabei Bilder und die zugehörigen Begrenzungsrahmen, Segmentierungskonturen und Schlüsselpunkte gemeinsam. Die Einstellung perspective steuert den Perspektivanteil dieser Datenerweiterung.
Geometrische Grenzen und verwandte Konzepte#
Eine einzelne Homographie beschreibt exakt die Beziehung zwischen idealen Lochkamerabildern derselben Ebene oder zwischen Ansichten, die durch Drehung einer Kamera um ihr Projektionszentrum aufgenommen wurden. Bei einer Kameraverschiebung und Objekten in unterschiedlichen Tiefen führt Parallaxe zu tiefenabhängigen Verschiebungen. Wird eine Hintergrundebene ausgerichtet, bleiben Vordergrundobjekte verschoben, wodurch bei zusammengesetzten Bildern doppelte Kanten oder Geisterbilder entstehen.
Die Kamerakalibrierung behandelt Linsenverzerrungen, deren gekrümmte Bildgeometrie vor der ebenen Ausrichtung korrigiert werden muss. Bei allgemeinen dreidimensionalen Szenen schränkt die Epipolargeometrie einen entsprechenden Punkt auf eine Gerade ein; eine Homographie sagt seine Position direkt voraus. Beim stereoskopischen Sehen liefert die verbleibende Position entlang der Epipolargeraden Disparitätsinformationen, die zur Tiefenschätzung verwendet werden.










