[vtkusers] converting from vtk to itk and back again
Mark Roden
mmroden at gmail.com
Tue Sep 20 13:17:48 EDT 2011
Hi Jothy,
That got it, thanks!
Mark
On Tue, Sep 20, 2011 at 2:23 AM, Jothy <jothybasu at gmail.com> wrote:
> Sorry for the incomplete message.
>
> Hi Mark,
>
> I wonder whether you can use vtkImageToImageFilter to hold the image data
> from the exporter.
>
> Any way I use the itkVTKImageToImageFilter to do the conversion and it works
> well for me.
>
> Here is the snippet
>
>
> typedef itk::Image<unsigned int,3> ImageType;
>
> typedef itk::VTKImageToImageFilter<ImageType>VTKImageToImageType;
>
> VTKImageToImageType::Pointer converter=VTKImageToImageType::New();
>
> converter->SetInput(imgData);
>
> converter->Update();
>
> Now you could get the itk image as converter->GetOutput(). I have attached
> the src and headers for you.
>
>
> Jothy
>
>
>
>
> On Tue, Sep 20, 2011 at 10:19 AM, Jothy <jothybasu at gmail.com> wrote:
>>
>> Hi Mark,
>>
>> I wonder whether you can use vtkImageToImageFilter to hold the image data
>> from the exporter.
>>
>> Any way I use the itkVTKImageToImageFilter to do the conversion and it
>> works well for me.
>>
>> Here is the snippet
>>
>>
>> typedef itk::Image<unsigned int,3> ImageType;
>>
>> typedef itk::VTKImageToImageFilter<ImageType>VTKImageToImageType;
>>
>> VTKImageToImageType::Pointer converter=VTKImageToImageType::New();
>>
>> converter->SetInput(stencil2->GetOutput());
>>
>> converter->Update();
>>
>>
>> On Tue, Sep 20, 2011 at 5:59 AM, Mark Roden <mmroden at gmail.com> wrote:
>>>
>>> Hi all,
>>>
>>> I've looked on google and the various newsgroups and have not found
>>> the answer to what I thought was a pretty straightforward question.
>>>
>>> I have a vtkImageData object that has been obtained... somehow. I do
>>> not have the pipeline at this point, just the output. The user could
>>> have done any number of things to have arrived at this point, and so I
>>> store a vtkImageData that has been DeepCopied off of the end of
>>> whatever pipeline was employed.
>>>
>>> I then want to save that image in the Analyze format. A coworker made
>>> his own reader/writer using the information that Mayo put out, but the
>>> resulting files don't appear to be oriented correctly. I want to
>>> verify if his version is producing a bug, and I wanted to use the itk
>>> version of the writing plugin to do the work.
>>>
>>> Here's what I have:
>>>
>>> #ifdef ITK_IMG_WRITER
>>> #include "vtkImageExport.h"
>>> #include <itkVTKImageImport.h>
>>> #include "itkImageFileWriter.h"
>>> #include "itkAnalyzeImageIO.h"
>>> #include "itkImage.h"
>>> #include "itkOrientedImage.h"
>>> #endif
>>>
>>>
>>> void saveAnalyzeImage(vtkImageData * const image, const QString &file) {
>>>
>>> #ifdef ITK_IMG_WRITER
>>> //this code is done using ITK, and so requires that ITK be included
>>> typedef itk::OrientedImage< signed short, 3 > CTImage;
>>> typedef itk::ImageFileWriter< CTImage> CTWriter;
>>> typedef itk::VTKImageImport<CTImage> VTKImageImportType;
>>>
>>> CTWriter::Pointer theWriter = CTWriter::New();
>>>
>>> theWriter->SetFileName(file.toStdString().c_str());
>>>
>>> vtkImageExport* theExporter = vtkImageExport::New();
>>> theExporter->SetInput(image);
>>>
>>> VTKImageImportType::Pointer vtkImageToImageFilter =
>>> VTKImageImportType::New();
>>> theExporter->SetOutput(vtkImageToImageFilter);
>>> vtkImageToImageFilter->Update();
>>>
>>> theWriter->SetInput(vtkImageToImageFilter->GetOutput());
>>>
>>> itk::AnalyzeImageIO::Pointer analyzeIO = itk::AnalyzeImageIO::New();
>>> theWriter->SetImageIO(analyzeIO);
>>>
>>> try {
>>> theWriter->Update();
>>> } catch(itk::ExceptionObject ex){
>>> return; //do something else here for error handling
>>> }
>>> theWriter->Delete();
>>> vtkImageToImageFilter->Delete();
>>> analyzeIO->Delete();
>>> return;
>>>
>>> #else
>>> //do the other code instead
>>> #endif
>>> }
>>>
>>> This code is not compiling, because
>>> theExporter->SetOutput(vtkImageToImageFilter) doesn't work. I've also
>>> tried just using the VTKImageImportType object directly, but that does
>>> not have a SetInput method. As could be guessed from the code, I also
>>> tried vtkImageToImageFilter, but that appears to be a deprecated
>>> leftover from 2004 or so. Unless there's some include file I'm not
>>> finding?
>>>
>>> All I really want is for vtk to read and write analyze files. Barring
>>> that, I want to be able to seamlessly convert from a vtkImageData
>>> object to an itk::Image object so I can use itk's analyze export and
>>> importing functions. How can I fix that code to make it work?
>>>
>>> Thanks,
>>> Mark
>>> _______________________________________________
>>> 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
>>
>>
>>
>> --
>> Jothybasu K Selvaraj
>> PhD Student
>> University of Liverpool
>> Liverpool,UK
>>
>
>
>
> --
> Jothybasu K Selvaraj
> PhD Student
> University of Liverpool
> Liverpool,UK
>
>
More information about the vtkusers
mailing list