gen_arbitrary_distortion_mapT_gen_arbitrary_distortion_mapGenArbitraryDistortionMapGenArbitraryDistortionMap (Operator)

Name

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

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)

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

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_mapGenArbitraryDistortionMapGenArbitraryDistortionMapGenArbitraryDistortionMap berechnet die Abbildung MapMapMapMapmap von einem beliebig verzerrten ins entzerrte Bild. Dazu beschreiben die Koordinaten RowRowRowRowrow und ColumnColumnColumnColumncolumn 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. GridWidthGridWidthGridWidthGridWidthgridWidth ist die Breite des Punktgitters in Gitterpunkten. GridSpacingGridSpacingGridSpacingGridSpacinggridSpacing ist der Abstand zweier benachbarter Gitterpunkte im entzerrten Bild. Da Gitterpunkte immer in die Mitte der entsprechenden Pixel projeziert werden, belegt eine Gitterzelle (GridSpacingGridSpacingGridSpacingGridSpacinggridSpacing+1) x (GridSpacingGridSpacingGridSpacingGridSpacinggridSpacing+1) Pixel. Allerdings überlappen sich benachbarte Gitterzellen auch auf einem Pixel Breite.

Darüber hinaus müssen die Breite ImageWidthImageWidthImageWidthImageWidthimageWidth und Höhe ImageHeightImageHeightImageHeightImageHeightimageHeight der zu entzerrenden Bilder übergeben werden, um die Abbildung MapMapMapMapmap zu berechnen.

Der Parameter MapTypeMapTypeMapTypeMapTypemapType gibt an, in welchem Typ die Abbildungsvorschrift gespeichert werden soll. Wurde die bilineare Interpolation ('bilinear'"bilinear""bilinear""bilinear""bilinear") gewählt, so besteht MapMapMapMapmap 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" gewählt, besteht MapMapMapMapmap 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 MapMapMapMapmap wird der Definitionsbereich entsprechend eingeschränkt.

Im Gegensatz zu gen_grid_rectification_mapgen_grid_rectification_mapGenGridRectificationMapGenGridRectificationMapGenGridRectificationMap wird gen_arbitrary_distortion_mapgen_arbitrary_distortion_mapGenArbitraryDistortionMapGenArbitraryDistortionMapGenArbitraryDistortionMap verwendet, falls die Koordinaten (RowRowRowRowrow,ColumnColumnColumnColumncolumn) 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_imageWriteImageWriteImageWriteImage als Mehrkanalbild abspeichern (Format: 'tiff'"tiff""tiff""tiff""tiff").

Ausführungsinformationen

Parameter

MapMapMapMapmap (output_object)  multichannel-image objectHImageHImageHobject * (int4 / uint2 / vector_field)

Bild mit Transformationsdaten.

GridSpacingGridSpacingGridSpacingGridSpacinggridSpacing (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Abstand der Gitterpunkte im entzerrten Bild.

Restriktion: GridSpacing > 0

RowRowRowRowrow (input_control)  point.y-array HTupleHTupleHtuple (real) (double) (double) (double)

Zeilenkoordinaten der Gitterpunkte im verzerrten Bild.

ColumnColumnColumnColumncolumn (input_control)  point.x-array HTupleHTupleHtuple (real) (double) (double) (double)

Spaltenkoordinaten der Gitterpunkte im verzerrten Bild.

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

GridWidthGridWidthGridWidthGridWidthgridWidth (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Breite des Punktgitters (Anzahl der Gitterpunkte).

ImageWidthImageWidthImageWidthImageWidthimageWidth (input_control)  extent.x HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Breite der zu entzerrenden Bilder.

Restriktion: ImageWidth > 0

ImageHeightImageHeightImageHeightImageHeightimageHeight (input_control)  extent.y HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Höhe der zu entzerrenden Bilder.

Restriktion: ImageHeight > 0

MapTypeMapTypeMapTypeMapTypemapType (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Typ der Transformationsdaten.

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

Werteliste: '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"

Ergebnis

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

Nachfolger

map_imagemap_imageMapImageMapImageMapImage

Siehe auch

create_rectification_gridcreate_rectification_gridCreateRectificationGridCreateRectificationGridCreateRectificationGrid, find_rectification_gridfind_rectification_gridFindRectificationGridFindRectificationGridFindRectificationGrid, connect_grid_pointsconnect_grid_pointsConnectGridPointsConnectGridPointsConnectGridPoints, gen_grid_rectification_mapgen_grid_rectification_mapGenGridRectificationMapGenGridRectificationMapGenGridRectificationMap

Modul

Calibration