[Insight-users] LandmarkBasedTransformInitializer

Massinissa Bandou Massinissa.Bandou at USherbrooke.ca
Sun Dec 15 02:53:44 EST 2013


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.


More information about the Insight-users mailing list