| Operatoren |
polar_trans_region — Anwenden einer Polarkoordinatentransformation auf eine Region innerhalb eines Kreisrings.
polar_trans_region(Region : PolarTransRegion : Row, Column, AngleStart, AngleEnd, RadiusStart, RadiusEnd, Width, Height, Interpolation : )
polar_trans_region transformiert eine Region, die innerhalb des durch den Mittelpunkt (Row, Column), die Radien RadiusStart und RadiusEnd und die Winkel AngleStart und AngleEnd definierten Kreisrings liegt, auf dessen Polarkoordinatendarstellung in der Region PolarTransRegion in einem virtuellen Bild mit den Dimensionen Width x Height.
Die Polartransformation entspricht einem Wechsel des Koordinatensystems. Anstatt durch Zeilen- und Spaltenkoordinate wird die Position eines Punktes durch dessen Radius (Abstand zum Mittelpunkt Row,Column) und den Winkel zwischen der Spaltenachse (durch den Mittelpunkt) und der Strecke vom Mittelpunkt zum Punkt beschrieben. Diese Transformation ist nicht affin.
Die Koordinate (0,0) in der Ausgabregion entspricht immer dem Punkt in der Eingaberegion, der durch RadiusStart und AngleStart spezifiziert wird. Analog entspricht die Koordinate (Height-1, Width-1) immer dem Punkt in der Eingaberegion, 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 in der Ausgaberegion weiter oben. Durch geeignetes Vertauschen der Werte der Parameter (z.B. AngleStart > AngleEnd oder RadiusStart > RadiusEnd) kann jede beliebige Orientierung der Ausgaberegion erreicht werden.
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 dem Wert Height-1, so wird die Berechnung durch eine optimierte Routine erheblich schneller durchgeführt.
Die Radien und Winkel sind inklusive, d.h. die erste Zeile des virtuellen 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 virtuellen Zielbildes gleich der letzten ist.
Um diesem Verhalten vorzubeugen, sollte diese Differenz statt betragen.
Über den Parameter Interpolation kann dabei zwischen den Interpolationsverfahren 'bilinear' und 'nearest_neighbor' gewählt werden. Die Wahl Interpolation = 'bilinear' kann insbesondere bei Vergrößerungen zu glatteren Regionenrändern führen. Allerdings steigt dadurch die Laufzeit signifikant an.
Werden mehrere Regionen in Region übergeben, werden deren Polartransformationen individuell berechnet und als Tupel in PolarTransRegion abgespeichert. Dabei entsprechen die Indizes von Ein- und Ausgaberegionen nur dann einander, wenn die Systemvariable 'store_empty_regions' auf 'true' gesetzt wird (siehe auch 'set_system'). Sonst werden leere Regionen nicht zurückgegeben und deshalb entspricht die Länge des Ausgabetupels PolarTransRegion im Allgemeinen nicht der Länge des Eingabetupels Region.
Werden die Dimensionen des virtuellen Ausgabebildes Width und Height größer als die Dimensionen des aktuellen Bildes gewählt, sollte die Systemvariable 'clip_region' auf 'false' gesetzt werden (siehe auch set_system). Andernfalls kann eine Ausgaberegion, die nicht innerhalb der Dimensionen des aktuellen Bildes liegt, zu einer Fehlermeldung führen.
Eingaberegion.
Ergebnisregion.
Zeilenkoordinate des Kreismittelpunktes.
Defaultwert: 256
Wertevorschläge: 0, 16, 32, 64, 128, 240, 256, 480, 512
Typischer Wertebereich: 0 ≤ Row ≤ 32767
Restriktion: Row >= -131068 && Row <= 131068
Spaltenkoordinate des Kreismittelpunktes.
Defaultwert: 256
Wertevorschläge: 0, 16, 32, 64, 128, 256, 320, 512, 640
Typischer Wertebereich: 0 ≤ Column ≤ 32767
Restriktion: Column >= -131068 && Column <= 131068
Winkel, der auf die Spaltenkoordinate 0 in PolarTransRegion abgebildet wird.
Defaultwert: 0.0
Wertevorschläge: 0.0, 0.78539816, 1.57079632, 3.141592654, 6.2831853, 12.566370616
Typischer Wertebereich: -6.2831853 ≤ AngleStart ≤ 6.2831853
Winkel, der auf die Spaltenkoordinate Width -1 in PolarTransRegion abgebildet wird.
Defaultwert: 6.2831853
Wertevorschläge: 0.0, 0.78539816, 1.57079632, 3.141592654, 6.2831853, 12.566370616
Typischer Wertebereich: -6.2831853 ≤ AngleEnd ≤ 6.2831853
Kreisradius, der auf die Zeilenkoordinate 0 in PolarTransRegion abgebildet wird.
Defaultwert: 0
Wertevorschläge: 0, 16, 32, 64, 100, 128, 256, 512
Typischer Wertebereich: 0 ≤ RadiusStart ≤ 32767
Kreisradius, der auf die Zeilenkoordinate Height-1 abgebildet wird.
Defaultwert: 100
Wertevorschläge: 0, 16, 32, 64, 100, 128, 256, 512
Typischer Wertebereich: 0 ≤ RadiusEnd ≤ 32767
Breite des virtuellen Zielbildes.
Defaultwert: 512
Wertevorschläge: 256, 320, 512, 640, 800, 1024
Typischer Wertebereich: 2 ≤ Width ≤ 32767
Höhe des virtuellen Zielbildes.
Defaultwert: 512
Wertevorschläge: 240, 256, 480, 512, 600, 1024
Typischer Wertebereich: 2 ≤ Height ≤ 32767
Interpolationsverfahren für die Transformation.
Defaultwert: 'nearest_neighbor'
Werteliste: 'bilinear', 'nearest_neighbor'
polar_trans_image_ext, polar_trans_image_inv, polar_trans_region_inv, polar_trans_contour_xld, polar_trans_contour_xld_inv
Foundation
| Operatoren |