[vtkusers] vtkImageReslice and vtkImageResample, different behaviour between 32-bit and 64-bit platform
David Gobbi
david.gobbi at gmail.com
Wed Jan 26 17:19:09 EST 2011
Hi Jimmi,
I notice that you are setting the Z spacing to zero. That is not
allowed. In vtkImageData, if the spacing is set to zero in any
direction, then there are several internal VTK methods that will have
undefined behavior.
- David
On Wed, Jan 26, 2011 at 3:03 PM, jimmigoo <jimmigoo at gmail.com> wrote:
>
> Hi everyone!
> I would like to ask you about a very strange behaviour of VTK 5.6.0
> libraries, especially both vtkImageReslice and vtkImageResample methods.
> In 32-bit platform (both Windows XP and Windows 7) these two methods works
> correctly, while in 64-bit platform (both Windows XP and Windows 7) the
> PointData array contains data with 0 values after this->Update() (or
> this->Modified() ), as described in the following code
>
> void ResampleDTM()
> {
> //------------- open original file ----------------------------------
> vtkStructuredPointsReader* imageReader =
> vtkStructuredPointsReader::New();
> imageReader->SetFileName(“SaintHelene.vtk”);
> imageReader->Update();
> //------------- reslice original vtkImageData ------------------------
> vtkImageReslice* reslice = vtkImageReslice::New();
> reslice->SetInput(imageReader->GetOutput());
> reslice->SetOutputOrigin(X0,Y0,0);
> reslice->SetOutputSpacing(xResolution,yResolution,0);
> int XExtent = (int)((Xmax_new- Xmin_new)/xResolution);
> int YExtent = (int)((Ymax_new- Ymin_new)/yResolution);
> reslice->SetOutputExtent(0,XExtent-1,0,YExtent-1,0,0);
> reslice->Update();
> //------------- resample original vtkImageData
> ------------------------
> vtkImageResample * resample = vtkImageResample::New();
> resample->SetInputConnection(0, reslice->GetOutputPort());
> resample->SetDimensionality(3);
> resample->SetAxisMagnificationFactor(0,1.0);
> resample->SetAxisMagnificationFactor(1,1.0);
> resample->SetAxisMagnificationFactor(2,1.0);
>
> XExtent = (int)((Xmax_new- Xmin_new)/xResolution_new);
> YExtent = (int)((Ymax_new- Ymin_new)/yResolution_new);
>
> resample->SetOutputOrigin(X0_new,Y0_new,0);
> resample->SetOutputExtent(0,XExtent-1,0,YExtent-1,0,0);
> resample->SetAxisOutputSpacing(0, xResolution_new);
> resample->SetAxisOutputSpacing(1, yResolution_new);
> resample->SetAxisOutputSpacing(2, 0);
> resample->Update();
> vtkImageData* map = resample->GetOutput();
> map->GetPointData()->GetArray(0)->SetName("cellvar");
> //------------- write resampled file
> ----------------------------------
> vtkStructuredPointsWriter* fileWriter =
> vtkStructuredPointsWriter::New();
> fileWriter->SetFileTypeToBinary();
> fileWriter->SetInput(resample->GetOutput());
> fileWriter->SetFileName(“output.vtk”);
> fileWriter->Write();
> //----------------- clean up
> ------------------------------------------
> fileWriter->Delete();
> resample->Delete();
> reslice->Delete();
> imageReader->Delete();
>
> //---------------------------------------------------------------------
> }
>
> Have you found a similar behaviour? Do you know how to fix and solve this
> problem in 64-bit based platform applications?
> I’m looking for your reply!
> Best regards,
>
> jimmigoo
> http://vtk.1045678.n5.nabble.com/file/n3358830/SaintHelene.vtk
> SaintHelene.vtk
> http://vtk.1045678.n5.nabble.com/file/n3358830/SaintHelene.vtk
> SaintHelene.vtk
> --
> View this message in context: http://vtk.1045678.n5.nabble.com/vtkImageReslice-and-vtkImageResample-different-behaviour-between-32-bit-and-64-bit-platform-tp3358830p3358830.html
> Sent from the VTK - Users mailing list archive at Nabble.com.
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
More information about the vtkusers
mailing list