[Insight-users] Questions about Registering 2 image with small overlap

Bill Lorensen bill.lorensen at gmail.com
Fri Mar 20 19:47:26 EDT 2009


Michael,

You should use itkChangeInformationImageFilter to change the origin
(and/or spacing, direction). It will force a pipeline update.

Not sure if that's your problem, but that is the standard practice.

Bill

On Fri, Mar 20, 2009 at 12:54 PM, Michael Jackson
<mike.jackson at bluequartz.net> wrote:
> I'm _still_ new to the whole ITK/Image Registration thing. I have been over
> the ITK manual a few times (selected sections that I thought was relevant)
> but I am having a tough time getting a registration to work out. Here is
> what I have.
>
> 2 Images. Both are 1292 pixels wide by 968 pixels high. The scaling of the
> image is 0.207987 microns/pixel. The origins (upper left, not the it
> probably matters) are:
>
> Image 0: 47113.2, 48448.5 (microns)
> Image 1: 47369.2, 48448.8 (microns).
>
>  So basically the edges overlap by a little bit (about 20 pixels or so). The
> edges are not quite lined up properly with those settings (which came from
> the instrument the image was captured on) so I am trying to run the images
> through ITK in order to align them better.
>
>  I am getting the exception: Description: itk::ERROR:
> MeanSquaresImageToImageMetric(0x569100): Too many samples map outside moving
> image buffer: 13840 / 1722508
>
> which I _think_ is telling me that something is "off" in where the images
> are being placed in physical space.
>
> I am not even sure if I am using the proper Image Metric for this type of
> problem. The images are grayscale in nature.
>
> Here is some code for your perusal. Any pointers on what I might be doing
> wrong would surely be appreciated.
>
> Thanks
> Mike Jackson
>
>
> const unsigned int Dimension = 2;
> typedef unsigned char PixelType;
> typedef itk::Image<PixelType, Dimension>             FixedImageType;
> typedef itk::Image<PixelType, Dimension>               MovingImageType;
> typedef itk::TranslationTransform<double, Dimension>    TransformType;
> typedef itk::RegularStepGradientDescentOptimizer           OptimizerType;
> typedef itk::MeanSquaresImageToImageMetric
>                   <FixedImageType, MovingImageType> MetricType;
> typedef itk::LinearInterpolateImageFunction
>                   <MovingImageType, double> InterpolatorType;
> typedef itk::ImageRegistrationMethod
>                   <FixedImageType, MovingImageType> RegistrationType;
> typedef itk::ImageFileReader< FixedImageType >  ReaderType;
> typedef itk::ImageFileWriter< FixedImageType >  WriterType;
> typedef itk::Point< double, FixedImageType::ImageDimension > PointType;
>
>
> FixedImageType::PointType fixedOrigin;
> fixedOrigin[0] = 47113.2;
> fixedOrigin[1] = 48448.5;
>
> MovingImageType::PointType movingOrigin;
> movingOrigin[0] = 47369.2;
> movingOrigin[1] = 48447.8;
>
> fixedImageReader->GetOutput()->SetOrigin(fixedOrigin);
> movingImageReader->GetOutput()->SetOrigin(movingOrigin);
>
>  //--- Set the Spacing of the images
> FixedImageType::SpacingType fixedSpacing;
> fixedSpacing[0] = 0.207987;
> fixedSpacing[1] = 0.207987;
> MovingImageType::SpacingType movingSpacing;
> movingSpacing[0] = 0.207987;
> movingSpacing[1] = 0.207987;
>
> fixedImageReader->GetOutput()->SetSpacing(fixedSpacing);
> movingImageReader->GetOutput()->SetSpacing(movingSpacing);
>
> registration->SetFixedImage(fixedImageReader->GetOutput());
> registration->SetMovingImage(movingImageReader->GetOutput());
>
> registration->SetFixedImageRegion(
>        fixedImageReader->GetOutput()->GetBufferedRegion());
>
> typedef RegistrationType::ParametersType ParametersType;
> ParametersType initialParameters(transform->GetNumberOfParameters());
> initialParameters[0] = INITIAL_TRANS_X; // Initial offset in mm along X
> initialParameters[1] = INITIAL_TRANS_Y; // Initial offset in mm along Y
> registration->SetInitialTransformParameters(initialParameters);
>
>
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-users
>


More information about the Insight-users mailing list