| Operatoren |
gen_projective_mosaic — Kombinieren mehrerer Bilder zu einem Mosaikbild.
gen_projective_mosaic(Images : MosaicImage : StartImage, MappingSource, MappingDest, HomMatrices2D, StackingOrder, TransformDomain : MosaicMatrices2D)
gen_projective_mosaic setzt die Eingabebilder, welche im Objekt Images enthalten sind, zu einem Mosaikbild MosaicImage zusammen. Die Relativpositionen der Bilder zueinander werden dabei durch 3x3 projektive Transformationsmatrizen beschrieben. Das Array HomMatrices2D besteht aus einer Aufeinanderfolge solcher linearisierter Matrizen. Die Werte in MappingSource und MappingDest geben an, zwischen welchen Bildern die zugehörige Matrix anzuwenden ist. MappingSource=4 und MappingDest=7 bedeutet also, dass die Matrix die Transformation des Inhalts von Bild 4 in die Ebene des Bildes 7 beschreibt. Die Transformationsmatrizen zwischen den jeweiligen durch MappingSource und MappingDest gegebenen Bildpaaren werden typischerweise mit proj_match_points_ransac bestimmt.
Wie bei den Bildobjektzugriffsoperatoren (z.B. select_obj) üblich werden die Bilder ab 1 gezählt, d.h. MappingSource, MappingDest, StartImage und StackingOrder) müssen Werte zwischen 1 und der Anzahl der übergebenen Bilder enthalten.
Der Parameter StartImage gibt an, welches der Bilder die Bildebene des Gesamtbildes darstellen soll, welches Bild also unverändert ins Zielbild übernommen wird. Dies ist im allgemeinen ein Bild, das sich in der Mitte des Mosaiks befindet.
Der Bildausschnitt von MosaicImage und seine Größe werden so gewählt, dass alle Ausgangsbilder gerade ganz sichtbar sind.
Die Reihenfolge, in der die Bilder dem Mosaik hinzugefügt werden, wird durch StackingOrder bestimmt. Das erste Element dieses Arrays bildet das unterste Bild des Mosaiks, während das letzte ganz oben auf dem Mosaik erscheint. Wird statt einem Array von ganzen Zahlen der Wert 'default' angegeben, so wird die kanonische Ordnung (Bilder in der Reihenfolge in Images) verwendet.
Mit TransformDomain kann festgelegt werden, ob auch die Definitionsbereiche von Images transformiert werden. Da die Transformation der Definitionsbereiche Zeit kostet, kann dieser Parameter dazu verwendet werden, festzulegen, ob dies erwünscht ist. Wenn TransformDomain auf 'false' gesetzt wird, wird der Definitionsbereich der Eingabebilder ignoriert. Somit werden die kompletten Bilder transformiert.
Als Ausgabe gibt der Parameter MosaicMatrices2D eine Menge von 3x3 projektiven Transformationsmatrizen, die für jedes Bild in Images die Abbildung des Bildes an seine Position im Mosaik beschreibt.
Eingabebilder.
Ergebnisbild.
Index des zentralen Eingabebildes.
Indizes der Ausgangsbilder der Transformationen.
Indizes der Zielbilder der Transformationen.
Array von 3x3 projektiven Transformationsmatrizen.
Reihenfolge der Bilder im Mosaik.
Defaultwert: 'default'
Wertevorschläge: 'default'
Sollen die Regionen der Eingabebilder auch transformiert werden?
Defaultwert: 'false'
Werteliste: 'false', 'true'
Array von 3x3 projektiven Transformationsmatrizen, die die Lage der Bilder im Mosaik bestimmen.
gen_empty_obj (Images)
for J := 1 to 6 by 1
read_image (Image, 'mosaic/pcb_'+J$'02')
concat_obj (Images, Image, Images)
endfor
From := [1,2,3,4,5]
To := [2,3,4,5,6]
Num := |From|
ProjMatrices := []
for J := 0 to Num-1 by 1
F := From[J]
T := To[J]
select_obj (Images, ImageF, F)
select_obj (Images, ImageT, T)
points_foerstner (ImageF, 1, 2, 3, 200, 0.3, 'gauss', 'false', \
RowJunctionsF, ColJunctionsF, CoRRJunctionsF, \
CoRCJunctionsF, CoCCJunctionsF, RowAreaF, \
ColAreaF, CoRRAreaF, CoRCAreaF, CoCCAreaF)
points_foerstner (ImageT, 1, 2, 3, 200, 0.3, 'gauss', 'false', \
RowJunctionsT, ColJunctionsT, CoRRJunctionsT, \
CoRCJunctionsT, CoCCJunctionsT, RowAreaT, \
ColAreaT, CoRRAreaT, CoRCAreaT, CoCCAreaT)
proj_match_points_ransac (ImageF, ImageT, RowJunctionsF, \
ColJunctionsF, RowJunctionsT, \
ColJunctionsT, 'ncc', 21, 0, 0, 480, 640, \
0, 0.5, 'gold_standard', 1, 4364537, \
ProjMatrix, Points1, Points2)
ProjMatrices := [ProjMatrices,ProjMatrix]
endfor
gen_projective_mosaic (Images, MosaicImage, 2, From, To, ProjMatrices, \
'default', 'false', MosaicMatrices2D)
proj_match_points_ransac, proj_match_points_ransac_guided, vector_to_proj_hom_mat2d, hom_vector_to_proj_hom_mat2d
projective_trans_image, projective_trans_image_size, projective_trans_region, projective_trans_contour_xld, projective_trans_point_2d, projective_trans_pixel
Richard Hartley, Andrew Zisserman: „Multiple View Geometry in
Computer Vision“; Cambridge University Press, Cambridge; 2000.
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.
Matching
| Operatoren |