[Insight-users] [ITK Community] LandmarkBasedTransformInitializer

Luis Ibanez luis.ibanez at kitware.com
Sun Dec 29 12:19:52 EST 2013


Hi Massi,

You may want to verify the content of the ITK image,
before it is passed to convert to a vtkImageData.

For example, save it into a file, and review its content
with an image viewer.


    Regards,

         Luis




On Sun, Dec 15, 2013 at 2:53 AM, Massinissa Bandou <
Massinissa.Bandou at usherbrooke.ca> wrote:

> Hi Luis,
> I modified my code for two 3D vtkImagaData (float). The code is compiling
> and I tried to read the output as a vtkImageData but the problem is the
> image is empty. (the output has 1 1 1 for the spacing and 0 for number of
> cells.)
>
>
>         typedef itk::Image<float, 3> ImageType;
>
>         typedef itk::VTKImageToImageFilter<ImageType> VTKToITKConnector;
>         VTKToITKConnector::Pointer vtk2itksource =
> VTKToITKConnector::New();
>         VTKToITKConnector::Pointer vtk2itktarget =
> VTKToITKConnector::New();
>         vtk2itksource->SetInput(source);    //vtkImageData source
>         vtk2itktarget->SetInput(target); //vtkImageData target
>
>         ImageType::Pointer  fixed = vtk2itksource->GetOutput();
>         ImageType::Pointer  moving = vtk2itktarget->GetOutput();
>
>         fixed->Update();
>         moving->Update();
>
>         typedef float VectorComponentType;
>         typedef itk::Vector<VectorComponentType,3> VectorType;
>         typedef itk::Image<VectorType, 3> DeformationFieldType;
>
>         typedef itk::VersorRigid3DTransform<double> Rigid3DTransformType;
>         typedef
>
> itk::LandmarkBasedTransformInitializer<Rigid3DTransformType,ImageType,ImageType>
> LandmarkBasedTransformInitializerType;
>
>         LandmarkBasedTransformInitializerType::Pointer
> landmarkBasedTransformInitializer =
> LandmarkBasedTransformInitializerType::New();
>         //Create source and target landmarks.
>         typedef
> LandmarkBasedTransformInitializerType::LandmarkPointContainer
> LandmarkContainerType;
>         typedef LandmarkBasedTransformInitializerType::LandmarkPointType
> LandmarkPointType;
>
>         LandmarkContainerType fixedLandmarks;
>         LandmarkContainerType movingLandmarks;
>         LandmarkPointType fixedPoint;
>         LandmarkPointType movingPoint;
>
>         fixedPoint[0] = 10;
>         fixedPoint[1] = 10;
>         movingPoint[0] = 50;
>         movingPoint[1] = 50;
>         fixedLandmarks.push_back( fixedPoint );
>         movingLandmarks.push_back( movingPoint );
>
>        fixedPoint[0] = 10;
>        fixedPoint[1] = 20;
>        movingPoint[0] = 50;
>        movingPoint[1] = 60;
>        fixedLandmarks.push_back( fixedPoint );
>        movingLandmarks.push_back( movingPoint );
>
>        fixedPoint[0] = 20;
>        fixedPoint[1] = 10;
>        movingPoint[0] = 60;
>        movingPoint[1] = 50;
>        fixedLandmarks.push_back( fixedPoint );
>        movingLandmarks.push_back( movingPoint );
>
>        fixedPoint[0] = 20;
>        fixedPoint[1] = 20;
>        movingPoint[0] = 60;
>        movingPoint[1] = 60;
>        fixedLandmarks.push_back( fixedPoint );
>        movingLandmarks.push_back( movingPoint );
>
>
>
>
> landmarkBasedTransformInitializer->SetFixedLandmarks(fixedLandmarks);
>
> landmarkBasedTransformInitializer->SetMovingLandmarks(movingLandmarks);
>
>         Rigid3DTransformType::Pointer transform =
> Rigid3DTransformType::New();
>
>         transform->SetIdentity();
>
> landmarkBasedTransformInitializer->SetTransform(transform.GetPointer());
>         landmarkBasedTransformInitializer->InitializeTransform();
>
>         typedef itk::ResampleImageFilter<ImageType, ImageType, double>
> ResampleFilterType;
>         ResampleFilterType::Pointer resampleFilter =
> ResampleFilterType::New();
>         resampleFilter->SetInput(moving);
>         resampleFilter->SetTransform(transform);
>
> resampleFilter->SetSize(fixed->GetLargestPossibleRegion().GetSize());
>         resampleFilter->SetOutputOrigin(fixed->GetOrigin());
>         resampleFilter->SetOutputSpacing(fixed->GetSpacing());
>         resampleFilter->SetOutputDirection(fixed->GetDirection());
>         resampleFilter->SetDefaultPixelValue(200);
>         resampleFilter->GetOutput();
>
>         //connect to VTK
>         typedef itk::ImageToVTKImageFilter<ImageType> ConnectType;
>         ConnectType::Pointer connector = ConnectType::New();
>         connector->SetInput(fixed);
>
>         vtkImageData *imageData = vtkImageData::New();
>         imageData->DeepCopy(connector->GetOutput());
>
>         double a[3];
>         imageData->GetSpacing(a);
>         cout<<"spacing: "<<a[0]&lt;&lt;&quot;
> &quot;&lt;&lt;a[1]&lt;&lt;&quot;
> &quot;&lt;&lt;a[2]&lt;&lt;endl;
>         cout&lt;&lt;imageData->GetNumberOfCells()<<endl;
> &lt;/h4>
>
>
>
> --
> View this message in context:
> http://itk-users.7.n7.nabble.com/LandmarkBasedTransformInitializer-tp32954p32996.html
> Sent from the ITK - Users mailing list archive at Nabble.com.
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.php
>
> 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
> _______________________________________________
> Community mailing list
> Community at itk.org
> http://public.kitware.com/cgi-bin/mailman/listinfo/community
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20131229/87c47bd7/attachment.htm>


More information about the Insight-users mailing list