[Insight-users] problem of deforming a 3D image
Martin Urschler
martin at urschler.info
Fri Apr 7 06:12:28 EDT 2006
hi luis,
IMHO there is another issue involved here.
The standard case of kernel spline transformation in ITK is the TPS. Now
one might discuss how suitable this transformation is for modelling
biological deformations, but this is not so important since it works
quite well. However, the ITK implementation of TPS is by far
sub-optimal. It uses the elastic body spline framework, which is a nice
attempt for generalization, but it implies that the TPS transformation
is established from a matrix that has a size of order O(3Nx3N) where N
is the number of landmarks, instead of O(NxN) in a naive implementation.
This fact restricts the applicability of the TPS for more than a few
hundred landmarks. In my feature matching applications I have cases
where a few thousand landmarks might appear, therefore I have written my
own TPS transform, that uses the "naive",originally described
implementation (see papers of Bookstein or Karl Rohr) but needs a lot
less computational effort for the calculation of the system parameters
and especially for the warping of images with a given TPS transform.
I could contribute my implementation which internally also uses an LU
decomposition instead of the vnl_svd (i implemented a simple vnl_ludcmp
class, porting the algorithm from the numerical recipes in c). The LU
decomposition is imho the optimal algorithm for solving the TPS system.
As a side note I have to say that I currently don't have the time to
polish my implementations, and there is also the problem that my TPS
does not fit anymore into the EBS framework, so this might mean a
restructuring of the Kernel Spline class framework. Therefore, I'm not
sure how to contribute this stuff. The other thing is, how does one
contribute a different vnl class to itk? I guess it should be done via
contribution to the original vnl, right???
regards,
Martin
Luis Ibanez wrote:
>
> Hi Ming,
>
> When you use Kernel Splines (which is what the DeformationFieldSource
> class does), you don't need many landmarks, unless you have a lot of
> local deformations.
>
> In general something between 20 to 100 well located points should be
> enough for driving the deformation of a 3D image, specially for the
> case of biological structures, since they don't tend to have many
> local deformations.
>
> In order to reduce the number of points in your vtkPolyData you could
> use the decimate filters available in VTK.
>
--
Martin Urschler
TU Graz - Institute for Computer Graphics & Vision
EMail: martin at urschler.info ICQ: 41586273
Web: http://www.urschler.info
-----------------------------------------------------------
"Wehre nichts ab, was zu dir kommt, und halte nichts fest, was von dir
geht."
More information about the Insight-users
mailing list