interjacentinterjacentInterjacentInterjacent (Operator)

Name

interjacentinterjacentInterjacentInterjacent — Unterteilen der Bildebene mittels vorgegebener Regionen.

Warnung

interjacentinterjacentInterjacentInterjacentInterjacent ist veraltet und wird nur aus Gründen der Rückwärtskompatibilität zur Verfügung gestellt.

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)

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

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

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

HRegion HRegion::Interjacent(const wchar_t* Mode) const   (Nur Windows)

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

HRegion HRegion.Interjacent(string mode)

Beschreibung

interjacentinterjacentInterjacentInterjacentInterjacent unterteilt die Bildebene mittels der Regionen in RegionRegionRegionRegionregion. 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), 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. interjacentinterjacentInterjacentInterjacentInterjacent 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 interjacentinterjacentInterjacentInterjacentInterjacent 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:

Ausführungsinformationen

Parameter

RegionRegionRegionRegionregion (input_object)  region(-array) objectHRegionHRegionHobject

Eingaberegionen, zwischen deren Regionen Trennlinien gefunden werden sollen.

RegionInterjacentRegionInterjacentRegionInterjacentRegionInterjacentregionInterjacent (output_object)  region objectHRegionHRegionHobject *

Eine Ausgaberegion mit den ermittelten Trennlinien als Region.

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

Gewünschter Modus.

Defaultwert: 'mixed' "mixed" "mixed" "mixed" "mixed"

Werteliste: 'border'"border""border""border""border", 'medial_axis'"medial_axis""medial_axis""medial_axis""medial_axis", '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)

Ergebnis

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

thresholdthresholdThresholdThresholdThreshold, connectionconnectionConnectionConnectionConnection, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing, pouringpouringPouringPouringPouring

Nachfolger

select_shapeselect_shapeSelectShapeSelectShapeSelectShape, disp_regiondisp_regionDispRegionDispRegionDispRegion

Siehe auch

expand_regionexpand_regionExpandRegionExpandRegionExpandRegion, junctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeletonJunctionsSkeleton, boundaryboundaryBoundaryBoundaryBoundary

Modul

Foundation