image_to_world_planeT_image_to_world_planeImageToWorldPlaneImageToWorldPlaneimage_to_world_plane — Rektifizieren eines Bildes durch Transformation in die Ebene z=0 eines
Weltkoordinatensystems.
image_to_world_planeimage_to_world_planeImageToWorldPlaneImageToWorldPlaneImageToWorldPlaneimage_to_world_plane rektifiziert ein Bild ImageImageImageImageimageimage durch
Transformation in die Ebene z=0 (Messebene) eines Weltkoordinatensystems.
Das resultierende Bild ImageWorldImageWorldImageWorldImageWorldimageWorldimage_world weist weder radiale noch
perspektivische Verzerrungen auf; es entspricht einem Bild, das von einer
verzerrungsfreien Kamera aufgenommen wird, die senkrecht auf die Messebene
im Weltkoordinatensystem schaut. Das Weltkoordinatensystem wird gewählt,
indem man seine 3D-Lage in Kamerakoordinaten in WorldPoseWorldPoseWorldPoseWorldPoseworldPoseworld_pose übergibt.
Diese 3D-Lage wird in der Form
erwartet. Dabei steht
ccs für das Kamerakoordinatensystem und
wcs für das Weltkoordinatensystem
(siehe auch Transformationen / Posen und
„Solution Guide III-C - 3D Vision“).
In CameraParamCameraParamCameraParamCameraParamcameraParamcamera_param müssen die internen Kameraparameter übergeben werden
(siehe Kalibrierung für ihre Reihenfolge und das zu Grunde
liegende Kameramodell).
Der Parameter ScaleScaleScaleScalescalescale kann verwendet werden um die Größe eines Pixels
im transformierten Bild festzulegen. Der Parameter kann auf zweit Arten
verwendet werden:
Pixel auf metrische Einheiten skalieren:
Das Bild wird so skaliert, dass ein Pixel im transformierten Bild einer
metrischen Einheit entspricht, z.B. legt das Setzen von 'mm'"mm""mm""mm""mm""mm" fest,
dass ein Pixel im transformierten Bild der Fläche von
1mm x 1mm auf der Messebene entspricht. Damit dies möglich
ist muss die ursprüngliche Einheit Meter sein. Dies ist der Fall wenn
eine Standard-Kalibrierplatte verwendet wird.
Die Skalierung des Bildes wird durch das Setzen einer Zahl gesteuert, die
das Verhältnis Länge in ursprünglicher Einheit /
gewünschte Anzahl Pixel bestimmt.
Wenn beispielsweise die ursprüngliche Einheit Meter ist und jedes Pixel im
transformierten Bild eine Fläche von 3mm x 3mm der Messebene
darstellen soll, dann berechnet man die Skalierung
.
Für Aufgaben wie formbasiertes Matching auf dem transformierten Bild ist es
sinnvoll das Bild so zu skalieren, dass der Inhalt in ähnlicher Größe wie
im Originalbild dargestellt wird.
Der Parameter InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation gibt an, ob zwischen den Pixeln des
Eingabebildes bilinear interpoliert ('bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear") oder lediglich der
Grauwert des am nächsten liegenden Pixels ('nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor")
verwendet werden soll.
image_to_world_planeimage_to_world_planeImageToWorldPlaneImageToWorldPlaneImageToWorldPlaneimage_to_world_plane kann auf OpenCL-Geräten ausgeführt werden,
wenn das Eingangsbild die maximale Größe für Bildobjekte des ausgewählten
Gerätes nicht überschreitet. Das Ergebnis kann dabei geringfügig von dem
auf der CPU berechneten abweichen.
Ausführungsinformationen
Unterstützt OpenCL Compute Devices.
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
* Calibrate camera.
calibrate_cameras (CalibDataID, Error)
* Obtain camera parameters.
get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam)
* Example values, if no calibration data is available:
CamParam := ['area_scan_division', 0.0087, -1859, 8.65e-006, 8.6e-006, \
362.5, 291.6, 768, 576]
* Get reference pose (pose 4 of calibration object 0).
get_calib_data (CalibDataID, 'calib_obj_pose',\
[0,4], 'pose', Pose)
* Example values, if no calibration data is available:
Pose := [-0.11, -0.21, 2.51, 352.73, 346.73, 336.48, 0]
* Compensate thickness of plate.
set_origin_pose (Pose, -1.125, -1.0, 0, PoseNewOrigin)
* Transform the image into the world plane.
read_image (Image, 'calib/calib-3d-coord-04')
image_to_world_plane (Image, ImageWorld, CamParam, PoseNewOrigin,\
900, 800, 0.0025, 'bilinear')
Ergebnis
Sind die Parameterwerte korrekt, dann liefert
image_to_world_planeimage_to_world_planeImageToWorldPlaneImageToWorldPlaneImageToWorldPlaneimage_to_world_plane den Wert TRUE.