[Insight-users] Transformation of vtkPolyData with an itk::Transform

Lodron, Gerald Gerald.Lodron at joanneum.at
Thu Dec 17 05:27:49 EST 2009


Hello

I currently made a point selector which stores it's points into a vtkPolyData structure.

Now I successfully made a image registration which converted the vtk image into itk, registered (transformed with itk::ResampleImageFilter) it and converted it back to vtk for visualization. Now the points of the vtkPolyData object are misaligned and I need to transform them. My point transformation implementation looks like this:


Input:

vtkPolyData poly;                       //Point cloud
Itk::Transformation<> transf;           //itk Transformation result of registration process

Code:
vtkSmartPointer<vtkPolyData> transformedpoly = vtkPolyData::New();      //new transformed polydata
Transformedpoly->DeepCopy(poly);

for(int j=0; j<poly->GetNumberOfPoints();j++)
{
        Itk::Transformation<> ::InputPointType point;
        for(int k=0; k < Transform33Type::InputPointType::PointDimension; k++)
        {
                point[k] = poly->GetPoint(j)[k];
        }
        Itk::Transformation<> ::OutputPointType transformedPoint = transform->TransformPoint(point);

        float afTransfPoint[Transform33Type::OutputPointType::PointDimension];

        for(int k=0; k < Transform33Type::OutputPointType::PointDimension; k++)
        {
                afTransfPoint[k] = transformedPoint[k];
        }
        Transformedpoly->GetPoints()->SetPoint(j,afTransfPoint);
}

The problem is that the points does not fit to their old position, so there must be something wrong with the transformPoint operation?

Best regards



More information about the Insight-users mailing list