[vtkusers] why my computing gray scale histogram of DICOM files is different from mimics

David Gobbi david.gobbi at gmail.com
Mon Aug 15 00:24:17 EDT 2016


Hi Liu Peng,

Take the log of count. Or log of count+1, to avoid log(0).
It will probably be like this:

            for(int i=0; i<managedValArray.Length; i++)
            {
                count.SetTuple1(i, log(1 + managedValArray[i]));
            }

 - David


On Sun, Aug 14, 2016 at 7:46 PM, Liu_tj <tjlp at netease.com> wrote:

> Hi, David,
>
> Thanks for your point.
>
> I understand the plot shift. It just change the gray scale value range
> from [-1023, 2016] to [0, 3140]. This does not impact the generated graph
> shape.
>
> Would you like to explain how to show log plot according to my code?
>
> Thanks
>
> Liu Peng
>
> 在2016-08-15,"David Gobbi" <david.gobbi at gmail.com> 写道:
>
> -----原始邮件-----
> *发件人:*"David Gobbi" <david.gobbi at gmail.com>
> *发送时间:*2016年08月15日 星期一
> *收件人:*"Liu_tj" <tjlp at netease.com>
> *抄送:*"vtkusers" <vtkusers at vtk.org>
> *主题:*Re: [vtkusers] why my computing gray scale histogram of DICOM files
> is different from mimics
>
>
> Two differences:
>
> 1) MIMICS is showing a log plot
> 2) The plot is shifted by the RescaleIntercept
>
>
> On Sun, Aug 14, 2016 at 9:52 AM, Liu_tj <tjlp at netease.com> wrote:
>
>> Hi,
>>
>> I try to get the grayscale of points in DICOM files and draw the
>> histogram using .NET component, and what I get is different from the
>> histogram of MIMICS. My C# code is as follow, the returned vtkLongArray
>> stores the grayscale statistic result, value of element is the total number
>> of the point whose gray scale value is equal to the array index:
>>
>> public vtkLongArray GetGreyScaleStatisticsFromImageData(vtkImageData
>> data, out long min_grey, out long max_grey)
>> {
>>             vtkImageExtractComponents extract =
>> vtkImageExtractComponents.New();
>>             extract.SetInputData(data);
>>             extract.SetComponents(0);
>>             extract.Update();
>>
>>             double[] scalarrange = extract.GetOutput().GetScalarRange();
>>             min_grey = (long)scalarrange[0];
>>             max_grey = (long)scalarrange[1];
>>             long size = (long)(scalarrange[1] - scalarrange[0]);
>>             vtkImageAccumulate histogram = vtkImageAccumulate.New();
>>             histogram.SetInputConnection(extract.GetOutputPort());
>>             histogram.SetComponentExtent((int)min_grey, (int)max_grey,
>> 0, 0, 0, 0);
>>             histogram.SetComponentOrigin(0, 0, 0);
>>             histogram.SetComponentSpacing(1, 0, 0);
>>             histogram.SetIgnoreZero(1);
>>             histogram.Update();
>>             vtkLongArray count = vtkLongArray.New();
>>             count.SetNumberOfComponents(1);
>>             count.SetNumberOfTuples(size);
>>             IntPtr value = histogram.GetOutput().GetScalarPointer();
>>             string scalartype = histogram.GetOutput().GetScala
>> rTypeAsString();
>>             int s = histogram.GetOutput().GetScalarSize();
>>             long[] managedValArray = new long[size];
>>             Marshal.Copy(value, managedValArray, 0,
>> managedValArray.Length);
>>             for(int i=0; i<managedValArray.Length; i++)
>>             {
>>                 count.SetTuple1(i, managedValArray[i]);
>>             }
>>             return count;
>> }
>>
>> The images of my and MIMICS are attached.
>>
>> Does any guys know that?
>>
>> Thanks
>> Liu Peng
>>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160814/068d8cf3/attachment.html>


More information about the vtkusers mailing list