least square sphere associated to shape tops
This measure allows to compute least square sphere associated to each shape.
Given a shape, algorithm will compute a least square sphere approximation of shape tops.
Estimated sphere can be computed using a simple parametric estimation of shape tops or can be computed using a robust estimation technic. This behavior is ruled by measure parameter, see ipsdk::imaproc::attr::RobustEstimationConfig.
For more information on parametric estimation process (including outlier management) please reports to Parametric estimation.
Please refers to LeastSquareCircle2d for an example of least square approximation in the 2d case of circle.
least square sphere associated to shape tops
Measure synthesis :
Measure Type | Measure Unit Type | Parameter Type | Result Type | Shape Requirements |
Geometry 3d
|
None
|
LeastSquareSphere3dMsrParams |
Custom
|
Boundary Approximation
|
See Shape measurement for additional information on these pictograms Example of Python code :
Generic example in 3d case :
import PyIPSDK
import PyIPSDK.IPSDKIPLShapeAnalysis as shapeanalysis
inMeasureInfoSet3d = PyIPSDK.createMeasureInfoSet3d()
PyIPSDK.createMeasureInfo(inMeasureInfoSet3d, "LeastSquareSphere3dMsr")
outMeasureSet = shapeanalysis.labelAnalysis3d(inGreyImg, inLabelImg, inMeasureInfoSet3d)
PyIPSDK.saveCsvMeasureFile(os.path.join(tmpPath, "shape_analysis_results.csv"), outMeasureSet)
outMsr = outMeasureSet.getMeasure("LeastSquareSphere3dMsr")
outMsrValues = outMsr.getMeasureResult().getColl(0)
print("First label measurement equal " + str(outMsrValues[1].first))
Example of C++ code :
Example informations
Associated library
IPSDKIPLShapeAnalysis
Code Example
Shape3dCollPtr pShape3dColl = boost::make_shared<Shape3dColl>();
IPSDK_REQUIRE(readFromBinaryFile(inputShape3dCollPath, *pShape3dColl) == true);
MeasureInfoSetPtr pMeasureInfoSet = MeasureInfoSet::create3dInstance();
createMeasureInfo(pMeasureInfoSet, "LeastSquareSphere3dMsr");
MeasureSetPtr pOutMeasureSet =
shapeAnalysis3d(pInGreyImg3d, pShape3dColl, pMeasureInfoSet);
const MeasureConstPtr& pLeastSquareSphere3dOutMsr = pOutMeasureSet->getMeasure("LeastSquareSphere3dMsr");
const LeastSquareSphere3dMsrResults& outResults = static_cast<const LeastSquareSphere3dMsrResults&>(pLeastSquareSphere3dOutMsr->getMeasureResult());