[Insight-users] Narrow band to image registration

Luis Ibanez luis.ibanez@kitware.com
Tue May 18 23:18:38 EDT 2004


Hi Eduard,


The code from this paper has been integrated
into ITK in a more generic framework.


-------------

About your question (a):

In order to do the equivalent of NarrowBand to Image
registration, now you do the following:


A) Segment the structure of interest from the Fixed
    Image. You can do this using LevelSet, but don't
    have to use this particular method. Any segmentation
    method will be ok as long as it produces a reasonable
    binary mask of your object.


B) Take this binary mask image and pass it as input to
    the BinaryMaskToNarrowBandPointSet filter
http://www.itk.org/Insight/Doxygen/html/classitk_1_1BinaryMaskToNarrowBandPointSetFilter.html


C) This will produce a PointSet as output, where the
    points are located at the centers of pixels belonging
    to the narrow band around the edges of the binary
    mask.


D) Pass this PointSet as the FixedPointSet input to the
    PointSetToImageRegistrationMethod:
 
http://www.itk.org/Insight/Doxygen/html/classitk_1_1BinaryMaskToNarrowBandPointSetFilter.html


E) Pass your moving image as the other input to this method.


F) Select an PointSet to ImageMetric, and connect it to the
    registration method.

    Current choices are
 
http://www.itk.org/Insight/Doxygen/html/classitk_1_1MeanSquaresPointSetToImageMetric.html
http://www.itk.org/Insight/Doxygen/html/classitk_1_1NormalizedCorrelationPointSetToImageMetric.html

    and of course you could write your own....


G) You can use any optimizer. The 1+1 evolutionary has
    the advantage of not requiring the Metric to provide
    derivatives.

    Optimization speed is a *secondary* concern. First
    make sure that you get an optimizer that actually
    converges using your metric as cost function.  :-)


F) The Spline Transform is an *over over kill* in this case.
    Since the Narrow band occupies a very restricted region
    of the image space, it is wasteful to compute the coefficients
    of BSpline grid points in regions where you probably will
    never evaluate a point.

    I'll strongly suggest you to start with an AffineTransform
    and if that proves to be insufficient then try the KernelSplines.



---------------

b)

There is more information about this method in a paper that
was submitted to a Journal last year, and you probably will
be able to read it next year...

  Sorry the InsightJournal wasnt' there at the time  :-)


----------------

c)

It is arguably whether 1+1 is faster than a Gradient
descent. running *one* iteration is certainly faster,
but the total number of iterations needed by Evolutionary
algorithms tends to be much larger. So you may break even.

Again, what matters on a first try is to get it to
converge... then you can start worrying about speed.


----------------

d)

As you can see for the answer above to your question (a),
It is now your responsibility to segment the prostate.
You may use any method you want, as long as it produces
a reasonable binary mask.

Yes the narrow band will work for Fuzzy image, because
*you* will segment them first   :-)

and then pass the binary mask to the NarrowBandPointSet
filter. This may sound deceiving, but if you think about
it, the LevelSet segmentation methods from which we were
extracting the narrow bands on the first tries of this
methods, were also generating internally a binary mask.
That is, the 'inside' of the zero-set.




Please let us know if you have further questions.



Thanks



    Luis




-------------------------
Eduard Schreibmann wrote:

> 
> Would like to use the code + your article on narrow bands
> 
> "Narrow Band to Image Registration in the Insight Toolkit" in WBIR2003
> 
> for registering CT-MRI prostate images. There is a strong bias in the MRI
> images and the prostate is not really differentiated from the background
> tissue in the CT images, so first trials with MI metric are not so great.
> I’m wondering if the narrow band will do better for this images.
> 
> The "plan" is to use :
> 
>         a) Narrow band metric
>         b) 1+1 optimizer
>         c) Spline registration
> 
> Would like to ask if:
> 
> a) From your experience, is this approach feasible/correct, at all ?
> 
> b) Where can find more info on the narrow band approach, especially why it
> may be better than MI or chamfer matching? Particularly, looking for a good
> and clear reference for narrow band, and arguments to convince people to use
> narrow band (if it will work ). What would be a good reference/arguments to
> understand the details, or are there any similar reports/documents that
> could help ? 
> 
> c) The 1+1 is faster than RegularStepGradientDescentOptimizer. It is ok to
> attribute this to the fact that there are many variables and partial
> derivatives of each variable have to be computed ?
> 
> d) The prostate in the CT images is not so clearly differentiated as the
> left ventricle in the test images used in your article. I have the
> impression the algorithm tries to fit the nearby bones to the prostate
> contour. Is there any filtering that may help ( thresholding the bones ? )
> for this, or are there some narrow band parameters that may be modified
> control this behavior ? Would the narrow band work for “fuzzy” images?
> 
> 
> Thank you in advance
> Edi
> 
> 
> 
> 
> 
> 
> Quoting Luis Ibanez <luis.ibanez@kitware.com>:
> 
> 
>>Hi Eduard,
>>
>>An example on how to perform deformable registration
>>using the BSpline transform has been added under
>>
>>
>>   Insight/Examples/Registration/
>>               DeformableRegistration4.cxx
>>
>>
>>
>>You may have to update your CVS checkout in order to
>>get this example.
>>
>>
>>
>>Regards,
>>
>>
>>    Luis
>>
>>
>>---------------------------
>>Eduard Schreibmann wrote:
>>
>>
>>>Hi Luis,
>>>
>>>As you suggested in your previous e-mail, the Demons did not work so
>>
>>nice
>>
>>>for the images I have, FEM needs more cofee and patience, so thinking
>>
>>of
>>
>>>following your second advice on using BSpline.
>>>
>>>Have problems understanding the code and how it works, mainly I can
>>
>>not
>>
>>>understand how  BSplineDeformableTransform (or it's coeficients ?) are
>>>connected to an optimizer. Yes, users still ask such dull questions.
>>>
>>>Is there any simple BSline example/demo available somewhere ? Some code
>>
>>in
>>
>>>testing section is even more confusing for beginers.
>>>
>>>Thank you in advance,
>>>Edi 
>>>
>>>
>>>
>>>
>>>>Hi Edi,
>>>>Along those lines of reasoning, you may want to look
>>>>at the BSpline transform for managing deformable
>>>>registration. In this method, a BSpline is used to
>>>>interpolate deformations over a coarse grid overlapped
>>>>on top of the image. you control the deformation by
>>>>initializing the nodes of the grid.
>>>>
>>>>
>>>>
>>>>
>>>>Regards,
>>>>
>>>>
>>>>
>>>>   Luis
>>>>
>>>>
>>>>
> 
> 
> 
> 
> 






More information about the Insight-users mailing list