Hi Julien,<br><br>Thanks for the prompt fix. But I had a problem to build the application. I got an error msg below. I am using Visual Studio 2005 on WinXP Pro SP2.<br><br>Thanks!<br>Kurt Zhao<br><br>e:\work\insight\code\basicfilters\itkSpatialObjectToImageStatisticsCalculator.txx(126) : error C2440: 'static_cast' : cannot convert from 'itk::SmartPointer&lt;TObjectType&gt;' to 'MaskSOType *'<br>        with<br>        [<br>            TObjectType=itk::EllipseSpatialObject&lt;3&gt;<br>        ]<br>        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called<br>        e:\work\insight\code\basicfilters\itkSpatialObjectToImageStatisticsCalculator.txx(95) : while compiling class template member function 'void itk::SpatialObjectToImageStatisticsCalculator&lt;TInputImage,TInputSpatialObject&gt;::Update(void)'<br>        with<br>        [<br>            TInputImage=ImageType,<br>            TInputSpatialObject=EllipseType<br>        ]<br>        ..\..\nirl\LesionSampler\main.cxx(163) : see reference to class template instantiation 'itk::SpatialObjectToImageStatisticsCalculator&lt;TInputImage,TInputSpatialObject&gt;' being compiled<br>        with<br>        [<br>            TInputImage=ImageType,<br>            TInputSpatialObject=EllipseType<br>        ]<br><br><br>&gt; <br>&gt; Hi Kurt,<br><br>Thanks for the report.<br>The problem was that the MaskImageSpatialObject can be sparse, therefore<br>the Flood Filled iterator could not work in this case. I've put a fix in<br>the cvs repository.<br><br>Let me know if you still have any issues with this calculator,<br><br>Julien<br>&gt; kurt wrote:<br>&gt; &gt; Hello all,<br>&gt; &gt; <br>&gt; &gt; I'd like to compute the mean and standard deviation of a part of an image.<br>&gt; &gt; That part is described by an ImageMaskSpatialObject.<br>&gt; &gt; <br>&gt; &gt; The following program is what I came up with, but it behaves strangely.<br>&gt; &gt; the output is<br>&gt; &gt; <br>&gt; &gt; Sample mean = [-1.#IND]<br>&gt; &gt; Sample covariance = -0<br>&gt; &gt; <br>&gt; &gt; I think probably something wrong with the iterator, because<br>&gt; &gt; m_NumberOfPixels: 0<br>&gt; &gt; <br>&gt; &gt; Also, the calculator worked fine if I use a ellipse as an input.<br>&gt; &gt; <br>&gt; &gt; Any help/ideas are much appreciated, here is my code, the data is <br>&gt; &gt; available at http://www.duke.edu/~kurtzhao/data.zip:<br>&gt; &gt; <br>&gt; &gt; int TestSampler( )<br>&gt; &gt; {<br>&gt; &gt; typedef double PixelType ;<br>&gt; &gt; typedef unsigned char OverlayPixelType ;<br>&gt; &gt; typedef itk::Image &lt; PixelType, 3 &gt; ImageType;<br>&gt; &gt; typedef itk::Image &lt; OverlayPixelType, 3 &gt; OverlayType;<br>&gt; &gt; <br>&gt; &gt; typedef itk::ImageFileReader &lt; ImageType &gt; ImageReaderType;<br>&gt; &gt; ImageReaderType::Pointer imageReader = ImageReaderType::New();<br>&gt; &gt; imageReader -&gt; SetFileName( &quot;image.mhd&quot; ) ;<br>&gt; &gt; try<br>&gt; &gt; {<br>&gt; &gt; imageReader -&gt; Update();<br>&gt; &gt; }<br>&gt; &gt; catch( ... )<br>&gt; &gt; {<br>&gt; &gt; std::cout &lt;&lt; &quot;Problems reading image file &quot; &lt;&lt;<br>&gt; &gt; imageReader-&gt; GetFileName ( ) &lt;&lt; std::endl;<br>&gt; &gt; return EXIT_FAILURE ;<br>&gt; &gt; }<br>&gt; &gt; <br>&gt; &gt; typedef itk::ImageFileReader &lt; OverlayType &gt; OverlayReaderType;<br>&gt; &gt; OverlayReaderType::Pointer overlayReader = OverlayReaderType::New();<br>&gt; &gt; overlayReader -&gt; SetFileName( &quot;overlay.mhd&quot; ) ;<br>&gt; &gt; try<br>&gt; &gt; {<br>&gt; &gt; overlayReader -&gt; Update();<br>&gt; &gt; }<br>&gt; &gt; catch( ... )<br>&gt; &gt; {<br>&gt; &gt; std::cout &lt;&lt; &quot;Problems reading overlay file &quot; &lt;&lt;<br>&gt; &gt; overlayReader-&gt; GetFileName ( ) &lt;&lt; std::endl;<br>&gt; &gt; return EXIT_FAILURE;<br>&gt; &gt; }<br>&gt; &gt; <br>&gt; &gt; ImageType::Pointer image = imageReader -&gt; GetOutput ( ) ;<br>&gt; &gt; <br>&gt; &gt; OverlayType::Pointer overlay = overlayReader -&gt; GetOutput ( ) ;<br>&gt; &gt; <br>&gt; &gt; ImageType::IndexType indexInside ;<br>&gt; &gt; indexInside [ 0 ] = 140 ;<br>&gt; &gt; indexInside [ 1 ] = 122 ;<br>&gt; &gt; indexInside [ 2 ] = 24 ;<br>&gt; &gt; <br>&gt; &gt; typedef itk::ImageMaskSpatialObject&lt;3&gt; ImageMaskSpatialObject;<br>&gt; &gt; ImageMaskSpatialObject::Pointer maskSO = ImageMaskSpatialObject::New();<br>&gt; &gt; maskSO-&gt;SetImage( overlay );<br>&gt; &gt; //maskSO -&gt; Print ( std::cout ) ;<br>&gt; &gt; ImageMaskSpatialObject::PointType inside ;<br>&gt; &gt; ImageMaskSpatialObject::PointType outside ;<br>&gt; &gt; for ( int i = 0 ; i &lt; 3 ; i ++)<br>&gt; &gt; {<br>&gt; &gt; inside [ i ] = indexInside [ i ] *<br>&gt; &gt; image -&gt; GetSpacing ( ) [ i ] ;<br>&gt; &gt; }<br>&gt; &gt; outside [ 0 ] = 197 ;<br>&gt; &gt; outside [ 1 ] = 65 ;<br>&gt; &gt; outside [ 2 ] = 14 ;<br>&gt; &gt; std::cout &lt;&lt; &quot;Is my point &quot; &lt;&lt; indexInside &lt;&lt; &quot; inside my mask image? &quot;<br>&gt; &gt; &lt;&lt; (int ) overlay -&gt; GetPixel ( indexInside ) &lt;&lt; std::endl;<br>&gt; &gt; std::cout &lt;&lt; &quot;Is my point &quot; &lt;&lt; inside &lt;&lt; &quot; inside my mask? &quot;<br>&gt; &gt; &lt;&lt; maskSO-&gt;IsInside(inside) &lt;&lt; std::endl;<br>&gt; &gt; std::cout &lt;&lt; &quot;Is my point &quot; &lt;&lt; outside &lt;&lt; &quot; outside my mask? &quot;<br>&gt; &gt; &lt;&lt; !maskSO-&gt;IsInside(outside) &lt;&lt; std::endl;<br>&gt; &gt; <br>&gt; &gt; <br>&gt; &gt; typedef itk::SpatialObjectToImageStatisticsCalculator&lt;<br>&gt; &gt; ImageType, ImageMaskSpatialObject&gt; CalculatorType;<br>&gt; &gt; CalculatorType::Pointer calculator = CalculatorType::New();<br>&gt; &gt; calculator-&gt;SetImage(image);<br>&gt; &gt; calculator-&gt;SetSpatialObject( maskSO );<br>&gt; &gt; calculator-&gt;Update();<br>&gt; &gt; calculator-&gt;Print ( std::cout );<br>&gt; &gt; std::cout &lt;&lt; &quot;Sample mean = &quot; &lt;&lt; calculator-&gt;GetMean() &lt;&lt; std::endl ;<br>&gt; &gt; std::cout &lt;&lt; &quot;Sample covariance = &quot; &lt;&lt; calculator-&gt;GetCovarianceMatrix();<br>&gt; &gt; return EXIT_SUCCESS ;<br>&gt; &gt; }<br>&gt; &gt; int main(int argc, char **argv)<br>&gt; &gt; {<br>&gt; &gt; //itkEllipseBoundaryToImageFilterTest ( ) ;<br>&gt; &gt; TestSampler ( ) ;<br>&gt; &gt; <br>&gt; &gt; return 1 ;<br>&gt; &gt; }<br>&gt; &gt; <br>&gt; &gt; Best Regards<br>&gt; &gt; Kurt Zhao<br>&gt; &gt; <br>&gt; &gt; <br>&gt; &gt; <br>&gt; &gt; <br>&gt; &gt; <br>&gt; &gt; <br>&gt; &gt; 你 不 想 试 试 今 夏 最 “酷” 的 邮 箱 吗 ?<br>&gt; &gt; 蕴 涵 中 华 传 统 文 化 于 世 界 一 流 科 技 之 中,创 新 Ajax 技 术, <br>&gt; &gt; 126 “D 计 划”火 热 体 验 中 ! &lt;http://www.126.com/&gt;<br>&gt; &gt; <br>&gt; &gt; <br>&gt; &gt; ------------------------------------------------------------------------<br>&gt; &gt; <br>&gt; &gt; _______________________________________________<br>&gt; &gt; Insight-users mailing list<br>&gt; &gt; Insight-users@itk.org<br>&gt; &gt; http://www.itk.org/mailman/listinfo/insight-users<br>&gt; <br>&gt; <br><!-- footer --><br><br><br><br><br><div style="border-bottom:1px solid #999"></div><br>

        <font color="black" style="font-size:14.8px">你 不 想 试 试 今 夏 最 “酷” 的 邮 箱 吗 ?</font>
        <br>
         <a href="http://www.126.com/" target="_blank" style="font-size:13px;line-height:160%;color:blue">蕴 涵 中 华 传 统 文 化 于 世 界 一 流 科 技 之 中,创 新 Ajax 技 术,126 “D 计 划”火 热 体 验 中 !
</a>