[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