| Operatoren |
match_fundamental_matrix_distortion_ransac — Automatische Bestimmung der Fundamental-Matrix und des radialen Verzeichnungskoeffizienten für ein Stereo-Bildpaar durch Zuordnung von Bildpunkten.
match_fundamental_matrix_distortion_ransac(Image1, Image2 : : Rows1, Cols1, Rows2, Cols2, GrayMatchMethod, MaskSize, RowMove, ColMove, RowTolerance, ColTolerance, Rotation, MatchThreshold, EstimationMethod, DistanceThreshold, RandSeed : FMatrix, Kappa, Error, Points1, Points2)
Ausgehend von einer Menge charakteristischer Punkte (Rows1,Cols1) und (Rows2,Cols2) in den beiden Eingabebildern Image1 und Image2, welche dieselbe Größe besitzen müssen, bestimmt match_fundamental_matrix_distortion_ransac automatisch die Korrespondenz der Punkte, die Fundamental-Matrix FMatrix und den radialen Verzeichnungskoeffizienten Kappa, welche die Epipolargleichung
Hierbei bezeichnen die verzerrten Bildpunkte relativ zum Bildmittelpunkt und w und h die Breite und Höhe der Eingabebilder. match_fundamental_matrix_distortion_ransac nimmt also an, dass der Hauptpunkt, d.h. das Zentrum der radialen Verzeichnungen, im Bildmittelpunkt liegt.
Das zurückgelieferte Kappa kann dazu verwendet werden, Kameraparameter zu konstruieren, die zur Entzerrung von Bildern oder Bildpunkten verwendet werden können (siehe change_radial_distortion_cam_par, change_radial_distortion_image und change_radial_distortion_points):
Zu beachten bei den obigen Formeln ist die Position von Spalte bzw. Zeile in den Punktkoordinaten. Da die Fundamental-Matrix die projektive Beziehung zweier Stereobilder im 3D Raum wiedergibt, muss die X/Y Notation mit dem Kamerakoordinatensystem konform sein. (X,Y) Koordinaten entsprechen daher einem (Column,Row) Paar.
Das Matchingverfahren beruht auf charakteristischen Punkten, welche mit Punktoperatoren, wie z.B. points_foerstner oder points_harris, extrahiert wurden. Die Bestimmung der Korrespondenzen erfolgt in 2 Schritten: Zuerst werden die Grauwertkorrelationen der Umgebungen der Eingabepunkte im ersten und zweiten Bild bestimmt und anhand dieser ein initiales Matching zwischen den Punkten ermittelt. Dann wird das RANSAC-Verfahren angewendet, um die Fundamental-Matrix und den radialen Verzeichnungskoeffizienten zu finden, welche die Anzahl der korrespondierenden Punktpaare unter Erfüllung der Epipolarbedingung maximieren.
Die Größe der Grauwertfenster, die für das Matching verwendet werden, beträgt MaskSize x MaskSize. Es können drei Metriken für die Korrelation gewählt werden. Hat GrayMatchMethod den Wert 'ssd', so wird das Quadrat der Grauwertdifferenzen verwendet, 'sad' entspricht dem Betrag der Grauwertdifferenzen und 'ncc' ist die normierte Kreuzkorrelation (siehe auch binocular_disparity). Diese Metrik wird über alle Punktpaare minimiert ('ssd', 'sad') bzw. maximiert ('ncc'), eine so gefundene Korrespondenz wird aber nur akzeptiert, falls der Wert der Metrik unter dem Wert von MatchThreshold ('ssd', 'sad') bzw. über demselben ('ncc') liegt.
Zur Geschwindigkeitssteigerung kann der Suchbereich für die Match-Kandidaten auf ein Rechteck, das durch Größe und Verschiebung spezifiziert wird, eingeschränkt werden. Nur Punkte innerhalb eines Punkte großen Fensters werden betrachtet. Die Verschiebung des Mittelpunkts dieses Fensters im zweiten Bild gegenüber der Position des aktuellen Punktes im ersten Bild wird durch die Parameter RowMove und ColMove bestimmt.
Falls die Kameras nicht nur verschoben sind, sondern die zweite Kamera gegenüber der ersten um die optische Achse gedreht worden ist, kann im Parameter Rotation eine Schätzung des Drehwinkels bzw. ein Winkelintervall im Bogenmaß übergeben werden. Eine gute Schätzung des Winkels erhöht die Qualität des Grauwertwertmatchings. Falls sich die tatsächliche Rotation zu stark von der angegebenen Schätzung unterscheidet, schlägt das Matching typischerweise fehl. In diesem Fall sollte ein Winkelintervall angegeben werden. Je größer das angegebene Winkelintervall, desto langsamer läuft der Operator, denn für alle relevanten (automatisch bestimmten) Winkel innerhalb des Intervalls wird das Verfahren komplett durchlaufen.
Ist das initiale Punktmatching bestimmt, wird es anschließend durch einen randomisierten Auswahlalgorithmus (RANSAC) zur Bestimmung der Fundamental-Matrix FMatrix und des radialen Verzeichnungskoeffizienten Kappa benutzt. Dabei wird versucht, diese Parameter so zu wählen, dass sie bezüglich der Schranke DistanceThreshold zu möglichst vielen Punktpaaren konsistent ist.
Der Parameter EstimationMethod gibt an, ob die Kameras sich in einer besonderen relativen Orientierung zueinander befinden, und bestimmt auch das Berechnungsverfahren. Für 'linear' und 'gold_standard' kann die relative Lage der Kameras zueinander beliebig sein. 'trans_linear' oder 'trans_gold_standard' ist zu wählen, wenn die relative Lage der beiden Kameras eine reine Translation ist und die linke und rechte Kamera identisch sind. Für eine eindeutige Korrespondenzfindung ist die minimale Anzahl an notwendigen Punktkorrespondenzen im allgemeinen Fall neun und im speziellen Fall der reinen Translation vier.
Wird EstimationMethod auf 'linear' oder 'trans_linear' gesetzt, so ist das Berechnungsverfahren ein lineares Verfahren. Dieses Verfahren ist sehr schnell. Für den Fall der reinen Translation (EstimationMethod = 'trans_linear') liefert das lineare Verfahren genaue Ergebnisse für geringes bis mittleres Rauschen der Punktkoordinaten und für die meisten Verzeichnungen (außer sehr kleinen Verzeichnungen). Für eine beliebige Lage der Kameras (EstimationMethod = 'linear') liefert das lineare Verfahren nur für sehr geringes Rauschen der Punktkoordinaten und hinreichend große Verzeichnungen genaue Ergebnisse. Für EstimationMethod gleich 'gold_standard' bzw. 'trans_gold_standard' wird eine mathematisch optimale, dafür aber langsamere, Optimierung durchgeführt, die den geometrischen Reprojektionsfehler von rekonstruierten projektiven 3D Punkten minimiert. Für eine beliebige Lage der Kameras sollte im allgemeinen EstimationMethod = 'gold_standard' gewählt werden.
Der Wert Error gibt die Qualität des Matchings an und ist der mittlere symmetrische euklidische Abstand der Punkte zu ihren korrespondierenden Epipolarlinien, gemessen in Pixeln.
Punktpaare, welche die Konsistenzbedingungen erfüllen, werden als Korrespondenzen akzeptiert. Points1 enthält die Indizes der zugeordneten Eingabepunkte im ersten Bild, Points2 die Indizes der dazu korrespondierenden Punkte im zweiten Bild.
Der Parameter RandSeed kann benutzt werden, um das randomisierte Verhalten des RANSAC-Verfahrens zu kontrollieren und somit reproduzierbare Ergebnisse zu erhalten. Wird RandSeed auf einen positiven Wert gesetzt, so liefert der Operator bei jedem Aufruf mit denselben Parametern auch dasselbe Resultat, da der intern verwendete Zufallsgenerator mit RandSeed initialisiert wird. Ist RandSeed = 0, so wird der Zufallsgenerator mit der aktuellen Zeit initialisiert. Daher sind in diesem Fall die Ergebnisse unter Umständen nicht reproduzierbar.
Eingabebild 1.
Eingabebild 2.
Eingabepunkte in Bild 1 (Zeilenkoordinate).
Restriktion: length(Rows1) >= 9 || length(Rows1) >= 4
Eingabepunkte in Bild 1 (Spaltenkoordinate).
Restriktion: length(Cols1) == length(Rows1)
Eingabepunkte in Bild 2 (Zeilenkoordinate).
Restriktion: length(Rows2) >= 9 || length(Rows2) >= 4
Eingabepunkte in Bild 2 (Spaltenkoordinate).
Restriktion: length(Cols2) == length(Rows2)
Metrik für den Vergleich der Grauwerte.
Defaultwert: 'ncc'
Werteliste: 'ncc', 'sad', 'ssd'
Größe der Grauwertmasken.
Defaultwert: 10
Typischer Wertebereich: 3 ≤ MaskSize ≤ 15
Restriktion: MaskSize >= 1
Halbe Höhe des Suchfensters für das Punktmatching.
Defaultwert: 200
Restriktion: RowTolerance >= 1
Halbe Breite des Suchfensters für das Punktmatching.
Defaultwert: 200
Restriktion: ColTolerance >= 1
Schätzung für die Rotation des zweiten Bildes relativ zum ersten Bild.
Defaultwert: 0.0
Wertevorschläge: 0.0, 0.1, -0.1, 0.7854, 1.571, 3.142
Schwellwert für Grauwertkorrespondenzen.
Defaultwert: 0.7
Wertevorschläge: 0.9, 0.7, 0.5, 10, 20, 50, 100
Algorithmus zur Berechnung der Fundamental-Matrix und zur Auswahl spezieller relativer Orientierungen.
Defaultwert: 'gold_standard'
Werteliste: 'gold_standard', 'linear', 'trans_gold_standard', 'trans_linear'
Maximale Abweichung eines Punktes von seiner Epipolarlinie.
Defaultwert: 1
Restriktion: DistanceThreshold > 0
Startwert für den Zufallszahlengenerator.
Defaultwert: 0
Berechnete Fundamental-Matrix.
Berechneter Verzeichnungskoeffizient.
Mittlerer quadratischer Epipolarabstand.
Indizes der zugeordneten Eingabepunkte aus Bild 1.
Indizes der zugeordneten Eingabepunkte aus Bild 2.
points_foerstner (Image1, 1, 2, 3, 200, 0.1, 'gauss', 'true', \
Rows1, Cols1, _, _, _, _, _, _, _, _)
points_foerstner (Image2, 1, 2, 3, 200, 0.1, 'gauss', 'true', \
Rows2, Cols2, _, _, _, _, _, _, _, _)
match_fundamental_matrix_distortion_ransac (Image1, Image2, \
Rows1, Cols1, Rows2, \
Cols2, 'ncc', 10, 0, 0, \
100, 200, 0, 0.5, \
'trans_gold_standard', \
1, 42, FMatrix, Kappa, \
Error, Points1, Points2)
get_image_size (Image1, Width, Height)
CamParDist := ['area_scan_division',0.0,Kappa,1.0,1.0,\
0.5*(Width-1),0.5*Height-1,Width,Height]
change_radial_distortion_cam_par ('fixed', CamParDist, 0, CamPar)
change_radial_distortion_image (Image1, Image1, Image1Rect, \
CamParDist, CamPar)
change_radial_distortion_image (Image2, Image2, Image2Rect, \
CamParDist, CamPar)
gen_binocular_proj_rectification (Map1, Map2, FMatrix, [], Width, \
Height, Width, Height, 1, \
'bilinear_map', _, H1, H2)
map_image (Image1Rect, Map1, Image1Mapped)
map_image (Image2Rect, Map2, Image2Mapped)
binocular_disparity_mg (Image1Mapped, Image2Mapped, Disparity, \
Score, 1, 30, 8, 0, 'false', \
'default_parameters', 'fast_accurate')
points_foerstner, points_harris
vector_to_fundamental_matrix_distortion, change_radial_distortion_cam_par, change_radial_distortion_image, change_radial_distortion_points, gen_binocular_proj_rectification
match_fundamental_matrix_ransac, match_essential_matrix_ransac, match_rel_pose_ransac, proj_match_points_ransac, calibrate_cameras
Richard Hartley, Andrew Zisserman: „Multiple View Geometry in
Computer Vision“; Cambridge University Press, Cambridge; 2003.
Olivier Faugeras, Quang-Tuan Luong: „The Geometry of Multiple
Images: The Laws That Govern the Formation of Multiple Images of a
Scene and Some of Their Applications“; MIT Press, Cambridge, MA;
2001.
3D Metrology
| Operatoren |