georegression.fitting.se
Class MotionSe3PointCrossCovariance_F32
- java.lang.Object
-
- georegression.fitting.se.MotionSe3PointCrossCovariance_F32
-
- All Implemented Interfaces:
- MotionTransformPoint<Se3_F32,Point3D_F32>
public class MotionSe3PointCrossCovariance_F32 extends java.lang.Object implements MotionTransformPoint<Se3_F32,Point3D_F32>
Finds the rigid body motion which minimizes the different between the two sets of associated points in 3D. Computes the quaternions directly in closed form.
The mean square error function that is minimized is:
f(q) = (1/N) sum( i=1:N , ||x_i - R(q_r)*p_i + q_t||2 )
where q is the transformation parameterized with q_r quaternions and q_t translation, x is the set of 'to' points and p is the set of 'from' points.The basic cross-covariance method sketch in Paul J. Besl and Neil D. McKay, "A Method for Registration of 3-D Shapes" IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol 14, No. 2, Feb. 1992, is implemented below.
-
-
Constructor Summary
Constructors Constructor and Description MotionSe3PointCrossCovariance_F32()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description intgetMinimumPoints()Minimum number of points required to compute a model.float[]getParam()Se3_F32getTransformSrcToDst()Returns the estimated motion from the 'from' coordinate system into the 'to' coordinate system.booleanprocess(java.util.List<Point3D_F32> srcPts, java.util.List<Point3D_F32> dstPts)Processes the sets of corresponding points and finds a transformation which when applied to 'srcPts' will minimize the difference with the 'dstPts'.
-
-
-
Method Detail
-
getParam
public float[] getParam()
-
getTransformSrcToDst
public Se3_F32 getTransformSrcToDst()
Description copied from interface:MotionTransformPointReturns the estimated motion from the 'from' coordinate system into the 'to' coordinate system.- Specified by:
getTransformSrcToDstin interfaceMotionTransformPoint<Se3_F32,Point3D_F32>- Returns:
- motion
-
process
public boolean process(java.util.List<Point3D_F32> srcPts, java.util.List<Point3D_F32> dstPts)
Description copied from interface:MotionTransformPointProcesses the sets of corresponding points and finds a transformation which when applied to 'srcPts' will minimize the difference with the 'dstPts'.- Specified by:
processin interfaceMotionTransformPoint<Se3_F32,Point3D_F32>- Parameters:
srcPts- The points which are to be transformed. Not modified.dstPts- The points that are being compared against. Not modified.- Returns:
- true if the computation successfully produced a solution and false if not.
-
getMinimumPoints
public int getMinimumPoints()
Description copied from interface:MotionTransformPointMinimum number of points required to compute a model.- Specified by:
getMinimumPointsin interfaceMotionTransformPoint<Se3_F32,Point3D_F32>- Returns:
- The number of points required to compute a model.
-
-
DataMelt 3.0 © DataMelt by jWork.ORG