split_skeleton_regionsplit_skeleton_regionSplitSkeletonRegionSplitSkeletonRegionsplit_skeleton_region (Operator)
Name
split_skeleton_regionsplit_skeleton_regionSplitSkeletonRegionSplitSkeletonRegionsplit_skeleton_region — Auftrennen von Linien (codiert durch 1 Pixel breite unverzweigte Regionen).
Signatur
Beschreibung
split_skeleton_regionsplit_skeleton_regionSplitSkeletonRegionSplitSkeletonRegionSplitSkeletonRegionsplit_skeleton_region 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
MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance 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
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
Parameter
SkeletonRegionSkeletonRegionSkeletonRegionSkeletonRegionskeletonRegionskeleton_region (input_object) region(-array) → objectHRegionHObjectHRegionHobject
Eingabelinien (codiert als 1 Pixel breite unverzweigte
Regionen).
RegionLinesRegionLinesRegionLinesRegionLinesregionLinesregion_lines (output_object) region-array → objectHRegionHObjectHRegionHobject *
Aufgespaltene Ausgabelinien.
MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance (input_control) integer → HTupleintHTupleHtuple (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
max_distance
≤
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_regionSplitSkeletonRegionSplitSkeletonRegionSplitSkeletonRegionsplit_skeleton_region liefert normalerweise den Wert 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>)set_system("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>)set_system("empty_region_result",<Result>), und das
bei leerer Ergebnisregion mit
set_system('store_empty_region',<'2 (H_MSG_TRUE)'/'3 (H_MSG_FALSE)'>)set_system("store_empty_region",<"2 (H_MSG_TRUE)"/"3 (H_MSG_FALSE)">)SetSystem("store_empty_region",<"2 (H_MSG_TRUE)"/"3 (H_MSG_FALSE)">)SetSystem("store_empty_region",<"2 (H_MSG_TRUE)"/"3 (H_MSG_FALSE)">)SetSystem("store_empty_region",<"2 (H_MSG_TRUE)"/"3 (H_MSG_FALSE)">)set_system("store_empty_region",<"2 (H_MSG_TRUE)"/"3 (H_MSG_FALSE)">)
festlegen. Gegebenenfalls wird eine Fehlerbehandlung
durchgeführt.
Vorgänger
connectionconnectionConnectionConnectionConnectionconnection,
select_shapeselect_shapeSelectShapeSelectShapeSelectShapeselect_shape,
skeletonskeletonSkeletonSkeletonSkeletonskeleton,
junctions_skeletonjunctions_skeletonJunctionsSkeletonJunctionsSkeletonJunctionsSkeletonjunctions_skeleton,
differencedifferenceDifferenceDifferenceDifferencedifference
Nachfolger
count_objcount_objCountObjCountObjCountObjcount_obj,
select_shapeselect_shapeSelectShapeSelectShapeSelectShapeselect_shape,
select_objselect_objSelectObjSelectObjSelectObjselect_obj,
area_centerarea_centerAreaCenterAreaCenterAreaCenterarea_center,
elliptic_axiselliptic_axisEllipticAxisEllipticAxisEllipticAxiselliptic_axis,
smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2SmallestRectangle2smallest_rectangle2,
get_region_polygonget_region_polygonGetRegionPolygonGetRegionPolygonGetRegionPolygonget_region_polygon,
get_region_contourget_region_contourGetRegionContourGetRegionContourGetRegionContourget_region_contour
Siehe auch
split_skeleton_linessplit_skeleton_linesSplitSkeletonLinesSplitSkeletonLinesSplitSkeletonLinessplit_skeleton_lines,
get_region_polygonget_region_polygonGetRegionPolygonGetRegionPolygonGetRegionPolygonget_region_polygon,
gen_polygons_xldgen_polygons_xldGenPolygonsXldGenPolygonsXldGenPolygonsXldgen_polygons_xld
Modul
Foundation