| Operatoren |
gen_binocular_proj_rectification — Projektive Rektifizierung eines schwach kalibrierten Stereo-Bildpaares.
gen_binocular_proj_rectification( : Map1, Map2 : FMatrix, CovFMat, Width1, Height1, Width2, Height2, SubSampling, Mapping : CovFMatRect, H1, H2)
Eine binokulare Stereokonfiguration wird schwach kalibriert genannt, wenn die Fundamental-Matrix, welche die projektive Beziehung der beiden Bilder beschreibt, bekannt ist. Rektifizierung ist das Finden eines geeigneten Satzes von Transformationen, welcher die beiden Bilder derart transformiert, dass alle korrespondierenden Epipolargeraden identisch sind und parallel zur horizontalen Achse verlaufen. Rektifizierte Bilder erscheinen vergleichbar einer Stereoanordnung, bei der die linke und rechte Bildebene identisch sind und die relative Lage der Kamerazentren nur aus einer horizontalen Translation besteht. Eine Rektifizierung ist nur möglich, wenn beide Epipole außerhalb der Bildbereiche liegen.
Typischerweise wird die Fundamental-Matrix FMatrix vorher durch den Operator match_fundamental_matrix_ransac berchnet. Ausgehend von der Fundamental-Matrix werden die beiden Homographien (d.h. projektive Transformationen) H1 und H2 berechnet, welche die Rektifizierung der beiden Bilder beschreiben. Da die projektive Rektifizierung ein unterbestimmtes Problem darstellt, werden zusätzliche Bedingungen aufgestellt: Es werden diejenigen Transformation gewählt, welche die projektive Verzerrung minimal halten. Für diese Berechnung sind die Dimensionen der Bildbereiche Width1,Height1, Width2 und Height2 notwendig. Nach der Rektifizierung hat die Fundamental-Matrix immer folgende kanonische Form:
Ist die Kovarianzmatrix CovFMat der Fundamental-Matrix FMatrix bekannt, so wird auch die Kovarianzmatrix CovFMatRect der obigen rektifizierten Fundamental-Matrix berechnet. Im Rahmen eines nachfolgenden Stereo-Matchings kann diese dazu dienen den Matching Prozess zu verbessern, da die Kovarianzmatrix den Bereich angibt, wo ein korrespondierender Match zu finden ist.
Ähnlich des verwandten Operators gen_binocular_rectification_map beschreiben die Ausgabebilder Map1 und Map2 die Transformationen, welche das Stereobildpaar rektifizieren. Der Parameter Mapping gibt an, ob für die Abbildung bilineare Interpolation ('bilinear_map') verwendet werden soll, oder ob einfach der nächste Nachbar ('nn_map') zu wählen ist. Die Größe bzw. Auflösung der Abbildungskarten ist über SubSampling einzustellen. Ein Wert von zum Beispiel 2 halbiert die Bildgröße. Wenn nur die Homographien und nicht die Abbildungskarten gewünscht sind, ist die Option Mapping auf 'no_map' zu setzen. Unter dem Aspekt der Rechengeschwindigkeit ist diese Wahl zu bevorzugen, wenn für eine spezifische Stereokonfiguration nur ein Bildpaar rektifiziert werden soll. Wenn dagegen die Stereokonfiguration fix ist, so sollten nur einmal die Abbildungskarten berechnet werden; alle weiteren Bildpaare werden dann mit Hilfe des Operators map_image rektifiziert, was zum geringsten Rechenaufwand zur online Rektifizierung führt.
Bei der Verwendung der Abbildungskarten haben die transformierten Bilder dieselbe Größe wie die Karten. Jedes Pixel in der Karte enthält die Information, wie das neue Pixel an dieser Position generiert wird. Die Karten Map1, Map2 sind einkanalige Bilder, wenn Mapping auf 'nn_map' gesetzt ist, und bestehen aus fünf Kanälen, wenn 'bilinear_map' gewünscht wird. Im ersten Kanal, welcher vom Datentyp int4 ist, wird die lineare Koordinate des im Originalbild referenzierten Pixels gespeichert. Mit Mapping gleich 'nn_map' ist das referenzierte Pixel der nächste Nachbar des zurücktransformierten Kartenpixels. Im Falle der bilinearen Interpolation ist das Referenzpixel die nächste obere, linke Ecke des zurücktransformierten Pixels. Die folgende Abbildung zeigt die Ordnung der Pixel im Originalbild, welche den zurücktransformierten Koordinaten am nächsten sind, wobei das Referenzpixel die Nummer zwei trägt:
| 2 | 3 |
| 4 | 5 |
Die Kanäle 2 bis 5, welche vom Datentyp uint2 sind, enthalten die Gewichte der entsprechenden Pixel für die bilineare Interpolation.
Für ein rektifiziertes Bildpaar kann die Disparität zwischen Bildpunkten oder Regionen mittels des Operators binocular_disparity berechnet werden. Im Gegensatz zum Stereo bei voll kalibrierten Kameras mit der Rektifizierung mittels gen_binocular_rectification_map kann bei schwach kalibrierten Kameras keine metrische Tiefeninformation abgeleitet werden. Die Disparität gibt dann lediglich eine qualitative Tiefenordnung der betrachteten Szene wieder.
Bild, das die Rektifizierung des 1. Bildes codiert.
Bild, das die Rektifizierung des 2. Bildes codiert.
Fundamental-Matrix.
9x9 Kovarianzmatrix der Fundamental-Matrix.
Defaultwert: []
Breite des 1. Bildes.
Defaultwert: 512
Werteliste: 128, 256, 512, 1024
Restriktion: Width1 > 0
Höhe des 1. Bildes.
Defaultwert: 512
Werteliste: 128, 256, 512, 1024
Restriktion: Height1 > 0
Breite des 2. Bildes.
Defaultwert: 512
Werteliste: 128, 256, 512, 1024
Restriktion: Width2 > 0
Höhe des 2. Bildes.
Defaultwert: 512
Werteliste: 128, 256, 512, 1024
Restriktion: Height2 > 0
Unterabtastfaktor.
Defaultwert: 1
Werteliste: 1, 2, 3, 1.5
Typ des Mappings.
Defaultwert: 'no_map'
Werteliste: 'bilinear_map', 'nn_map', 'no_map'
9x9 Kovarianzmatrix der rektifizierten Fundamental-Matrix.
Projektive Transformation des 1. Bildes.
Projektive Transformation des 2. Bildes.
* Rectify an image pair using a map.
get_image_size (Image1, Width1, Height1)
get_image_size (Image2, Width2, Height2)
points_harris (Image1, 3, 1, 0.2, 10000, Row1, Col1)
points_harris (Image2, 3, 1, 0.2, 10000, Row2, Col2)
match_fundamental_matrix_ransac (Image1, Image2, Row1, Col1, Row2, Col2, \
'ncc', 21, 0, 200, 20, 50, 0, 0.9, \
'gold_standard', 0.3, 1, FMatrix, \
CovFMat, Error, Points1, Points2)
gen_binocular_proj_rectification (Map1, Map2, FMatrix, [], Width1, \
Height1, Width2, Height2, 1, \
'bilinear_map', CovFMatRect, H1, H2)
map_image (Image1, Map1, Image1Rect)
map_image (Image2, Map2, Image2Rect)
* Rectify an image pair without using a map.
get_image_size (Image1, Width1, Height1)
get_image_size (Image2, Width2, Height2)
points_harris (Image1, 3, 1, 0.2, 10000, Row1, Col1)
points_harris (Image2, 3, 1, 0.2, 10000, Row2, Col2)
match_fundamental_matrix_ransac (Image1, Image2, Row1, Col1, Row2, Col2, \
'ncc', 21, 0, 200, 20, 50, 0, 0.9, \
'gold_standard', 0.3, 1, FMatrix, \
CovFMat, Error, Points1, Points2)
gen_binocular_proj_rectification (Map1, Map2, FMatrix, [], Width1, \
Height1, Width2, Height2, 1, \
'no_map', CovFMatRect, H1, H2)
* Determine the maximum extent of the two rectified images.
projective_trans_point_2d (H1, [0,0,Height1,Height1], \
[0,Width1,0,Width1], [1,1,1,1], R1, C1, W1)
R1 := int(floor(R1/W1))
C1 := int(floor(C1/W1))
projective_trans_point_2d (H2, [0,0,Height2,Height2], \
[0,Width2,0,Width2], [1,1,1,1], R2, C2, W2)
R2 := int(floor(R2/W2))
C2 := int(floor(C2/W2))
WidthRect := max([C1,C2])
HeightRect := max([R1,R2])
projective_trans_image_size (Image1, Image1Rect, H1, 'bilinear', \
WidthRect, HeightRect, 'false')
projective_trans_image_size (Image2, Image2Rect, H2, 'bilinear', \
WidthRect, HeightRect, 'false')
match_fundamental_matrix_ransac, vector_to_fundamental_matrix
map_image, projective_trans_image, binocular_disparity
gen_binocular_rectification_map
J. Gluckmann and S.K. Nayar: „Rectifying transformations that minimize resampling effects“; IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2001, vol I, pages 111-117.
3D Metrology
| Operatoren |