[vtkusers] Creating a vtkImageData from scratch reading DICOM files	with DCMTK
    Jesús Spínola 
    jspinola at gmail.com
       
    Thu Aug 16 09:47:07 EDT 2007
    
    
  
Hi vtkusers,
I want to read some DICOM files into one vtkImageData. To read the pixel
data from the DICOM files I want to use the DCMTK libraries. The
vtkImageData object will contain several DICOM images so I want to load the
pixel data into vtkImageData file by file.
First I allocate the vtkImageData and then I load the files in a bucle from
dcmtk (DicomImage class) to the vtkImageData object. The images are loaded
correctly by dcmtk ( I dumped the images in a png file and they're ok ) but
when I want to view the images with vtkImageViewer2 they are completely
dark, so it seems no data is loaded at all. Following there's the code
snippet I use to do that. I also tried to read the pixel data with
DcmDataset::findAndGetUint16Array(DCM_PixelData,..) instead of DicomImage,
but with no success.
Has anyone any suggestions of what I'm probably missing or doing wrong?
// first we allocate the data
m_imageDataVTK = vtkImageData::New();
m_imageDataVTK->SetOrigin( origin );
m_imageDataVTK->SetSpacing( spacing );
m_imageDataVTK->SetDimensions( rows, columns, slices );
m_imageDataVTK->SetScalarTypeToUnsignedShort(); // the data will be 16 bit
m_imageDataVTK->SetNumberOfScalarComponents(1);
m_imageDataVTK->AllocateScalars();
// now we load all the images
int zSlice = 0;
    foreach( Image *image, m_imageSet )
    {
        DicomImage *dicomImage = new DicomImage( qPrintable(
image->getPath() ) ); // we load a new Image
        if( dicomImage != NULL )
        {
            if( dicomImage->getStatus() == EIS_Normal )
            {
                dicomImage->setMinMaxWindow();
                if( dicomImage->getOutputData(16) != NULL )
                {
                    // we copy the data in the dcmtk buffer to the
vtkImageData one
                    memcpy((unsigned short
*)m_imageDataVTK->GetScalarPointer(0,0,zSlice), (unsigned short
*)dicomImage->getOutputData(16), dicomImage->getOutputDataSize() );
                    dicomImage->deleteOutputData();
                    m_imageDataVTK->Modified();
                }
        }
        zSlice++;
    }
Thanks in advance!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20070816/b315b436/attachment.htm>
    
    
More information about the vtkusers
mailing list