![]() |
Image Component Library (ICL)
|
#include <FeatureGraphSegmenter.h>
Public Types | |
| enum | Mode { BEST, GPU, CPU } |
Public Member Functions | |
| FeatureGraphSegmenter (Mode mode=BEST) | |
| Constructor. More... | |
| ~FeatureGraphSegmenter () | |
| Destructor. More... | |
| core::Img8u | apply (core::DataSegment< float, 4 > xyz, const core::Img8u &edgeImg, const core::Img32f &depthImg, core::DataSegment< float, 4 > normals=NULL, bool stabelize=true, bool useROI=false, bool useCutfreeAdjacency=true, bool useCoplanarity=true, bool useCurvature=true, bool useRemainingPoints=true) |
| One line call for the surface feature segmentation. More... | |
| std::vector< PointCloudSegmentPtr > | applyHierarchical (core::DataSegment< float, 4 > xyz, core::DataSegment< float, 4 > rgb, const core::Img8u &edgeImg, const core::Img32f &depthImg, core::DataSegment< float, 4 > normals=NULL, bool useROI=false, bool useCutfreeAdjacency=true, bool useCoplanarity=true, bool useCurvature=true, bool useRemainingPoints=true, float weightCutfreeAdjacency=1.0, float weightCoplanarity=0.9, float weightCurvature=0.8, float weightRemainingPoints=0.7) |
| One line call for the hierarchical surface feature segmentation. More... | |
| void | setROI (float xMin, float xMax, float yMin, float yMax, float zMin, float zMax) |
| Sets the ROI in world coordinates. More... | |
| void | setMinSurfaceSize (unsigned int size) |
| Sets the minimum segment size (default 25) More... | |
| void | setAssignmentParams (float distance, int radius) |
| Sets the edge point assignment parameters. More... | |
| void | setCutfreeParams (float euclideanDistance, int passes, int tolerance, float minAngle) |
| Sets the cutfree adjacency feature parameters. More... | |
| void | setCoplanarityParams (float maxAngle, float distanceTolerance, float outlierTolerance, int numTriangles, int numScanlines) |
| Sets the coplanarity feature parameters. More... | |
| void | setCurvatureParams (float histogramSimilarity, bool useOpenObjects, int maxDistance, bool useOccludedObjects, float maxError, int ransacPasses, float distanceTolerance, float outlierTolerance) |
| Sets the curvature feature parameters. More... | |
| void | setRemainingPointsParams (int minSize, float euclideanDistance, int radius, float assignEuclideanDistance, int supportTolerance) |
| Sets the remaining points assignment parameters. More... | |
| void | setGraphCutThreshold (float threshold) |
| Sets the graphcut threshold. More... | |
| std::vector< SurfaceFeatureExtractor::SurfaceFeature > | getSurfaceFeatures () |
| std::vector< std::vector< int > > | getSegments () |
| Returns the segment blobs. More... | |
| std::vector< std::vector< int > > | getSurfaces () |
| Returns the surface cluster from the pre-segmentation. More... | |
| core::Img32s | getLabelImage (bool stabelize) |
| Returns the labeled segment image. More... | |
| core::Img8u | getColoredLabelImage (bool stabelize) |
| Returns the colored segment image. Also returned by the apply method. More... | |
| core::Img8u | getMaskImage () |
| Returns the mask image. More... | |
Private Member Functions | |
| void | surfaceSegmentation (core::DataSegment< float, 4 > &xyz, const core::Img8u &edgeImg, const core::Img32f &depthImg, int minSurfaceSize=25, bool useROI=false) |
| std::vector< PointCloudSegmentPtr > | createHierarchy (math::DynMatrix< float > &probabilityMatrix, core::DataSegment< float, 4 > &xyz, core::DataSegment< float, 4 > &rgb) |
Private Attributes | |
| Data * | m_data |
| internal data type More... | |
This class implements feature graph segmentation for depth images. It uses OpenCL for hardware parallelization if a compatible GPU is found.
Constructor.
Constructs an object of this class. All default parameters are set. Use setters for desired values.
| mode | GPU, CPU and BEST (default) |
| icl::geom::FeatureGraphSegmenter::~FeatureGraphSegmenter | ( | ) |
Destructor.
| core::Img8u icl::geom::FeatureGraphSegmenter::apply | ( | core::DataSegment< float, 4 > | xyz, |
| const core::Img8u & | edgeImg, | ||
| const core::Img32f & | depthImg, | ||
| core::DataSegment< float, 4 > | normals = NULL, |
||
| bool | stabelize = true, |
||
| bool | useROI = false, |
||
| bool | useCutfreeAdjacency = true, |
||
| bool | useCoplanarity = true, |
||
| bool | useCurvature = true, |
||
| bool | useRemainingPoints = true |
||
| ) |
One line call for the surface feature segmentation.
| xyz | the xyzh DataSegment from the PointCloudObject class |
| edgeImg | the edge image from the ObjectEdgeDetector class |
| depthImg | the input depth image |
| normals | the input normals |
| stabelize | frame-to-frame cross-correlation to achieve stable object labels for each frame |
| useROI | true for 3D region of interest (set by setROI() ) |
| useCutreeAdjacency | use the cutfree adjacency feature |
| useCoplanarity | use the coplanarity feature |
| useCurvature | use the curvature feature |
| useRemainingPoints | use the remaining points assignment |
| std::vector<PointCloudSegmentPtr> icl::geom::FeatureGraphSegmenter::applyHierarchical | ( | core::DataSegment< float, 4 > | xyz, |
| core::DataSegment< float, 4 > | rgb, | ||
| const core::Img8u & | edgeImg, | ||
| const core::Img32f & | depthImg, | ||
| core::DataSegment< float, 4 > | normals = NULL, |
||
| bool | useROI = false, |
||
| bool | useCutfreeAdjacency = true, |
||
| bool | useCoplanarity = true, |
||
| bool | useCurvature = true, |
||
| bool | useRemainingPoints = true, |
||
| float | weightCutfreeAdjacency = 1.0, |
||
| float | weightCoplanarity = 0.9, |
||
| float | weightCurvature = 0.8, |
||
| float | weightRemainingPoints = 0.7 |
||
| ) |
One line call for the hierarchical surface feature segmentation.
| xyz | the xyzh DataSegment from the PointCloudObject class |
| rgb | the rgba32f DataSegment from the PointCloudObject class |
| edgeImg | the edge image from the ObjectEdgeDetector class |
| depthImg | the input depth image |
| normals | the input normals |
| useROI | true for 3D region of interest (set by setROI() ) |
| useCutreeAdjacency | use the cutfree adjacency feature |
| useCoplanarity | use the coplanarity feature |
| useCurvature | use the curvature feature |
| useRemainingPoints | use the remaining points assignment |
| weightCutreeAdjacency | use the cutfree adjacency feature |
| weightCoplanarity | use the coplanarity feature |
| weightCurvature | use the curvature feature |
| weightRemainingPoints | use the remaining points assignment |
|
private |
| core::Img8u icl::geom::FeatureGraphSegmenter::getColoredLabelImage | ( | bool | stabelize | ) |
Returns the colored segment image. Also returned by the apply method.
| stabelize | true for consistent label colors. |
| core::Img32s icl::geom::FeatureGraphSegmenter::getLabelImage | ( | bool | stabelize | ) |
Returns the labeled segment image.
| stabelize | true for consistent label IDs. |
| core::Img8u icl::geom::FeatureGraphSegmenter::getMaskImage | ( | ) |
Returns the mask image.
| std::vector<std::vector<int> > icl::geom::FeatureGraphSegmenter::getSegments | ( | ) |
Returns the segment blobs.
| std::vector<SurfaceFeatureExtractor::SurfaceFeature> icl::geom::FeatureGraphSegmenter::getSurfaceFeatures | ( | ) |
| std::vector<std::vector<int> > icl::geom::FeatureGraphSegmenter::getSurfaces | ( | ) |
Returns the surface cluster from the pre-segmentation.
| void icl::geom::FeatureGraphSegmenter::setAssignmentParams | ( | float | distance, |
| int | radius | ||
| ) |
Sets the edge point assignment parameters.
| distance | the maximum euclidean distance between two points |
| radius | the maximum radius in pixel |
| void icl::geom::FeatureGraphSegmenter::setCoplanarityParams | ( | float | maxAngle, |
| float | distanceTolerance, | ||
| float | outlierTolerance, | ||
| int | numTriangles, | ||
| int | numScanlines | ||
| ) |
Sets the coplanarity feature parameters.
| maxAngle | the maximum angle between two coplanar surfaces |
| distanceTolerance | distance tolerance for occlusion check |
| outlierTolerance | outlier tolerance for occlusion check |
| numTriangles | number of triangles for common plane test |
| numScanlines | the number of scanlines for occlusion check |
| void icl::geom::FeatureGraphSegmenter::setCurvatureParams | ( | float | histogramSimilarity, |
| bool | useOpenObjects, | ||
| int | maxDistance, | ||
| bool | useOccludedObjects, | ||
| float | maxError, | ||
| int | ransacPasses, | ||
| float | distanceTolerance, | ||
| float | outlierTolerance | ||
| ) |
Sets the curvature feature parameters.
| histogramSimilarity | the minimum similarity score for matching |
| useOpenObjects | test for open curved objects (e.g. a cup) |
| maxDistance | the maximum distance in pixel between the two surfaces |
| useOccludedObjects | test for occluded curved objects |
| maxError | the maximum error in mm for alignment test |
| ransacPasses | the number of RANSAC passes for alignment test |
| distanceTolerance | distance tolerance for occlusion check |
| outlierTolerance | outlier tolerance for occlusion check |
| void icl::geom::FeatureGraphSegmenter::setCutfreeParams | ( | float | euclideanDistance, |
| int | passes, | ||
| int | tolerance, | ||
| float | minAngle | ||
| ) |
Sets the cutfree adjacency feature parameters.
| euclideanDistance | the euclidean distance for RANSAC test |
| passes | the number of RANSAC passes |
| tolerance | the outlier tolerance in points for RANSAC |
| minAngle | the minimum angle between two adjacent surfaces |
| void icl::geom::FeatureGraphSegmenter::setGraphCutThreshold | ( | float | threshold | ) |
Sets the graphcut threshold.
| threshold | the maximum weight of a cut |
| void icl::geom::FeatureGraphSegmenter::setMinSurfaceSize | ( | unsigned int | size | ) |
Sets the minimum segment size (default 25)
| size | minimum segment size in points |
| void icl::geom::FeatureGraphSegmenter::setRemainingPointsParams | ( | int | minSize, |
| float | euclideanDistance, | ||
| int | radius, | ||
| float | assignEuclideanDistance, | ||
| int | supportTolerance | ||
| ) |
Sets the remaining points assignment parameters.
| minSize | the minimum size of a remaining point blob |
| euclideanDistance | the maximum euclidean distance for point clustering |
| radius | the radius for local minima search |
| assignEuclideanDistance | the euclidean distance for assigning to neighbouring surfaces |
| supportTolerance | the max tolerance for detecting a blob as supported and therefore separate object |
| void icl::geom::FeatureGraphSegmenter::setROI | ( | float | xMin, |
| float | xMax, | ||
| float | yMin, | ||
| float | yMax, | ||
| float | zMin, | ||
| float | zMax | ||
| ) |
Sets the ROI in world coordinates.
| xMin | xMin in mm |
| xMax | xMax in mm |
| yMin | yMin in mm |
| yMax | yMax in mm |
| zMin | zMin in mm |
| zMax | zMax in mm |
|
private |
|
private |
internal data type
internal data pointer
1.8.15