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_imageMapImageMapImageMapImagemap_image transformiert ein Bild ImageImageImageImageimageimage unter Verwendung einer allgemeinen Abbildungsvorschrift MapMapMapMapmapmap, die z.B. mit gen_image_to_world_plane_mapgen_image_to_world_plane_mapGenImageToWorldPlaneMapGenImageToWorldPlaneMapGenImageToWorldPlaneMapgen_image_to_world_plane_map oder gen_radial_distortion_mapgen_radial_distortion_mapGenRadialDistortionMapGenRadialDistortionMapGenRadialDistortionMapgen_radial_distortion_map erzeugt wurde. Das Mehrkanalbild MapMapMapMapmapmap muss dabei folgenden Aufbau besitzen:

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

Soll zwischen den Pixeln im Eingabebild bilinear interpoliert werden, so muss MapMapMapMapmapmap 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 ImageMappedImageMappedImageMappedImageMappedimageMappedimage_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 MapMapMapMapmapmap 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_typeConvertMapTypeConvertMapTypeConvertMapTypeconvert_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 ImageMappedImageMappedImageMappedImageMappedimageMappedimage_mapped nicht überschritten wird.

Aus Laufzeitgründen wird nicht überprüft, ob die linearen Koordinaten im ersten Kanal von MapMapMapMapmapmap 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_imageMapImageMapImageMapImagemap_image wird nur dann automatisch parallelisiert, wenn MapMapMapMapmapmap bilineare Interpolation nutzt.

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

Ausführungsinformationen

Parameter

ImageImageImageImageimageimage (input_object)  (multichannel-)image(-array) objectHImageHObjectHImageHobject (byte / uint2 / real)

Zu transformierendes Bild.

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

Bild mit Transformationsdaten.

ImageMappedImageMappedImageMappedImageMappedimageMappedimage_mapped (output_object)  (multichannel-)image(-array) objectHImageHObjectHImageHobject * (byte / uint2 / real)

Transformiertes Bild.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert map_imagemap_imageMapImageMapImageMapImagemap_image den Wert TRUE.

Vorgänger

gen_image_to_world_plane_mapgen_image_to_world_plane_mapGenImageToWorldPlaneMapGenImageToWorldPlaneMapGenImageToWorldPlaneMapgen_image_to_world_plane_map, gen_radial_distortion_mapgen_radial_distortion_mapGenRadialDistortionMapGenRadialDistortionMapGenRadialDistortionMapgen_radial_distortion_map, convert_map_typeconvert_map_typeConvertMapTypeConvertMapTypeConvertMapTypeconvert_map_type

Siehe auch

affine_trans_imageaffine_trans_imageAffineTransImageAffineTransImageAffineTransImageaffine_trans_image, rotate_imagerotate_imageRotateImageRotateImageRotateImagerotate_image

Modul

Foundation