smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2 (Operator)

Name

smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2 — Ermitteln des kleinsten umschließenden Rechtecks mit beliebiger Orientierung.

Signatur

smallest_rectangle2(Regions : : : Row, Column, Phi, Length1, Length2)

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)

Beschreibung

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.

Kleinstes umschließendes Rechteck einer Region. Es ist zu beachten, dass die Berechnung auf den Pixelmittelpunkten basiert.

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).

Ausführungsinformationen

Parameter

RegionsRegionsRegionsRegionsregions (input_object)  region(-array) objectHRegionHRegionHobject

Zu untersuchende Regionen.

RowRowRowRowrow (output_control)  rectangle2.center.y(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Zeilenindex des Mittelpunktes.

ColumnColumnColumnColumncolumn (output_control)  rectangle2.center.x(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Spaltenindex des Mittelpunktes.

PhiPhiPhiPhiphi (output_control)  rectangle2.angle.rad(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Orientierung des umschließenden Rechtecks (Bogenmaß)

Zusicherung: - pi / 2 < Phi && Phi <= pi / 2

Length1Length1Length1Length1length1 (output_control)  rectangle2.hwidth(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Erster Halbmesser (halbe Länge) des umschließenden Rechtecks.

Zusicherung: Length1 >= 0.0

Length2Length2Length2Length2length2 (output_control)  rectangle2.hheight(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Zweiter Halbmesser (halbe Breite) des umschließenden Rechtecks.

Zusicherung: Length2 >= 0.0 && Length2 <= Length1

Beispiel (HDevelop)

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)

Beispiel (HDevelop)

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)

Beispiel (HDevelop)

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)

Beispiel (HDevelop)

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)

Beispiel (HDevelop)

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)

Komplexität

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).

Ergebnis

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.

Vorgänger

thresholdthresholdThresholdThresholdThreshold, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing, connectionconnectionConnectionConnectionConnection, runlength_featuresrunlength_featuresRunlengthFeaturesRunlengthFeaturesRunlengthFeatures

Nachfolger

disp_rectangle2disp_rectangle2DispRectangle2DispRectangle2DispRectangle2, gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2

Alternativen

elliptic_axiselliptic_axisEllipticAxisEllipticAxisEllipticAxis, smallest_rectangle1smallest_rectangle1SmallestRectangle1SmallestRectangle1SmallestRectangle1

Siehe auch

smallest_circlesmallest_circleSmallestCircleSmallestCircleSmallestCircle, set_shapeset_shapeSetShapeSetShapeSetShape

Modul

Foundation