[Insight-developers] N3/itkBSplineScatteredDataPointSetToImageFilter problems

Nicholas Tustison ntustison at gmail.com
Tue Nov 30 05:56:50 EST 2010


Hi Richard,

First, are you using the class itkN4MRIBiasFieldCorrectionImageFIlter or itkN3MRIBiasFieldCorrectionImageFIlter?  If it's the latter, how many levels are you using?  Either way, the error that is being thrown occurs when the B-spline object (in this case the scalar bias field estimate) is evaluated at the boundary maximum.  I tried to account for this in the code by generating a use-specific epsilon value which doesn't always work.  A quick fix would be to go to line 267 (after the following code)

  while ( static_cast< RealType >( maximumNumberOfSpans ) ==
          static_cast< RealType >( maximumNumberOfSpans ) - this->m_BSplineEpsilon )
    {
    this->m_BSplineEpsilon *= 10.0;
    }

and add

  this->m_BSplineEpsilon = 0.0001;  

I didn't put that in the code as it was a bit inelegant but perhaps it's time I revisited that.

However, having said all that, with your specific error, it would seem that you're using a mesh size of 21 in at least one dimension which is probably too high for a typical bias correction scenario.  Also, I would switch over to N4 if you haven't already done so as, in my experience, it works much better.

Nick






On Nov 30, 2010, at 5:40 AM, Richard Beare wrote:

> Hi,
> I'm using the N3 bias correction contribution to Insight Journal and
> having problems when setting the number of control points to 6. The N3
> filter uses itkBSplineScatteredDataPointSetToImageFilter. The error
> message when debug is turned on is:
> 
> itk::ExceptionObject (0x20e9210)
> Location: "void itk::MultiThreader::SingleMethodExecute()"
> File: /home/richardb/Build/InsightToolkit-3.20.0/Code/Common/itkMultiThreader.cxx
> Line: 475
> Description: itk::ERROR: MultiThreader(0x342b8f0): Exception occurred
> during SingleMethodExecute
> /usr/local/ITK/ITK-3.20_static/include/InsightToolkit/Review/itkBSplineScatteredDataPointSetToImageFilter.txx:530:
> itk::ERROR: PointSetToImageFilter(0x20e1b20): The reparameterized
> point component 24 is outside the corresponding parametric domain of
> [0, 24].
> 
> 
> The default setting of 4 control points works, as does 8. Is there a
> requirement for number of control points being a power of 2? If not,
> then it appears that there must be some sort of rounding error in how
> the bounds are figured out. I hope to submit a more detailed report
> soon, but thought I'd check to see whether this problem is familiar to
> anyone.
> 
> Thanks
> _______________________________________________
> Powered by www.kitware.com
> 
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> 
> Kitware offers ITK Training Courses, for more information visit:
> http://kitware.com/products/protraining.html
> 
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
> 
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-developers



More information about the Insight-developers mailing list