[Insight-users] pointset to image registration in 3D

Dean Inglis inglis.dl at gmail.com
Wed Nov 2 15:52:07 EDT 2011


the problem background:
given:
1) a set of n ( n ~= 200) 3D cartesian coordinates (x,y,z) obtained by
touch sensor probing
the surface of a human face (the subject) - fixed point space
2) a 3D CT scan of the subject's head - moving image space

required:
the transformation that maps coordinates from fixed point space
to moving image space so that the tip of an instrument/probe can be
visualized in real time within a volume rendering of the image

a cost image has been generated by scaling the gradient magnitude
of image  a binary segmentation of the subject's head such that large
gradient mag values lie on the skin surface.  I am thinking of changing this
to some use a laplacian filter or medial axis transform of some kind that
would assign a unique value to the surface interface in the image space.

itk classes;
itkPointSet - fill by reading in a text file of points, a constant value is
associated with each point of the point set
itkImageFileReader - read in the cost image
itkMeanReciprocalSquareDifferencePointSetToImageMetric - the registration
metric
itkLinearInterpolateImageFunction - the registration interpolator
itkVersorRigid3DTransform - the registration transform
itkVersorRegid3DTransformOptimizer - the registration optimizer
itkPointSetToImageRegistrationMethod - the registration method

I created two auxiliary classes (attached):
1) itkPointSetMomentsCalculator - given a point set, calculates center of
mass assuming each point has a unit
   point mass, calculates the principle axes in physical coordinates.
class is based on itkImageMomentsCalculator
2) itkCustomTransformInitializer - given a fixed point set and a moving
image, initializes an internal
  itkVersorRigid3DTransform with its SetCenter, SetTranslation, SetMatrix
methods based on the calculations
  performed using an internal itkPointSetMomentsCalculator and
itkImageMomentsCalculator.  The registration
pipeline's transform can be initialized by for example:
registration_transform->SetCenter( initializer->GetTransform()->GetCenter()
)
and so on

Can someone explain how I should set up the transformations  internally
within the initializer class so that
the registration objective can be fulfilled?  There are next to no examples
or substantial documentation on
using pointset to image registration in a 3D context.

best regards,
Dean
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20111102/7f770f27/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: itkCustomTransformInitializer.hxx
Type: text/x-c++hdr
Size: 4379 bytes
Desc: not available
URL: <http://www.itk.org/pipermail/insight-users/attachments/20111102/7f770f27/attachment.hxx>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: itkCustomTransformInitializer.h
Type: text/x-chdr
Size: 5289 bytes
Desc: not available
URL: <http://www.itk.org/pipermail/insight-users/attachments/20111102/7f770f27/attachment.h>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: itkPointSetMomentsCalculator.h
Type: text/x-chdr
Size: 8096 bytes
Desc: not available
URL: <http://www.itk.org/pipermail/insight-users/attachments/20111102/7f770f27/attachment-0001.h>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: itkPointSetMomentsCalculator.hxx
Type: text/x-c++hdr
Size: 9809 bytes
Desc: not available
URL: <http://www.itk.org/pipermail/insight-users/attachments/20111102/7f770f27/attachment-0001.hxx>


More information about the Insight-users mailing list