[Insight-users] Spline smoothing distance and N4ITK parameters

Andriy Fedorov fedorov at bwh.harvard.edu
Fri Sep 4 10:08:46 EDT 2009


Hi Nick,

Thank you so much for your explanation -- this is very helpful!

I do have a couple of hopefully quick clarification questions. Can you
elaborate on these?

1) in the paper, you describe the default settings to have [4,4,4]
control points (for 3d image) and 4 fitting levels. So, as I
understand, you will have 4x4x4 -> 16x16x16 -> 64x64x64 -> 256x256x256
spline mesh elements!!! Can this be right, or I did not get your
explanation right?

2) is this correct to think that by choosing just one fitting level,
and selecting the number of control points to be something like
[imageSize*imageSpacing/splineDistanceFromN3MNI,...] one might expect
to get somewhere close to replicating the behaviour of N3MNI with the
given "splineDistance" value?

I understand your motivation for using the improved version of spline fitting.

But I also think that it will be essential for wider adoption of this
tool to be able to provide mapping, or precise instructions on how to
select the parameters to reproduce the behaviour of N3MNI with given
settings. N3MNI is already part of established workflows, and it has
been studied in a number of publications. It would be wonderful to be
able to learn and benefit from all these great publications...

In any case, thank you for this valuable contribution to the open
source community, and for replying to my question.

--
Andriy Fedorov, Ph.D.

Research Fellow
Brigham and Women's Hospital
Harvard Medical School
75 Francis Street
Boston, MA 02115 USA
fedorov at bwh.harvard.edu



On Thu, Sep 3, 2009 at 23:10, Nicholas Tustison<ntustison at gmail.com> wrote:
> Hi Andriy,
>
> As I mentioned in our previous correspondence the B-spline fitting algorithm
> is the only methodological difference between N4ITK and Sled's original MNI
> implementation (N3MNI).  The actual smoothing routine that N3MNI uses and
> which Sled discusses in his paper is a fairly standard B-spline fitting
> routine with regularization.  Although smoothing has a large impact on the
> results, as noted by Sled, the actual smoothing function is a relatively
> minor contribution (in terms of novelty) of the N3 work.
>
> Having said that, when I implemented N4ITK, my decision to use my previously
> contributed B-spline fitting filter was motivated not only by the fact that
> it was already implemented in ITK and I was familiar with the code, but it
> also has the advantage over previous B-spline fitting routines in that it is
> not susceptible to ill-conditioning.  Although I plan to augment the current
> technical document associated with N4ITK to address your questions (complete
> with pictures), let me see if I can provide a little insight into your
> questions.
>
> First, just so we're on the same page, the "spline distance" refers to the
> distance between control points in the control point grid, or equivalently,
> the length of a B-spline mesh element.  Changing the spline distance varies
> the locality of the fitted B-spline object.
>
> Now, let me try to give a brief overview in the B-spline fitting routine
> differences.
>
> Given a set of points, a user-specified parametric domain, and B-spline
> parameters (e.g. control point grid size, spline order), traditional
> B-spline fitting routines build a linear system from those set of points.
>  Solving the linear system to yield the control point values can be
> problematic (i.e. ill-conditioning can occur) depending upon the placement
> of the points within the parametric domain.  So for example, if the user
> specifies a high resolution B-spline mesh for a relatively low number of
> points, the linear system could potentially be ill-conditioned.  The
> B-spline fitting routine that is used in N3MNI is of this type which is why
> an additional weighting parameter is used to reduce the possibility of
> ill-conditioning.
>
> N4ITK  uses a generalization of a fitting routine proposed in 1997 by Lee et
> al. which I generalized and contributed to ITK (the references are given in
> the Doxygen documentation for the
> itkBSplineScatteredDataPointSetToImageFilter).  Instead of building a linear
> system, the algorithm iterates through the points and updates the control
> point values as it visits each point (which eliminates the possibility of
> ill-conditioning).   In addition, the user can specify a number of fitting
> levels where each fitting level employs a B-spline mesh that is twice the
> resolution of the previous level.  When progressing to the next level, the
> solution at the previous level is propagated to the current level and
> further refined.  The default parameters cause N4ITK to start with a single
> B-spline mesh element encompassing the entire 3-D input image and perform
> fitting for a total of four levels such that the first level has 1x1x1
> B-spline mesh element, the second level has 2x2x2 B-spline mesh elements,
> the third level has 4x4x4 B-spline mesh elements, and the fourth level has
> 8x8x8 B-spline mesh elements.  Since the parametric domain remains the same
> size, the "spline distance" gets smaller at each level.
>
> So, yes, you can vary the "spline distance" by varying the number of levels
> and number of control points at the base level.  However, unlike in N3MNI,
> you can't simply specify the "spline distance" directly, as you point out,
> by calling a function SetSplineDistance( RealType ) as N4ITK is written now.
>  I thought about writing the code that way but there were a number of issues
> that persuaded me from doing so.
>
> Like I said, I'll try to add something to the technical document to clarify
> the difference.  In the meantime, let me know if you have further questions.
>
> Good luck,
> Nick
>
>
>
>
> On Sep 3, 2009, at 2:22 PM, Andriy Fedorov wrote:
>
>> Hi,
>>
>> I am trying to use the N4ITK implementation
>>
>> http://www.midasjournal.org/browse/publication/640
>>
>> for intensity inhomogeneity correction in brain MRI images for
>> longitudinal analysis.
>>
>> Some of the recent publications emphasize the importance of the proper
>> selection of the spline distance that controls the smoothness of the
>> derived field, especially for the higher field imaging:
>>
>> http://dx.doi.org/10.1016/j.neuroimage.2007.10.026
>> http://dx.doi.org/10.1016/j.neuroimage.2009.06.039
>>
>> It seems that N4ITK does not allow to control this spline distance
>> parameter, at least not directly. I would greatly appreciate if anyone
>> could confirm or (much better) debunk my observation. I see that it is
>> possible to set the number of spline control points -- is this
>> essentially setting the spline distance parameter implicitly?
>>
>> I am not familiar with all the details of Sled's algorithm, which is
>> implemented in N4ITK, so I would greatly appreciate any clarification
>> on how/if the spline distance parameter can be properly controlled.
>>
>> Thank you
>>
>> --
>> Andriy Fedorov, Ph.D.
>>
>> Research Fellow
>> Brigham and Women's Hospital
>> Harvard Medical School
>> 75 Francis Street
>> Boston, MA 02115 USA
>> fedorov at bwh.harvard.edu
>
>


More information about the Insight-users mailing list