In this exercise you
will implement the ICP algorithm.
Your implementation
will include the following:
public KDTree(Vector points, int binSize, boolean copy);
copy is a boolean which
says if you have to make an internal copy of the data or not.
public Icp(int maxIterations,
double epsilon);
public Frame apply(Frame
initialGuess, Vector left, Vector right);
epsilon is the minimal change of the RMS between consecutive iterations which is still considered a change.
What is the breakdown
point of the algorithm, for what rotations/translations does it converge
to a minimum which is not the global one, assuming that the initial transformation
is the identity.
Your analysis should
include the following table (ax - rotation around x axis etc. dx - translation
in the x direction etc.)
Experiment Number |
Actual Transformation | Computed Transformation
| Number of Iterations
-----------------------------------------------------------------------------------------------------------------------
1
| ax,ay,az,dx,dy,dz
| ax,ay,az,dx,dy,dz
| xxx
:
:
n
| ax,ay,az,dx,dy,dz
| ax,ay,az,dx,dy,dz
| xxx
How much faster does
the algorithm converge when using the extrapolation acceleration compared
to the basic implementation.
Your analysis should
include the following table (experiment number na - without extrapolation,
nb - with extrapolation. ax - rotation around x axis etc. dx - translation
in the x direction etc.)
Experiment Number |
Actual Transformation | Computed Transformation
| Number of Iterations | Time to Convergence
------------------------------------------------------------------------------------------------------------------------------------------------
1a
| ax,ay,az,dx,dy,dz
| ax,ay,az,dx,dy,dz
| xxx
| ttt
1b
| ax,ay,az,dx,dy,dz
| ax,ay,az,dx,dy,dz
| xxx
| ttt
:
:
na
| ax,ay,az,dx,dy,dz
| ax,ay,az,dx,dy,dz
| xxx
| ttt
nb
| ax,ay,az,dx,dy,dz
| ax,ay,az,dx,dy,dz
| xxx
| ttt