| Operatoren |
gen_arbitrary_distortion_map — Berechnet die Abbildung von einem beliebig verzerrten Bild ins entzerrte Bild.
gen_arbitrary_distortion_map( : Map : GridSpacing, Row, Column, GridWidth, ImageWidth, ImageHeight, MapType : )
gen_arbitrary_distortion_map berechnet die Abbildung Map von einem beliebig verzerrten ins entzerrte Bild. Dazu beschreiben die Koordinaten Row und Column 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. GridWidth ist die Breite des Punktgitters in Gitterpunkten. GridSpacing ist der Abstand zweier benachbarter Gitterpunkte im entzerrten Bild. Da Gitterpunkte immer in die Mitte der entsprechenden Pixel projeziert werden, belegt eine Gitterzelle (GridSpacing+1) x (GridSpacing+1) Pixel. Allerdings überlappen sich benachbarte Gitterzellen auch auf einem Pixel Breite.
Darüber hinaus müssen die Breite ImageWidth und Höhe ImageHeight der zu entzerrenden Bilder übergeben werden, um die Abbildung Map zu berechnen.
Der Parameter MapType gibt an, in welchem Typ die Abbildungsvorschrift gespeichert werden soll. Wurde die bilineare Interpolation ('bilinear') gewählt, so besteht Map 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' gewählt, besteht Map 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 Map wird der Definitionsbereich entsprechend eingeschränkt.
Im Gegensatz zu gen_grid_rectification_map wird gen_arbitrary_distortion_map verwendet, falls die Koordinaten (Row,Column) 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_image als Mehrkanalbild abspeichern (Format: 'tiff').
Bild mit Transformationsdaten.
Abstand der Gitterpunkte im entzerrten Bild.
Restriktion: GridSpacing > 0
Zeilenkoordinaten der Gitterpunkte im verzerrten Bild.
Spaltenkoordinaten der Gitterpunkte im verzerrten Bild.
Restriktion: number(Row) == number(Column)
Breite des Punktgitters (Anzahl der Gitterpunkte).
Breite der zu entzerrenden Bilder.
Restriktion: ImageWidth > 0
Höhe der zu entzerrenden Bilder.
Restriktion: ImageHeight > 0
Typ der Transformationsdaten.
Defaultwert: 'bilinear'
Werteliste: 'bilinear', 'coord_map_sub_pix'
Sind die Parameterwerte korrekt, dann liefert gen_arbitrary_distortion_map den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
create_rectification_grid, find_rectification_grid, connect_grid_points, gen_grid_rectification_map
Calibration
| Operatoren |