<div dir="ltr">Hi Eddy,<div><br></div><div>The code is using a vtkDICOMCTGenerator to write an MR image, which is definitely wrong.  Use the vtkDICOMMRGenerator, and make sure the meta data matches the IOD: <a href="http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.8.3.html">http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.8.3.html</a></div><div><br></div><div>The standard says that BitsAllocated must be 16 for MR images, therefore an 8-bit MR image is non-standard and DICOM software may to refuse to display it.  You should convert your data to 16-bit (In fact, it seems fishy that you are working with unsigned char, since if you are writing a reformat of an MR image, then wasn't the original MR image a 16-bit image?)</div><div><br></div><div>I can't answer about why Slicer is only showing one slice, as I don't currently have Slicer installed.</div><div><br></div><div> - David  </div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 25, 2017 at 1:57 AM, Eddy Cappeau <span dir="ltr"><<a href="mailto:edcpwk@gmail.com" target="_blank">edcpwk@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div>Hi David,<br><br>Here's the code below. This is almost the example of the api doc :<br><br>    auto generator = vtkSmartPointer <vtkDICOMCTGenerator>::New();<br>    vtkSmartPointer <vtkDICOMMetaData> meta = vtkSmartPointer <vtkDICOMMetaData>::New();<br><br>    meta->SetAttributeValue(DC::<wbr>PatientName, "Test");<br>    meta->SetAttributeValue(DC::<wbr>PatientID, "0000001");<br>    meta->SetAttributeValue(DC::<wbr>ScanOptions, "");<br>    meta->SetAttributeValue(DC::<wbr>ScanningSequence, "GR");<br>    meta->SetAttributeValue(DC::<wbr>SequenceVariant, "SP");<br>    meta->SetAttributeValue(DC::<wbr>ScanOptions, "");<br>    meta->SetAttributeValue(DC::<wbr>MRAcquisitionType, "2D");<br><br>    vtkSmartPointer <vtkDICOMWriter> dicom_writer =<br>        vtkSmartPointer <vtkDICOMWriter>::New();<br>    dicom_writer->SetInputData(<wbr>img);<br>    dicom_writer->SetMetaData(<wbr>meta);<br>    dicom_writer->SetGenerator(<wbr>generator);<br>    dicom_writer-><wbr>SetSeriesDescription("Sagittal Multi-planar Reformat");<br><br>    // Set the output filename format as a printf-style string.<br>    dicom_writer->SetFilePattern("<wbr>%s/IM-0001-%04.4d.dcm");<br>    // Set the directory to write the files into.<br>    dicom_writer->SetFilePrefix(<wbr>path.toStdString().c_str());<br>    // Write the file.<br>    dicom_writer->Write();<br><br></div>Sorry, the use of an unsigned short type was a carreless mistake. The result is better with unsigned char,<br></div>but I still see just one image of the serie on 3D Slicer. Is there something missing to have a complete serie ? <br><br></div><div>I didn't know the vtkImageImport and I'll give it a try.<br></div><div><br><div><div><div><div><div><div>Thanks,<br><br></div><div>Eddy<span class="m_3219583261859247826gmail-sy1"></span></div><div><br></div></div></div></div></div></div></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2017-01-24 15:41 GMT+01:00 David Gobbi <span dir="ltr"><<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hi Eddy,</div><div><br></div><div>Can you provide the code that you used to write the image with vtkDICOMWriter?  Here is an example:</div><div><a href="http://dgobbi.github.io/vtk-dicom/doc/api/image_writer.html" target="_blank">http://dgobbi.github.io/vtk-di<wbr>com/doc/api/image_writer.html</a><br></div><div><br></div><div>Creating an image with a loop that calls GetScalarPointer() for every pixel is not very efficient, and casting to a "char *" when the data is "unsigned short" is wrong: you are setting only 8 bits of each 16-bit pixel, while leaving the other 8 bits uninitialized.  The vtkImageImport filter is a better way of generating image data:</div><a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/ImageImport" target="_blank">http://www.vtk.org/Wiki/VTK/Ex<wbr>amples/Cxx/Images/ImageImport</a><span class="m_3219583261859247826HOEnZb"><font color="#888888"><div><br></div><div> - David</div></font></span><div><div class="m_3219583261859247826h5"><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 24, 2017 at 2:51 AM, Eddy Cappeau <span dir="ltr"><<a href="mailto:edcpwk@gmail.com" target="_blank">edcpwk@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><div>Hi,<br><br></div>I'd like to use the vtkDICOMWriter class to convert a vtkImage to a set of DICOM images.<br></div><div><br>I've compile VTK with the vtkDICOM module enabled and followed the example from the pdf found on the github repository (<a href="http://dgobbi.github.io/vtk-dicom/doc/vtk-dicom.pdf" target="_blank">http://dgobbi.github.io/vtk-d<wbr>icom/doc/vtk-dicom.pdf</a>).<br><div><br></div><br>The image data is created like this :<br><br>    auto  img = vtkSmartPointer < vtkImageData >::New();<br>    img->SetOrigin(0, 0, 0);<br>    img->SetDimensions(1024, 1024, numlayer);<br>    img->SetSpacing(1, 1, 1);<br>    img->AllocateScalars(VTK_UNSIG<wbr>NED_SHORT, 1);<br><br></div>and the data filled like this : <br><br>           for (int n = 0; x < numlayer; n++) {<br>                for (int x = 0; x < 1024; x++) {<br>                    for (int y = 0; y < 1024; y++) {<br>                        char* pixel = static_cast<char*>(img->GetSca<wbr>larPointer(x, y, n));<br>                        pixel[0] = values[x][y];<br>                    }<br></div><div><br></div>I can load the converted result with paraview without problems.<br>But with 3D Slicer, I can just load the first file of the serie and it display a blank image.<br><br></div>What do I have to do to be able to load the images with both application ?<br></div><div><br>Thanks, <br><br></div>Eddy</div></blockquote></div><br></div></div></div></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>