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
Modifier and TypeFieldDescriptionboolean
If true it will always use a single threaded implementationdouble
Inlier fraction for LMedSdouble
LMedS will return else if the inlier error is more than this valueint
Either the maximum number of iterations or the number of iterations, depending on implementationdouble
How good the fit was according to the robust algorithmlong
Random number generator used by robust fitter.double
Inlier threshold used by RANSACint
If it's fewer than this number of points it will use single threaded versions -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
configRansac
(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 boolean
useConcurrent
(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
-