least square plan 3d associated to shape tops
This measure allows to compute least square plan associated to each shape.
Given a shape, algorithm will compute a least square plan approximation of shape tops.
Estimated plan 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 LeastSquareLine2d for an example of least square approximation in the 2d case of line.
least square plan 3d associated to shape tops
Measure synthesis :
Measure Type | Measure Unit Type | Parameter Type | Result Type | Shape Requirements |
Geometry 3d
|
None
|
LeastSquarePlan3dMsrParams |
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, "LeastSquarePlan3dMsr")
outMeasureSet = shapeanalysis.labelAnalysis3d(inGreyImg, inLabelImg, inMeasureInfoSet3d)
PyIPSDK.saveCsvMeasureFile(os.path.join(tmpPath, "shape_analysis_results.csv"), outMeasureSet)
outMsr = outMeasureSet.getMeasure("LeastSquarePlan3dMsr")
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, "LeastSquarePlan3dMsr");
MeasureSetPtr pOutMeasureSet =
shapeAnalysis3d(pInGreyImg3d, pShape3dColl, pMeasureInfoSet);
const MeasureConstPtr& pLeastSquarePlan3dOutMsr = pOutMeasureSet->getMeasure("LeastSquarePlan3dMsr");
const LeastSquarePlan3dMsrResults& outResults = static_cast<const LeastSquarePlan3dMsrResults&>(pLeastSquarePlan3dOutMsr->getMeasureResult());