Name
smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2 — Ermitteln des kleinsten umschließenden Rechtecks mit beliebiger Orientierung.
Herror smallest_rectangle2(const Hobject Regions, double* Row, double* Column, double* Phi, double* Length1, double* Length2)
Herror T_smallest_rectangle2(const Hobject Regions, Htuple* Row, Htuple* Column, Htuple* Phi, Htuple* Length1, Htuple* Length2)
void SmallestRectangle2(const HObject& Regions, HTuple* Row, HTuple* Column, HTuple* Phi, HTuple* Length1, HTuple* Length2)
void HRegion::SmallestRectangle2(HTuple* Row, HTuple* Column, HTuple* Phi, HTuple* Length1, HTuple* Length2) const
void HRegion::SmallestRectangle2(double* Row, double* Column, double* Phi, double* Length1, double* Length2) const
static void HOperatorSet.SmallestRectangle2(HObject regions, out HTuple row, out HTuple column, out HTuple phi, out HTuple length1, out HTuple length2)
void HRegion.SmallestRectangle2(out HTuple row, out HTuple column, out HTuple phi, out HTuple length1, out HTuple length2)
void HRegion.SmallestRectangle2(out double row, out double column, out double phi, out double length1, out double length2)
smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2SmallestRectangle2 bestimmt das kleinste umschließende Rechteck
einer Region, also das Rechteck mit dem kleinsten Flächeninhalt unter allen
Rechtecken, die die Region enthalten. Für dieses Rechteck werden der
Mittelpunkt, der Neigungswinkel und die beiden Halbmesser berechnet.
Die Berechnung des Rechtecks basiert auf den
Mittelpunktskoordinaten der Regionenpixel.
Der Operator findet Anwendung, wenn z.B. die Lage einer Szenerie von
mehreren Regionen (z.B. gedruckter Text auf einem rechteckigen Papier bzw.
mit rechteckigem Druckbild (Blocksatz)) gefunden werden soll.
Die Parameter von smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2SmallestRectangle2 sind so gewählt, dass
sie direkt als Eingabe für die Operatoren disp_rectangle2disp_rectangle2DispRectangle2DispRectangle2DispRectangle2
und gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2 verwendet werden können.
In der Dokumentation zu diesem Kapitel (Regionen / Merkmale) finden
Sie ein Bild mit Regionen, die sich in der Länge und Phi ihres kleinsten
umschließenden Rechtecks unterscheiden.
Wird mehr als eine Region in RegionsRegionsRegionsRegionsregions übergeben, dann werden
die Ergebnisse in Tupeln abgespeichert, wobei der Index eines Wertes im
Tupel dem Index einer Region in der Eingabe entspricht.
Bei leerer Region haben alle Parameter den Wert 0.0, soweit kein
anderes Verhalten eingestellt wurde (siehe set_systemset_systemSetSystemSetSystemSetSystem).
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
Zu untersuchende Regionen.
Zeilenindex des Mittelpunktes.
Spaltenindex des Mittelpunktes.
Orientierung des umschließenden Rechtecks (Bogenmaß)
Zusicherung: - pi / 2 < Phi && Phi <= pi / 2
Erster Halbmesser (halbe Länge) des umschließenden
Rechtecks.
Zusicherung: Length1 >= 0.0
Zweiter Halbmesser (halbe Breite) des umschließenden
Rechtecks.
Zusicherung: Length2 >= 0.0 && Length2 <= Length1
read_image(Image,'fabrik')
regiongrowing(Image,Regions,5,5,6,100)
smallest_rectangle2(Regions,Row,Column,Phi,Length1,Length2)
gen_rectangle2(Rectangle,Row,Column,Phi,Length1,Length2)
dev_set_draw ('margin')
dev_display(Rectangle)
read_image(Image,'fabrik')
regiongrowing(Image,Regions,5,5,6,100)
smallest_rectangle2(Regions,Row,Column,Phi,Length1,Length2)
gen_rectangle2(Rectangle,Row,Column,Phi,Length1,Length2)
dev_set_draw ('margin')
dev_display(Rectangle)
read_image(Image,'fabrik')
regiongrowing(Image,Regions,5,5,6,100)
smallest_rectangle2(Regions,Row,Column,Phi,Length1,Length2)
gen_rectangle2(Rectangle,Row,Column,Phi,Length1,Length2)
dev_set_draw ('margin')
dev_display(Rectangle)
read_image(Image,'fabrik')
regiongrowing(Image,Regions,5,5,6,100)
smallest_rectangle2(Regions,Row,Column,Phi,Length1,Length2)
gen_rectangle2(Rectangle,Row,Column,Phi,Length1,Length2)
dev_set_draw ('margin')
dev_display(Rectangle)
read_image(Image,'fabrik')
regiongrowing(Image,Regions,5,5,6,100)
smallest_rectangle2(Regions,Row,Column,Phi,Length1,Length2)
gen_rectangle2(Rectangle,Row,Column,Phi,Length1,Length2)
dev_set_draw ('margin')
dev_display(Rectangle)
Sei F die Fläche der Region und N die Anzahl der Stützpunkte
der konvexen Hülle, dann beträgt die Laufzeitkomplexität
O(sqrt(F) + N^2).
smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2SmallestRectangle2 liefert den Wert 2 (H_MSG_TRUE), falls die Eingabe
nicht leer ist. Das Verhalten bei leerer Eingabe (keine Eingaberegionen
vorhanden) lässt sich mittels
set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) festlegen.
Das Verhalten bei einer leeren Region (Region ist die leere Menge)
wird mit set_system('empty_region_result',<Result>)set_system("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>) bestimmt.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
thresholdthresholdThresholdThresholdThreshold,
regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing,
connectionconnectionConnectionConnectionConnection,
runlength_featuresrunlength_featuresRunlengthFeaturesRunlengthFeaturesRunlengthFeatures
disp_rectangle2disp_rectangle2DispRectangle2DispRectangle2DispRectangle2,
gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2
elliptic_axiselliptic_axisEllipticAxisEllipticAxisEllipticAxis,
smallest_rectangle1smallest_rectangle1SmallestRectangle1SmallestRectangle1SmallestRectangle1
smallest_circlesmallest_circleSmallestCircleSmallestCircleSmallestCircle,
set_shapeset_shapeSetShapeSetShapeSetShape
Foundation