<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7651.34">
<TITLE>RE: [Insight-users] Deformable registration usingMultilevel        B-Spline</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->
<P><FONT SIZE=2>Hi Luis and Nick,<BR>
<BR>
in elastix we have implementated two classes helpful for the B-spline deformable transform.<BR>
<BR>
- One class computes settings for the B-spline grid (GridOrigin, GridRegion, GridSpacing, etc) for multiple resolutions, given a final B-spline grid spacing and an upsample schedule similar to that of the image pyramids. So, it can compute any upsampling schedule.<BR>
- The other class does the real upsampling of a B-spline grid given the result of a previous resolution and the desired output (which was computed with the previous class).<BR>
<BR>
We are planning to make an Insight Journal contribution for these helper classes. Meanwhile, you could inspect them when you download the elastix sources from<BR>
<BR>
<A HREF="http://elastix.isi.uu.nl/download.php">http://elastix.isi.uu.nl/download.php</A><BR>
<BR>
and see if they fit your need. The classes can be found in the directory src/Components/Transforms/BSplineTransform (or otherwise src/Common out of my head).<BR>
<BR>
Regards,<BR>
<BR>
Stefan and Marius<BR>
<BR>
<BR>
-----Original Message-----<BR>
From: insight-users-bounces@itk.org on behalf of Nicholas Tustison<BR>
Sent: Fri 7/4/2008 9:21 PM<BR>
To: Luis Ibanez<BR>
Cc: insight-users@itk.org<BR>
Subject: Re: [Insight-users] Deformable registration usingMultilevel B-Spline<BR>
<BR>
Hi Luis,<BR>
<BR>
I have also written a B-spline control point class (which hasn't been <BR>
uploaded to the IJ, yet) which takes as input an control point image. <BR>
One of the possible outputs is a control point grid with (1/2)^n <BR>
resolution (but the values of the B-spline object remain the same) <BR>
based on the multi-level component of Lee's paper. I would certainly <BR>
be willing to volunteer my services in integrating it with whatever <BR>
you had in mind. If you're interested we can discuss the requirements <BR>
during an upcoming t-con.<BR>
<BR>
Nick<BR>
<BR>
<BR>
<BR>
On Jul 4, 2008, at 1:21 PM, Luis Ibanez wrote:<BR>
<BR>
><BR>
> Hi Torsten,<BR>
><BR>
><BR>
> Ahhh... in ITK you have to check often :-)<BR>
><BR>
><BR>
> The recently added example:<BR>
><BR>
><BR>
> Insight/Examples/Registration/<BR>
> DeformableRegistration15.cxx<BR>
><BR>
><BR>
> illustrates how to do multi-level BSpline.<BR>
><BR>
><BR>
> It pretty much follows the procedure that you just described.<BR>
><BR>
> That being said, in this example, the process is done "manually".<BR>
><BR>
> It will be interesting to package the whole in to a filter.<BR>
><BR>
> Time to look at Nicks paper in the Insight Journal....<BR>
><BR>
><BR>
> Regards,<BR>
><BR>
><BR>
> Luis<BR>
><BR>
><BR>
><BR>
> -----------------------<BR>
> Torsten Rohlfing wrote:<BR>
>> Hi --<BR>
>> Last time I checked, there was no implementation of the multi-level <BR>
>> B-splines as described in the Lee paper in ITK. The <BR>
>> MultiResolutionImageRegistration classes, as far as I know, only <BR>
>> affect the image resolution, which then also implies multi-<BR>
>> resolution for PDE-based deformation fields, but not for the B-<BR>
>> spline.<BR>
>> To get a multi-resolution B-spline, you have three options:<BR>
>> 1. Implement the refinement formula as described in Lee: write a <BR>
>> filter that takes a B-spline transform and converts it to another <BR>
>> transform with half the control point spacing and control point <BR>
>> positions determined so that the deformation fields are identical <BR>
>> (formula is given for 2D case in Lee paper; 1D formula is simple to <BR>
>> derive and can be applied in n dimensions successively).<BR>
>> 2. Get the itkSerial Transform class from the InsightJournal and <BR>
>> implement a concatenation of successively finer B-spline <BR>
>> transformations as described in Daniel Rueckert's 1999 TMI paper. <BR>
>> It's a little (or a lot, depending on the number of <BR>
>> transformations) slower than refinement, but you have more <BR>
>> flexibility with the refinement, it's potentially more powerful, <BR>
>> and you can make it diffeomorphic by enforcing constraints on each <BR>
>> transformation in the chain, like described in Rueckert's 2006 <BR>
>> MICCAI paper.<BR>
>> 3. Use a vector image interpolation class from ITK to refine the B-<BR>
>> spline; you basically need to get the control point array as an ITK <BR>
>> image (there's a method for that in the B-spline class), then <BR>
>> refine that image by interpolation, then set the B-spline control <BR>
>> points from the refined image.<BR>
>> I'd recommend against option 3. because it's a hack, but it gives <BR>
>> you an idea on how to implement option 1.<BR>
>> Best,<BR>
>> Torsten<BR>
>> _______________________________________________<BR>
>> Insight-users mailing list<BR>
>> Insight-users@itk.org<BR>
>> <A HREF="http://www.itk.org/mailman/listinfo/insight-users">http://www.itk.org/mailman/listinfo/insight-users</A><BR>
> _______________________________________________<BR>
> Insight-users mailing list<BR>
> Insight-users@itk.org<BR>
> <A HREF="http://www.itk.org/mailman/listinfo/insight-users">http://www.itk.org/mailman/listinfo/insight-users</A><BR>
<BR>
_______________________________________________<BR>
Insight-users mailing list<BR>
Insight-users@itk.org<BR>
<A HREF="http://www.itk.org/mailman/listinfo/insight-users">http://www.itk.org/mailman/listinfo/insight-users</A><BR>
<BR>
</FONT>
</P>
</BODY>
</HTML>