| Operatoren |
bundle_adjust_mosaic — Bündelausgleichung eines Mosaiks.
bundle_adjust_mosaic( : : NumImages, ReferenceImage, MappingSource, MappingDest, HomMatrices2D, Rows1, Cols1, Rows2, Cols2, NumCorrespondences, Transformation : MosaicMatrices2D, Rows, Cols, Error)
bundle_adjust_mosaic führt eine Bündelausgleichung eines Mosaiks durch. Dies kann dazu verwendet werden, die Geometrie eines Mosaiks möglichst stabil zu berechnen und somit die Abbildungen des Mosaiks genauer zu berechnen, als dies mit den einzelnen Bildpaaren möglich ist.
Um dies zu erreichen, sollte mit proj_match_points_ransac für jedes überlappende Bildpaar die projektive Abbildung zwischen den zwei beteiligten Bildern bestimmt werden. So sind z.B. für einen 2×2 Block von Bildern in folgender Anordnung
| 1 | 2 |
| 3 | 4 |
unter der Annahme, dass sich alle Bilder gegenseitig überlappen, folgende projektive Abbildungen zu bestimmen: 1->2, 1->3, 1->4, 2->3, 2->4 und 3->4. Die Indizes der Bilder, die die jeweilige Abbildung bestimmen, werden in MappingSource und MappingDest übergeben. Die Indizes der Bilder beginnen ab 1. In obigem Beispiel ist also MappingSource = [1,1,1,2,2,3] und MappingDest = [2,3,4,3,4,4] zu verwenden. Die Gesamtanzahl von Bildern, aus denen das Mosaik besteht, wird in NumImages übergeben. Sie wird verwendet, um zu überprüfen, ob jedes Bild über eine Kette von Abbildungen erreicht werden kann. Der Index des Referenzbildes wird in ReferenceImage übergeben. Dieses Bild erhält in der Ausgabe als Abbildung die Einheitsmatrix.
Die zu den Bildpaaren gehörigen 3×3 projektiven Transformationsmatrizen werden in HomMatrices2D übergeben. Zusätzlich müssen in Rows1, Cols1, Rows2 und Cols2 die Koordinaten der zugeordneten Punktpaare in den einzelnen Bildpaaren übergeben werden. Sie können aus der Ausgabe von proj_match_points_ransac mit tuple_select oder mit der HDevelop-Funktion subset bestimmt werden. Damit bundle_adjust_mosaic bestimmen kann, zu welcher Abbildung ein Punktpaar gehört, muss in NumCorrespondences für jedes Bildpaar die Anzahl der gefundenen Zuordnungen übergeben werden.
Der Paramteter Transformation bestimmt die Klasse der Transformationen, die zur Berechnung der Bündelausgleichung für die Transformationen der Bilder verwendet werden. Dies kann verwendet werden, um die zulässigen Transformationen einzuschränken. Für Transformation = 'projective' werden projektive Abbildungen verwendet (siehe vector_to_proj_hom_mat2d). Für Transformation = 'affine' werden affine Abbildungen verwendet (siehe vector_to_hom_mat2d), für Transformation = 'similarity' ähnlichkeitsabbildungen (siehe vector_to_similarity) und für Transformation = 'rigid' starre Abbildungen (siehe vector_to_rigid).
Die berechneten Transformationsmatrizen werden als ein Array von 3×3 projektiven Transformationsmatrizen in MosaicMatrices2D zurückgegeben. Zusätzlich werden in (Rows, Cols) die durch die Bündelausgleichung rekonstruierten Punkte zurückgegeben. Der mittlere Projektionsfehler der rekonstruierten Punkte wird in Error zurückgegeben. Dies kann verwendet werden, um zu überprüfen, ob die Optimierung zu sinnvollen Werten konvergiert ist.
Anzahl der verschiedenen Bilder, die zur Kalibrierung verwendet werden.
Restriktion: NumImages >= 2
Index des Referenzbildes.
Indizes der Ausgangsbilder der Transformationen.
Indizes der Zielbilder der Transformationen.
Array von 3×3 projektiven Transformationsmatrizen.
Zeilenkoordinaten korrespondierender Punkte in den jeweiligen Ausgangsbildern.
Spaltenkoordinaten korrespondierender Punkte in den jeweiligen Ausgangsbildern.
Zeilenkoordinaten korrespondierender Punkte in den jeweiligen Zielbildern.
Spaltenkoordinaten korrespondierender Punkte in den jeweiligen Zielbildern.
Anzahl der Punktkorrespondenzen im jeweiligen Bildpaar.
Verwendete Transformationsklasse.
Defaultwert: 'projective'
Werteliste: 'affine', 'projective', 'rigid', 'similarity'
Array von 3×3 projektiven Transformationsmatrizen, die die Lage der Bilder im Mosaik bestimmen.
Zeilenkoordinaten der durch die Bündelausgleichung rekonstruierten Punkte.
Spaltenkoordinaten der durch die Bündelausgleichung rekonstruierten Punkte.
Durchschnittlicher Fehler pro rekonstruiertem Punkt.
* Assume that Images contains the four images of the mosaic in the
* layout given in the above description. Then the following example
* computes the bundle-adjusted transformation matrices.
From := [1,1,1,2,2,3]
To := [2,3,4,3,4,4]
HomMatrices2D := []
Rows1 := []
Cols1 := []
Rows2 := []
Cols2 := []
NumMatches := []
for J := 0 to |From|-1 by 1
select_obj (Images, ImageF, From[J])
select_obj (Images, ImageT, To[J])
points_foerstner (ImageF, 1, 2, 3, 100, 0.1, 'gauss', 'true', \
RowsF, ColsF, _, _, _, _, _, _, _, _)
points_foerstner (ImageT, 1, 2, 3, 100, 0.1, 'gauss', 'true', \
RowsT, ColsT, _, _, _, _, _, _, _, _)
proj_match_points_ransac (ImageF, ImageT, RowsF, ColsF, RowsT, ColsT, \
'ncc', 10, 0, 0, 480, 640, 0, 0.5, \
'gold_standard', 2, 42, HomMat2D, \
Points1, Points2)
HomMatrices2D := [HomMatrices2D,HomMat2D]
Rows1 := [Rows1,subset(RowsF,Points1)]
Cols1 := [Cols1,subset(ColsF,Points1)]
Rows2 := [Rows2,subset(RowsT,Points2)]
Cols2 := [Cols2,subset(ColsT,Points2)]
NumMatches := [NumMatches,|Points1|]
endfor
bundle_adjust_mosaic (4, 1, From, To, HomMatrices2D, Rows1, Cols1, \
Rows2, Cols2, NumMatches, 'rigid', MosaicMatrices, \
Rows, Columns, Error)
gen_bundle_adjusted_mosaic (Images, MosaicImage, HomMatrices2D, \
'default', 'false', TransMat2D)
Sind die Parameterwerte korrekt, dann liefert bundle_adjust_mosaic den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
proj_match_points_ransac, proj_match_points_ransac_guided
Matching
| Operatoren |