[vtkusers] (dcmtk -> vtkImageData) for Volume rendering

Bill Lorensen bill.lorensen at gmail.com
Wed Feb 10 11:58:08 EST 2016


Your data should also be short. Once you apply the slope and intercept. Do
not use unsigned short for CT data.

On Wed, Feb 10, 2016 at 11:56 AM, Mallikarjun K <mallikarjun49 at gmail.com>
wrote:

> Hello Simon and Cory,
> As I said in my first post,I applied ModalityLUT(which is nothing but
> applying rescale slope and rescale intercept ) on dicom raw data of
> unsigned short data type.That is why raw data range(0-4095) is shifted to
> unsigned short range (0-65536) what I guess.
> When I checked data range when read by vtkdicomimagereader,it is short
> data type and range is from -32768 to +32767.
>
> With Kind Regards,
> Mallikarjun
> On Feb 10, 2016 9:08 PM, "Cory Quammen" <cory.quammen at kitware.com> wrote:
>
>> Yep, what Simon said.
>>
>> Cory
>>
>> On Wed, Feb 10, 2016 at 9:34 AM, Simon ESNEAULT <simon.esneault at gmail.com
>> > wrote:
>>
>>> Hello Mallikarjun,
>>>
>>> If it is a CT scan, maybe you're missing the Rescale Intercept Slope
>>> parameters to get the same results as the vtkDicomImageReader ?
>>> https://blog.kitware.com/dicom-rescale-intercept-rescale-slope-and-itk/
>>>
>>> Simon
>>>
>>>
>>> 2016-02-10 15:12 GMT+01:00 Mallikarjun K <mallikarjun49 at gmail.com>:
>>>
>>>> Hello Cory,
>>>>
>>>> Yes,the first image looks like a human head but it is surrounded by
>>>> some other gray/balck colored stuff.I think you are right,it is the issue
>>>> with color/opacity maps.The data is in the range of 0-65536(unsigned
>>>> short). Below are the color and opacity maps I applied.
>>>>
>>>>                 //setup opacity
>>>> d->m_opacityTransferFunction->AddPoint(132.108911, 0.000000);
>>>> d->m_opacityTransferFunction->AddPoint(197.063492, 0.041333);
>>>> d->m_opacityTransferFunction->AddPoint(1087.917989, 0.700000);
>>>> //setup gradient opacity
>>>> d->m_gradientTransferFunction->AddPoint(560.695000, 1.000000);
>>>>
>>>> // Setup color
>>>> d->m_colorTransferFunction->AddRGBPoint(176.881890, 0.650980, 0.000000,
>>>> 0.000000);
>>>> d->m_colorTransferFunction->AddRGBPoint(239.427822, 0.933333, 0.000000,
>>>> 0.000000);
>>>> d->m_colorTransferFunction->AddRGBPoint(301.973753, 1.000000, 0.800000,
>>>> 0.062745);
>>>> d->m_colorTransferFunction->AddRGBPoint(495.866142, 1.000000, 0.905882,
>>>> 0.666667);
>>>> d->m_colorTransferFunction->AddRGBPoint(677.249344, 1.000000, 0.882353,
>>>> 0.215686);
>>>> d->m_colorTransferFunction->AddRGBPoint(808.595801, 1.000000, 1.000000,
>>>> 1.000000);
>>>>
>>>> What should I do to eliminate gray/balck colored stuff ? please guide
>>>> me.
>>>>
>>>> Thank you.
>>>> Regards,
>>>> Mallikarjun
>>>>
>>>>
>>>>
>>>> On Wed, Feb 10, 2016 at 7:18 PM, Cory Quammen <cory.quammen at kitware.com
>>>> > wrote:
>>>>
>>>>> Mallikarjun,
>>>>>
>>>>> Could you clarify for me whether the first image at all looks like a
>>>>> human head? Is the issue that the color/opacity maps do not appear to be
>>>>> applied correctly, or that the data is just completely strange when reading
>>>>> from dcmtk?
>>>>>
>>>>> If it is the latter, I have a couple guesses:
>>>>>
>>>>> - maybe your dimensions are off from what dcmtk tells you
>>>>> - maybe dcmtk's conventions for voxel order are different from VTK
>>>>>
>>>>> Cory
>>>>>
>>>>> On Wed, Feb 10, 2016 at 2:40 AM, Mallikarjun K <
>>>>> mallikarjun49 at gmail.com> wrote:
>>>>>
>>>>>> Hello Cory Quammen,
>>>>>>
>>>>>> Thanks for the response and suggestions.We are kind of established in
>>>>>> using dcmtk in our project,So couldn't use vtk-dicom for time being.
>>>>>>
>>>>>> Below is the code snippet which I used to get dcmtk data to vtk:
>>>>>>
>>>>>>
>>>>>> vtkDataArray* scalars = 0;
>>>>>>
>>>>>>
>>>>>>
>>>>>> switch (dicomDataType)
>>>>>> {
>>>>>> case TYPE_U32Data:
>>>>>> scalars = vtkUnsignedIntArray::New();
>>>>>> ((vtkUnsignedIntArray*)(scalars))->SetArray((unsigned int*)dicomData,
>>>>>> dicomDataSize, 1);//dicomData is the data from dcmtk
>>>>>> break;
>>>>>> case TYPE_U8Data:
>>>>>> scalars = vtkUnsignedCharArray::New();
>>>>>> ((vtkUnsignedCharArray*)(scalars))->SetArray((unsigned
>>>>>> char*)dicomData, dicomDataSize, 1);
>>>>>> break;
>>>>>> case TYPE_U16Data:
>>>>>> scalars = vtkUnsignedShortArray::New();
>>>>>> ((vtkUnsignedShortArray*)(scalars))->SetArray((unsigned
>>>>>> short*)dicomData, dicomDataSize, 1);
>>>>>> break;
>>>>>> case TYPE_S16Data:
>>>>>> scalars = vtkShortArray::New();
>>>>>> ((vtkShortArray*)(scalars))->SetArray((short*)dicomData,
>>>>>> dicomDataSize, 1);
>>>>>> break;
>>>>>> }
>>>>>> scalars->SetNumberOfComponents(1);
>>>>>> double range[2];
>>>>>> scalars->GetRange(range);
>>>>>> m_imageData = vtkImageData::New();
>>>>>> m_imageData->SetDimensions(dimensions);
>>>>>> m_imageData->SetSpacing(spacing);
>>>>>> m_imageData->GetPointData()->SetScalars(scalars);
>>>>>> scalars->Delete();
>>>>>> m_imageData->GetPointData()->GetScalars()->SetName("VR Cuboid");
>>>>>>
>>>>>>
>>>>>> Thanks&Regards,
>>>>>> Mallikarjun
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Feb 9, 2016 at 8:47 PM, Cory Quammen <
>>>>>> cory.quammen at kitware.com> wrote:
>>>>>>
>>>>>>> How are you getting the data from dcmtk to VTK? Code would be
>>>>>>> helpful.
>>>>>>>
>>>>>>> As an aside, you may be interested in David Gobbi's excellent DICOM
>>>>>>> reader for VTK.
>>>>>>>
>>>>>>> https://github.com/dgobbi/vtk-dicom
>>>>>>>
>>>>>>> I believe you can build this within VTK by enabling the
>>>>>>> Module_vtkDICOM option.
>>>>>>>
>>>>>>> Best,
>>>>>>> Cory
>>>>>>>
>>>>>>> On Tue, Feb 9, 2016 at 8:25 AM, Mallikarjun K <
>>>>>>> mallikarjun49 at gmail.com> wrote:
>>>>>>>
>>>>>>>> Hello All,
>>>>>>>> I used dcmtk to read dicom raw data and applied Modality LUT and
>>>>>>>> created a vtkImageData. When I used this data for Volume
>>>>>>>> Rendering(vtkGPUVolumeRayCastMapper), I am getting the following output.
>>>>>>>>
>>>>>>>>
>>>>>>>> [image: Inline image 2]
>>>>>>>>
>>>>>>>>
>>>>>>>> When I used vtkDicomImageReader's output for Volume rendering ,I am
>>>>>>>> getting the following output.
>>>>>>>>
>>>>>>>> [image: Inline image 1]
>>>>>>>>
>>>>>>>> Can anyone give some pointers why this is happening?
>>>>>>>>
>>>>>>>> Thanks in advance..
>>>>>>>> --
>>>>>>>> *With Kind Regards:*
>>>>>>>> Mallikarjun
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> 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
>>>>>>>>
>>>>>>>> Search the list archives at: http://markmail.org/search/?q=vtkusers
>>>>>>>>
>>>>>>>> Follow this link to subscribe/unsubscribe:
>>>>>>>> http://public.kitware.com/mailman/listinfo/vtkusers
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Cory Quammen
>>>>>>> R&D Engineer
>>>>>>> Kitware, Inc.
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *With Kind Regards:*
>>>>>> Mallikarjuna K,
>>>>>> 07795531103/09908238861.
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Cory Quammen
>>>>> R&D Engineer
>>>>> Kitware, Inc.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> *With Kind Regards:*
>>>> Mallikarjuna K,
>>>> 07795531103/09908238861.
>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>>>
>>>> Search the list archives at: http://markmail.org/search/?q=vtkusers
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://public.kitware.com/mailman/listinfo/vtkusers
>>>>
>>>>
>>>
>>>
>>> --
>>> ------------------------------------------------------------------
>>> Simon Esneault
>>> Rennes, France
>>> ------------------------------------------------------------------
>>>
>>
>>
>>
>> --
>> Cory Quammen
>> R&D Engineer
>> Kitware, Inc.
>>
>
> _______________________________________________
> 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
>
> Search the list archives at: http://markmail.org/search/?q=vtkusers
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers
>
>


-- 
Unpaid intern in BillsBasement at noware dot com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160210/84ae1f14/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 111519 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160210/84ae1f14/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 35053 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160210/84ae1f14/attachment-0003.png>


More information about the vtkusers mailing list