| Operatoren |
map_image — Transformieren eines Bildes unter Verwendung einer allgemeinen Abbildungsvorschrift.
map_image(Image, Map : ImageMapped : : )
map_image transformiert ein Bild Image unter Verwendung einer allgemeinen Abbildungsvorschrift Map, die z.B. mit gen_image_to_world_plane_map oder gen_radial_distortion_map erzeugt wurde. Das Mehrkanalbild Map muss dabei folgenden Aufbau besitzen:
Höhe und Breite von Map legen die Größe des Ausgabebildes ImageMapped fest. Die Anzahl der Kanäle in Map legt fest, ob bei der Transformation keine Interpolation oder bilineare Interpolation angewendet werden soll. Besteht Map lediglich aus einem Kanal, so wird bei der Transformation keine Interpolation angewendet. In diesem Kanal (Bildtyp 'int4' bzw. 'int8' in HALCON XL falls der Wertebereich von 'int4' nicht ausreicht) ist für jedes Pixel des Ergebnisbildes ImageMapped die lineare Koordinate desjenigen Pixels im Eingabebild Image gespeichert, von dem der Grauwert übernommen werden soll.
Soll zwischen den Pixeln im Eingabebild bilinear interpoliert werden, so muss Map aus einem Bild mit 5 Kanälen bestehen. Der erste Kanal (Bildtyp 'int4' bzw. 'int8') beschreibt die geometrische Transformation. Die Kanäle 2-5 (Bildtyp 'uint2') bestehen enthalten jeweils die Gewichte der vier benachbarten Pixel für die bilinaere Interpolation. Die Gewichte [0...1] sind dabei auf den Wertebereich des 'uint2' Bildes skaliert und besitzen daher ganzzahlige Werte im Bereich von 0 bis 65535. Soll sich die Helligkeit des transformierten Bildes nicht von der des Eingabebildes unterscheiden, so ist darauf zu achten, dass die Summe der vier unskalierten Gewichte jeweils 1 ergibt. In diesem Zusammenhang ist auch darauf zu achten, dass der Wertebereich des Ausgabebildes ImageMapped nicht überschritten wird. Der geometrische Bezug zwischen den Kanälen 2-5 ist durch folgende Skizze ersichtlich:
| 2 | 3 |
| 4 | 5 |
Bezugspunkt der vier Pixel ist dabei jeweils das linke obere Pixel, dessen lineare Koordinate im ersten Kanal gespeichert ist.
Es ist außerdem möglich eine Map zu verwenden die aus einem Vektorfeld des semantischen Typs 'vector_field_absolute' besteht. Dieses enthält die subpixelgenauen Koordinaten der Abbildungsfunktion. Die beiden oben erläuterten Typen können mittels convert_map_type in diesen Typ überführt werden. Dieser Typ ist der einzige Typ, der auf Compute Devices unterstützt wird!
Es ist darauf zu achten, dass der Wertebereich des Ausgabebildes ImageMapped nicht überschritten wird.
Aus Laufzeitgründen wird nicht überprüft, ob die linearen Koordinaten im ersten Kanal von Map innerhalb des Eingabebildes liegen. Es muss also darauf geachtet werden, dass diese Bedingung erfüllt ist, da es sonst zum Programmabsturz kommen kann!
map_image wird nur dann automatisch parallelisiert, wenn Map bilineare Interpolation nutzt.
map_image wird nur für eine Abbildungsvorschrift vom Typ 'coord_map_sub_pix' auf einem OpenCL fähigen Compute Device ausgeführt. Ferner darf das Eingangsbild die maximale Größe für Bildobjekte des ausgewählten Gerätes nicht überschreiten.
Zu transformierendes Bild.
Bild mit Transformationsdaten.
Transformiertes Bild.
Sind die Parameterwerte korrekt, dann liefert map_image den Wert 2 (H_MSG_TRUE).
gen_image_to_world_plane_map, gen_radial_distortion_map, convert_map_type
affine_trans_image, rotate_image
Foundation
| Operatoren |