polar_trans_region_inv
— Rücktransformieren einer Region in Polarkoordinaten.
polar_trans_region_inv(PolarRegion : XYTransRegion : Row, Column, AngleStart, AngleEnd, RadiusStart, RadiusEnd, WidthIn, HeightIn, Width, Height, Interpolation : )
polar_trans_region_inv
transformiert die
Polarkoordinatendarstellung einer Region, gespeichert in
PolarRegion
, zurück auf einen Kreisring in kartesischen
Koordinaten, der durch die Radien RadiusStart
und
RadiusEnd
sowie durch die Winkel AngleStart
und
AngleEnd
beschrieben ist und dessen Mittelpunkt in
(Row
, Column
) liegt. Alle diese Werte können frei
aus den reellen Zahlen gewählt werden. Zusätzlich müssen die
Dimensionen des virtuellen Eingabebildes, welches die Region
PolarRegion
enthält, in WidthIn
und
HeightIn
übergeben werden. WidthIn
-1 ist die
Spaltenkoordinate, die AngleEnd
entspricht, und
HeightIn
-1 ist die Zeilenkoordinate, die
RadiusEnd
entspricht. AngleStart
bzw. RadiusStart
entspricht der Spalten-
bzw. Zeilenkoordinate 0. Außerdem müssen die Dimensionen
des virtuellen Ausgabebildes, welches die Region
XYTransRegion
enthält, in Width
und
Height
übergeben werden.
Die Winkel und Radien sind inklusive, die Zeile mit der Koordinate
0 der Eingaberegion wird also auf einen Kreis im Abstand
RadiusStart
vom angegebenen Mittelpunkt abgebildet, die
Zeile mit der Koordinate HeightIn
-1 auf einen Kreis im
Abstand RadiusEnd
. Das Gleiche gilt für
AngleStart
, AngleEnd
und
WidthIn
. Entspricht die Breite der Eingaberegion einem
Winkelintervall, dessen Länge größer als 2pi ist, wird die
Eingaberegion so beschnitten, dass die Länge dieses Intervalls
2pi ist.
Ü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.
polar_trans_region_inv
ist die exakte Umkehrfunktion zu
polar_trans_region
.
Die Aufrufsequenz:
polar_trans_region(Region, PolarRegion, Row, Column, rad(360), 0, 0,
Radius, Width, Height, 'nearest_neighbor')
polar_trans_region_inv(PolarRegion, XYTransRegion, Row, Column, rad(360), 0,
0, Radius, Width, Height, Width, Height,
'nearest_neighbor')
liefert in der Ausgaberegion XYTransRegion
die Region
Region
eingeschränkt auf den Kreis um
(Row
,Column
) mit Radius Radius
zurück.
Werden mehrere Regionen in PolarRegion
übergeben, werden
deren Transformationen individuell berechnet und als Tupel in
XYTransRegion
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 XYTransRegion
im Allgemeinen nicht der Länge
des Eingabetupels PolarRegion
.
Ein Überblick zu den verschiedenen in HALCON verwendeten 2D Koordinatensystemen ist in der Einleitung zum Kapitel Transformationen / 2D-Transformationen gegeben.
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.
PolarRegion
(input_object) region(-array) →
object
Eingaberegion.
XYTransRegion
(output_object) region(-array) →
object
Ergebnisregion.
Row
(input_control) number →
(real / integer)
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
Column
(input_control) number →
(real / integer)
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
AngleStart
(input_control) angle.rad →
(real)
Winkel, auf den die Spaltenkoordinate 0 von
PolarRegion
abgebildet wird.
Defaultwert: 0.0
Wertevorschläge: 0.0, 0.78539816, 1.57079632, 3.141592654, 6.2831853
Typischer Wertebereich: -6.2831853
≤
AngleStart
≤
6.2831853
AngleEnd
(input_control) angle.rad →
(real)
Winkel, auf den die Spaltenkoordinate WidthIn
-1 in PolarRegion
abgebildet wird.
Defaultwert: 6.2831853
Wertevorschläge: 0.0, 0.78539816, 1.57079632, 3.141592654, 6.2831853
Typischer Wertebereich: -6.2831853
≤
AngleEnd
≤
6.2831853
RadiusStart
(input_control) number →
(real / integer)
Kreisradius, auf den die Zeilenkoordinate 0 in
PolarRegion
abgebildet wird.
Defaultwert: 0
Wertevorschläge: 0, 16, 32, 64, 100, 128, 256, 512
Typischer Wertebereich: 0
≤
RadiusStart
≤
32767
RadiusEnd
(input_control) number →
(real / integer)
Kreisradius, auf den die Zeilenkoordinate
HeightIn
-1 in PolarRegion
abgebildet wird.
Defaultwert: 100
Wertevorschläge: 0, 16, 32, 64, 100, 128, 256, 512
Typischer Wertebereich: 0
≤
RadiusEnd
≤
32767
WidthIn
(input_control) extent.x →
(integer)
Breite des virtuellen Eingabebildes.
Defaultwert: 512
Wertevorschläge: 256, 320, 512, 640, 800, 1024
Typischer Wertebereich: 2
≤
WidthIn
≤
32767
HeightIn
(input_control) extent.y →
(integer)
Höhe des virtuellen Eingabebildes.
Defaultwert: 512
Wertevorschläge: 240, 256, 480, 512, 600, 1024
Typischer Wertebereich: 2
≤
HeightIn
≤
32767
Width
(input_control) extent.x →
(integer)
Breite des virtuellen Zielbildes.
Defaultwert: 512
Wertevorschläge: 256, 320, 512, 640, 800, 1024
Typischer Wertebereich: 1
≤
Width
≤
32767
Height
(input_control) extent.y →
(integer)
Höhe des virtuellen Zielbildes.
Defaultwert: 512
Wertevorschläge: 240, 256, 480, 512, 600, 1024
Typischer Wertebereich: 1
≤
Height
≤
32767
Interpolation
(input_control) string →
(string)
Interpolationsverfahren für die Transformation.
Defaultwert: 'nearest_neighbor'
Werteliste: 'bilinear' , 'nearest_neighbor'
polar_trans_image_ext
,
polar_trans_image_inv
,
polar_trans_region
,
polar_trans_contour_xld
,
polar_trans_contour_xld_inv
Foundation