gen_radial_distortion_map
— Berechnen der Abbildung von Bildern aufgrund wechselnder radialer
Verzeichnung.
gen_radial_distortion_map( : Map : CamParamIn, CamParamOut, MapType : )
gen_radial_distortion_map
berechnet die Abbildung von Bildern
aufgrund wechselnder radialer Verzeichnung gemäß den übergebenen internen
Kameraparametern CamParamIn
bzw. CamParamOut
, die
z.B. durch eine Kamerakalibrierung mit Hilfe von calibrate_cameras
bestimmt wurden. CamParamIn
bzw. CamParamOut
stellen
dabei die alten bzw. neuen internen Kameraparameter dar, die u.a. auch die
alte bzw. neue radiale Verzeichnung enthalten (siehe auch
Kalibrierung für die Reihenfolge der Parameter und das
zu Grunde liegende Kameramodell). Zur Berechnung der Abbildung wird jedes
Pixel im potentiellen Ausgabebild mittels CamParamOut
in die
Bildebene zurückgerechnet und dann mittels CamParamIn
in eine
Subpixel-Position im Eingabebild überführt. Bitte beachten Sie, dass
gen_radial_distortion_map
nur Flächenkameras unterstützt.
Die Abbildungsvorschrift wird in dem Ausgabebild Map
gespeichert,
dessen Größe durch die Kameraparameter CamParamOut
festgelegt ist und somit die Größe der später mit map_image
transformierten Ergebnisbilder bestimmt. Die Größe der mit
map_image
zu tranformierenden Bilder wird durch die
Kameraparameter CamParamIn
bestimmt.
Der Parameter MapType
gibt an, in welchem Typ die
Abbildungsvorschrift gespeichert werden soll. Wurde
'nearest_neighbor' gewählt,
so besteht Map
aus einem Bild mit einem Kanal, in dem für jedes
Pixel des Ergebnisbildes die linearen Koordinaten desjenigen Pixels des
Eingabebildes stehen, welches den transformierten Koordinaten am nächsten
liegt. Wurde die bilineare Interpolation ('bilinear' ) gewählt,
so besteht Map
aus einem Bild mit fünf Kanälen. Der erste Kanal
enthält für jedes Pixel des Ergebnisbildes die linearen Koordinaten
desjenigen Pixels des Eingabebildes, welches links oberhalb von den
transformierten Koordinaten liegt. Die übrigen vier Kanäle enthalten die
Gewichte der einzelnen vier Nachbarpixel der transformierten
Koordinaten für die bilineare Interpolation in folgender Reihenfolge:
2 | 3 |
4 | 5 |
Der zweite Kanal z.B. enthält die Gewichte der Pixel, die links oberhalb
der transformierten Koordinaten liegen. Wurde 'coord_map_sub_pix'
gewählt, besteht Map
aus einem Vektorfeld, welches für jedes
Pixel des Ergebnisbildes die subpixelgenauen Koordinaten im Eingabebild
enthält.
Wird zur Bestimmung der modifizierten Kameraparameter CamParamOut
die Routine change_radial_distortion_cam_par
verwendet, beschreibt die Abbildung eine Aufnahmeoptik mit geänderter
radialer Verzeichnung . Für entspricht die Abbildung somit einer radialen
Entzerrung. Eine etwaige Lagebestimmung für die Kamera
(externe Kameraparameter) wird dadurch nicht beeinflusst.
Sollen mehrere Bilder unter Verwendung derselben internen Kameraparameter
transformiert werden, so ist die Kombination aus
gen_radial_distortion_map
und map_image
wesentlich
effizienter als der Operator change_radial_distortion_image
,
da die Abbildungsvorschrift nur einmal berechnet werden muss.
Wenn die erzeugte Abbildung in einem anderen Programm wiederverwendet werden
soll, kann man sie mit dem Operator write_image
als Mehrkanalbild
abspeichern (Format: 'tiff' ).
Map
(output_object) (multichannel-)image →
object (int4 / int8 / uint2 / vector_field)
Bild mit den Abbildungsdaten.
CamParamIn
(input_control) campar →
(real / integer / string)
Alte Kameraparameter.
CamParamOut
(input_control) campar →
(real / integer / string)
Neue Kameraparameter.
MapType
(input_control) string →
(string)
Typ der Abbildungsdaten.
Defaultwert: 'bilinear'
Werteliste: 'bilinear' , 'coord_map_sub_pix' , 'nearest_neighbor'
Sind die Parameterwerte korrekt, dann liefert
gen_radial_distortion_map
den Wert 2 (H_MSG_TRUE).
change_radial_distortion_cam_par
,
camera_calibration
,
hand_eye_calibration
change_radial_distortion_image
change_radial_distortion_contours_xld
Calibration