Package georegression.fitting
Class ShapeFittingRobustOps
java.lang.Object
georegression.fitting.ShapeFittingRobustOps
High level API for fitting points and related to shapes. Different robust fitting algorithms are applied
-
Field Summary
FieldsModifier and TypeFieldDescriptionbooleanIf true it will always use a single threaded implementationdoubleInlier fraction for LMedSdoubleLMedS will return else if the inlier error is more than this valueintEither the maximum number of iterations or the number of iterations, depending on implementationdoubleHow good the fit was according to the robust algorithmlongRandom number generator used by robust fitter.doubleInlier threshold used by RANSACintIf it's fewer than this number of points it will use single threaded versions -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidconfigRansac(int iterations, double threshold) Configures RANSAC parametersprotected <Model,Point>
ModelfitWithLMedS(List<Point> points, ModelManager<Model> modelManager, Factory<ModelGenerator<Model, Point>> factoryGenerator, Factory<DistanceFromModel<Model, Point>> factoryDistance) protected <Model,Point>
ModelfitWithRansac(List<Point> points, ModelManager<Model> modelManager, Factory<ModelGenerator<Model, Point>> factoryGenerator, Factory<DistanceFromModel<Model, Point>> factoryDistance) Estimates a plane from points with surface normalsEstimates a plane from points with surface normalslmedsPlaneFromPoints(List<Point3D_F64> points) Estimates a plane from pointsEstimates a plane from points with surface normalsEstimates a plane from points with surface normalsransacPlaneFromPoints(List<Point3D_F64> points) Estimates a plane from pointsprotected booleanuseConcurrent(List<?> inputs) Checks to see if it should use a concurrent or single thread algorithm
-
Field Details
-
thresholdConcurrent
public int thresholdConcurrentIf it's fewer than this number of points it will use single threaded versions -
forceSingleThread
public boolean forceSingleThreadIf true it will always use a single threaded implementation -
randomSeed
public long randomSeedRandom number generator used by robust fitter. Same seed is used each time it's called -
maxIterations
public int maxIterationsEither the maximum number of iterations or the number of iterations, depending on implementation -
ransacThreshold
public double ransacThresholdInlier threshold used by RANSAC -
lsmedMaxAllowedError
public double lsmedMaxAllowedErrorLMedS will return else if the inlier error is more than this value -
lsmedInlierFraction
public double lsmedInlierFractionInlier fraction for LMedS -
outputFitQuality
public double outputFitQualityHow good the fit was according to the robust algorithm
-
-
Constructor Details
-
ShapeFittingRobustOps
public ShapeFittingRobustOps()
-
-
Method Details
-
configRansac
public void configRansac(int iterations, double threshold) Configures RANSAC parameters -
ransacPlaneFromPoints
Estimates a plane from points -
ransacPlaneFromPointNormals
Estimates a plane from points with surface normals -
lmedsPlaneFromPoints
Estimates a plane from points -
lmedsPlaneFromPointNormals
Estimates a plane from points with surface normals -
ransacCylinderFromPointNormals
Estimates a plane from points with surface normals -
lmedsCylinderFromPointNormals
Estimates a plane from points with surface normals -
fitWithLMedS
protected <Model,Point> Model fitWithLMedS(List<Point> points, ModelManager<Model> modelManager, Factory<ModelGenerator<Model, Point>> factoryGenerator, Factory<DistanceFromModel<Model, Point>> factoryDistance) -
fitWithRansac
protected <Model,Point> Model fitWithRansac(List<Point> points, ModelManager<Model> modelManager, Factory<ModelGenerator<Model, Point>> factoryGenerator, Factory<DistanceFromModel<Model, Point>> factoryDistance) -
useConcurrent
Checks to see if it should use a concurrent or single thread algorithm
-