map_imagemap_imageMapImageMapImage (Operator)

Name

map_imagemap_imageMapImageMapImage — Transformieren eines Bildes unter Verwendung einer allgemeinen Abbildungsvorschrift.

Signatur

map_image(Image, Map : ImageMapped : : )

Herror map_image(const Hobject Image, const Hobject Map, Hobject* ImageMapped)

Herror T_map_image(const Hobject Image, const Hobject Map, Hobject* ImageMapped)

void MapImage(const HObject& Image, const HObject& Map, HObject* ImageMapped)

HImage HImage::MapImage(const HImage& Map) const

static void HOperatorSet.MapImage(HObject image, HObject map, out HObject imageMapped)

HImage HImage.MapImage(HImage map)

Beschreibung

map_imagemap_imageMapImageMapImageMapImage transformiert ein Bild ImageImageImageImageimage unter Verwendung einer allgemeinen Abbildungsvorschrift MapMapMapMapmap, die z.B. mit gen_image_to_world_plane_mapgen_image_to_world_plane_mapGenImageToWorldPlaneMapGenImageToWorldPlaneMapGenImageToWorldPlaneMap oder gen_radial_distortion_mapgen_radial_distortion_mapGenRadialDistortionMapGenRadialDistortionMapGenRadialDistortionMap erzeugt wurde. Das Mehrkanalbild MapMapMapMapmap muss dabei folgenden Aufbau besitzen:

Höhe und Breite von MapMapMapMapmap legen die Größe des Ausgabebildes ImageMappedImageMappedImageMappedImageMappedimageMapped fest. Die Anzahl der Kanäle in MapMapMapMapmap legt fest, ob bei der Transformation keine Interpolation oder bilineare Interpolation angewendet werden soll. Besteht MapMapMapMapmap 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 ImageMappedImageMappedImageMappedImageMappedimageMapped die lineare Koordinate desjenigen Pixels im Eingabebild ImageImageImageImageimage gespeichert, von dem der Grauwert übernommen werden soll.

Soll zwischen den Pixeln im Eingabebild bilinear interpoliert werden, so muss MapMapMapMapmap 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 ImageMappedImageMappedImageMappedImageMappedimageMapped 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 MapMapMapMapmap 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_typeconvert_map_typeConvertMapTypeConvertMapTypeConvertMapType in diesen Typ überführt werden. Dieser Typ ist der einzige Typ, der auf Compute Devices unterstützt wird!

Achtung

Es ist darauf zu achten, dass der Wertebereich des Ausgabebildes ImageMappedImageMappedImageMappedImageMappedimageMapped nicht überschritten wird.

Aus Laufzeitgründen wird nicht überprüft, ob die linearen Koordinaten im ersten Kanal von MapMapMapMapmap innerhalb des Eingabebildes liegen. Es muss also darauf geachtet werden, dass diese Bedingung erfüllt ist, da es sonst zum Programmabsturz kommen kann!

map_imagemap_imageMapImageMapImageMapImage wird nur dann automatisch parallelisiert, wenn MapMapMapMapmap bilineare Interpolation nutzt.

map_imagemap_imageMapImageMapImageMapImage 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.

Ausführungsinformationen

Parameter

ImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHobject (byte / uint2 / real)

Zu transformierendes Bild.

MapMapMapMapmap (input_object)  (multichannel-)image objectHImageHImageHobject (int4 / int8 / uint2 / vector_field*) *erlaubt für Compute Devices

Bild mit Transformationsdaten.

ImageMappedImageMappedImageMappedImageMappedimageMapped (output_object)  (multichannel-)image(-array) objectHImageHImageHobject * (byte / uint2 / real)

Transformiertes Bild.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert map_imagemap_imageMapImageMapImageMapImage den Wert 2 (H_MSG_TRUE).

Vorgänger

gen_image_to_world_plane_mapgen_image_to_world_plane_mapGenImageToWorldPlaneMapGenImageToWorldPlaneMapGenImageToWorldPlaneMap, gen_radial_distortion_mapgen_radial_distortion_mapGenRadialDistortionMapGenRadialDistortionMapGenRadialDistortionMap, convert_map_typeconvert_map_typeConvertMapTypeConvertMapTypeConvertMapType

Siehe auch

affine_trans_imageaffine_trans_imageAffineTransImageAffineTransImageAffineTransImage, rotate_imagerotate_imageRotateImageRotateImageRotateImage

Modul

Foundation