[Insight-users] a question about using itkImageToVTKImageFilter
Karthik Krishnan
Karthik.Krishnan at kitware.com
Fri Aug 26 18:38:02 EDT 2005
LI XIN wrote:
>Hello, insight users
>
>I have a question when I use itkImageToVTKImageFilter.
>
>
This class propagates its metadata (spacing info) etc via callbacks
which *will not* be triggered unless you make an Update() call... You
were just missing the line
connector->Update();
[The image itself is available since it is passed around as a raw pointer.]
HTH
karthik
>I tried to use itkImageFileReader to read a 3D raw image file, change it to VTK image data using itkImageToVTKImageFilter, and then display one slice of the image using vtkImageViewer. But the slice could not be displayed properly.
>
>I found that the data spacing are 1 ,1 ,1 and the dimensions are 0 , -1 , 0 after ITK image data changed to VTK image data.
>
>My code is:
>
> typedef float PixelType;
> const unsigned int Dimension = 3;
>
> typedef itk::Image< PixelType, Dimension > ImageType;
> typedef itk::ImageFileReader< ImageType > ReaderType;
> typedef itk::RawImageIO<PixelType, Dimension> ImageIOType;
> typedef itk::ImageToVTKImageFilter< ImageType > ConnectorType;
>
> ReaderType::Pointer reader = ReaderType::New();
> ImageIOType::Pointer rawIO = ImageIOType::New();
> ConnectorType::Pointer connector = ConnectorType::New();
>
> reader->SetImageIO(rawIO);
> reader->SetFileName( "brain.raw" );
>
> rawIO->SetFileDimensionality(3);
> rawIO->SetOrigin(0,0.0);
> rawIO->SetOrigin(1,0.0);
> rawIO->SetOrigin(2,0.0);
>
> rawIO->SetDimensions(0,256);
> rawIO->SetDimensions(1,256);
> rawIO->SetDimensions(2,50);
>
> rawIO->SetSpacing(0,0.9609375);
> rawIO->SetSpacing(1,0.9609375);
> rawIO->SetSpacing(2,2.2);
>
> try
> {
> reader->Update();
> }
> catch (itk::ExceptionObject & err)
> {
> cout << "ExceptionObject caught!" << endl;
> cout << err << endl;
> return -1;
> }
>
> connector->SetInput(reader->GetOutput());
>
> vtkImageViewer *viewer=vtkImageViewer::New();
> vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
>
> viewer->SetInput(connector->GetOutput());
>
> float max=(((vtkDataSet *)(connector->GetOutput()))->GetScalarRange())[1];
>
> viewer->SetZSlice(10);
> viewer->SetColorWindow(max);
> viewer->SetColorLevel(max/2.0);
>
> viewer->SetupInteractor(iren);
> viewer->Render();
>
> iren->Initialize();
> iren->Start();
>
>
>I tried a .png image file and it worked very well. I couldn't find out the reason why the parameters of VTK image data changed. How should I do?
>
>Thank you very much!
>
>xin
>
>_______________________________________________
>Insight-users mailing list
>Insight-users at itk.org
>http://www.itk.org/mailman/listinfo/insight-users
>
>
>
More information about the Insight-users
mailing list