Not sure if this went through, sorry if two show up.<br><br>---------- Forwarded message ----------<br><span class="gmail_quote">From: <b class="gmail_sendername">dave</b> &lt;<a href="mailto:common8@gmail.com">common8@gmail.com
</a>&gt;<br>Date: Aug 6, 2007 3:08 PM<br>Subject: Re: Getting started with a neighborhood operator<br>To: <a href="mailto:insight-users@itk.org">insight-users@itk.org</a><br><br></span><span style="font-family: courier new,monospace;">
Hello again<br><br>To
be more specific, I don&#39;t know how to grab the current neighborhood as
an image from the NeighborhoodIterator.&nbsp; My code is below.&nbsp;&nbsp;The problem
I am having is that the texture calculator keeps returning the same
feature values (energy, entropy) for all supposed neighborhoods.&nbsp; If I
use different input image files, the feature values are different, so
it does seem that the calculator is getting something from the file,
but the &quot;block&quot; doesn&#39;t seem to update after the first iteration.&nbsp; Do I
need to actually take the neighborhood pixel values, one by one, and
place them in my temp image each time? (I&#39;m hoping no since the reason
I&#39;m using ITK is so I can have generalized code)
<br><br>Again, thanks for any help someone can provide<br><br><br><br>#if defined(_MSC_VER)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">#pragma warning ( disable : 4786 )
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">#endif</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

#include &quot;itkImageFileReader.h&quot;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">#include &quot;itkNeighborhoodIterator.h&quot;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">#include &quot;itkScalarImageToGreyLevelCooccurrenceMatrixGenerator.h&quot;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

#include &quot;itkGreyLevelCooccurrenceMatrixTextureCoefficientsCalculator.h&quot;</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">int main( int argc, char * argv [] )</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">{</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; if( argc &lt; 2 )</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; {</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; &quot;Usage: &quot; &lt;&lt; std::endl;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; argv[0];
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; &quot; inputScalarImage&quot; &lt;&lt; std::endl;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; return EXIT_FAILURE;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; }</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; const char * inputImageFileName = argv[1];</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; typedef char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InputPixelType;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; const unsigned int&nbsp;&nbsp;&nbsp; Dimension = 2;
</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; typedef itk::Image&lt;InputPixelType, Dimension &gt; InputImageType;
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; typedef itk::ImageFileReader&lt; InputImageType &gt; ReaderType;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; typedef itk::NeighborhoodIterator&lt; InputImageType &gt; NeighborhoodIteratorType;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

&nbsp; typedef itk::Statistics::ScalarImageToGreyLevelCooccurrenceMatrixGenerator&lt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InputImageType&gt; GLCMGenType;
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; typedef itk::Statistics::GreyLevelCooccurrenceMatrixTextureCoefficientsCalculator&lt;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GLCMGenType::HistogramType &gt; TexCalcType;&nbsp; </span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

&nbsp; //&nbsp; Read input image</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; ReaderType::Pointer reader = ReaderType::New();</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; reader-&gt;SetFileName( inputImageFileName );</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; try</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; {</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; reader-&gt;Update();</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; }</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; catch( itk::ExceptionObject &amp; err )</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; {</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; &quot;ExceptionObject caught !&quot; &lt;&lt; std::endl;
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; err &lt;&lt; std::endl;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

&nbsp;&nbsp;&nbsp; return EXIT_FAILURE;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; }</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; //&nbsp; Set up neighborhood iterator and the temp output image, &quot;block&quot;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

&nbsp; NeighborhoodIteratorType::RadiusType radius;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; radius.Fill(1);</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; NeighborhoodIteratorType it( radius, reader-&gt;GetOutput(),</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader-&gt;GetOutput()-&gt;GetRequestedRegion() );
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; InputImageType::Pointer block = InputImageType::New();</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

&nbsp; block-&gt;SetRegions( it.GetRegion());</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; block-&gt;Allocate();</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; block-&gt;Print( std::cout );</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

&nbsp; //&nbsp; Set up GLCM</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; GLCMGenType::Pointer glcm = GLCMGenType::New();</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; glcm-&gt;SetInput( block );</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; InputImageType::OffsetType offset = {1,1};
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; glcm-&gt;SetOffset( offset );&nbsp; </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

&nbsp; glcm-&gt;Compute();</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; //&nbsp; Set up texture calculator</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; GLCMGenType::HistogramType::Pointer hist = glcm-&gt;GetOutput();</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

&nbsp; TexCalcType::Pointer texCalc = TexCalcType::New();</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; texCalc-&gt;SetHistogram( hist );</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; for (it.GoToBegin() ; !it.IsAtEnd(); ++it)</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; {</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; //&nbsp; Update GLCM
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; try</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glcm-&gt;Compute();</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; catch( itk::ExceptionObject &amp; err )</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; &quot;ExceptionObject caught !&quot; &lt;&lt; std::endl;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; err &lt;&lt; std::endl;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return EXIT_FAILURE;
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; // Calculate Textural Information from GLCM</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; try</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; texCalc-&gt;Compute();</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; catch( itk::ExceptionObject &amp; err )</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; &quot;ExceptionObject caught !&quot; &lt;&lt; std::endl;
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; err &lt;&lt; std::endl;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return EXIT_FAILURE;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; //&nbsp; Output (testing)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;Center Pixel Index = &quot; &lt;&lt; it.GetIndex() &lt;&lt; std::endl;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; InputImageType::PixelType value = 
it.GetCenterPixel();</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;&nbsp;&nbsp; Center Pixel value = &quot; &lt;&lt; value &lt;&lt; std::endl;</span>

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;&nbsp;&nbsp; Energy = &quot; &lt;&lt; texCalc-&gt;GetEnergy() &lt;&lt; std::endl;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;&nbsp;&nbsp; Entropy = &quot; &lt;&lt; texCalc-&gt;GetEntropy() &lt;&lt; std::endl;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">

&nbsp;&nbsp;&nbsp; }</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; return EXIT_SUCCESS;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">}</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">On 8/6/07, dave &lt;<a href="mailto:common8@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">common8@gmail.com</a>&gt; wrote:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt;
I am trying to use a neighborhood operator.&nbsp;&nbsp;I would like to extract a
small (say 3x3 or 5x5) region, and then pass the output image to the
ScalarImageToGreyLevelCooccurr</span><span style="font-family: courier new,monospace;">
enceMatrixGenerator for textural feature extraction. Then, increment the iterator and repeat the process. </span><div><span class="e" id="q_1143c94801a5a084_1"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">
&gt; </span>
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt;
Looking at the software guide and the dox, I see that the
NeighborhoodIterator has functions for accessing individual pixel
values, but how do I setup a small output image that can be updated and
used at each iteration? I suppose what I really want to do is just feed
the iterator &quot;output image&quot; to the GLCMGenerator but I can&#39;t seem to
find the correct way to do it. </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">
&gt; Forgive me if this is something really simple, and thanks
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; Dave</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; 
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt;&nbsp;&nbsp;</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">
</span></div>