<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 Luis</FONT></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"><?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>I chose 4096 because the image bit depth is 12 and I want to have precise histogram. I did what you said and the result is:</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>Min=0;</FONT></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>Max=65535;</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>Via this code:</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; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">typedef</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> itk::Image&lt;<SPAN style="COLOR: blue">unsigned</SPAN> <SPAN style="COLOR: blue">short</SPAN>, 2 &gt; ImageType;<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="COLOR: blue">typedef</SPAN> itk::ImageFileReader&lt; ImageType &gt; ReaderType;<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>ReaderType::Pointer reader = ReaderType::New();<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>reader-&gt;SetFileName( <SPAN style="COLOR: maroon">"IM000075.dcm"</SPAN> );<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="COLOR: blue">try<o:p></o:p></SPAN></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>reader-&gt;Update();<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="COLOR: blue">catch</SPAN>( itk::ExceptionObject &amp; excp )<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>std::cerr &lt;&lt; <SPAN style="COLOR: maroon">"Problem reading image file : "</SPAN> &lt;&lt; <SPAN style="COLOR: maroon">"IM000075.dcm"</SPAN> &lt;&lt; std::endl;<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>std::cerr &lt;&lt; excp &lt;&lt; std::endl;<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> -1;<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="COLOR: blue">typedef</SPAN><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>itk::MinimumMaximumImageCalculator&lt; ImageType &gt; MinimumMaximumCalculatorType;<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>MinimumMaximumCalculatorType::Pointer calculator = MinimumMaximumCalculatorType::New();<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>calculator-&gt;SetImage( reader-&gt;GetOutput() );<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>calculator-&gt;ComputeMaximum();<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="COLOR: blue">const</SPAN> <SPAN style="COLOR: blue">unsigned</SPAN> <SPAN style="COLOR: blue">int</SPAN> maximumValue = calculator-&gt;GetMaximum();<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>calculator-&gt;ComputeMinimum();<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="COLOR: blue">const</SPAN> <SPAN style="COLOR: blue">unsigned</SPAN> <SPAN style="COLOR: blue">int</SPAN> minimumValue = calculator-&gt;GetMinimum();<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>std::cout &lt;&lt; <SPAN style="COLOR: maroon">"min = "</SPAN> &lt;&lt; minimumValue &lt;&lt; std::endl;<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>std::cout &lt;&lt; <SPAN style="COLOR: maroon">"max = "</SPAN> &lt;&lt; maximumValue &lt;&lt; std::endl;<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Sleep(5000);</SPAN></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>As you said there may be a rescaling (I donĒt want that) but why total sum of pixels is different from total sum of frequencies?</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>In MATLAB image min=0; and max=2340;</FONT></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><BR>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>--- On <B>Wed, 9/10/08, Luis Ibanez <I>&lt;luis.ibanez@kitware.com&gt;</I></B> wrote:<BR></DIV>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: rgb(16,16,255) 2px solid">From: Luis Ibanez &lt;luis.ibanez@kitware.com&gt;<BR>Subject: Re: [Insight-users] need help image histogram<BR>To: hn_6112@yahoo.com<BR>Cc: insight-users@itk.org<BR>Date: Wednesday, September 10, 2008, 11:04 PM<BR><BR><PRE>Hi Hossein,


    Why are you choosing "4096" as the maximum value ?


Can you please run the MaximumMinimumImageCalculator in your
image and post back to the list the maximum and minimum values
that you get ?


    It is unlikely that 4096 is actually the maximum value.


You may not be considering the fact that the pixel intensities
may be linearly rescaled by the slope and intercept values
indicated in the DICOM header.


Please let us know what your find,


    Thanks


       Luis


-------------------
hossein nazem wrote:
&gt; 
&gt;  
&gt; 
&gt; Dear Luis
&gt; 
&gt; Hi,
&gt; 
&gt;  
&gt; 
&gt; Thank you for your consideration. It seems that a mapping take place 
&gt; somewhere and convert data from uint16 to unit8.
&gt; 
&gt; These are my parameters:
&gt; 
&gt;  
&gt; 
&gt;   histogramGenerator-&gt;SetNumberOfBins( 4096 );
&gt; 
&gt;   histogramGenerator-&gt;SetMarginalScale( 1 );
&gt; 
&gt;  
&gt; 
&gt;   histogramGenerator-&gt;SetHistogramMin(  -0.5 );
&gt; 
&gt;   histogramGenerator-&gt;SetHistogramMax( 4096 );
&gt; 
&gt;  
&gt; 
&gt; I expect that I have frequency of nearly 1000 around bin no 1000 but its 
&gt; 0 and I expect that some of frequency match the total sum of pixels but 
&gt; its nearly half of the total sum.
&gt; 
&gt; I need the real histogram (0-4096).
&gt; 
&gt; And here is how I check the result for each bin (actually I use the 
&gt; examples I mentioned before):
&gt; 
&gt;  
&gt; 
&gt; std::cout &lt;&lt; histogram-&gt;GetFrequency( bin, 0 ) &lt;&lt;
std::endl;
&gt; 
&gt;  
&gt; 
&gt; And the total number of pixels must be equal to:
&gt; 
&gt;  
&gt; 
&gt; s=s+histogram-&gt;GetFrequency( bin, 0 );
&gt; 
&gt;  
&gt; 
&gt; Yours truly,
&gt; 
&gt; Hossein
&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;     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: Tuesday, September 9, 2008, 9:22 PM
&gt; 
&gt; Hi Hossein,
&gt; 
&gt; 
&gt; What values did you set up for the Max and Min of the Histogram ?
&gt; 
&gt; 
&gt;    min.Fill(   -0.5 );  ??
&gt;    max.Fill(  255.5 );  ??
&gt; 
&gt;    generator-&gt;SetHistogramMin( min );
&gt;    generator-&gt;SetHistogramMax( max );
&gt; 
&gt; 
&gt; If the total number of entries in the Histogram doesn't match the
&gt; number of pixels in the image, then it is likely that your Min and
&gt; Max setting in the histogram calculator are defining an intensity
&gt; range smaller than the actual dynamic range of your DICOM image.
&gt; 
&gt; 
&gt; Please let us know,
&gt; 
&gt; 
&gt;    Thanks
&gt; 
&gt; 
&gt;       Luis
&gt; 
&gt; 
&gt; -------------------
&gt; hossein nazem wrote:
&gt;&gt; Hi,
&gt;&gt; 
&gt;&gt; IĒm trying to extract the histogram of a dicom image. The result is 
&gt;&gt; different to what I achieve from MATLAB. There is something wrong in
itk 
&gt;&gt; because total pixels are fix and 512*512=262144 but in my code itĒs 
&gt;&gt; variable when I change the bins,  and the shape of histogram is 
&gt;&gt; different comparing with MATLAB output. I work on a 512*512 dicom
uint12 
&gt;&gt; image. I tried the Examples/Statistics/ImageHistogram1.cxx &amp; 
&gt;&gt; Examples/Statistics/ImageHistogram2.cxx.
&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; Insight-users mailing list
&gt;&gt; Insight-users@itk.org
&gt;&gt; http://www.itk.org/mailman/listinfo/insight-users
&gt; 
&gt; 
</PRE></BLOCKQUOTE></td></tr></table><br>