polar_trans_image_ext polar_trans_image_ext PolarTransImageExt PolarTransImageExt polar_trans_image_ext (Operator)
Name
polar_trans_image_ext polar_trans_image_ext PolarTransImageExt PolarTransImageExt polar_trans_image_ext — Anwenden einer Polarkoordinatentransformation eines Kreisrings.
Signatur
Herror polar_trans_image_ext (const Hobject Image , Hobject* PolarTransImage , double Row , double Column , double AngleStart , double AngleEnd , double RadiusStart , double RadiusEnd , const Hlong Width , const Hlong Height , const char* Interpolation )
Herror T_polar_trans_image_ext (const Hobject Image , Hobject* PolarTransImage , const Htuple Row , const Htuple Column , const Htuple AngleStart , const Htuple AngleEnd , const Htuple RadiusStart , const Htuple RadiusEnd , const Htuple Width , const Htuple Height , const Htuple Interpolation )
void PolarTransImageExt (const HObject& Image , HObject* PolarTransImage , const HTuple& Row , const HTuple& Column , const HTuple& AngleStart , const HTuple& AngleEnd , const HTuple& RadiusStart , const HTuple& RadiusEnd , const HTuple& Width , const HTuple& Height , const HTuple& Interpolation )
HImage HImage ::PolarTransImageExt (const HTuple& Row , const HTuple& Column , double AngleStart , double AngleEnd , const HTuple& RadiusStart , const HTuple& RadiusEnd , Hlong Width , Hlong Height , const HString& Interpolation ) const
HImage HImage ::PolarTransImageExt (double Row , double Column , double AngleStart , double AngleEnd , double RadiusStart , double RadiusEnd , Hlong Width , Hlong Height , const HString& Interpolation ) const
HImage HImage ::PolarTransImageExt (double Row , double Column , double AngleStart , double AngleEnd , double RadiusStart , double RadiusEnd , Hlong Width , Hlong Height , const char* Interpolation ) const
HImage HImage ::PolarTransImageExt (double Row , double Column , double AngleStart , double AngleEnd , double RadiusStart , double RadiusEnd , Hlong Width , Hlong Height , const wchar_t* Interpolation ) const
(Nur Windows)
static void HOperatorSet .PolarTransImageExt (HObject image , out HObject polarTransImage , HTuple row , HTuple column , HTuple angleStart , HTuple angleEnd , HTuple radiusStart , HTuple radiusEnd , HTuple width , HTuple height , HTuple interpolation )
HImage HImage .PolarTransImageExt (HTuple row , HTuple column , double angleStart , double angleEnd , HTuple radiusStart , HTuple radiusEnd , int width , int height , string interpolation )
HImage HImage .PolarTransImageExt (double row , double column , double angleStart , double angleEnd , double radiusStart , double radiusEnd , int width , int height , string interpolation )
def polar_trans_image_ext (image : HObject, row : Union[int, float], column : Union[int, float], angle_start : float, angle_end : float, radius_start : Union[int, float], radius_end : Union[int, float], width : int, height : int, interpolation : str) -> HObject
Beschreibung
polar_trans_image_ext polar_trans_image_ext PolarTransImageExt PolarTransImageExt PolarTransImageExt polar_trans_image_ext transformiert den durch den
Mittelpunkt (Row Row Row Row row row , Column Column Column Column column column ), die Radien
RadiusStart RadiusStart RadiusStart RadiusStart radiusStart radius_start und RadiusEnd RadiusEnd RadiusEnd RadiusEnd radiusEnd radius_end und die Winkel
AngleStart AngleStart AngleStart AngleStart angleStart angle_start und AngleEnd AngleEnd AngleEnd AngleEnd angleEnd angle_end definierten Kreisring im
Bild Image Image Image Image image image auf dessen Polarkoordinatendarstellung im Bild
PolarTransImage PolarTransImage PolarTransImage PolarTransImage polarTransImage polar_trans_image mit den Dimensionen Width Width Width Width width width
x Height Height Height Height height height .
Das linke obere Pixel im Ausgabebild entspricht immer dem Punkt im
Eingabebild, der durch RadiusStart RadiusStart RadiusStart RadiusStart radiusStart radius_start und AngleStart AngleStart AngleStart AngleStart angleStart angle_start
spezifiziert wird. Analog entspricht das rechte untere Pixel im
Ausgabebild immer dem Punkt im Eingabebild, der durch
RadiusEnd RadiusEnd RadiusEnd RadiusEnd radiusEnd radius_end und AngleEnd AngleEnd AngleEnd AngleEnd angleEnd angle_end spezifiziert wird. Im
Normalfall (AngleStart AngleStart AngleStart AngleStart angleStart angle_start < AngleEnd AngleEnd AngleEnd AngleEnd angleEnd angle_end und
RadiusStart RadiusStart RadiusStart RadiusStart radiusStart radius_start < RadiusEnd RadiusEnd RadiusEnd RadiusEnd radiusEnd radius_end ) 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 AngleStart AngleStart AngleStart angleStart angle_start > AngleEnd AngleEnd AngleEnd AngleEnd angleEnd angle_end oder
RadiusStart RadiusStart RadiusStart RadiusStart radiusStart radius_start > RadiusEnd RadiusEnd RadiusEnd RadiusEnd radiusEnd radius_end ) kann jede beliebige
Orientierung des Ausgabebildes erreicht werden.
Über den Parameter Interpolation Interpolation Interpolation Interpolation interpolation interpolation kann dabei zwischen den
Interpolationsverfahren 'bilinear' "bilinear" "bilinear" "bilinear" "bilinear" "bilinear" und
'nearest_neighbor' "nearest_neighbor" "nearest_neighbor" "nearest_neighbor" "nearest_neighbor" "nearest_neighbor" gewählt werden. Bei
'nearest_neighbor' "nearest_neighbor" "nearest_neighbor" "nearest_neighbor" "nearest_neighbor" "nearest_neighbor" wird der Grauwert des Pixels im
Ausgabebild aus dem Grauwert des nächstgelegenen Pixels im
Eingabebild bestimmt. Bei 'bilinear' "bilinear" "bilinear" "bilinear" "bilinear" "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' "bilinear" "bilinear" "bilinear" "bilinear" "bilinear" liefert qualitativ bessere Ergebnisse,
ist allerdings auch langsamer als 'nearest_neighbor' "nearest_neighbor" "nearest_neighbor" "nearest_neighbor" "nearest_neighbor" "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 RadiusEnd RadiusEnd RadiusEnd radiusEnd radius_end und RadiusStart RadiusStart RadiusStart RadiusStart radiusStart radius_start der Höhe
Height Height Height Height height 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 RadiusStart RadiusStart RadiusStart radiusStart radius_start ,
die letzte Zeile dem mit dem Radius RadiusEnd RadiusEnd RadiusEnd RadiusEnd radiusEnd radius_end . Für
Vollkreise, bei denen die Differenz AngleStart AngleStart AngleStart AngleStart angleStart angle_start -
AngleEnd AngleEnd AngleEnd AngleEnd angleEnd angle_end
(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 polar_trans_image PolarTransImage PolarTransImage PolarTransImage 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 polar_trans_image PolarTransImage PolarTransImage PolarTransImage polar_trans_image nicht
inklusive behandelt werden. Der Startwinkel ist hier größer als
der Endwinkel, damit der Kreisring von polar_trans_image_ext polar_trans_image_ext PolarTransImageExt PolarTransImageExt PolarTransImageExt polar_trans_image_ext
genauso wie in polar_trans_image polar_trans_image PolarTransImage PolarTransImage PolarTransImage polar_trans_image im Uhrzeigersinn
durchlaufen wird.
polar_trans_image_ext polar_trans_image_ext PolarTransImageExt PolarTransImageExt PolarTransImageExt 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.
Für Bilder vom Typ 'byte' "byte" "byte" "byte" "byte" "byte" , 'int2' "int2" "int2" "int2" "int2" "int2" oder 'uint2' "uint2" "uint2" "uint2" "uint2" "uint2" kann
mittels des Systemparameters 'int_zooming' "int_zooming" "int_zooming" "int_zooming" "int_zooming" "int_zooming" (siehe
set_system set_system SetSystem SetSystem SetSystem set_system ) zwischen schneller Berechnung in Festkommaarithmetik
('int_zooming' "int_zooming" "int_zooming" "int_zooming" "int_zooming" "int_zooming" = 'true' "true" "true" "true" "true" "true" ) und hochgenauer Berechnung in
Fließkommaarithmetik ('int_zooming' "int_zooming" "int_zooming" "int_zooming" "int_zooming" "int_zooming" = 'false' "false" "false" "false" "false" "false" ) gewählt
werden. Bei der Festkommaberechnung kann es allerdings zu leichten
Grauwertabweichungen und Pixeln mit undefinierten Grauwerten kommen.
Weitere Informationen
Ein Überblick zu den verschiedenen in HALCON verwendeten 2D
Koordinatensystemen ist in der Einleitung zum Kapitel
Transformationen / 2D-Transformationen gegeben.
Achtung
Aus Geschwindigkeitsgründen wird die Region des Eingabebildes nicht
beachtet. Das Ausgabebild hat immer ein komplettes Rechteck als
Region.
Ausführungsinformationen
Unterstützt OpenCL Compute Devices.
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Automatisch parallelisiert auf Tupelebene.
Automatisch parallelisiert auf Kanalebene.
Automatisch parallelisiert auf interner Datenebene.
Parameter
Image Image Image Image image image (input_object) (multichannel-)image(-array) → object HImage HObject HImage Hobject (byte* / int2* / uint2* / real*) *erlaubt für Compute Devices
Eingabebild.
PolarTransImage PolarTransImage PolarTransImage PolarTransImage polarTransImage polar_trans_image (output_object) (multichannel-)image(-array) → object HImage HObject HImage Hobject * (byte / int2 / uint2 / real)
Ergebnisbild.
Row Row Row Row row row (input_control) number → HTuple Union[int, float] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Zeilenkoordinate des Kreismittelpunktes.
Defaultwert: 256
Wertevorschläge: 0, 16, 32, 64, 128, 240, 256, 480, 512
Column Column Column Column column column (input_control) number → HTuple Union[int, float] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Spaltenkoordinate des Kreismittelpunktes.
Defaultwert: 256
Wertevorschläge: 0, 16, 32, 64, 128, 256, 320, 512, 640
AngleStart AngleStart AngleStart AngleStart angleStart angle_start (input_control) angle.rad → HTuple float HTuple Htuple (real) (double ) (double ) (double )
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
AngleEnd AngleEnd AngleEnd AngleEnd angleEnd angle_end (input_control) angle.rad → HTuple float HTuple Htuple (real) (double ) (double ) (double )
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
RadiusStart RadiusStart RadiusStart RadiusStart radiusStart radius_start (input_control) number → HTuple Union[int, float] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Kreisradius, der die erste Zeile des
Zielbildes definiert.
Defaultwert: 0
Wertevorschläge: 0, 16, 32, 64, 100, 128, 256, 512
Typischer Wertebereich: 0
≤
RadiusStart
RadiusStart
RadiusStart
RadiusStart
radiusStart
radius_start
RadiusEnd RadiusEnd RadiusEnd RadiusEnd radiusEnd radius_end (input_control) number → HTuple Union[int, float] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Kreisradius, der die letzte Zeile des
Zielbildes definiert.
Defaultwert: 100
Wertevorschläge: 0, 16, 32, 64, 100, 128, 256, 512
Typischer Wertebereich: 0
≤
RadiusEnd
RadiusEnd
RadiusEnd
RadiusEnd
radiusEnd
radius_end
Width Width Width Width width width (input_control) extent.x → HTuple int HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
Breite des Zielbildes.
Defaultwert: 512
Wertevorschläge: 256, 320, 512, 640, 800, 1024
Typischer Wertebereich: 0
≤
Width
Width
Width
Width
width
width
≤
32767
Height Height Height Height height height (input_control) extent.y → HTuple int HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
Höhe des Zielbildes.
Defaultwert: 512
Wertevorschläge: 240, 256, 480, 512, 600, 1024
Typischer Wertebereich: 0
≤
Height
Height
Height
Height
height
height
≤
32767
Interpolation Interpolation Interpolation Interpolation interpolation interpolation (input_control) string → HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
Interpolationsverfahren für die Transformation.
Defaultwert:
'nearest_neighbor'
"nearest_neighbor"
"nearest_neighbor"
"nearest_neighbor"
"nearest_neighbor"
"nearest_neighbor"
Werteliste: 'bilinear' "bilinear" "bilinear" "bilinear" "bilinear" "bilinear" , 'nearest_neighbor' "nearest_neighbor" "nearest_neighbor" "nearest_neighbor" "nearest_neighbor" "nearest_neighbor"
Siehe auch
polar_trans_image_inv polar_trans_image_inv PolarTransImageInv PolarTransImageInv PolarTransImageInv polar_trans_image_inv ,
polar_trans_region polar_trans_region PolarTransRegion PolarTransRegion PolarTransRegion polar_trans_region ,
polar_trans_region_inv polar_trans_region_inv PolarTransRegionInv PolarTransRegionInv PolarTransRegionInv polar_trans_region_inv ,
polar_trans_contour_xld polar_trans_contour_xld PolarTransContourXld PolarTransContourXld PolarTransContourXld polar_trans_contour_xld ,
polar_trans_contour_xld_inv polar_trans_contour_xld_inv PolarTransContourXldInv PolarTransContourXldInv PolarTransContourXldInv polar_trans_contour_xld_inv
Modul
Foundation