[Insight-users] Save Registration Deformation field in ITK and
display in VTK glyph
Wei Xiong
wumengda at gmail.com
Tue Dec 26 04:10:24 EST 2006
Hi ITKers and VTKers,
I have some problems in saving and displaying registration deformation
field in VTK format.
The code in ITK is
typedef itk::Vector< float, Dimension > VectorPixelType;
typedef itk::Image< VectorPixelType, Dimension > DeformationFieldType;
typedef itk::ImageFileWriter< DeformationFieldType > FieldWriterType;
FieldWriterType::Pointer fieldWriter = FieldWriterType::New();
fieldWriter->SetFileName( "field.vtk" );
fieldWriter->SetInput( nrreg->GetDeformationField() );
fieldWriter->Update();
The code in VTK is
vtkStructuredPointsReader *fieldReader = vtkStructuredPointsReader::New();
fieldReader->SetFileName( "field.vtk" );
vtkArrowSource *arrow = vtkArrowSource::New();
vtkMaskPoints *masker = vtkMaskPoints::New();
masker->SetOnRatio( 1000 );
masker->RandomModeOn();
masker->SetInputConnection( fieldReader->GetOutputPort() );
vtkGlyph3D *glyph = vtkGlyph3D::New();
glyph->SetInputConnection( masker->GetOutputPort() );
glyph->SetScaleModeToScaleByVector();
glyph->SetColorModeToColorByVector();
glyph->OrientOn();
glyph->SetVectorModeToUseVector();
glyph->SetSourceConnection( arrow->GetOutputPort() );
vtkPolyDataMapper *glyphmapper = vtkPolyDataMapper::New();
glyphmapper->SetInputConnection(glyph->GetOutputPort());
vtkActor *glyphactor = vtkActor::New();
Displaying in VTK results in all arrows just pointing to one direction, say
along X-axis.
I found this is because ITK save field data in VTK using Data Attribute in
the header:
SCALARS scalars float 3
LOOKUP_TABLE default
If I manually change it to:
VECTORS vectors float
Then, glyphs are displayed correctly.
I also tried to use itkVTKImageIO to correct this behavior using the code:
typedef itk::VTKImageIO VTKImageIOType;
VTKImageIOType::Pointer vtkIO = VTKImageIOType::New();
vtkIO->SetComponentType( VTKImageIOType::FLOAT );
vtkIO->SetPixelType( VTKImageIOType::VECTOR );
fieldWriter->SetImageIO( vtkIO );
ITK just saves in the same way. Don't work.
Can I change the behavior of ITK or is there any filter in VTK can correct
this?
Anyone has some ideas on this.
Thank you very much!
Mengda
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/insight-users/attachments/20061226/ab98e653/attachment.html
More information about the Insight-users
mailing list