| Operatoren |
expand_region — Auffüllen von „Lücken“ zwischen Regionen oder Trennen überlappender Regionen.
expand_region(Regions, ForbiddenArea : RegionExpanded : Iterations, Mode : )
expand_region 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 ForbiddenArea) ausgewiesen sind. Die Zahl der Iterationen wird mit dem Parameter Iterations festgelegt. Die Übergabe des strings 'maximal' veranlasst expand_region, 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' und 'region' wie folgt:
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 Regions und in ForbiddenArea übergeben werden). Da expand_region 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.
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_region mit dem Komplement der ursprünglichen Eingaberegionen als „forbidden area“ begegnet werden.
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'
Wertevorschläge: 'maximal', 0, 1, 2, 3, 5, 7, 10, 15, 20, 30, 50, 70, 100, 200
Typischer Wertebereich: 0 ≤ Iterations ≤ 1000 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Gewünschter Modus.
Defaultwert: 'image'
Werteliste: 'image', '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)
expand_region 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>), das bei leerer Region mit set_system('empty_region_result',<Result>), und das bei leerer Ergebnisregion mit set_system('store_empty_region',<'true'/'false'>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
pouring, threshold, dyn_threshold, regiongrowing
expand_gray, interjacent, skeleton
Foundation
| Operatoren |