<div dir="ltr"><div><div><div><div><div>Hi all,<br><br></div>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).<br>
<br></div>the look of a nhdr header that i was loading in my software is this :<br>#################################<br>NRRD0004<br># Complete NRRD file format specification at:<br># <a href="http://teem.sourceforge.net/nrrd/format.html">http://teem.sourceforge.net/nrrd/format.html</a><br>
type: short<br>dimension: 3<br>space: left-posterior-superior<br>sizes: 795 788 576<br>space directions: (1,0,0) (0,1,0) (0,0,1)<br>kinds: domain domain domain<br>endian: little<br>encoding: raw<br>space origin: (-397,-393.5,-287.5)<br>
data file: 4a.raw<br>#################################<br><br></div>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. <br>
<br></div>A topdown view of the volume as it should look like<br><a href="http://www.kyb3.org/images/MhdRaw.png">http://www.kyb3.org/images/MhdRaw.png</a><br></div>A topdown of how it looks like<br><a href="http://www.kyb3.org/images/NhdrRaw.png">http://www.kyb3.org/images/NhdrRaw.png</a><br>
<div><div><div><br>#################################<br>typedef RawImageIO<short, 3> rawWriter;<br> rawWriter::Pointer newRawWriter = rawWriter::New();<br> newRawWriter->SetFileTypeToBinary();<br><br> newRawWriter->SetDimensions(0,150);<br>
newRawWriter->SetDimensions(1,150);<br> newRawWriter->SetDimensions(2,150);<br><br> vector<double> dirX(3);<br> dirX[0]=1.0;dirX[1]=0.0;dirX[2]=0.0;<br> vector<double> dirZ(3);<br> dirZ[0]=0.0;dirZ[1]=0.0;dirZ[2]=1.0;<br>
vector<double> dirY(3);<br> dirY[0]=0.0;dirY[1]=1.0;dirY[2]=0.0;<br><br> newRawWriter->SetDirection(0,dirX);<br> newRawWriter->SetDirection(1,dirZ);<br> newRawWriter->SetDirection(2,dirY);<br>
newRawWriter->SetSpacing(0,1);<br> newRawWriter->SetSpacing(1,1);<br> newRawWriter->SetSpacing(2,1);<br><br> newRawWriter->SetHeaderSize(0);<br> newRawWriter->SetByteOrderToLittleEndian();<br>
newRawWriter->SetNumberOfComponents(1);<br><br> /*<br> * SAVE TO FILE<br> */<br> typedef itk::ImageFileWriter< OutputImageType > WriterType;<br> WriterType::Pointer writer = WriterType::New();<br>
writer->SetInput( LabelToBinary->GetOutput() );<br> writer->SetImageIO(newRawWriter);<br> writer->SetFileName( "../VolumeAnalysis/Frangi.raw" );<br><br> try{<br> writer->Update();<br>
}<br> catch( itk::ExceptionObject & error ){<br> std::cerr << "Error: " << error << std::endl;<br> return EXIT_FAILURE;<br> }<br><br> cout << "Volume Saved" << endl;<br>
#################################<br><br></div><div>Best,<br></div><div>Emiliano<br></div></div></div></div>