Contents — find the section you need

Bewegt man eine Kamera leicht seitlich und filmt dieselbe Szene, verschieben sich nahe Objekte stärker vor dem Hintergrund als weiter entfernte. Diese Parallaxe ermöglicht es, 3D-Formen und Kamerabewegungen aus 2D-Bildern zu rekonstruieren. Es reicht jedoch nicht aus, einfach „denselben physikalischen Punkt“ in verschiedenen Bildern zu vergleichen. In realen Bildern mit vielen Unstimmigkeiten, Linsenverzerrungen, reiner Rotation, Ebenen und sich bewegenden Objekten muss man bestimmen, welche Punktpaare mit einer einzigen Kamerabewegung übereinstimmen. Die Epipolargeometrie ist die gängige Methode, um genau das zu erreichen.

Dies beschränkt sich nicht nur auf Stereomessungen. Structure from Motion (SfM), visuelle Odometrie, visuelles SLAM, AR-Ebenenverfolgung, Roboter-Selbstlokalisierung und die spärliche Rekonstruktion von COLMAP basieren alle auf Korrespondenzen und projektiver Geometrie. Dieser Artikel verwendet durchgehend eindeutige Koordinatensysteme und erklärt die Bedeutung der einzelnen Matrizen, die Wahl des richtigen Schätzers und wann man dem Ergebnis nicht trauen sollte.

Subaru WRX S4 mit dem Fahrerassistenzsystem EyeSight und StereokameraBeispiel eines Fahrzeugs mit Stereokamera

Bild: Subaru WRX S4 2.0GT-S EyeSight (Tokumeigakarinoaoshima, CC BY-SA 4.0), Wikimedia Commons. Außenansicht, keine Nahaufnahme des Kamerainneren.

0. 30-Sekunden-Zusammenfassung

  • Die Ebene, die von zwei Kamerazentren und einem 3D-Punkt gebildet wird, heißt Epipolarebene. Diese Ebene schneidet jedes Bild als Linie, sodass ein entsprechender Punkt in einem Bild genau in der Epipolarebene liegt. Das Bild kann im anderen Bild nur auf dieser Linie – der Epipolarlinie – erscheinen.

– Bei unkalibrierten Bildern erfüllt die Fundamentalmatrix F die Bedingung \mathbf{x}'^\mathsf{T}F\mathbf{x}=0. In normalisierten Koordinaten mit bekannten intrinsischen Parametern wird die Essentielle Matrix E=[\mathbf{t}]_\times R verwendet. E rekonstruiert die Rotation R und die Richtung der Translation, jedoch kann ein einzelnes monokulares Zwei-Bild-Paar nicht die absolute Translationsskala bestimmen.

– Der normalisierte 8-Punkt-Algorithmus ist eine einfach zu implementierende lineare Anfangsschätzung; der 5-Punkt-Algorithmus ist ein minimaler Solver, der für eine kalibrierte Kamera weniger Korrespondenzen benötigt. Beide reagieren empfindlich auf Fehlanpassungen, daher werden in der Praxis Ausreißer mit RANSAC/USAC entfernt und mit dem Reprojektionsfehler ausgewertet.

– Die Triangulation findet den Schnittpunkt zweier Sichtlinien, aber die Tiefeninformation wird instabil, wenn die Parallaxe gering, die Basislinie kurz oder das Bildrauschen hoch ist. Nach der Schätzung verfeinert die Bündelausgleichung gemeinsam die Kamerapositionen und 3D-Punkte.

– Bei einer rein planaren Szene oder einer nahezu rein rotierenden Kamera beschreibt eine Homographie H die Bilder gut, und die Translations-/Tiefenrekonstruktion mittels F/E führt zu Degeneration. Die Modellauswahl sollte nicht allein auf der Anzahl der Inlier basieren – Residuen, Parallaxe, räumliche Verteilung und Chiralität sollten gemeinsam geprüft werden.

1. Zwei-Ansichten-Projektion aus Koordinaten

Sei ein Punkt in den Weltkoordinaten die homogene Koordinate \mathbf{X}=(X,Y,Z,1)^\mathsf{T}. Die Lochkameraprojektion, maßstabsgetreu, lautet:

\tilde{\mathbf{x}} \sim P\mathbf{X},\qquad P=K[R\mid\mathbf{t}]

Hierbei ist \tilde{\mathbf{x}}=(u,v,1)^\mathsf{T} die homogene Bildkoordinate, K die intrinsische Matrix und R\in SO(3) und \mathbf{t} sind die Extrinsische Pose (Welt-Kamera). Typischerweise

K=\begin{bmatrix}f_x&s&c_x\\0&f_y&c_y\\0&0&1\end{bmatrix}

wobei f_x,f_y die Brennweiten in Pixeln, (c_x,c_y) der Hauptpunkt und s die Verzerrung ist. Nach der Korrektur der Verzerrung ist die normalisierte Bildkoordinate \mathbf{x}=K^{-1}\tilde{\mathbf{x}}. Im Folgenden wird die linke Kamera mit P_1=K[I\mid\mathbf{0}] und die rechte Kamera mit P_2=K[R\mid\mathbf{t}] als Referenz verwendet.

Diagram 1 · Use the button to switch views
The epipolar plane and two image planesDiagram showing two camera centers C and C prime, a 3D point X, two image planes, corresponding points x and x prime, and the epipolar line on each image. Epipolar plane C C′ X x x′ Baseline Image 1Image 2 l = Fᵀx′l′ = Fx

In der Abbildung sind C,C' die Kamerazentren und die Strecke CC' die Basislinie. Die durch den Punkt X und die beiden Zentren definierte Ebene schneidet die linke Bildebene als Epipolarlinie l und die rechte Bildebene als l'. Sobald Sie den entsprechenden Punkt \mathbf{x} im linken Bild gefunden haben, reduziert sich der 2D-Suchbereich im rechten Bild auf eine einzige Linie. Bei einem rektifizierten Stereobildpaar verläuft diese Linie horizontal, und die Korrespondenzsuche wird zu einer 1D-Suche entlang derselben Scanlinie.

2. Die Essenzielle Matrix und die Fundamentale Matrix

Betrachten wir ausschließlich die extrinsische Pose und verwenden kalibrierte, normalisierte Koordinaten (\mathbf{x},\mathbf{x}'). Die Sichtlinie von der linken Kamera zum Punkt ist \mathbf{x}, und im Bezugssystem der rechten Kamera ist sie R\mathbf{x}. Die Tatsache, dass der Translationsvektor \mathbf{t} und die beiden Sichtlinien in derselben Ebene liegen, lässt sich als skalares Tripelprodukt mit dem Wert Null darstellen:

\mathbf{x}'^\mathsf{T}[\mathbf{t}]_\times R\mathbf{x}=0

Hierbei ist [\mathbf{t}]_\times die schiefsymmetrische Matrixform des Kreuzprodukts.

[\mathbf{t}]_\times= \begin{bmatrix}0&-t_z&t_y\\t_z&0&-t_x\\-t_y&t_x&0\end{bmatrix},\qquad [\mathbf{t}]_\times\mathbf{a}=\mathbf{t}\times\mathbf{a}

Diese E=[\mathbf{t}]_\times R wird als Essentielle Matrix bezeichnet. E ist keine beliebige 3\times3 Matrix – sie hat Rang 2, wobei ihre beiden von Null verschiedenen Singulärwerte gleich sind. Die Projektion mittels Singulärwertzerlegung (SVD) auf die Form E=U\operatorname{diag}(s,s,0)V^\mathsf{T} stellt diese physikalische Bedingung wieder her.

Im unkalibrierten Fall, bei direkter Verwendung von Rohpixelkoordinaten,

\tilde{\mathbf{x}}'^\mathsf{T}F\tilde{\mathbf{x}}=0,\qquad F=K_2^{-\mathsf{T}}EK_1^{-1}

ist F die Fundamentalmatrix. F\tilde{\mathbf{x}} liefert die Epipolarlinie l' im rechten Bild und F^\mathsf{T}\tilde{\mathbf{x}}' die Linie l im linken Bild. Da F die intrinsischen Parameter absorbiert, eignet es sich gut zur geometrischen Überprüfung von Bildpaaren. Die Interpretation der Pose in metrischen Einheiten erfordert jedoch eine Kalibrierung.

Matrix Koordinaten Erforderliche bekannte Größe Formbeschränkung Ergebnis Hauptanwendung
F Homogene Rohpixelkoordinaten Keine Rang 2, 7 Freiheitsgrade Epipolarlinien Unkalibriertes SfM, Korrespondenzüberprüfung
E K^{-1}\tilde{\mathbf{x}} K beider Kameras Rang 2, Singulärwerte (s,s,0) Richtung von R und \mathbf{t} VO, SLAM, kalibriertes Stereo
H Pixel in einer Ebene oder unter reiner Rotation Ebenen- oder Rotationsmodell Im Allgemeinen 8 Freiheitsgrade Planare Verzerrung AR-Ebenen, Bildzusammenfügung

Was der Epipol aussagt

Der Punkt, an dem der Mittelpunkt der rechten Kamera in das linke Bild projiziert wird, ist der linke Epipol \mathbf{e}, der F\mathbf{e}=0 erfüllt. Ebenso F^\mathsf{T}\mathbf{e}'=0. Liegt der Epipol innerhalb des Bildes, konvergieren die Epipolarlinien radial, was darauf hindeutet, dass sich die Kamera annähernd vorwärts oder rückwärts bewegt hat. Liegt er im Unendlichen, verlaufen die Linien nahezu parallel, was auf eine Bewegung nahe der Seitwärtsbewegung hindeutet. Dies ist ein nützliches Diagnoseinstrument, aber eine fehlerhafte Schätzung allein kann ebenfalls zu einer unnatürlichen Epipolposition führen. Daher sollten Sie die Bewegung niemals allein daraus bestimmen.

3. Schätzung der Matrix aus Korrespondenzen: Der 8-Punkte-Algorithmus

Eine einzelne Korrespondenz \tilde{\mathbf{x}}=(u,v,1)^\mathsf{T} und \tilde{\mathbf{x}}'=(u',v',1)^\mathsf{T} liefert eine lineare Nebenbedingung für die neun Einträge von F. Mit \mathbf{f}=\operatorname{vec}(F) beispielsweise:

[u'u,\ u'v,\ u',\ v'u,\ v'v,\ v',\ u,\ v,\ 1]\mathbf{f}=0

Durch das Stapeln von acht oder mehr Korrespondenzen zur Matrix A ermittelt der 8-Punkte-Algorithmus den kleinsten Singulärvektor von A\mathbf{f}=0. Der Name leitet sich von den acht Korrespondenzen ab, die die Freiheitsgrade erfüllen. In realen, verrauschten Fällen werden jedoch mit der Methode der kleinsten Quadrate deutlich mehr Punkte verwendet.

Die Lösung mit rohen Pixelkoordinaten führt aufgrund der Größe der Koordinatenwerte zu einer schlechten Konditionierung. Hartleys normalisierter 8-Punkt-Algorithmus normalisiert die Punktmenge jedes Bildes mithilfe von Ähnlichkeitstransformationen T,T', sodass der Schwerpunkt null und der mittlere Abstand \sqrt{2} beträgt. Anschließend wird das Problem in diesem Raum gelöst und schließlich rekonstruiert:

F=T'^\mathsf{T}F_{\text{norm}}T

Durch die Singulärwertzerlegung (SVD) des resultierenden F und das Nullsetzen des kleinsten Singulärwerts wird Rang 2 erzwungen. Dies mag wie ein unbedeutendes Implementierungsdetail erscheinen, hat aber einen großen Einfluss auf die Stabilität der Lösung.

Nach Kalibrierung liefert derselbe Ansatz eine erste Schätzung von E aus normalisierten Korrespondenzen. Die lineare Lösung aus 8 Punkten erfüllt jedoch nicht automatisch die strengere Singulärwertbedingung der Essentiellen Matrix. Daher wird E=U\operatorname{diag}(\sigma_1,\sigma_2,\sigma_3)V^\mathsf{T} berechnet und durch \operatorname{diag}((\sigma_1+\sigma_2)/2,(\sigma_1+\sigma_2)/2,0) ersetzt, um sie zu projizieren.

4. Der 5-Punkte-Algorithmus: Verkleinerung der minimalen Stichprobe bei Kalibrierung

Die Essenzielle Matrix besitzt 5 Freiheitsgrade. Der 5-Punkte-Algorithmus ist ein Minimallösungsverfahren, das aus 5 Korrespondenzen eine endliche Menge von E-Kandidaten findet. Nistérs Methode ersetzt den Nullraum durch polynomische Nebenbedingungen und zählt bis zu 10 reelle Lösungskandidaten auf. Herleitung und Implementierung sind zwar komplexer als beim 8-Punkte-Algorithmus, der Vorteil, nur 5 Punkte pro RANSAC-Hypothese zu benötigen, ist jedoch sehr groß.

Bei gegebenem Inlierverhältnis w, der Wahrscheinlichkeit, dass eine einzelne Ziehung ausschließlich Inlier enthält, w^s, der Ausfallwahrscheinlichkeit p und der minimalen Stichprobengröße s ergibt sich die geschätzte Anzahl der benötigten Iterationen zu:

N=\frac{\log p}{\log(1-w^s)}

Für w=0.5,p=0.01 benötigt s=8 etwa 1177 Iterationen, während s=5 etwa 145 benötigt. In der Praxis ist dieser Vergleich nicht direkt möglich, da Methoden wie PROSAC die Stichproben nach Übereinstimmungsqualität sortieren und adaptiv terminieren. Dennoch ist der Nutzen des 5-Punkt-Algorithmus in Umgebungen mit niedrigem Inlierverhältnis deutlich erkennbar.

OpenCVs findEssentialMat stellt RANSAC/LMEDS sowie Implementierungen der 5-Punkt-Familie bereit, während recoverPose die Kandidatenzerlegung und die Chiralitätsprüfung übernimmt. Für Implementierer ist es wichtiger zu bestätigen, ob die Eingabe unverzerrt/normalisiert ist und welche Koordinateneinheiten der Schwellenwert verwendet, als die bloße Verwendung des 5-Punkt-Algorithmus.

5. RANSAC: Geometriebasierte Berücksichtigung von Ausreißern

Matcher wie SIFT, ORB, SuperPoint und LoFTR erzeugen Fehlzuordnungen aufgrund wiederholter Texturen, Reflexionen, sich wiederholender Gitter und Verdeckungen. Die Anpassung von F an alle Korrespondenzen mittels der Methode der kleinsten Quadrate führt dazu, dass bereits wenige Fehler die gesamte Matrix verfälschen. RANSAC wiederholt die folgenden Schritte:

  1. Zufällige Auswahl einer minimalen Menge von Korrespondenzen und Erstellung einer F- oder E-Hypothese.

  2. Berechnen Sie das Residuum für jede Korrespondenz und markieren Sie diejenigen innerhalb eines Schwellenwerts als Inlier.

  3. Behalten Sie die Hypothese mit der größten Unterstützung oder dem besten robusten Score bei.

  4. Schätzen Sie erneut mit allen finalen Inliern und verfeinern Sie diese gegebenenfalls mit nichtlinearer Optimierung.

Sie sollten die Epipolar-Beschränkung nicht allein mit dem algebraischen Fehler \mathbf{x}'^\mathsf{T}F\mathbf{x} schwellenwertbasiert festlegen, da dieser von der Skala F abhängt. In der Praxis wird üblicherweise die Sampson-Distanz verwendet.

d_S(\mathbf{x},\mathbf{x}',F)= \frac{(\mathbf{x}'^\mathsf{T}F\mathbf{x})^2} {(F\mathbf{x})_1^2+(F\mathbf{x})_2^2+(F^\mathsf{T}\mathbf{x}')_1^2+(F^\mathsf{T}\mathbf{x}')_2^2}

Sie ist eine Näherung erster Ordnung für den geometrischen Fehler – ein normalisiertes Maß für den Abstand jeder Korrespondenz zu ihrer Epipolarlinie. Der Schwellenwert in Pixelkoordinaten hängt von der Bildauflösung, der Genauigkeit der Keypoint-Lokalisierung, der Restverzerrung und der Unschärfe ab. Es gibt keinen universellen Wert „1 px“. Sie optimieren ihn, indem Sie das Residuenhistogramm und die räumliche Verteilung der Inlier im Bild visualisieren.

Aktuelles OpenCV bietet auch robuste Schätzungen der USAC-Familie. Durch die Kombination von qualitätsgeordnetem Sampling, lokaler Optimierung und Degenerationsprüfungen kann es schneller und stabiler als reines RANSAC sein. Die statistische Ausreißererkennung kann jedoch nie über die Annahme hinausgehen, dass „die Mehrheit einer einzigen, statischen Starrkörperbewegung folgt“. Wenn der größte Teil des Bildes ein sich bewegendes Fahrzeug oder eine Person zeigt, müssen Sie zusätzliche Informationen wie semantische Masken, Bewegungssegmentierung, IMU oder Tiefeninformationen hinzufügen.

6. Zerlegung von E in Pose und Auswahl des richtigen Kandidaten

Für ein korrigiertes E=U\operatorname{diag}(s,s,0)V^\mathsf{T} liefert die Verwendung von

W=\begin{bmatrix}0&-1&0\\1&0&0\\0&0&1\end{bmatrix}

Rotationskandidaten R=UWV^\mathsf{T} oder UW^\mathsf{T}V^\mathsf{T} und Translationsrichtungskandidaten \pm U_{:,3}. Es gibt 4 Kombinationen aus Vorzeichen und Rotation. Entscheidend ist hier, dass die Zwei-Ansichten-Beschränkung allein dafür sorgt, dass alle E algebraisch konsistent sind.

Die Auswahl erfolgt anhand der Chiralität (positive Tiefe). Für jeden Kandidaten werden wenige Inlier trianguliert, und derjenige wird ausgewählt, der für die meisten Punkte in beiden Kamerabildern Z>0 liefert. Zusätzlich wird geprüft, ob die Determinante der Rotationsmatrix +1 ist, ob der Reprojektionsfehler gering ist und ob ausreichend Parallaxe vorhanden ist. Eine wichtige Einschränkung: \mathbf{t} kann nur bis zur Richtung rekonstruiert werden. Die Skalierung von \mathbf{t} und aller 3D-Punkte mit demselben Faktor ändert die Projektion nicht. Eine bekannte Stereo-Baseline, Radodometrie, IMU, ein Objekt bekannter Größe oder GNSS können die Skalierung liefern.

7. Triangulation: Von zwei Strahlen zu einem 3D-Punkt

Die Projektionsgleichung \mathbf{x}\times(P\mathbf{X})=\mathbf{0} erzeugt zwei unabhängige Gleichungen pro Ansicht. Die DLT-Triangulation löst das aus zwei Ansichten gestapelte lineare Gleichungssystem A\mathbf{X}=0 mittels Singulärwertzerlegung (SVD). Das Verfahren ist einfach, und die Lösung von OpenCV, triangulatePoints, kommt dieser Form sehr nahe. Sei beispielsweise \mathbf{p}_{ij}^\mathsf{T} die j -te Zeile von P_i. Ein Punkt (u_i,v_i) ergibt:

\begin{bmatrix} u_i\mathbf{p}_{i3}^\mathsf{T}-\mathbf{p}_{i1}^\mathsf{T}\\ v_i\mathbf{p}_{i3}^\mathsf{T}-\mathbf{p}_{i2}^\mathsf{T} \end{bmatrix}\mathbf{X}=\mathbf{0}

Vor der Division durch die homogene Komponente am Ende sollte geprüft werden, ob w nicht extrem klein ist.

Bei einem rektifizierten horizontalen Stereobildpaar ist dies intuitiver. Bei einer Disparität von d=u_L-u_R (der horizontalen Koordinatendifferenz zwischen links und rechts), einer Brennweite von f und einer Basislinie von B ergibt sich:

Z=\frac{fB}{d},\qquad X=\frac{(u_L-c_x)Z}{f}

Der Tiefenfehler beträgt ungefähr \delta Z\simeq \frac{Z^2}{fB}\delta d. Je größer die Entfernung und je kürzer die Brennweite oder Basislinie, desto größer ist der Tiefenfehler bei gleichem Disparitätsfehler von 1 Pixel. Anstatt also einfach zu sagen: „Es passt, also füge es der Punktwolke hinzu“, sollten Triangulationswinkel, Disparität, Reprojektionsfehler und positive Tiefe als Qualitätskriterien verwendet werden.

Die lineare Triangulation ist nur eine erste Schätzung – sie minimiert das Bildrauschen nicht korrekt. Die Bündelausgleichung, die Kamerapositionen P_i und Punkte \mathbf{X}_j gemeinsam optimiert, löst

\min_{\{R_i,\mathbf{t}_i,\mathbf{X}_j\}} \sum_{(i,j)\in\mathcal{O}}\rho\left(\left\|\pi(K_i(R_i\mathbf{X}_j+\mathbf{t}_i))-\tilde{\mathbf{x}}_{ij}\right\|^2\right)

wobei \rho ein robuster Verlustfaktor wie Huber oder Cauchy ist und \pi die perspektivische Teilung darstellt. Daher gewinnen Rekonstruktionen mit COLMAP, Theia oder dem Ceres Solver an Genauigkeit. Um die Eichfreiheit zu fixieren, platzieren Sie die erste Kamera im Ursprung und legen Sie gegebenenfalls einen bekannten Maßstab fest.

8. Wahl zwischen Epipolargeometrie und Homographie

Wenn jeder Punkt der Szene auf einer Ebene liegt \pi oder die Kamera eine reine Rotation ausführt, lässt sich die Korrespondenz zwischen den Bildern gut durch eine 3×3-Homographie \tilde{\mathbf{x}}'\sim H\tilde{\mathbf{x}} beschreiben. Bei Kalibrierung mit der Normalen \mathbf{n} und der Entfernung d der Ebene gilt:

H=K\left(R+\frac{\mathbf{t}\mathbf{n}^\mathsf{T}}{d}\right)K^{-1}

Bei reiner Rotation verschwindet der Translationsterm und H=KRK^{-1}. Für ein Poster, einen Schreibtisch, eine Gebäudefassade oder Aufnahmen, die eine entfernte Szene überblenden, ist H ein hervorragendes Modell und die naheliegende erste Wahl für planare AR-Anker und Bildzusammenfügung.

Die Schätzung von F/E anhand rein planarer Daten kann jedoch zu vielen scheinbaren Ausreißern führen und die 3D-Struktur nicht stabil von der Translation trennen. Umgekehrt führt die Umwandlung einer allgemeinen, nicht-planaren Szene in eine einzige H dazu, dass nahe und ferne Objekte inkonsistent verzerrt werden. Bei der Implementierung werden sowohl F/E als auch H mit RANSAC geschätzt und die Residuen, die Anzahl der erklärten Punkte, die Punktverteilung und die Parallaxe nach der Rekonstruktion verglichen. Wenn Sie entscheiden, ob Sie ein Modell akzeptieren, das allein auf der Anzahl der Übereinstimmungen basiert, werden Sie in Richtung einer großen planaren Wand oder einer Ebene, die das Bildzentrum dominiert, tendiert.

Situation Erster Kandidat Ergebnis Einschränkungen
Kalibriert, allgemeines 3D, Translation vorhanden E + 5-Punkt-Algorithmus Relative Pose, geringe Tiefeninformation Skalierung unbestimmt, instabil bei niedriger Parallaxe
Unkalibriertes Bildpaar F + normalisierter 8-Punkt-Algorithmus Epipolarlinien, Korrespondenzprüfung Physikalische Pose nicht ohne K interpretieren

Nahezu planar, Poster, Schreibtisch | H + 4-Punkt-Algorithmus | Planare Verzerrung, Kandidaten für planare Posen | Keine Tiefeninformationen außerhalb der Ebene |

| Reine Rotation / Panorama | H | Bildausrichtung, Rotation | Translation und Tiefe nicht beobachtbar | | Bekannte 3D-Karte mit 2D-Beobachtungen | PnP + RANSAC | Absolute Pose | Abhängig von Kartenqualität und Maßstab |

9. Kalibrierung ist kein Vorverarbeitungsschritt – sie ist Teil des Modells

Fotografieren Sie ein Schachbrett-, Charuco- oder AprilTag-Gitter in verschiedenen Entfernungen, Neigungen und Bildpositionen, um K und Verzerrungskoeffizienten zu schätzen. Die Brown-Conrady-Radialverzeichnung lässt sich für den normierten Radius r^2=x^2+y^2 näherungsweise wie folgt ausdrücken:

x_d=x(1+k_1r^2+k_2r^4+k_3r^6)+2p_1xy+p_2(r^2+2x^2)

Verwenden Sie bei Weitwinkel- und Fisheye-Objektiven kein Standard-Lochblendenverzeichnungsmodell, sondern wählen Sie das Fisheye-Modell von OpenCV oder ein auf das verwendete Objektiv abgestimmtes Modell. Selbst bei geringem mittleren Rückprojektionsfehler der Kalibrierung kann sich die Fehlerstruktur an den Bildrändern, bei unterschiedlichen Brennweiten, mit der Temperatur, dem Fokus oder mit Änderungen der Auflösung verschieben.

Vergewissern Sie sich vor der Zwei-Ansichten-Verarbeitung, dass die Kalibrierungswerte mit derselben Auflösung, demselben Beschnitt und demselben digitalen Zoom wie Ihre aktuelle Aufnahme ermittelt wurden. Es ist leicht, die Schätzung von E anhand von über undistortPoints normierten Punkten mit der Schätzung von F anhand unverzerrter Bilder zu verwechseln. Prüfen Sie stets, ob eine API Brennweite, Hauptpunkt und Verzeichnung intern verwendet oder bereits korrigierte Koordinaten erwartet. Ermitteln Sie bei einem Stereo-Rig zusätzlich zu den intrinsischen Parametern beider Kameras die relative Pose mit stereoCalibrate und korrigieren Sie die Epipolarlinien mit stereoRectify zur Horizontalen.

10. Eine minimale Pipeline in OpenCV

Unten finden Sie das Grundgerüst zur Ermittlung der relativen Pose und eines qualitätsgefilterten, spärlichen 3D-Punktsets aus zwei Bildern einer kalibrierten Monokularkamera. Es verwendet ORB für die Merkmale, kann aber je nach Aufnahmebedingungen durch SIFT oder einen lernbasierten Matcher ersetzt werden. In der Praxis würden Sie außerdem Belichtung, bewegte Objekte und Zeitsynchronisation protokollieren.

import cv2 as cv
import numpy as np

# K, dist are values calibrated for this capture resolution and lens
orb = cv.ORB_create(nfeatures=3000)
kp1, des1 = orb.detectAndCompute(img1, None)
kp2, des2 = orb.detectAndCompute(img2, None)
matches = cv.BFMatcher(cv.NORM_HAMMING).knnMatch(des1, des2, k=2)
good = [m for m, n in matches if m.distance < 0.75 * n.distance]

p1 = np.float32([kp1[m.queryIdx].pt for m in good])
p2 = np.float32([kp2[m.trainIdx].pt for m in good])
# threshold is in pixel units. Decide it from the residual distribution, not an initial guess.
E, mask = cv.findEssentialMat(p1, p2, K, method=cv.USAC_MAGSAC,
                              prob=0.999, threshold=1.0)
in1, in2 = p1[mask.ravel() != 0], p2[mask.ravel() != 0]
count, R, t, pose_mask = cv.recoverPose(E, in1, in2, K)

# P1, P2 are for normalized coordinates. Scale is arbitrary, so t's length is not a physical unit.
n1 = cv.undistortPoints(in1.reshape(-1, 1, 2), K, dist).reshape(-1, 2)
n2 = cv.undistortPoints(in2.reshape(-1, 1, 2), K, dist).reshape(-1, 2)
P1 = np.hstack([np.eye(3), np.zeros((3, 1))])
P2 = np.hstack([R, t])
X4 = cv.triangulatePoints(P1, P2, n1.T, n2.T)
X = (X4[:3] / X4[3]).T

# Further filter by positive depth in both views, reprojection error, and triangulation angle.
z1 = X[:, 2]
z2 = (R @ X.T + t).T[:, 2]
valid = (z1 > 0) & (z2 > 0) & np.isfinite(X).all(axis=1)

Dieses Beispiel übergibt Rohpixel und K direkt an findEssentialMat. Ist die Verzerrung jedoch nicht vernachlässigbar, sollten zunächst normalisierte Punkte aus undistortPoints übergeben und dann die entsprechende API-Form verwendet werden. Es ist außerdem falsch, den von recoverPose zurückgegebenen Wert \mathbf{t} als „zurückgelegte Strecke“ zu interpretieren. Anwendungen, die eine Skalierung benötigen, müssen diese mithilfe einer bekannten Basislinie, VIO, Radodometrie, eines Tiefensensors oder Ähnlichem einschränken.

COLMAP implementiert Merkmalsextraktion, Matching, geometrische Verifizierung, inkrementelles Mapping und Bündelausgleich in einer zusammenhängenden Pipeline. Bei kleinen Datensätzen können Sie das Kameramodell und die Rekonstruktion über die grafische Benutzeroberfläche (GUI) überprüfen. In der Kommandozeile bestimmen die Wahl des Kameramodells, die Verarbeitung der EXIF-Brennweite, die Matching-Strategie (erschöpfend/sequenziell/Vokabularbaum) und das Zeitintervall zwischen den Bildpaaren sowohl die Genauigkeit als auch den Rechenaufwand. Überprüfen Sie nach der Rekonstruktion nicht die Punktanzahl, sondern die Anzahl der registrierten Bilder, den mittleren Reprojektionsfehler, die Anzahl der Beobachtungen pro Bild und Lücken in der Punktwolke.

11. Häufige Fehlerzustände und deren Diagnose

Geringe Parallaxe, keine Basislinie

Bei Vorwärtsbewegung, einer entfernten Szene oder einem kurzen Bildintervall können Korrespondenzen ohne Tiefeninformationen auftreten. Wenn Epipolarlinien plausibel erscheinen, der Triangulationswinkel aber nahe null liegt, sollten Sie die Tiefeninformationen nicht aktualisieren, sondern dies vermeiden. Die grundlegenden Lösungen sind größere Abstände zwischen den Keyframes, Aufnahmen mit seitlicher Bewegung oder die Verwendung eines Stereosystems mit bekannter Basislinie.

Reine Rotation oder planare Entartung

Bei Schwenks oder einem Bildausschnitt, der nur eine Wand enthält, hat H Aussagekraft. Eine hohe Anzahl von Inliern für E bedeutet nicht zwangsläufig, dass eine Translation beobachtet wurde. Protokollieren Sie die Konkurrenz zwischen H und E und verwenden Sie die positive Tiefenrate und die mittlere Parallaxe nach der Triangulation als Filter. Beim AR-Poster-Tracking ist dies kein Fehler, sondern die korrekte Modellauswahl.

Fehlpaarungen, sich wiederholende Muster, Spiegelungen

Fenster, Fliesen, Bücherregale, LCD-Bildschirme und Wasseroberflächen erzeugen ähnliche lokale Deskriptoren. Kombinieren Sie den Verhältnis-Test, das Matching der nächsten Nachbarn und geometrisches RANSAC und prüfen Sie, ob Inlier-Punkte über das gesamte Bild verteilt sind. Spiegelbilder und transparente Objekte verletzen die Annahme starrer Körper und Lambert'scher Reflexion, sodass auch eine Anpassung des Schwellenwerts hier nichts nützt.

Dynamische Objekte und Mehrfachbewegungen

RANSAC erfasst nur die größte Bewegung. Ist der Hintergrund in der Minderheit, kann es passieren, dass fälschlicherweise die Bewegung eines Autos geschätzt wird. Je nach Anwendung können Sie zwischen semantischem Ausschluss von Personen/Fahrzeugen, Clustering des optischen Flusses, Multi-Modell-Schätzung oder Ausrichtung mit Tiefen-/IMU-Daten wählen.

Linsenverzerrung, Rolling Shutter, Asynchronie

Die Verwendung einer unkorrigierten Weitwinkelkante führt zu systematischer Krümmung der Epipolarlinien. Bei schnell bewegten Objekten mit Rolling Shutter ändert sich die Lage innerhalb eines einzelnen Bildes, sodass eine einzelne E-Spule nur eine Näherung darstellt. Selbst eine geringfügige Verschiebung der Belichtungszeiten zwischen linkem und rechtem Bild bei einem Stereobildpaar erzeugt unerwünschte Disparitäten bei sich bewegenden Objekten. Berücksichtigen Sie Global Shutter, kurze Belichtungszeiten, ein Zeilen-Timing-Modell, IMU-basierte Korrektur und Hardware-Synchronisierung.

Numerische und Koordinaten-Frame-Fehler

Häufige Fehler sind die Vermischung von Pixel- und normalisierten Koordinaten, die Verwechslung von Welt-zu-Kamera- und Kamera-zu-Welt-Koordinaten für R,\mathbf{t}, das Vertauschen der linken/rechten Punktreihenfolge und das Vergessen, K nach der Bildskalierung zu aktualisieren. Verlassen Sie sich nicht blind auf Schätzwerte – überlagern Sie Korrespondenzen und Epipolarlinien und automatisieren Sie die Prüfungen auf positive Tiefe in beiden Kameras, Reprojektionsfehler, \det R=1 und R^\mathsf{T}R\simeq I.

12. Praktische Bewertungsmetriken und eine Design-Checkliste

Betrachten Sie die Zwei-Ansichten-Schätzung nicht als Erfolg, nur weil „eine Matrix zurückgegeben wurde“. Die Anzahl der Übereinstimmungen wird durch die Texturmenge verzerrt, und der durchschnittliche Fehler allein kann einige wenige gute Ergebnisse verschleiern. Durch das Speichern der folgenden Daten pro Frame lässt sich später feststellen, wo in der Sensor-/Matcher-/Pose-Schätzungskette ein Fehler aufgetreten ist:

  • Detektionsanzahl, Anzahl der bestandenen Ratio-Tests, Anzahl/Verhältnis der RANSAC-Inlier, Verteilung über die Bildrasterzellen
  • Median und oberes Perzentil der Sampson-Distanz und des Reprojektionsfehlers, Rate positiver Tiefen, Triangulationswinkelverteilung
  • Unterstützungsanzahl und Robustheits-Score für H im Vergleich zu E/F sowie der Grund für die Annahme oder Ablehnung eines Modells
  • Betrag der geschätzten Rotation, zeitliche Kontinuität der Translationsrichtung, Konsistenz mit einem skalierten externen Sensor
  • Belichtungszeit, Verstärkung, IMU-Winkelgeschwindigkeit, Links-/Rechts-Zeitversatz, Unschärfemetrik, Bildmaskenverhältnis

Für Forschungs- oder Produktbewertungen mit verfügbaren Referenzdaten sollten der relative Rotationsfehler, der Translationsrichtungsfehler, der Trajektorien-ATE/RPE und der absolute/relative Tiefenfehler separat angegeben werden. Da die monokulare Zwei-Ansichten-Translation skalierungsunsicher ist, muss klar angegeben werden, ob der Fehler nach der Normalisierung oder nach der Sim(3)-Ausrichtung auftritt. Anstatt fehlerhafte Frames vom Mittelwert auszuschließen, ist es hilfreich, die jeweilige Degeneration oder die visuelle Bedingung anzugeben, unter der der Fehler auftrat. Dies verdeutlicht die Grenzen des Systems besser.

13. Aktuelle Entwicklungen: Hat Lernen die Geometrie ersetzt?

Lernbasierte Schlüsselpunkte und Deskriptoren (SuperPoint), Grob-zu-Fein-Matcher (LoFTR) und allgemeine Korrespondenzschätzung (LightGlue und ähnliche) können bei geringen Textur- oder Blickwinkeländerungen mehr Kandidatenübereinstimmungen erzeugen als klassische Deskriptoren. Die von einem Netzwerk zurückgegebenen Korrespondenzen können jedoch weiterhin fehlerhaft sein, und die physikalischen Mehrdeutigkeiten von Kamerabewegung, Ebenen, Rolling-Shutter-Effekt und Skalierung bleiben bestehen. In der Praxis von SfM/SLAM ist ein hybrides Setup, das die Ausgabe eines gelernten Matchers durch robuste Schätzung von E/F/H plus Bündelausgleichung verifiziert, nach wie vor die beste Wahl.

Auf einer breiteren Ebene nutzen neuronale/explizite Szenenrepräsentationen wie NeRF und 3D Gaussian Splatting ebenfalls die Konsistenz über mehrere Ansichten hinweg. Diese ermöglichen eine attraktive Synthese neuer Ansichten, reagieren jedoch empfindlich auf die Qualität der Kamerapose und der Beobachtungsgeometrie. Viele Implementierungen initialisieren daher Posen, die von COLMAP abgeleitet wurden. Die Forschung konzentriert sich weiterhin auf die gemeinsame Schätzung von Korrespondenz, Tiefe, Segmentierung, Inertialdaten und Timing-Modellen für großflächige, dynamische und reflektierende Umgebungen.

Die Entscheidung für ein neueres Modell sollte daher nicht allein auf der Frage basieren, ob die Trefferanzahl im Vergleich zu ORB gestiegen ist. Vielmehr sollten auch die Verteilung der Inlier nach der Schätzung, der Pose-Fehler, die Rechenlatenz, die GPU-Anforderungen, mögliche Ausfälle außerhalb der Trainingsbedingungen und die Lizenzierung berücksichtigt werden. Die Geometrie ist kein überholter Vorverarbeitungsschritt; sie dient weiterhin als Prüfkriterium, um die Ausgabe eines gelernten Modells mit realen 3D-Strukturen abzugleichen.

14. Fazit

Die Epipolargeometrie bildet das Fundament, das Korrespondenzen zwischen zwei Bildern von „ähnlichsten Punkten“ zu „Punkten, die durch eine einzelne Kamerabewegung erklärbar sind“ erweitert. Sind die intrinsischen Parameter bekannt, wird die relative Pose mittels E=[\mathbf{t}]_\times R bestimmt; andernfalls werden Epipolarlinien und Korrespondenzen mit F überprüft. Der 8-Punkt-Algorithmus dient als Grundlage für das Verständnis und die Initialisierung, der 5-Punkt-Algorithmus ist ein effizienter Minimallöser für robuste Schätzungen, RANSAC berücksichtigt Ausreißer, und Triangulation plus Bündelausgleichung bilden die Brücke in den 3D-Raum.

Bei fehlender Parallaxe, einer Ebene, reiner Rotation, vielen sich bewegenden Objekten oder starker Verzerrung/Asynchronie garantiert die zurückgegebene Matrix jedoch keine physikalisch sinnvolle Tiefen- oder Translationsberechnung. Die Auswahl von Modellen anhand von Homographie, die Verwaltung von Kalibrierungsbedingungen, die Überprüfung von Reprojektionsfehlern und positiver Tiefe sowie die Integration externer Skalierung in eine einzige Pipeline führen zu reproduzierbarer Computer Vision.

Überprüfen Sie Ihr Verständnis
Bestimmt eine Epipolarlinie eindeutig eine Übereinstimmung?

Sie schränkt die Suche auf eine Linie ein. Bilddaten müssen den Punkt weiterhin lokalisieren, und Wiederholungen oder Verdeckungen können zu Unklarheiten führen.

## Referenzen (Primärquellen und offizielle Dokumentation) - [Hartley & Zisserman, Multiple View Geometry in Computer Vision (offizielle Autorenseite)](https://www.robots.ox.ac.uk/~vgg/hzbook/) - [Longuet-Higgins, A computer algorithm for reconstructing a scene from two projections (1981, Royal Society)](https://royalsocietypublishing.org/doi/10.1098/rspa.1981.0136) - [Hartley, In Defense of the Eight-Point Algorithm (IEEE TPAMI, 1997)](https://doi.org/10.1109/34.601246) - [Nistér, An Efficient Solution to the Five-Point Relative Pose Problem (IEEE TPAMI, 2004)](https://doi.org/10.1109/TPAMI.2004.17) - [Fischler & Bolles, Random Sample Consensus (Communications of the ACM, 1981)](https://doi.org/10.1145/358669.358692) - [OpenCV — Tutorial zur Epipolargeometrie](https://docs.opencv.org/4.x/da/de9/tutorial_py_epipolar_geometry.html) - [OpenCV — calib3d: findEssentialMat / recoverPose](https://docs.opencv.org/4.x/d9/d0c/group__calib3d.html) - [Offizielle COLMAP-Dokumentation](https://colmap.github.io/) - [Schönberger & Frahm, Structure-from-Motion Revisited (CVPR 2016)](https://openaccess.thecvf.com/content_cvpr_2016/html/Schoenberger_Structure-From-Motion_Revisited_CVPR_2016_paper.html) - [Sarlin et al., LightGlue (ICCV 2023)](https://openaccess.thecvf.com/content/ICCV2023/html/Lindenberger_LightGlue_Local_Feature_Matching_at_Light_Speed_ICCV_2023_paper.html)

What to read next

Review the backgroundEinführung in die Homographie – Beschreibung der planaren Korrespondenz mit einer einzelnen 3x3-MatrixContinue the seriesPnP-Grundlagen – Wiederherstellung der Kameraposition anhand von 3D-Punkten und einem BildExplore another aspect of this fieldLab für Bildhelligkeit und Leuchtdichte — Belichtung, Gamma und Clipping