[vtkusers] correction of spacing

Bartosz Wiklak bwiklak at gmail.com
Mon Nov 24 12:37:42 EST 2008


I'm using GDCM  ( vtkGDCMImageReader ) to read some MR data.
I switched  SetComputeZSpacing on, set SetZSpacingTolerance to 1e-2
and used IPPSorter.
This is my code:

  vtkGDCMImageReader *reader = vtkGDCMImageReader::New();

	std::vector<std::string> filenames;

	gdcm::Directory d;

	d.Load( "/home/basiek/Dokumenty/dcms/testGLOWA/1", false );

	filenames = d.GetFilenames();

	gdcm::IPPSorter s;

	s.SetComputeZSpacing( true );

	s.SetZSpacingTolerance( 1e-2 );

	bool b = s.Sort( filenames );

	if( !b )


		std::cerr << "Failed to sort:" << "s" << std::endl;

		return 1;


	std::cout << "Sorting succeeded:" << s.GetZSpacing() << std::endl;

	//s.Print( std::cout );

	const std::vector<std::string> & sorted = s.GetFilenames();

	vtkStringArray *files = vtkStringArray::New();

	std::vector< std::string >::const_iterator it = sorted.begin();

	for( ; it != sorted.end(); ++it)


	const std::string &f = *it;

	files->InsertNextValue( f.c_str() );


	reader->SetFileNames( files );


I'm getting zspacing 1.5 whitch is ok, but in the
reader->GetOutput()->GetSpacing(spacing) I'm getiing spacing[2]==1.0 !

What am I doing wrong?
I tried to set pixelspacing manually but after
reader->GetOutput()->UpdateInformation() I'm with old, wrong value

When I make reslice in coronal I have eyes shaped like ellipses. I
tired to set pixelspacing for vtkImageReslice:
reslice->SetOutputSpacing( spacing[0], spacing[1], 1.5 );

but this also makes no difference regardless

Can someone point me in the right direction?

More information about the vtkusers mailing list