[Insight-users] BSplineDeformable support region?

motes motes mort.motes at gmail.com
Sun Nov 1 17:21:35 EST 2009


I am trying to understand how the support region is computed when
using the itkBSplineDeformableTransform.

Assuming that the splineOrder=3 a region of 4*4 nodes should
contribute in the interpolation.

When I look at (itkBSplineInterpolationWeightFunction.txx) the
contributing nodes are determined like this:


  // Find the starting index of the support region
  for ( j = 0; j < SpaceDimension; j++ )
    {
    startIndex[j] = static_cast<typename IndexType::IndexValueType>(
      BSplineFloor( index[j] - static_cast<double>( SplineOrder - 1 ) / 2.0 ) );
    }

  // Compute the weights
  Matrix<double,SpaceDimension,SplineOrder + 1> weights1D;
  for ( j = 0; j < SpaceDimension; j++ )
    {
    double x = index[j] - static_cast<double>( startIndex[j] );

    for( k = 0; k <= SplineOrder; k++ )
      {
      weights1D[j][k] = m_Kernel->Evaluate( x );
      x -= 1.0;
      }
    }


But does that not result in support region looking like this:

http://37133.vs.webtropia.com/apache2-default/test/support_region.jpg

But should the region not be:

http://37133.vs.webtropia.com/apache2-default/test/correct.jpg

where vector to be interpolated is located at the center of the 4*4
grid an not in the bottom left corner?


More information about the Insight-users mailing list