KlassenKlassenKlassenKlassen | | | | Operatoren

interjacentinterjacentInterjacentinterjacentInterjacentInterjacent (Operator)

Name

interjacentinterjacentInterjacentinterjacentInterjacentInterjacent — Unterteilen der Bildebene mittels vorgegebener Regionen.

Signatur

interjacent(Region : RegionInterjacent : Mode : )

Herror interjacent(const Hobject Region, Hobject* RegionInterjacent, const char* Mode)

Herror T_interjacent(const Hobject Region, Hobject* RegionInterjacent, const Htuple Mode)

Herror interjacent(Hobject Region, Hobject* RegionInterjacent, const HTuple& Mode)

HRegion HRegion::Interjacent(const HTuple& Mode) const

HRegion HRegionArray::Interjacent(const HTuple& Mode) const

void Interjacent(const HObject& Region, HObject* RegionInterjacent, const HTuple& Mode)

HRegion HRegion::Interjacent(const HString& Mode) const

HRegion HRegion::Interjacent(const char* Mode) const

void HOperatorSetX.Interjacent(
[in] IHUntypedObjectX* Region, [out] IHUntypedObjectX*RegionInterjacent, [in] VARIANT Mode)

IHRegionX* HRegionX.Interjacent([in] BSTR Mode)

static void HOperatorSet.Interjacent(HObject region, out HObject regionInterjacent, HTuple mode)

HRegion HRegion.Interjacent(string mode)

Beschreibung

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:

Parallelisierung

Parameter

RegionRegionRegionRegionRegionregion (input_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject

Eingaberegionen, zwischen deren Regionen Trennlinien gefunden werden sollen.

RegionInterjacentRegionInterjacentRegionInterjacentRegionInterjacentRegionInterjacentregionInterjacent (output_object)  region objectHRegionHRegionHRegionHRegionXHobject *

Eine Ausgaberegion mit den ermittelten Trennlinien als Region.

ModeModeModeModeModemode (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

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"

Beispiel (HDevelop)

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)

Beispiel (C)

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

Beispiel (HDevelop)

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)

Beispiel (HDevelop)

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)

Beispiel (HDevelop)

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)

Beispiel (HDevelop)

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)

Ergebnis

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.

Vorgänger

thresholdthresholdThresholdthresholdThresholdThreshold, connectionconnectionConnectionconnectionConnectionConnection, regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing, pouringpouringPouringpouringPouringPouring

Nachfolger

select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape, disp_regiondisp_regionDispRegiondisp_regionDispRegionDispRegion

Siehe auch

expand_regionexpand_regionExpandRegionexpand_regionExpandRegionExpandRegion, junctions_skeletonjunctions_skeletonJunctionsSkeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeleton, boundaryboundaryBoundaryboundaryBoundaryBoundary

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren