| Operatoren |
polar_trans_image_ext — Anwenden einer Polarkoordinatentransformation eines Kreisrings.
polar_trans_image_ext(Image : PolarTransImage : Row, Column, AngleStart, AngleEnd, RadiusStart, RadiusEnd, Width, Height, Interpolation : )
polar_trans_image_ext transformiert den durch den Mittelpunkt (Row, Column), die Radien RadiusStart und RadiusEnd und die Winkel AngleStart und AngleEnd definierten Kreisring im Bild Image auf dessen Polarkoordinatendarstellung im Bild PolarTransImage mit den Dimensionen Width x Height.
Das linke obere Pixel im Ausgabebild entspricht immer dem Punkt im Eingabebild, der durch RadiusStart und AngleStart spezifiziert wird. Analog entspricht das rechte untere Pixel im Ausgabebild immer dem Punkt im Eingabebild, der durch RadiusEnd und AngleEnd spezifiziert wird. Im Normalfall (AngleStart < AngleEnd und RadiusStart < RadiusEnd) wird die Polarkoordinatentransformation also in mathematisch positiver Durchlaufrichtung (entgegen dem Uhrzeigersinn) durchgeführt. Dabei liegen die Punkte mit kleineren Radien im Ausgabebild weiter oben. Durch geeignetes Vertauschen der Werte der Parameter (z.B. AngleStart > AngleEnd oder RadiusStart > RadiusEnd) kann jede beliebige Orientierung des Ausgabebildes erreicht werden.
Über den Parameter Interpolation kann dabei zwischen den Interpolationsverfahren 'bilinear' und 'nearest_neighbor' gewählt werden. Bei 'nearest_neighbor' wird der Grauwert des Pixels im Ausgabebild aus dem Grauwert des nächstgelegenen Pixels im Eingabebild bestimmt. Bei 'bilinear' wird der Grauwert des Pixels im Ausgabebild durch bilineare Interpolation aus den Grauwerten der vier nächstgelegenen Pixel im Eingabebild bestimmt. Der Modus 'bilinear' liefert qualitativ bessere Ergebnisse, ist allerdings auch langsamer als 'nearest_neighbor'.
Die Winkel sind frei als reelle Zahlen wählbar, Mittelpunkt und Radien können ebenfalls frei als reelle Zahlen gewählt werden. Sind diese jedoch ganze Zahlen und entspricht die Differenz von RadiusEnd und RadiusStart der Höhe Height des Zielbildes, so wird die Berechnung durch eine optimierte Routine erheblich schneller durchgeführt.
Die Radien und Winkel sind inklusive, d.h. die erste Zeile des Zielbildes entspricht dem Kreis mit dem Radius RadiusStart, die letzte Zeile dem mit dem Radius RadiusEnd. Für Vollkreise, bei denen die Differenz AngleStart - AngleEnd (360 Grad) beträgt, bedeutet dies insbesondere, dass die erste Spalte des Zielbildes gleich der letzten ist.
Um diesem Verhalten vorzubeugen sollte diese Differenz statt betragen.
Der Aufruf:
polar_trans_image(Image, PolarTransImage, Row, Column, Width, Height)entspricht dem Aufruf:
polar_trans_image_ext(Image, PolarTransImage, Row-0.5, Column-0.5,
6.2831853, 6.2831853/Width, 0, Height-1,
Width, Height, 'nearest_neighbor')
Der Offset von 0.5 ist notwendig, da polar_trans_image keine Nearest-Neighbor Interpolation durchführt, Radien und Winkel ergeben sich durch die im vorherigen Abschnitt beschriebenen Überlegungen, da diese Werte in polar_trans_image nicht inklusive behandelt werden. Der Startwinkel ist hier größer als der Endwinkel, damit der Kreisring von polar_trans_image_ext genauso wie in polar_trans_image im Uhrzeigersinn durchlaufen wird.
polar_trans_image_ext kann auf OpenCL Geräten ausgeführt werden, wenn das Eingangsbild die maximale Größe für Bildobjekte des ausgewählten Gerätes nicht überschreitet. Aus numerischen Gründen kann es dabei zu geringfügigen Abweichungen des Ergebnisses gegenüber der Ausführung auf der CPU kommen.
Aus Geschwindigkeitsgründen wird die Region des Eingabebildes nicht beachtet. Das Ausgabebild hat immer ein komplettes Rechteck als Region.
Eingabebild.
Ergebnisbild.
Zeilenkoordinate des Kreismittelpunktes.
Defaultwert: 256
Wertevorschläge: 0, 16, 32, 64, 128, 240, 256, 480, 512
Spaltenkoordinate des Kreismittelpunktes.
Defaultwert: 256
Wertevorschläge: 0, 16, 32, 64, 128, 256, 320, 512, 640
Winkel, der die erste Spalte des Zielbildes definiert.
Defaultwert: 0.0
Wertevorschläge: 0.0, 0.78539816, 1.57079632, 3.141592654, 6.2831853, 12.566370616
Winkel, der die letzte Spalte des Zielbildes definiert.
Defaultwert: 6.2831853
Wertevorschläge: 0.0, 0.78539816, 1.57079632, 3.141592654, 6.2831853, 12.566370616
Kreisradius, der die erste Zeile des Zielbildes definiert.
Defaultwert: 0
Wertevorschläge: 0, 16, 32, 64, 100, 128, 256, 512
Typischer Wertebereich: 0 ≤ RadiusStart
Kreisradius, der die letzte Zeile des Zielbildes definiert.
Defaultwert: 100
Wertevorschläge: 0, 16, 32, 64, 100, 128, 256, 512
Typischer Wertebereich: 0 ≤ RadiusEnd
Breite des Zielbildes.
Defaultwert: 512
Wertevorschläge: 256, 320, 512, 640, 800, 1024
Typischer Wertebereich: 0 ≤ Width ≤ 32767
Höhe des Zielbildes.
Defaultwert: 512
Wertevorschläge: 240, 256, 480, 512, 600, 1024
Typischer Wertebereich: 0 ≤ Height ≤ 32767
Interpolationsverfahren für die Transformation.
Defaultwert: 'nearest_neighbor'
Werteliste: 'bilinear', 'nearest_neighbor'
polar_trans_image_inv, polar_trans_region, polar_trans_region_inv, polar_trans_contour_xld, polar_trans_contour_xld_inv
Foundation
| Operatoren |