KlassenKlassenKlassenKlassen | | | | Operatoren

split_skeleton_regionsplit_skeleton_regionSplitSkeletonRegionsplit_skeleton_regionSplitSkeletonRegionSplitSkeletonRegion (Operator)

Name

split_skeleton_regionsplit_skeleton_regionSplitSkeletonRegionsplit_skeleton_regionSplitSkeletonRegionSplitSkeletonRegion — Auftrennen von Linien (codiert durch 1 Pixel breite unverzweigte Regionen).

Signatur

split_skeleton_region(SkeletonRegion : RegionLines : MaxDistance : )

Herror split_skeleton_region(const Hobject SkeletonRegion, Hobject* RegionLines, const Hlong MaxDistance)

Herror T_split_skeleton_region(const Hobject SkeletonRegion, Hobject* RegionLines, const Htuple MaxDistance)

Herror split_skeleton_region(Hobject SkeletonRegion, Hobject* RegionLines, const HTuple& MaxDistance)

HRegionArray HRegion::SplitSkeletonRegion(const HTuple& MaxDistance) const

HRegionArray HRegionArray::SplitSkeletonRegion(const HTuple& MaxDistance) const

void SplitSkeletonRegion(const HObject& SkeletonRegion, HObject* RegionLines, const HTuple& MaxDistance)

HRegion HRegion::SplitSkeletonRegion(Hlong MaxDistance) const

void HOperatorSetX.SplitSkeletonRegion(
[in] IHUntypedObjectX* SkeletonRegion, [out] IHUntypedObjectX*RegionLines, [in] VARIANT MaxDistance)

IHRegionX* HRegionX.SplitSkeletonRegion([in] Hlong MaxDistance)

static void HOperatorSet.SplitSkeletonRegion(HObject skeletonRegion, out HObject regionLines, HTuple maxDistance)

HRegion HRegion.SplitSkeletonRegion(int maxDistance)

Beschreibung

split_skeleton_regionsplit_skeleton_regionSplitSkeletonRegionsplit_skeleton_regionSplitSkeletonRegionSplitSkeletonRegion trennt Eingabelinien (codiert durch 1 Pixel breite unverzweigte Regionen) gemäß ihrer Krümmung in Teillinien auf. Eine Linie wird dabei aufgetrennt, wenn der maximale Abstand eines Linienpunktes von der Verbindungsgeraden zwischen Anfangs- und Endpunkt der Linie größer als MaxDistanceMaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance ist (Split & Merge Algorithmus). Zurückgeliefert wird jedoch keine Geradenapproximation an die Eingabelinien, sondern die Originallinien aufgeteilt auf mehrere Ausgaberegionen.

Achtung

Die Eingaberegionen müssen unverzweigte Linien codieren, also einzelne Äste des Skeletts.

Parallelisierung

Parameter

SkeletonRegionSkeletonRegionSkeletonRegionSkeletonRegionSkeletonRegionskeletonRegion (input_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject

Eingabelinien (codiert als 1 Pixel breite unverzweigte Regionen).

RegionLinesRegionLinesRegionLinesRegionLinesRegionLinesregionLines (output_object)  region-array objectHRegionHRegionHRegionArrayHRegionXHobject *

Aufgespaltene Ausgabelinien.

MaxDistanceMaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Krümmungsmaß (max. Abstand der Linienpunkte von der Verbindungsgeraden zwischen Anfangs- und Endpunkt).

Defaultwert: 3

Wertevorschläge: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Typischer Wertebereich: 1 ≤ MaxDistance MaxDistance MaxDistance MaxDistance MaxDistance maxDistance ≤ 500 (lin)

Minimale Schrittweite: 1

Empfohlene Schrittweite: 1

Beispiel (HDevelop)

read_image(Image,'fabrik')
edges_image (Image, ImaAmp, ImaDir, 'lanser2', 0.5, 'nms', 8, 16)
threshold (ImaAmp, RawEdges, 8, 255)
skeleton (RawEdges, Skeleton)
junctions_skeleton (Skeleton, EndPoints, JuncPoints)
difference (Skeleton, JuncPoints, SkelWithoutJunc)
connection (SkelWithoutJunc, SingleBranches)
select_shape (SingleBranches, SelectedBranches, 'area', 'and', 16, 99999)
split_skeleton_region (SelectedBranches, Lines, 3)

Beispiel (C)

read_image(&Image,"fabrik");
edges_image (Image, &ImaAmp, &ImaDir, "lanser2", 0.5, "nms", 8, 16);
threshold (ImaAmp, &RawEdges, 8, 255);
skeleton (RawEdges, &Skeleton);
junctions_skeleton (Skeleton, &EndPoints, &JuncPoints);
difference (Skeleton, JuncPoints, &SkelWithoutJunc);
connection (SkelWithoutJunc, &SingleBranches);
select_shape (SingleBranches, &SelectedBranches, "area", "and", 16, 99999);
split_skeleton_region (SelectedBranches, Lines, 3);

Beispiel (HDevelop)

read_image(Image,'fabrik')
edges_image (Image, ImaAmp, ImaDir, 'lanser2', 0.5, 'nms', 8, 16)
threshold (ImaAmp, RawEdges, 8, 255)
skeleton (RawEdges, Skeleton)
junctions_skeleton (Skeleton, EndPoints, JuncPoints)
difference (Skeleton, JuncPoints, SkelWithoutJunc)
connection (SkelWithoutJunc, SingleBranches)
select_shape (SingleBranches, SelectedBranches, 'area', 'and', 16, 99999)
split_skeleton_region (SelectedBranches, Lines, 3)

Beispiel (HDevelop)

read_image(Image,'fabrik')
edges_image (Image, ImaAmp, ImaDir, 'lanser2', 0.5, 'nms', 8, 16)
threshold (ImaAmp, RawEdges, 8, 255)
skeleton (RawEdges, Skeleton)
junctions_skeleton (Skeleton, EndPoints, JuncPoints)
difference (Skeleton, JuncPoints, SkelWithoutJunc)
connection (SkelWithoutJunc, SingleBranches)
select_shape (SingleBranches, SelectedBranches, 'area', 'and', 16, 99999)
split_skeleton_region (SelectedBranches, Lines, 3)

Beispiel (HDevelop)

read_image(Image,'fabrik')
edges_image (Image, ImaAmp, ImaDir, 'lanser2', 0.5, 'nms', 8, 16)
threshold (ImaAmp, RawEdges, 8, 255)
skeleton (RawEdges, Skeleton)
junctions_skeleton (Skeleton, EndPoints, JuncPoints)
difference (Skeleton, JuncPoints, SkelWithoutJunc)
connection (SkelWithoutJunc, SingleBranches)
select_shape (SingleBranches, SelectedBranches, 'area', 'and', 16, 99999)
split_skeleton_region (SelectedBranches, Lines, 3)

Beispiel (HDevelop)

read_image(Image,'fabrik')
edges_image (Image, ImaAmp, ImaDir, 'lanser2', 0.5, 'nms', 8, 16)
threshold (ImaAmp, RawEdges, 8, 255)
skeleton (RawEdges, Skeleton)
junctions_skeleton (Skeleton, EndPoints, JuncPoints)
difference (Skeleton, JuncPoints, SkelWithoutJunc)
connection (SkelWithoutJunc, SingleBranches)
select_shape (SingleBranches, SelectedBranches, 'area', 'and', 16, 99999)
split_skeleton_region (SelectedBranches, Lines, 3)

Ergebnis

split_skeleton_regionsplit_skeleton_regionSplitSkeletonRegionsplit_skeleton_regionSplitSkeletonRegionSplitSkeletonRegion 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.

Vorgänger

connectionconnectionConnectionconnectionConnectionConnection, select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape, skeletonskeletonSkeletonskeletonSkeletonSkeleton, junctions_skeletonjunctions_skeletonJunctionsSkeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeleton, differencedifferenceDifferencedifferenceDifferenceDifference

Nachfolger

count_objcount_objCountObjcount_objCountObjCountObj, select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape, select_objselect_objSelectObjselect_objSelectObjSelectObj, area_centerarea_centerAreaCenterarea_centerAreaCenterAreaCenter, elliptic_axiselliptic_axisEllipticAxiselliptic_axisEllipticAxisEllipticAxis, smallest_rectangle2smallest_rectangle2SmallestRectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2, get_region_polygonget_region_polygonGetRegionPolygonget_region_polygonGetRegionPolygonGetRegionPolygon, get_region_contourget_region_contourGetRegionContourget_region_contourGetRegionContourGetRegionContour

Siehe auch

split_skeleton_linessplit_skeleton_linesSplitSkeletonLinessplit_skeleton_linesSplitSkeletonLinesSplitSkeletonLines, get_region_polygonget_region_polygonGetRegionPolygonget_region_polygonGetRegionPolygonGetRegionPolygon, gen_polygons_xldgen_polygons_xldGenPolygonsXldgen_polygons_xldGenPolygonsXldGenPolygonsXld

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren