Name
interjacentinterjacentInterjacentinterjacentInterjacentInterjacent — Unterteilen der Bildebene mittels vorgegebener Regionen.
interjacentinterjacentInterjacentinterjacentInterjacentInterjacent unterteilt die Bildebene mittels der
Regionen in RegionRegionRegionRegionRegionregion. Als Ergebnis wird eine Ausgaberegion
mit den ermittelten Trennlinien zurückgeliefert. Es stehen dafür
drei verschiedene Modi zur Verfügung:
- 'medial_axis'
-
Dieser Modus wird für Eingaberegionen verwendet, die sich
nicht berühren. Die Prozedur findet dann Trennlinien
zwischen den Regionen, die den Hintergrund „gerecht“
zwischen den Eingaberegionen aufteilt. Ihre Anwendung
entspricht der Ausführung folgender Befehlssequenz:
complement('full',Region,Tmp)
skeleton(Tmp,Result)
- 'border'
-
Für einander nicht berührende Eingaberegionen entspricht die
Prozedur in diesem Modus boundary(Region,Result)boundary(Region,Result)Boundary(Region,Result)boundary(Region,Result)Boundary(Region,Result)Boundary(Region,Result),
ersetzt also jeder Eingaberegion durch ihre Kontur. Einander
berührende Eingaberegionen werden zu einer Region
zusammengefasst. Die zugehörige Ausgaberegion umfasst dann
deren Kontur und die (ein Pixel breite) Trennlinie zwischen
den ursprünglichen Regionen. interjacentinterjacentInterjacentinterjacentInterjacentInterjacent führt
in diesem Fall also folgende Einzelschritte durch:
boundary(Region,Tmp1,'inner')
union1(Tmp1,Tmp2)
skeleton(Tmp2,Result)
- 'mixed'
-
In diesem Modus verhält sich interjacentinterjacentInterjacentinterjacentInterjacentInterjacent für
einander nicht berührende Eingaberegionen wie im Modus
'medial_axis'. Kommt es zu einer Berührung, werden zwar
wiederum Trennlinien zwischen den Eingaberegionen als
Ausgaberegionen erzeugt, nun aber inklusive der
„Berührungslinie“ der Regionen. Einander berührende
Regionen werden also (durch eine Linie in der Ausgaberegion)
„getrennt“. Dies entspricht der Anweisungssequenz:
erosion1(Region,Mask,Tmp1,1)
union1(Tmp1,Tmp2)
complement(full,Tmp2,Tmp3)
skeleton(Tmp3,Result)
wobei Mask folgende „Kreuzmaske“ bezeichnet:
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Eingaberegionen, zwischen deren Regionen Trennlinien
gefunden werden sollen.
Eine Ausgaberegion mit den ermittelten Trennlinien als
Region.
Gewünschter Modus.
Defaultwert:
'mixed'
"mixed"
"mixed"
"mixed"
"mixed"
"mixed"
Werteliste: 'border'"border""border""border""border""border", 'medial_axis'"medial_axis""medial_axis""medial_axis""medial_axis""medial_axis", 'mixed'"mixed""mixed""mixed""mixed""mixed"
read_image(Image,'forest_air1')
mean_image(Image,Mean,31,31)
dyn_threshold(Image,Mean,Seg,20,'light')
interjacent(Seg,Graph,'medial_axis')
dev_display(Graph)
read_image(&Image,"forest_air1") ;
mean_imae(Image,&Mean,31,31) ;
dyn_threshold(Image,Mean,&Seg,20,"light") ;
interjacent(Seg,&Graph,"medial_axis") ;
disp_region(Graph,WindowHandle) ;
read_image(Image,'forest_air1')
mean_image(Image,Mean,31,31)
dyn_threshold(Image,Mean,Seg,20,'light')
interjacent(Seg,Graph,'medial_axis')
dev_display(Graph)
read_image(Image,'forest_air1')
mean_image(Image,Mean,31,31)
dyn_threshold(Image,Mean,Seg,20,'light')
interjacent(Seg,Graph,'medial_axis')
dev_display(Graph)
read_image(Image,'forest_air1')
mean_image(Image,Mean,31,31)
dyn_threshold(Image,Mean,Seg,20,'light')
interjacent(Seg,Graph,'medial_axis')
dev_display(Graph)
read_image(Image,'forest_air1')
mean_image(Image,Mean,31,31)
dyn_threshold(Image,Mean,Seg,20,'light')
interjacent(Seg,Graph,'medial_axis')
dev_display(Graph)
interjacentinterjacentInterjacentinterjacentInterjacentInterjacent liefert normalerweise den Wert 2 (H_MSG_TRUE). 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>)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.
thresholdthresholdThresholdthresholdThresholdThreshold,
connectionconnectionConnectionconnectionConnectionConnection,
regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing,
pouringpouringPouringpouringPouringPouring
select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape,
disp_regiondisp_regionDispRegiondisp_regionDispRegionDispRegion
expand_regionexpand_regionExpandRegionexpand_regionExpandRegionExpandRegion,
junctions_skeletonjunctions_skeletonJunctionsSkeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeleton,
boundaryboundaryBoundaryboundaryBoundaryBoundary
Foundation