fundamental_8point — 3D two_view op

• Datenarten: image2d × image2d → matrix

• Aufruf: import fullseye as fs; fs.ledger.fundamental_8point(pts1, pts2) (die Implementierung direkt: import twoview; twoview.fundamental_8point(pts1, pts2); aus dem Register: ops3d.get("fundamental_8point"))

Verwendung

Schätzt die Fundamentalmatrix F mit dem normalisierten Acht-Punkt-Algorithmus (Rang 2 erzwungen). → F (3,3). Mindestens acht Punkte nötig.

Raises ValueError: Punkte sind nicht (N,2) / nicht endlich / weniger als 8 Punkte / Anzahl der Korrespondenzen stimmt nicht überein.

Ablauf: die Punkte beider Bilder Hartley-normieren (Schwerpunkt in den Ursprung, mittlerer Abstand √2) → den kleinsten Singulärvektor der Koeffizientenmatrix mit 9 Spalten als F nehmen → den 3. Singulärwert auf 0 setzen, um rank-2 zu erzwingen → mit T2ᵀ F T1 denormieren → durch F[2,2] teilen und so normieren (ist dieser Wert nahezu 0, durch die Frobenius-Norm teilen).

• Korrespondenzen sind (N,2) in Pixelkoordinaten (x, y). Konvention: x2ᵀ F x1 = 0 (x1 ist pts1, x2 ist pts2).

• F ist nur bis auf die Skala bestimmt (ein konstantes Vielfaches ergibt dieselbe Geometrie), und auch das Vorzeichen ist nicht eindeutig.

• Kleinste Quadrate mit gleicher Gewichtung aller Punkte; gegen Ausreißer schutzlos. Fehlzuordnungen vor diesem Op entfernen oder die Residuen mit sampson_distance prüfen, aussortieren und neu fitten.

• Bei einer ebenen Szene oder reiner Rotation lassen sich die Korrespondenzen durch 1 Homographie erklären, und F ist nicht eindeutig bestimmt (es wird trotzdem etwas zurückgegeben). Diese Degeneration erkennt recover_pose am Eingang und weist sie ab.

• Deterministisch. Nachgelagert: essential_8point / recover_pose / sampson_distance.

Hintergrundwissen (Physik und Konventionen hinter diesem Operator)

• depth_sensors — Tiefensensoren — Messprinzipien, Werte realer Geräte, wie Messlücken entstehen

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• two_view_pose — py -3.11 examples_3d/two_view_pose.py

Typkompatible Folge-Operatoren (nehmen matrix als Eingabe)

fuse_to_voxel

Gleiche Kategorie (two_view)

essential_8point · recover_pose · triangulate · sampson_distance


*Provenance: twoview.py — 3D Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.