[Insight-users] Too many samples map outside moving image buffer
Luis Ibanez
luis.ibanez at kitware.com
Thu Mar 15 20:26:39 EST 2007
Hi Goo,
This is a common error message in image registration.
It means that at the current iteration of the optimization,
the two images as so off-registration that their spatial
overlap is not large enough for bringing them back into
registration.
The common causes of this problem are:
1) Poor initialization: You must initialize the transform
properly. Please read the ITK Software Guide
http://www.itk.org/ItkSoftwareGuide.pdf for a description
of the use of the CenteredTransformInitializer class.
2) Optimzer steps too large. If you optimizer takes steps
that are too large, it risks to become unstable and to
send the images too far appart.
You may want to start the optimizer with a maximum
step lenght of 1.0, and only increase it once you have
managed to fine tune all other registration parameters.
Increasing the step length makes your program faster,
but it also makes it more unstable.
3) Poor set up o the transform parameters scaling.
This is extremely critical in registration. You must make
sure that you balance the relative difference of scale between
the rotation parameters and the translation parameters.
In typical medical datasets such as CT and MR, translations
are measured in millimeters, and therefore are in the range
of -100:100, while rotations are measured in radians, and
therefore they tend to be in the range of -1:1.
A rotation of 3 radians is catastrophic, while a translation
of 3 millimeters is rather inoffensive. That difference in scale
is the one that must be accounted for.
Regards,
Luis
--------------------------------------------------------------------
On 3/13/07, Goo <gtshowtime at gmail.com> wrote:
> Hi All :
>
> I met an error message when using Mattes MI and Affine Transform.
> This message is notifying me "Too many samples map outside moving image
> buffer"
>
> I guess this maybe caused by TransformPoint in
> itkMattesMutualInformationImageToImageMetric.txx
>
> this->TransformPoint( nFixedImageSamples, parameters, mappedPoint,
> sampleOk, movingImageValue );
>
> but I don't know how to solve this problem.
>
> My test data are two different modality images with the size 512*512.
>
> The Metric setting :
> unsigned int numberOfBins = 50;
> unsigned int numberOfSamples = 10000;
>
> The Transform setting :
> initialParameters[0] = 0.0; // Initial offset in mm along X
> initialParameters[1] = 0.0; // Initial offset in mm along Y
> registration->SetInitialTransformParameters( initialParameters );
>
> The optimizer setting :
> optimizer->MinimizeOn();
> optimizer->SetMaximumStepLength( 5.00 );
> optimizer->SetMinimumStepLength( 0.001 );
> optimizer->SetNumberOfIterations( 200 );
> optimizer->SetRelaxationFactor( 0.8 );
>
> Can anybody help me to solve this problem?
>
> Regards.
>
More information about the Insight-users
mailing list