[Insight-developers] Level sets fudge factor
Luca Antiga
luca.antiga at gmail.com
Mon Feb 4 06:30:57 EST 2008
Hi all,
I'm almost done extending sparse field level sets and a few other
filters (like curvature flow) to correctly account for anisotropic
spacings.
However, there's one point I don't fully understand yet.
In this revision
http://www.itk.org/cgi-bin/viewcvs.cgi/Code/BasicFilters/
itkSparseFieldLevelSetImageFilter.txx?root=Insight&r1=1.29&r2=1.30
the "fudge factor" was introduced in the interpolation of surface
location,
see also itkSparseFieldLevelSetImageFilter.txx:950 (current head
version):
for (i = 0; i < ImageDimension; ++i)
{// Adding sqrt imagedimension "extends the reach" of the
interpolation
// to surfaces that pass close to the center of cells.
This is a
// heuristic fudge factor that improves interpolation and
reduces
// "wiggling" at convergence.
offset[i] = (offset[i] * centerValue) * vcl_sqrt
(ImageDimension +0.5)
/ (norm_grad_phi_squared + MIN_NORM);
// offset[i] = (offset[i] * centerValue) / (sqrt
(norm_grad_phi_squared) + MIN_NORM);
}
Can somebody (Josh?) please give me an idea on the rationale behind
this factor?
My problem is that anisotropic spacings work fine when I comment out
the first version of offset[i] and use the second instead, i.e.
offset[i] = (offset[i] * centerValue) / (sqrt(norm_grad_phi_squared)
+ MIN_NORM);
while I can't get it to work properly when the expression is
multiplied by vcl_sqrt(ImageDimension +0.5), as in the first version.
Maybe it's a problem in my code that gets amplified by the factor,
but I first have to intuitively understand what's it about.
Thanks a lot for you help.
Luca
--
Luca Antiga, PhD
Head, Medical Imaging Unit,
Bioengineering Department,
Mario Negri Institute
email: antiga at marionegri.it
web: http://villacamozzi.marionegri.it/~luca
mail: Villa Camozzi, 24020, Ranica (BG), Italy
phone: +39 035 4535-381
More information about the Insight-developers
mailing list