[ITK Community] RawImageIO volume writing

Matt McCormick matt.mccormick at kitware.com
Tue Mar 18 09:24:41 EDT 2014


Hi Emiliano,

I am not sure I see the issue.  Is the image missing the correct spacing
information?

Matt


On Tue, Mar 18, 2014 at 8:32 AM, Emiliano Pastorelli <
emiliano.pastorelli at gmail.com> wrote:

> Hi all,
>
> I am trying to write to file a processed volume on which i'm working. Due
> to the fact that another software of mine that performs another analysis on
> the filtered dataset reads in nhdr+raw files (i write manually the nhdr,
> and from there i only take size and endianness of the raw data).
>
> the look of a nhdr header that i was loading in my software is this  :
> #################################
> NRRD0004
> # Complete NRRD file format specification at:
> # http://teem.sourceforge.net/nrrd/format.html
> type: short
> dimension: 3
> space: left-posterior-superior
> sizes: 795 788 576
> space directions: (1,0,0) (0,1,0) (0,0,1)
> kinds: domain domain domain
> endian: little
> encoding: raw
> space origin: (-397,-393.5,-287.5)
> data file: 4a.raw
> #################################
>
> what i am trying to do in the code to write a file in a similar format
> that my software can understand and read. it's my first attempt at using
> the RawImageIO, but doesn't matter what i change, the saved volume it's
> always wrongly reconstructed.
>
> A topdown view of the volume as it should look like
> http://www.kyb3.org/images/MhdRaw.png
> A topdown of how it looks like
> http://www.kyb3.org/images/NhdrRaw.png
>
> #################################
> typedef RawImageIO<short, 3> rawWriter;
>     rawWriter::Pointer newRawWriter = rawWriter::New();
>     newRawWriter->SetFileTypeToBinary();
>
>     newRawWriter->SetDimensions(0,150);
>     newRawWriter->SetDimensions(1,150);
>     newRawWriter->SetDimensions(2,150);
>
>     vector<double> dirX(3);
>     dirX[0]=1.0;dirX[1]=0.0;dirX[2]=0.0;
>     vector<double> dirZ(3);
>     dirZ[0]=0.0;dirZ[1]=0.0;dirZ[2]=1.0;
>     vector<double> dirY(3);
>     dirY[0]=0.0;dirY[1]=1.0;dirY[2]=0.0;
>
>     newRawWriter->SetDirection(0,dirX);
>     newRawWriter->SetDirection(1,dirZ);
>     newRawWriter->SetDirection(2,dirY);
>     newRawWriter->SetSpacing(0,1);
>     newRawWriter->SetSpacing(1,1);
>     newRawWriter->SetSpacing(2,1);
>
>     newRawWriter->SetHeaderSize(0);
>     newRawWriter->SetByteOrderToLittleEndian();
>     newRawWriter->SetNumberOfComponents(1);
>
>     /*
>      * SAVE TO FILE
>      */
>     typedef itk::ImageFileWriter< OutputImageType > WriterType;
>     WriterType::Pointer writer = WriterType::New();
>     writer->SetInput( LabelToBinary->GetOutput() );
>     writer->SetImageIO(newRawWriter);
>     writer->SetFileName( "../VolumeAnalysis/Frangi.raw" );
>
>     try{
>         writer->Update();
>     }
>     catch( itk::ExceptionObject & error ){
>         std::cerr << "Error: " << error << std::endl;
>         return EXIT_FAILURE;
>     }
>
>     cout << "Volume Saved" << endl;
> #################################
>
> Best,
> Emiliano
>
> _______________________________________________
> Community mailing list
> Community at itk.org
> http://public.kitware.com/cgi-bin/mailman/listinfo/community
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/community/attachments/20140318/28012315/attachment-0002.html>


More information about the Community mailing list