expand_regionexpand_regionExpandRegionExpandRegion (Operator)

Name

expand_regionexpand_regionExpandRegionExpandRegion — Auffüllen von „Lücken“ zwischen Regionen oder Trennen überlappender Regionen.

Signatur

expand_region(Regions, ForbiddenArea : RegionExpanded : Iterations, Mode : )

Herror expand_region(const Hobject Regions, const Hobject ForbiddenArea, Hobject* RegionExpanded, const Hlong Iterations, const char* Mode)

Herror T_expand_region(const Hobject Regions, const Hobject ForbiddenArea, Hobject* RegionExpanded, const Htuple Iterations, const Htuple Mode)

void ExpandRegion(const HObject& Regions, const HObject& ForbiddenArea, HObject* RegionExpanded, const HTuple& Iterations, const HTuple& Mode)

HRegion HRegion::ExpandRegion(const HRegion& ForbiddenArea, const HTuple& Iterations, const HString& Mode) const

HRegion HRegion::ExpandRegion(const HRegion& ForbiddenArea, Hlong Iterations, const HString& Mode) const

HRegion HRegion::ExpandRegion(const HRegion& ForbiddenArea, Hlong Iterations, const char* Mode) const

HRegion HRegion::ExpandRegion(const HRegion& ForbiddenArea, Hlong Iterations, const wchar_t* Mode) const   (Nur Windows)

static void HOperatorSet.ExpandRegion(HObject regions, HObject forbiddenArea, out HObject regionExpanded, HTuple iterations, HTuple mode)

HRegion HRegion.ExpandRegion(HRegion forbiddenArea, HTuple iterations, string mode)

HRegion HRegion.ExpandRegion(HRegion forbiddenArea, int iterations, string mode)

Beschreibung

expand_regionexpand_regionExpandRegionExpandRegionExpandRegion dient dazu, Lücken zwischen den Regionen, wie sie z.B. durch Unterdrückung zu kleiner Regionen nach einer Bildsegmentation entstehen, zu schließen (Modus 'image') oder überlappende Eingaberegionen zu trennen (Modus 'region'). Beide Effekte beruhen auf der Expansion von Regionen. Dabei wird bei jeder Iteration der Expansion ein 1-Pixel breiter Streifen um die Region zu dieser hinzugefügt bzw. aus ihr entfernt.

Expandiert wird dabei nur in Bildbereiche, die nicht als „verbotene Bereiche“ (Parameter ForbiddenAreaForbiddenAreaForbiddenAreaForbiddenAreaforbiddenArea) ausgewiesen sind. Die Zahl der Iterationen wird mit dem Parameter IterationsIterationsIterationsIterationsiterations festgelegt. Die Übergabe des strings 'maximal'"maximal""maximal""maximal""maximal" veranlasst expand_regionexpand_regionExpandRegionExpandRegionExpandRegion, das Verfahren so lange zu iterieren, bis es konvergiert, also keine Änderungen mehr auftreten. Eine 0 auf dieser Parameterposition bewirkt die Ausgabe der nicht-überlappenden Teilregionen. Im Detail unterscheiden sich die beiden Modi 'image'"image""image""image""image" und 'region'"region""region""region""region" wie folgt:

'image'

Die Eingaberegionen werden iterativ so lange ausgedehnt, bis sie eine andere Region oder einen Bildrand berühren. Der Bildrand ist in diesem Fall definiert als das Rechteck, das sich von (0,0) bis (row_max,col_max) erstreckt. Dabei entspricht (row_max,col_max) der rechten unteren Ecke des kleinsten umschließenden Rechtecks aller Eingaberegionen (d.h. aller Regionen, die in RegionsRegionsRegionsRegionsregions und in ForbiddenAreaForbiddenAreaForbiddenAreaForbiddenAreaforbiddenArea übergeben werden). Da expand_regionexpand_regionExpandRegionExpandRegionExpandRegion alle Regionen simultan bearbeitet, werden die „Lücken“ zwischen den Regionen „gerecht“ auf diese verteilt. Überlappende Regionen werden getrennt, indem ihre gemeinsamen Teilregionen (wiederum „gerecht“) auf sie verteilt werden.

'region'

Es wird keine Expansion der Eingaberegionen durchgeführt, sondern nur überlappende Regionen getrennt, indem die gemeinsamen Teilregionen „gerecht“ auf die Regionen aufgeteilt werden. Da nach dem dafür benötigten „Negativwachstum“ der Schnitt mit den Originalregionen gebildet wird, kann es in diesem Modus zu „Lücken“ in den Ausgaberegionen kommen, die Segmentation der Bildebene ist also nicht total. Diesem Problem kann mit einem zweiten Aufruf von expand_regionexpand_regionExpandRegionExpandRegionExpandRegion mit dem Komplement der ursprünglichen Eingaberegionen als „forbidden area“ begegnet werden.

Ausführungsinformationen

Parameter

RegionsRegionsRegionsRegionsregions (input_object)  region(-array) objectHRegionHRegionHobject

Regionen, zwischen denen Lücken geschlossen oder die getrennt werden sollen.

ForbiddenAreaForbiddenAreaForbiddenAreaForbiddenAreaforbiddenArea (input_object)  region objectHRegionHRegionHobject

In diesen Bereich darf nicht expandiert werden.

RegionExpandedRegionExpandedRegionExpandedRegionExpandedregionExpanded (output_object)  region(-array) objectHRegionHRegionHobject *

Expandierte oder getrennte Bildregionen.

IterationsIterationsIterationsIterationsiterations (input_control)  integer HTupleHTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

Zahl der Iterationen.

Defaultwert: 'maximal' "maximal" "maximal" "maximal" "maximal"

Wertevorschläge: 'maximal'"maximal""maximal""maximal""maximal", 0, 1, 2, 3, 5, 7, 10, 15, 20, 30, 50, 70, 100, 200

Typischer Wertebereich: 0 ≤ Iterations Iterations Iterations Iterations iterations ≤ 1000 (lin)

Minimale Schrittweite: 1

Empfohlene Schrittweite: 1

ModeModeModeModemode (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Gewünschter Modus.

Defaultwert: 'image' "image" "image" "image" "image"

Werteliste: 'image'"image""image""image""image", 'region'"region""region""region""region"

Beispiel (HDevelop)

read_image(Image,'clip')
threshold(Image,Dark,0,150)
connection(Dark,ConnectedRegions)
gen_circle (Circle, 400, 400, 200.5)
expand_region (ConnectedRegions, Circle, RegionExpanded, 'maximal', 'image')
dev_display (RegionExpanded)

Beispiel (C)

read_image(&Image,"fabrik");
threshold(Image,&Light,100.0,255.0);
disp_region(Light,WindowHandle);
connection(Light,&Seg);
expand_region(Seg,EMPTY_REGION,&Exp1,"maximal","image");
set_colored(WindowHandle,12);
set_draw(WindowHandle,"margin");
disp_region(Exp1,WindowHandle);

Beispiel (HDevelop)

read_image(Image,'clip')
threshold(Image,Dark,0,150)
connection(Dark,ConnectedRegions)
gen_circle (Circle, 400, 400, 200.5)
expand_region (ConnectedRegions, Circle, RegionExpanded, 'maximal', 'image')
dev_display (RegionExpanded)

Beispiel (HDevelop)

read_image(Image,'clip')
threshold(Image,Dark,0,150)
connection(Dark,ConnectedRegions)
gen_circle (Circle, 400, 400, 200.5)
expand_region (ConnectedRegions, Circle, RegionExpanded, 'maximal', 'image')
dev_display (RegionExpanded)

Beispiel (HDevelop)

read_image(Image,'clip')
threshold(Image,Dark,0,150)
connection(Dark,ConnectedRegions)
gen_circle (Circle, 400, 400, 200.5)
expand_region (ConnectedRegions, Circle, RegionExpanded, 'maximal', 'image')
dev_display (RegionExpanded)

Ergebnis

expand_regionexpand_regionExpandRegionExpandRegionExpandRegion liefert normalerweise den Wert 2 (H_MSG_TRUE). Das Verhalten bei leerer Eingabe (keine Eingabebilder 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>), das bei leerer Region 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>), und das bei leerer Ergebnisregion mit set_system('store_empty_region',<'true'/'false'>)set_system("store_empty_region",<"true"/"false">)SetSystem("store_empty_region",<"true"/"false">)SetSystem("store_empty_region",<"true"/"false">)SetSystem("store_empty_region",<"true"/"false">) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

pouringpouringPouringPouringPouring, thresholdthresholdThresholdThresholdThreshold, dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThreshold, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing

Alternativen

dilation1dilation1Dilation1Dilation1Dilation1

Siehe auch

expand_grayexpand_grayExpandGrayExpandGrayExpandGray, interjacentinterjacentInterjacentInterjacentInterjacent, skeletonskeletonSkeletonSkeletonSkeleton

Modul

Foundation