public class MotionSe3PointCrossCovariance_F64
extends java.lang.Object
implements georegression.fitting.MotionTransformPoint<georegression.struct.se.Se3_F64,georegression.struct.point.Point3D_F64>
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 and Description |
|---|
MotionSe3PointCrossCovariance_F64() |
| Modifier and Type | Method and Description |
|---|---|
int |
getMinimumPoints() |
double[] |
getParam() |
georegression.struct.se.Se3_F64 |
getTransformSrcToDst() |
boolean |
process(java.util.List<georegression.struct.point.Point3D_F64> srcPts,
java.util.List<georegression.struct.point.Point3D_F64> dstPts) |
public double[] getParam()
public georegression.struct.se.Se3_F64 getTransformSrcToDst()
getTransformSrcToDst in interface georegression.fitting.MotionTransformPoint<georegression.struct.se.Se3_F64,georegression.struct.point.Point3D_F64>public boolean process(java.util.List<georegression.struct.point.Point3D_F64> srcPts,
java.util.List<georegression.struct.point.Point3D_F64> dstPts)
process in interface georegression.fitting.MotionTransformPoint<georegression.struct.se.Se3_F64,georegression.struct.point.Point3D_F64>public int getMinimumPoints()
getMinimumPoints in interface georegression.fitting.MotionTransformPoint<georegression.struct.se.Se3_F64,georegression.struct.point.Point3D_F64>