KlassenKlassenKlassenKlassen | | | | Operatoren

gen_arbitrary_distortion_mapT_gen_arbitrary_distortion_mapGenArbitraryDistortionMapgen_arbitrary_distortion_mapGenArbitraryDistortionMapGenArbitraryDistortionMap (Operator)

Name

gen_arbitrary_distortion_mapT_gen_arbitrary_distortion_mapGenArbitraryDistortionMapgen_arbitrary_distortion_mapGenArbitraryDistortionMapGenArbitraryDistortionMap — Berechnet die Abbildung von einem beliebig verzerrten Bild ins entzerrte Bild.

Signatur

gen_arbitrary_distortion_map( : Map : GridSpacing, Row, Column, GridWidth, ImageWidth, ImageHeight, MapType : )

Herror T_gen_arbitrary_distortion_map(Hobject* Map, const Htuple GridSpacing, const Htuple Row, const Htuple Column, const Htuple GridWidth, const Htuple ImageWidth, const Htuple ImageHeight, const Htuple MapType)

Herror gen_arbitrary_distortion_map(Hobject* Map, const HTuple& GridSpacing, const HTuple& Row, const HTuple& Column, const HTuple& GridWidth, const HTuple& ImageWidth, const HTuple& ImageHeight, const HTuple& MapType)

void GenArbitraryDistortionMap(HObject* Map, const HTuple& GridSpacing, const HTuple& Row, const HTuple& Column, const HTuple& GridWidth, const HTuple& ImageWidth, const HTuple& ImageHeight, const HTuple& MapType)

static HImage HMisc::GenArbitraryDistortionMap(Hlong GridSpacing, const HTuple& Row, const HTuple& Column, Hlong GridWidth, Hlong ImageWidth, Hlong ImageHeight, const HString& MapType)

static HImage HMisc::GenArbitraryDistortionMap(Hlong GridSpacing, const HTuple& Row, const HTuple& Column, Hlong GridWidth, Hlong ImageWidth, Hlong ImageHeight, const char* MapType)

void HOperatorSetX.GenArbitraryDistortionMap(
[out] IHUntypedObjectX*Map, [in] VARIANT GridSpacing, [in] VARIANT Row, [in] VARIANT Column, [in] VARIANT GridWidth, [in] VARIANT ImageWidth, [in] VARIANT ImageHeight, [in] VARIANT MapType)

IHImageX* HMiscX.GenArbitraryDistortionMap(
[in] Hlong GridSpacing, [in] VARIANT Row, [in] VARIANT Column, [in] Hlong GridWidth, [in] Hlong ImageWidth, [in] Hlong ImageHeight, [in] BSTR MapType)

static void HOperatorSet.GenArbitraryDistortionMap(out HObject map, HTuple gridSpacing, HTuple row, HTuple column, HTuple gridWidth, HTuple imageWidth, HTuple imageHeight, HTuple mapType)

static HImage HMisc.GenArbitraryDistortionMap(int gridSpacing, HTuple row, HTuple column, int gridWidth, int imageWidth, int imageHeight, string mapType)

Beschreibung

gen_arbitrary_distortion_mapgen_arbitrary_distortion_mapGenArbitraryDistortionMapgen_arbitrary_distortion_mapGenArbitraryDistortionMapGenArbitraryDistortionMap berechnet die Abbildung MapMapMapMapMapmap von einem beliebig verzerrten ins entzerrte Bild. Dazu beschreiben die Koordinaten RowRowRowRowRowrow und ColumnColumnColumnColumnColumncolumn ein (verzerrtes) Punktgitter, das im entzerrten Bild auf ein regelmäßiges Gitter abgebildet wird. Die Koordinaten der Gitterpunkte sind, entsprechend ihrer Anordung im Punktgitter, zeilenweise von oben nach unten zu übergeben. GridWidthGridWidthGridWidthGridWidthGridWidthgridWidth ist die Breite des Punktgitters in Gitterpunkten. GridSpacingGridSpacingGridSpacingGridSpacingGridSpacinggridSpacing ist der Abstand zweier benachbarter Gitterpunkte im entzerrten Bild. Da Gitterpunkte immer in die Mitte der entsprechenden Pixel projeziert werden, belegt eine Gitterzelle (GridSpacingGridSpacingGridSpacingGridSpacingGridSpacinggridSpacing+1) x (GridSpacingGridSpacingGridSpacingGridSpacingGridSpacinggridSpacing+1) Pixel. Allerdings überlappen sich benachbarte Gitterzellen auch auf einem Pixel Breite.

Darüber hinaus müssen die Breite ImageWidthImageWidthImageWidthImageWidthImageWidthimageWidth und Höhe ImageHeightImageHeightImageHeightImageHeightImageHeightimageHeight der zu entzerrenden Bilder übergeben werden, um die Abbildung MapMapMapMapMapmap zu berechnen.

Der Parameter MapTypeMapTypeMapTypeMapTypeMapTypemapType gibt an, in welchem Typ die Abbildungsvorschrift gespeichert werden soll. Wurde die bilineare Interpolation ('bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear") gewählt, so besteht MapMapMapMapMapmap aus einem Bild mit fünf Kanälen. Der erste Kanal enthält für jedes Pixel des Ergebnisbildes die linearen Koordinaten desjenigen Pixels des Eingabebildes, welches links oberhalb von den transformierten Koordinaten liegt. Die übrigen vier Kanäle enthalten die Gewichte der einzelnen vier Nachbarpixel der transformierten Koordinaten für die bilineare Interpolation in folgender Reihenfolge:

2 3
4 5

Der zweite Kanal z.B. enthält die Gewichte der Pixel, die links oberhalb der transformierten Koordinaten liegen. Wurde 'coord_map_sub_pix'"coord_map_sub_pix""coord_map_sub_pix""coord_map_sub_pix""coord_map_sub_pix""coord_map_sub_pix" gewählt, besteht MapMapMapMapMapmap aus einem Vektorfeld, welches für jedes Pixel des Ergebnisbildes die subpixelgenauen Koordinaten im Eingabebild enthält.

Aus dem Obigen geht hervor, dass zur Interpolation des Grauwertes eines Pixels im entzerrten Bild immer alle vier benachbarte Pixel im verzerrten Bild benötigt werden. Liegt mindestens eines dieser benachbarten Pixel außerhalb des verzerrten Bildes, so kann der Grauwert nicht berechnet werden. In der resultierenden MapMapMapMapMapmap wird der Definitionsbereich entsprechend eingeschränkt.

Im Gegensatz zu gen_grid_rectification_mapgen_grid_rectification_mapGenGridRectificationMapgen_grid_rectification_mapGenGridRectificationMapGenGridRectificationMap wird gen_arbitrary_distortion_mapgen_arbitrary_distortion_mapGenArbitraryDistortionMapgen_arbitrary_distortion_mapGenArbitraryDistortionMapGenArbitraryDistortionMap verwendet, falls die Koordinaten (RowRowRowRowRowrow,ColumnColumnColumnColumnColumncolumn) der Gitterpunkte im verzerrten Bild schon bekannt sind bzw. die relevanten Bildinhalte schon reguläre, gitterförmige Strukturen aufweisen, aus denen die Koordinaten gewonnen werden können.

Wenn die erzeugte Abbildung in einem anderen Programm wiederverwendet werden soll, kann man sie mit dem Operator write_imagewrite_imageWriteImagewrite_imageWriteImageWriteImage als Mehrkanalbild abspeichern (Format: 'tiff'"tiff""tiff""tiff""tiff""tiff").

Parallelisierung

Parameter

MapMapMapMapMapmap (output_object)  multichannel-image objectHImageHImageHImageHImageXHobject * (int4 / uint2 / vector_field)

Bild mit Transformationsdaten.

GridSpacingGridSpacingGridSpacingGridSpacingGridSpacinggridSpacing (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Abstand der Gitterpunkte im entzerrten Bild.

Restriktion: GridSpacing > 0

RowRowRowRowRowrow (input_control)  point.y-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Zeilenkoordinaten der Gitterpunkte im verzerrten Bild.

ColumnColumnColumnColumnColumncolumn (input_control)  point.x-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Spaltenkoordinaten der Gitterpunkte im verzerrten Bild.

Restriktion: number(Row) == number(Column)

GridWidthGridWidthGridWidthGridWidthGridWidthgridWidth (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Breite des Punktgitters (Anzahl der Gitterpunkte).

ImageWidthImageWidthImageWidthImageWidthImageWidthimageWidth (input_control)  extent.x HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Breite der zu entzerrenden Bilder.

Restriktion: ImageWidth > 0

ImageHeightImageHeightImageHeightImageHeightImageHeightimageHeight (input_control)  extent.y HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Höhe der zu entzerrenden Bilder.

Restriktion: ImageHeight > 0

MapTypeMapTypeMapTypeMapTypeMapTypemapType (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Typ der Transformationsdaten.

Defaultwert: 'bilinear' "bilinear" "bilinear" "bilinear" "bilinear" "bilinear"

Werteliste: 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear", 'coord_map_sub_pix'"coord_map_sub_pix""coord_map_sub_pix""coord_map_sub_pix""coord_map_sub_pix""coord_map_sub_pix"

Ergebnis

Sind die Parameterwerte korrekt, dann liefert gen_arbitrary_distortion_mapgen_arbitrary_distortion_mapGenArbitraryDistortionMapgen_arbitrary_distortion_mapGenArbitraryDistortionMapGenArbitraryDistortionMap den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Nachfolger

map_imagemap_imageMapImagemap_imageMapImageMapImage

Siehe auch

create_rectification_gridcreate_rectification_gridCreateRectificationGridcreate_rectification_gridCreateRectificationGridCreateRectificationGrid, find_rectification_gridfind_rectification_gridFindRectificationGridfind_rectification_gridFindRectificationGridFindRectificationGrid, connect_grid_pointsconnect_grid_pointsConnectGridPointsconnect_grid_pointsConnectGridPointsConnectGridPoints, gen_grid_rectification_mapgen_grid_rectification_mapGenGridRectificationMapgen_grid_rectification_mapGenGridRectificationMapGenGridRectificationMap

Modul

Calibration


KlassenKlassenKlassenKlassen | | | | Operatoren