<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV><BR>&nbsp;</DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>Dear bill</FONT></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>Hi,</FONT></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>I checked that link and I made the change you were suggested. Something strange happened:</FONT></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>Min =4294966272 &amp; Max = 1244 and the output histogram didnąt change.</FONT></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>Yours truly,</FONT></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>Hossein</FONT></DIV>
<DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>--- On <B>Thu, 9/11/08, Bill Lorensen <I>&lt;bill.lorensen@gmail.com&gt;</I></B> wrote:<BR></DIV></DIV>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: rgb(16,16,255) 2px solid">From: Bill Lorensen &lt;bill.lorensen@gmail.com&gt;<BR>Subject: Re: [Insight-users] need help image histogram<BR>To: hn_6112@yahoo.com<BR>Cc: "Luis Ibanez" &lt;luis.ibanez@kitware.com&gt;, insight-users@itk.org<BR>Date: Thursday, September 11, 2008, 4:44 PM<BR><BR><PRE>Hossein,

Try setting the image type to:
typedef itk::Image&lt;short, 2 &gt; ImageType;

If this is CT data, the units of the measurements are usually
Hounsfield units. See http://en.wikipedia.org/wiki/Hounsfield_scale

They will range from -1000 to &gt; 400 for bone. The dicom reader
correctly applies the slope/intercept that is stored in the dicom
header.

I suspect that the MATLAB reader ignores the slope/intercept in the
header. This is not correct.

Bill


2008/9/11 hossein nazem &lt;hn_6112@yahoo.com&gt;:
&gt;
&gt;
&gt;
&gt; Dear Luis
&gt;
&gt; Hi
&gt;
&gt;
&gt;
&gt; I chose 4096 because the image bit depth is 12 and I want to have precise
&gt; histogram. I did what you said and the result is:
&gt;
&gt;
&gt;
&gt; Min=0;
&gt;
&gt; Max=65535;
&gt;
&gt;
&gt;
&gt; Via this code:
&gt;
&gt;
&gt;
&gt; typedef itk::Image&lt;unsigned short, 2 &gt; ImageType;
&gt;
&gt;
&gt;
&gt;
&gt;
&gt;   typedef itk::ImageFileReader&lt; ImageType &gt; ReaderType;
&gt;
&gt;
&gt;
&gt;   ReaderType::Pointer reader = ReaderType::New();
&gt;
&gt;
&gt;
&gt;   reader-&gt;SetFileName( "IM000075.dcm" );
&gt;
&gt;
&gt;
&gt;   try
&gt;
&gt;     {
&gt;
&gt;     reader-&gt;Update();
&gt;
&gt;     }
&gt;
&gt;   catch( itk::ExceptionObject &amp; excp )
&gt;
&gt;     {
&gt;
&gt;     std::cerr &lt;&lt; "Problem reading image file : " &lt;&lt;
"IM000075.dcm" &lt;&lt;
&gt; std::endl;
&gt;
&gt;     std::cerr &lt;&lt; excp &lt;&lt; std::endl;
&gt;
&gt;     return -1;
&gt;
&gt;     }
&gt;
&gt;   typedef  itk::MinimumMaximumImageCalculator&lt; ImageType &gt;
&gt; MinimumMaximumCalculatorType;
&gt;
&gt;   MinimumMaximumCalculatorType::Pointer calculator =
&gt; MinimumMaximumCalculatorType::New();
&gt;
&gt;   calculator-&gt;SetImage( reader-&gt;GetOutput() );
&gt;
&gt;   calculator-&gt;ComputeMaximum();
&gt;
&gt;   const unsigned int maximumValue = calculator-&gt;GetMaximum();
&gt;
&gt;   calculator-&gt;ComputeMinimum();
&gt;
&gt;   const unsigned int minimumValue = calculator-&gt;GetMinimum();
&gt;
&gt;   std::cout &lt;&lt; "min = " &lt;&lt; minimumValue &lt;&lt;
std::endl;
&gt;
&gt;   std::cout &lt;&lt; "max = " &lt;&lt; maximumValue &lt;&lt;
std::endl;
&gt;
&gt;
&gt;
&gt;   Sleep(5000);
&gt;
&gt;
&gt;
&gt; As you said there may be a rescaling (I don't want that) but why total
sum
&gt; of pixels is different from total sum of frequencies?
&gt;
&gt;
&gt;
&gt; In MATLAB image min=0; and max=2340;
&gt;
&gt; Yours truly,
&gt;
&gt; Hossein
&gt;
&gt;
&gt;
&gt; --- On Wed, 9/10/08, Luis Ibanez &lt;luis.ibanez@kitware.com&gt; wrote:
&gt;
&gt; From: Luis Ibanez &lt;luis.ibanez@kitware.com&gt;
&gt; Subject: Re: [Insight-users] need help image histogram
&gt; To: hn_6112@yahoo.com
&gt; Cc: insight-users@itk.org
&gt; Date: Wednesday, September 10, 2008, 11:04 PM
&gt;
&gt; Hi Hossein,
&gt;
&gt;
&gt;     Why are you choosing "4096" as the maximum value ?
&gt;
&gt;
&gt; Can you please run the MaximumMinimumImageCalculator in your
&gt; image and post back to the list the maximum and minimum values
&gt; that you get ?
&gt;
&gt;
&gt;     It is unlikely that 4096 is actually the maximum value.
&gt;
&gt;
&gt; You may not be considering the fact that the pixel intensities
&gt; may be linearly rescaled by the slope and intercept values
&gt; indicated in the DICOM header.
&gt;
&gt;
&gt; Please let us know what your find,
&gt;
&gt;
&gt;     Thanks
&gt;
&gt;
&gt;        Luis
&gt;
&gt;
&gt; -------------------
&gt; hossein nazem wrote:
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt; Dear Luis
&gt;&gt;
&gt;&gt; Hi,
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt; Thank you for your consideration. It seems that a mapping take place
&gt;&gt; somewhere and convert data from uint16 to unit8.
&gt;&gt;
&gt;&gt; These are my parameters:
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;   histogramGenerator-&gt;SetNumberOfBins( 4096 );
&gt;&gt;
&gt;&gt;   histogramGenerator-&gt;SetMarginalScale( 1 );
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;   histogramGenerator-&gt;SetHistogramMin(  -0.5 );
&gt;&gt;
&gt;&gt;   histogramGenerator-&gt;SetHistogramMax( 4096 );
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt; I expect that I have frequency of nearly 1000 around bin no 1000 but
its
&gt;&gt; 0 and I expect that some of frequency match the total sum of pixels
but
&gt;&gt; its nearly half of the total sum.
&gt;&gt;
&gt;&gt; I need the real histogram (0-4096).
&gt;&gt;
&gt;&gt; And here is how I check the result for each bin (actually I use the
&gt;&gt; examples I mentioned before):
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt; std::cout &lt;&lt; histogram-&gt;GetFrequency( bin, 0 ) &lt;&lt;
&gt; std::endl;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt; And the total number of pixels must be equal to:
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt; s=s+histogram-&gt;GetFrequency( bin, 0 );
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt; Yours truly,
&gt;&gt;
&gt;&gt; Hossein
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt; --- On *Tue, 9/9/08, Luis Ibanez /&lt;luis.ibanez@kitware.com&gt;/*
wrote:
&gt;&gt;
&gt;&gt;     From: Luis Ibanez &lt;luis.ibanez@kitware.com&gt;
&gt;&gt;     Subject: Re: [Insight-users] need help image histogram
&gt;&gt;     To: hn_6112@yahoo.com
&gt;&gt;     Cc: insight-users@itk.org
&gt;&gt;     Date: Tuesday, September 9, 2008, 9:22 PM
&gt;&gt;
&gt;&gt; Hi Hossein,
&gt;&gt;
&gt;&gt;
&gt;&gt; What values did you set up for the Max and Min of the Histogram ?
&gt;&gt;
&gt;&gt;
&gt;&gt;    min.Fill(   -0.5 );  ??
&gt;&gt;    max.Fill(  255.5 );  ??
&gt;&gt;
&gt;&gt;    generator-&gt;SetHistogramMin( min );
&gt;&gt;    generator-&gt;SetHistogramMax( max );
&gt;&gt;
&gt;&gt;
&gt;&gt; If the total number of entries in the Histogram doesn't match the
&gt;&gt; number of pixels in the image, then it is likely that your Min and
&gt;&gt; Max setting in the histogram calculator are defining an intensity
&gt;&gt; range smaller than the actual dynamic range of your DICOM image.
&gt;&gt;
&gt;&gt;
&gt;&gt; Please let us know,
&gt;&gt;
&gt;&gt;
&gt;&gt;    Thanks
&gt;&gt;
&gt;&gt;
&gt;&gt;       Luis
&gt;&gt;
&gt;&gt;
&gt;&gt; -------------------
&gt;&gt; hossein nazem wrote:
&gt;&gt;&gt; Hi,
&gt;&gt;&gt;
&gt;&gt;&gt; I'm trying to extract the histogram of a dicom image. The
result is
&gt;&gt;&gt; different to what I achieve from MATLAB. There is something wrong
in
&gt; itk
&gt;&gt;&gt; because total pixels are fix and 512*512=262144 but in my code
it's
&gt;&gt;&gt; variable when I change the bins,  and the shape of histogram is
&gt;&gt;&gt; different comparing with MATLAB output. I work on a 512*512 dicom
&gt; uint12
&gt;&gt;&gt; image. I tried the Examples/Statistics/ImageHistogram1.cxx &amp;
&gt;&gt;&gt; Examples/Statistics/ImageHistogram2.cxx.
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt; Yours truly,
&gt;&gt;&gt;
&gt;&gt;&gt; Hossein
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt; ------------------------------------------------------------------------
&gt;&gt;&gt;
&gt;&gt;&gt; _______________________________________________
&gt;&gt;&gt; Insight-users mailing list
&gt;&gt;&gt; Insight-users@itk.org
&gt;&gt;&gt; http://www.itk.org/mailman/listinfo/insight-users
&gt;&gt;
&gt;&gt;
&gt;
&gt;
&gt; _______________________________________________
&gt; Insight-users mailing list
&gt; Insight-users@itk.org
&gt; http://www.itk.org/mailman/listinfo/insight-users
&gt;
&gt;
</PRE></BLOCKQUOTE></td></tr></table><br>