image_points_to_world_plane
— Transformieren von Bildpunkten in die Ebene z=0 eines Weltkoordinatensystems.
image_points_to_world_plane
transformiert Bildpunkte, die in
Rows
und Cols
gegeben sind, in die Ebene z=0 in einem
Weltkoordinatensystem (wcs) und liefert ihre 3D-Koordinaten in
X
und Y
zurück.
Das Weltkoordinatensystem wird gewählt, indem man seine
3D-Lage in Kamerakoordinaten in WorldPose
übergibt.
Diese 3D-Lage wird in der Form
erwartet. Dabei steht
ccs für das Kamerakoordinatensystem, siehe auch
Transformationen / Posen und
„Solution Guide III-C - 3D Vision“
.
In CameraParam
müssen die internen Kameraparameter übergeben
werden (siehe Kalibrierung für ihre Reihenfolge und das
zu Grunde liegende Kameramodell).
In vielen Fällen sind CameraParam
und WorldPose
das
Ergebnis einer vorherigen Kamerakalibrierung mit dem Operator
calibrate_cameras
. Ein Beispiel findet sich weiter unten.
Die erhaltenen 3D-Koordinaten können mit dem Parameter Scale
beliebig skaliert werden. Der Parameter Scale
entspricht dem
Verhältnis gewünschte Einheit/ursprüngliche Einheit. Die
ursprüngliche Einheit ist durch die Koordinaten des Kalibrierkörpers
gegeben. Falls dies, wie bei der Standard-Kalibrierplatte, Meter sind, ist es
auch möglich, die gewünschte Einheit direkt durch 'm' ,
'cm' , 'mm' oder 'um' anzugeben.
Intern berechnet der Operator zuerst den Sehstrahl vom Projektionszentrum der
Kamera zum Bildpunkt in Kamerakoordinaten, unter Berücksichtigung der
radialen Verzeichnung. Anschließend wird dieser Sehstrahl in das in
WorldPose
spezifizierte Weltkoordinatensystem transformiert. Der
Schnittpunkt der Ebene z=0 mit dem Sehstrahl ergibt dann die
3D-Koordinaten X
und Y
.
Es ist ratsam nur solche Bildkoordinaten Rows
und Cols
zu
spezifizieren, die innerhalb der kalibrierten Bildgröße liegen. Das
mathematische Modell funktioniert nur gut innerhalb des kalibrierten
Bereichs.
CameraParam
(input_control) campar →
(real / integer / string)
Interne Kameraparameter.
WorldPose
(input_control) pose →
(real / integer)
3D-Lage des Weltkoordinatensystems in Kamerakoordinaten.
Parameteranzahl: 7
Rows
(input_control) coordinates.y-array →
(real / integer)
Zeilenkoordinaten der zu transformierenden Punkte.
Defaultwert: 100.0
Cols
(input_control) coordinates.x-array →
(real / integer)
Spaltenkoordinaten der zu transformierenden Punkte.
Defaultwert: 100.0
Scale
(input_control) number →
(string / integer / real)
Maßstab oder Dimension.
Defaultwert: 'm'
Wertevorschläge: 'm' , 'cm' , 'mm' , 'microns' , 'um' , 1.0, 0.01, 0.001, 1.0e-6, 0.0254, 0.3048, 0.9144
Restriktion: Scale > 0
X
(output_control) coordinates.x-array →
(real)
X-Koordinaten der Punkte im Weltkoordinatensystem.
Y
(output_control) coordinates.y-array →
(real)
Y-Koordinaten der Punkte im Weltkoordinatensystem.
* Perform camera calibration (with standard calibration plate). calibrate_cameras (CalibDataID, Error) get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam) * Get reference pose (pose 2 of calibration object 0). get_calib_data (CalibDataID, 'calib_obj_pose',\ [0,2], 'pose', WorldPose) * Compensate thickness of plate. set_origin_pose(ObjInCameraPose, 0, 0, 0.0006, WorldPose) * Transform image points into world coordinate system (unit mm). image_points_to_world_plane(CamParam, WorldPose, PointRows, PointColumns, \ 'mm', PointXCoord, PointYCoord)
Sind die Parameterwerte korrekt, dann liefert
image_points_to_world_plane
den Wert 2 (H_MSG_TRUE).
create_pose
,
hom_mat3d_to_pose
,
camera_calibration
,
hand_eye_calibration
,
set_origin_pose
contour_to_world_plane_xld
,
project_3d_point
Calibration