map_imagemap_imageMapImageMapImagemap_image (Operator)

Name

map_imagemap_imageMapImageMapImagemap_image — 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)

def map_image(image: HObject, map: HObject) -> HObject

Beschreibung

map_imagemap_imageMapImageMapImagemap_image transformiert ein Bild ImageImageImageimageimage unter Verwendung einer allgemeinen Abbildungsvorschrift MapMapMapmapmap, die z.B. mit gen_image_to_world_plane_mapgen_image_to_world_plane_mapGenImageToWorldPlaneMapGenImageToWorldPlaneMapgen_image_to_world_plane_map oder gen_radial_distortion_mapgen_radial_distortion_mapGenRadialDistortionMapGenRadialDistortionMapgen_radial_distortion_map erzeugt wurde. Das Mehrkanalbild MapMapMapmapmap muss dabei folgenden Aufbau besitzen:

Höhe und Breite von MapMapMapmapmap legen die Größe des Ausgabebildes ImageMappedImageMappedImageMappedimageMappedimage_mapped 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 ImageMappedImageMappedImageMappedimageMappedimage_mapped 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 bilineare 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 ImageMappedImageMappedImageMappedimageMappedimage_mapped 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_typeConvertMapTypeConvertMapTypeconvert_map_type 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 ImageMappedImageMappedImageMappedimageMappedimage_mapped nicht überschritten wird.

Aus Laufzeitgründen wird nicht überprüft, ob die linearen Koordinaten innerhalb des Eingabebildes liegen. Es muss also darauf geachtet werden, dass diese Bedingung erfüllt ist. Falls interpoliert wird, gilt dies zusätzlich für das Pixel rechts, unterhalb und rechts unterhalb dieser Koordinate. Andernfalls kann es zu einem Programmabsturz kommen!

map_imagemap_imageMapImageMapImagemap_image wird nur dann automatisch parallelisiert, wenn MapMapMapmapmap vom Typ 'bilinear'"bilinear""bilinear""bilinear""bilinear" oder 'coord_map_sub_pix'"coord_map_sub_pix""coord_map_sub_pix""coord_map_sub_pix""coord_map_sub_pix" ist.

map_imagemap_imageMapImageMapImagemap_image wird nur für eine Abbildungsvorschrift vom Typ 'coord_map_sub_pix'"coord_map_sub_pix""coord_map_sub_pix""coord_map_sub_pix""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) objectHImageHObjectHObjectHobject (byte / uint2 / real)

Zu transformierendes Bild.

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

Bild mit Transformationsdaten.

ImageMappedImageMappedImageMappedimageMappedimage_mapped (output_object)  (multichannel-)image(-array) objectHImageHObjectHObjectHobject * (byte / uint2 / real)

Transformiertes Bild.

Ergebnis

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

Vorgänger

gen_image_to_world_plane_mapgen_image_to_world_plane_mapGenImageToWorldPlaneMapGenImageToWorldPlaneMapgen_image_to_world_plane_map, gen_radial_distortion_mapgen_radial_distortion_mapGenRadialDistortionMapGenRadialDistortionMapgen_radial_distortion_map, convert_map_typeconvert_map_typeConvertMapTypeConvertMapTypeconvert_map_type

Siehe auch

affine_trans_imageaffine_trans_imageAffineTransImageAffineTransImageaffine_trans_image, rotate_imagerotate_imageRotateImageRotateImagerotate_image

Modul

Foundation