[Insight-users] cubic b-spline question

Nicholas Tustison ntustison at gmail.com
Tue Dec 20 14:40:40 EST 2011


Hi Luca,

> - I see that the transformation at any given voxel is affected by the
> neighboring 64 control points. However, say I take one control point
> and just displace it along one dimension, how many voxels would this
> affect i.e. how many voxels would see some changed displacement as a
> result of moving one control point in one dimension?

It depends on the resolution of your image.  A better way to think about it
would be to recognize that the B-spline transform is defined over a 
continuous domain which is subdivided into same-sized elements, 
like a mesh or grid.  Moving a single control point will effect the 
neighboring 4 (= spline order + 1) B-spline elements in each dimension.

To figure out the number of voxels, you need to calculate the number 
of elements comprising the mesh over the transform domain (which we 
assume is identical to the fixed image domain) in a given dimension.  
This depends on the order and number of control points according to the 
simple relationship

number of mesh elements in dimension x = 
  number of control points in dimension x - spline order 

Since each control point effects (spline order + 1) elements in each dimension, 
to determine the number of effected voxels, we simply need to determine the 
number of voxels per element

So the number of pixels effected per dimension would be 

 ( number of pixels in dimension x / number of mesh elements in dimension x  ) * ( spline order + 1 )

> - Is there a way in the ITK machinery to get the indexes of affected
> voxels due to perturbation to a single b-spline control point in the
> grid?

No, you would have to set this up yourself but it should be pretty easy to
do.

Nick


More information about the Insight-users mailing list