KlassenKlassenKlassenKlassen | | | | Operatoren

map_imagemap_imageMapImagemap_imageMapImageMapImage (Operator)

Name

map_imagemap_imageMapImagemap_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)

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

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

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

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

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

void HOperatorSetX.MapImage(
[in] IHUntypedObjectX* Image, [in] IHUntypedObjectX* Map, [out] IHUntypedObjectX*ImageMapped)

IHImageX* HImageX.MapImage([in] IHImageX* Map)

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

HImage HImage.MapImage(HImage map)

Beschreibung

map_imagemap_imageMapImagemap_imageMapImageMapImage transformiert ein Bild ImageImageImageImageImageimage unter Verwendung einer allgemeinen Abbildungsvorschrift MapMapMapMapMapmap, die z.B. mit gen_image_to_world_plane_mapgen_image_to_world_plane_mapGenImageToWorldPlaneMapgen_image_to_world_plane_mapGenImageToWorldPlaneMapGenImageToWorldPlaneMap oder gen_radial_distortion_mapgen_radial_distortion_mapGenRadialDistortionMapgen_radial_distortion_mapGenRadialDistortionMapGenRadialDistortionMap erzeugt wurde. Das Mehrkanalbild MapMapMapMapMapmap muss dabei folgenden Aufbau besitzen:

Höhe und Breite von MapMapMapMapMapmap legen die Größe des Ausgabebildes ImageMappedImageMappedImageMappedImageMappedImageMappedimageMapped 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 ImageMappedImageMappedImageMappedImageMappedImageMappedimageMapped 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 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 ImageMappedImageMappedImageMappedImageMappedImageMappedimageMapped 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_typeConvertMapTypeconvert_map_typeConvertMapTypeConvertMapType 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 ImageMappedImageMappedImageMappedImageMappedImageMappedimageMapped 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_imageMapImagemap_imageMapImageMapImage wird nur dann automatisch parallelisiert, wenn MapMapMapMapMapmap bilineare Interpolation nutzt.

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

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject (byte / uint2 / real)

Zu transformierendes Bild.

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

Bild mit Transformationsdaten.

ImageMappedImageMappedImageMappedImageMappedImageMappedimageMapped (output_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject * (byte / uint2 / real)

Transformiertes Bild.

Ergebnis

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

Vorgänger

gen_image_to_world_plane_mapgen_image_to_world_plane_mapGenImageToWorldPlaneMapgen_image_to_world_plane_mapGenImageToWorldPlaneMapGenImageToWorldPlaneMap, gen_radial_distortion_mapgen_radial_distortion_mapGenRadialDistortionMapgen_radial_distortion_mapGenRadialDistortionMapGenRadialDistortionMap, convert_map_typeconvert_map_typeConvertMapTypeconvert_map_typeConvertMapTypeConvertMapType

Siehe auch

affine_trans_imageaffine_trans_imageAffineTransImageaffine_trans_imageAffineTransImageAffineTransImage, rotate_imagerotate_imageRotateImagerotate_imageRotateImageRotateImage

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren