[Insight-users] ITK-KernelSplineTransforms performance improved

Luis Ibanez luis.ibanez@kitware.com
Wed, 10 Apr 2002 00:42:27 -0400


Hi,

The implementation of the ITK Kernel Splines
has been improved. They are now running at
speeds comparable to VTK's versions.

The basic change involved to move the computation
of the deformable component of the transform from
the KernelSpline base class to the derived classes
(e.g. TPS, EBS...).

This allows to simplify the computation for the
cases in which the G matrix is diagonal. (the G
matrix has the weights to be applied to each
landmark deformation).

Also two new KernelSplines were added to ITK,
they are:

1) The ThinPlateSpline with a kernel = R2Log(r)
    analogous to the VTK mode of the ThinPlateSpline.

2) A variant of the ElasticBodySpline described
    in Davis' IEEE-TMI paper. In which the potential
    is given by f(x) = 1 / r(x).  This Splines is a
    bit unstable compared to the EBS defined with
    f(x) = k.r(x)


These are the timings for these classes under Linux
using 36 landmarks and mapping 3600 points (all the
times are in seconds):

                   +---------------+-----------------+
                   |  Debuggin -g  |  Optimized -O3  |
                   +---------------+-----------------+
VTK TPS R         |     0.07      |      0.019      |
VTK TPS R2Log(R)  |     0.11      |      0.047      |
                   +---------------+-----------------+
ITK TPS R         |     0.08      |      0.020      |
ITK TPS R2Log(R)  |     0.12      |      0.048      |
ITK EBS           |     0.17      |      0.048      |
ITK EBS 1/R       |     0.16      |      0.045      |
ITK VolumeSpline  |     0.09      |      0.023      |
                   +---------------+-----------------+

Note that a factor of about 4 is obtained by passing
from debugging (-g) to optimization (-O3).


Also a control for the parameter "alpha" of the EBS
was added to the GUI of the ThinPlateSpline example.




    Luis