split_skeleton_regionsplit_skeleton_regionSplitSkeletonRegionSplitSkeletonRegion (Operator)

Name

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

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

HRegion HRegion::SplitSkeletonRegion(Hlong MaxDistance) const

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

HRegion HRegion.SplitSkeletonRegion(int maxDistance)

Beschreibung

split_skeleton_regionsplit_skeleton_regionSplitSkeletonRegionSplitSkeletonRegionSplitSkeletonRegion 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 MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance 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.

Ausführungsinformationen

Parameter

SkeletonRegionSkeletonRegionSkeletonRegionSkeletonRegionskeletonRegion (input_object)  region(-array) objectHRegionHRegionHobject

Eingabelinien (codiert als 1 Pixel breite unverzweigte Regionen).

RegionLinesRegionLinesRegionLinesRegionLinesregionLines (output_object)  region-array objectHRegionHRegionHobject *

Aufgespaltene Ausgabelinien.

MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (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 ≤ 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)

Ergebnis

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

connectionconnectionConnectionConnectionConnection, select_shapeselect_shapeSelectShapeSelectShapeSelectShape, skeletonskeletonSkeletonSkeletonSkeleton, junctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeletonJunctionsSkeleton, differencedifferenceDifferenceDifferenceDifference

Nachfolger

count_objcount_objCountObjCountObjCountObj, select_shapeselect_shapeSelectShapeSelectShapeSelectShape, select_objselect_objSelectObjSelectObjSelectObj, area_centerarea_centerAreaCenterAreaCenterAreaCenter, elliptic_axiselliptic_axisEllipticAxisEllipticAxisEllipticAxis, smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2SmallestRectangle2, get_region_polygonget_region_polygonGetRegionPolygonGetRegionPolygonGetRegionPolygon, get_region_contourget_region_contourGetRegionContourGetRegionContourGetRegionContour

Siehe auch

split_skeleton_linessplit_skeleton_linesSplitSkeletonLinesSplitSkeletonLinesSplitSkeletonLines, get_region_polygonget_region_polygonGetRegionPolygonGetRegionPolygonGetRegionPolygon, gen_polygons_xldgen_polygons_xldGenPolygonsXldGenPolygonsXldGenPolygonsXld

Modul

Foundation