[Insight-users] Request for help with rigid 3D rotation and translation image registration. (no attachment this time)

Greg Harris Gregory-Harris at uiowa.edu
Thu Jul 7 17:20:36 EDT 2005


Dear fellow ITK users,

This is my request for help with rigid 3D rotation and translation
image registration of the human brain.

Largely as a result of the ITK manual, section 8.4, including the
statement, "It has been extensively shown that metrics based on
the evaluation of mutual information is the best way to overcome
the difficulties of multi-modality registration,"  I have been laboring
for some months trying to make this happen in our brains2
project setting.

My present best effort, that began by imitating the SimpleApp
framework, can be seen in detail in the brains2 CVS source tree,
where brains2/src/iplProg/MutualRegistration contains C++
source and a test data set in 3D and a plan for testing called
PrincipalDebugTesting.tcl.

The files MIMRegistrator.{h,txx} are where we put together the
registration modules,

#include "itkMultiResolutionImageRegistrationMethod.h"
#include "itkVersorRigid3DTransform.h"
#include "itkMattesMutualInformationImageToImageMetric.h"
#include "itkLinearInterpolateImageFunction.h"
#include "itkVersorRigid3DTransformOptimizer.h"
#include "itkRecursiveMultiResolutionPyramidImageFilter.h"

This illustrates our particular taste in what combination to attempt.

The result has been frustrating.  I don't get the exact fit I want even
when giving it the target transformation as an initial condition; while
the fit is only slightly off when the difference is translation-only,
the cases of a rotation-only difference and a rotation-and-translation
difference seem to find the rotation but not even close as to translation.

This application needs to convert between 3D AffineTransforms and
the 6-parameter VersorRigid3D.  Is it possible that converting by
Get-ing and Set-ing the Center, Matrix, and Translation is not the
approved way to convert between transforms, as done in my file
CrossOverAffineSystem.txx?  Could that be distorting my translational
information in proportion to the magnitude of the rotation?  If so,
could you explain what is needed to get Affine and VersorRigid3D
transforms to play together?

I know 3D rigid registration comes up on this discussion list repeatedly.
Is there someone knowledgeable who can look over the
code?  If you want to run the test cases, you will need to download
brains2 from psychiatry.uiowa.edu (it's free): 
http://www.psychiatry.uiowa.edu/wiki/index.php?title=BRAINS_GETTING_STARTED#BRAINS_Registration 

will point you to how to get read-only CVS access to the brains2 projects.

With thanks in advance,

Greg Harris
Iowa Psychiatry Brain Imaging Lab
The University of Iowa
Iowa City, IA 52242 USA



More information about the Insight-users mailing list