Name
expand_regionexpand_regionExpandRegionexpand_regionExpandRegionExpandRegion — Auffüllen von „Lücken“ zwischen Regionen oder Trennen überlappender Regionen.
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
expand_regionexpand_regionExpandRegionexpand_regionExpandRegionExpandRegion 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 ForbiddenAreaForbiddenAreaForbiddenAreaForbiddenAreaForbiddenAreaforbiddenArea) ausgewiesen sind.
Die Zahl der Iterationen wird mit dem Parameter
IterationsIterationsIterationsIterationsIterationsiterations festgelegt. Die Übergabe des strings
'maximal'"maximal""maximal""maximal""maximal""maximal" veranlasst expand_regionexpand_regionExpandRegionexpand_regionExpandRegionExpandRegion, 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""image" und 'region'"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 RegionsRegionsRegionsRegionsRegionsregions und in ForbiddenAreaForbiddenAreaForbiddenAreaForbiddenAreaForbiddenAreaforbiddenArea
übergeben werden).
Da expand_regionexpand_regionExpandRegionexpand_regionExpandRegionExpandRegion 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_regionExpandRegionexpand_regionExpandRegionExpandRegion mit dem Komplement
der ursprünglichen Eingaberegionen als „forbidden area“
begegnet werden.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Regionen, zwischen denen Lücken geschlossen oder
die getrennt werden sollen.
In diesen Bereich darf nicht expandiert werden.
Expandierte oder getrennte Bildregionen.
Zahl der Iterationen.
Defaultwert:
'maximal'
"maximal"
"maximal"
"maximal"
"maximal"
"maximal"
Wertevorschläge: 'maximal'"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
iterations
≤
1000 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Gewünschter Modus.
Defaultwert:
'image'
"image"
"image"
"image"
"image"
"image"
Werteliste: 'image'"image""image""image""image""image", 'region'"region""region""region""region""region"
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)
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);
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)
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)
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)
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)
expand_regionexpand_regionExpandRegionexpand_regionExpandRegionExpandRegion 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>)set_system("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>)set_system("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">)set_system("store_empty_region",<"true"/"false">)SetSystem("store_empty_region",<"true"/"false">)SetSystem("store_empty_region",<"true"/"false">)
festlegen. Gegebenenfalls wird eine Fehlerbehandlung
durchgeführt.
pouringpouringPouringpouringPouringPouring,
thresholdthresholdThresholdthresholdThresholdThreshold,
dyn_thresholddyn_thresholdDynThresholddyn_thresholdDynThresholdDynThreshold,
regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing
dilation1dilation1Dilation1dilation1Dilation1Dilation1
expand_grayexpand_grayExpandGrayexpand_grayExpandGrayExpandGray,
interjacentinterjacentInterjacentinterjacentInterjacentInterjacent,
skeletonskeletonSkeletonskeletonSkeletonSkeleton
Foundation