There is a convenience class in the Review directory that is derived from this contribution called itk::BinaryShapeOpeningImageFilter. This includes all of the labelling and conversion to and from label maps. You just need to call the SetAttribute and SetForegroundValue appropriately. It should work fine for 3D. If you look inside that class you should also find the standard combination of steps you need to go through to use the LabelMap filters.<br>
<br><div class="gmail_quote">On Wed, Mar 30, 2011 at 9:09 PM, Ella Maria Kadas <span dir="ltr">&lt;<a href="mailto:ella_kadas@yahoo.com">ella_kadas@yahoo.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<table cellspacing="0" cellpadding="0" border="0"><tbody><tr><td valign="top" style="font:inherit">Hi all,<div><br></div><div>    I am trying to remove some objects from a 3D image that have a volume lower then a specific value.</div>
<div>   I tried to use the <span style="color:rgb(26, 26, 24)"><font face="&#39;times new roman&#39;, &#39;new york&#39;, times, serif"><span style="font-size:small">Label object representation and manipulation with ITK that </span></font></span><span style="font-family:Helvetica;font-size:small;color:rgb(26, 26, 24)">Gae ̈tan Lehmann</span></div>
<div><span style="font-family:Helvetica;font-size:small;color:rgb(26, 26, 24)">implemented but i still don&#39;t know what that attribute parameter should look like. (in the python example it looks a s it would be a
 char </span></div><div><span style="font-family:Helvetica;font-size:small;color:rgb(26, 26, 24)"></span><span style="font-family:Courier;color:rgb(26, 26, 24)"><span style="font-size:small">size = itk.ShapeOpeningLabelMapFilter[LabelMapType].New(stats,Attribute=’Size’, Lambda=100</span></span><span style="font-family:Courier;font-size:9px;color:rgb(26, 26, 24)">) </span></div>
<div><span style="font-family:Helvetica;font-size:small;color:rgb(26, 26, 24)"> I want to use the ShapeLabelObject, and it&#39;s attributes to do a LabelShapeOpeningFilter.</span></div><div><span style="font-family:Helvetica;font-size:small;color:rgb(26, 26, 24)"> As i was getting no result i tried to do it in 2D first.</span></div>
<div><span style="font-family:Helvetica;font-size:small;color:rgb(26, 26, 24)"> This is my code:</span></div><div><span style="font-family:Helvetica;font-size:small;color:rgb(26, 26, 24)">First i use the ConnectedComponentImageFilter, then RelabelComponentImageFilter and create a ShapeLabelMap from the relabel&#39;s output.</span></div>
<div><span style="font-family:Helvetica;font-size:small;color:rgb(26, 26, 24)"><br></span></div><div><span style="font-family:Helvetica;font-size:small;color:rgb(26, 26, 24)"><p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px">
<font color="#000000">typedef unsigned long LabelType;</font></p>
<p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font color="#000000">  typedef itk::ShapeLabelObject&lt; LabelType, dim &gt; LabelObjectType;</font></p>
<p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font color="#000000">  typedef itk::LabelMap&lt; LabelObjectType &gt; LabelMapType;</font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;min-height:13.0px"><font color="#000000"><br></font></p>
<p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font color="#000000"><br></font></p>
<p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font color="#000000">  typedef itk::LabelImageToShapeLabelMapFilter&lt; LabelImageType, LabelMapType &gt; ConverterType;</font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><font color="#000000">  ConverterType::Pointer converter = ConverterType::New();</font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><font color="#000000">  converter-&gt;SetInput( relabel-&gt;GetOutput() );</font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><font color="#000000">  converter-&gt;Update();</font></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><span style="font-family:Helvetica;font-size:small"></span></p>
<p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;min-height:13px">!!!! Why does it not work if i use this part of code from the journal<span style="white-space:pre-wrap">        </span></p><p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;min-height:13px">
<span style="white-space:pre-wrap">        </span>/*</p><p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;min-height:13px"></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:10.0px Times;color:#1a1a18">a<span style="font-size:small">nd valuate the attributes with the dedicated filter: ShapeLabelMapFilter</span></p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:9.2px Courier;color:#1a1a18"><span style="font-size:small">typedef itk::ShapeLabelMapFilter&lt; LabelMapType &gt; ShapeFilterType; ShapeFilterType::Pointer shape = ShapeFilterType::New(); shape-&gt;SetInput( converter-&gt;GetOutput() );</span></p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:10.0px Times;color:#1a1a18"><span style="font-size:small">update the shape filter, so its output will be up to date</span></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:9.2px Courier;color:#1a1a18"><span style="font-size:small">shape-&gt;Update();</span></p><p></p><p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;min-height:13px">
*/</p></span><p></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><br></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo">  <font color="#000000">LabelMapType::Pointer labelMap = converter-&gt;GetOutput();</font></p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><font color="#000000">std::cout&lt;&lt;&quot;nr of label objects&quot;&lt;&lt;labelMap-&gt;GetNumberOfLabelObjects()&lt;&lt;std::endl;</font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;min-height:13.0px"><font color="#000000"><br></font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><font color="#000000">  for( unsigned int label=1; label&lt;=labelMap-&gt;GetNumberOfLabelObjects(); label++ )</font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><font color="#000000">    {</font></p>
<p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font color="#000000">    </font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><font color="#000000">    const LabelObjectType * labelObject = labelMap-&gt;GetLabelObject( label );</font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><font color="#000000">    std::cout &lt;&lt; label &lt;&lt; &quot;\t&quot; &lt;&lt; labelObject-&gt;GetPhysicalSize() &lt;&lt; &quot;\t&quot; &lt;&lt; labelObject-&gt;GetCentroid() &lt;&lt; std::endl;</font></p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><font color="#000000">    }</font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;min-height:13.0px"><font color="#000000"><br></font></p>
<p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><span style="white-space:pre-wrap"><font color="#000000">        </font></span><font color="#000000">typedef itk::LabelShapeOpeningImageFilter&lt; LabelImageType &gt; LabelOpeningType;</font></p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><span style="white-space:pre-wrap"><font color="#000000">        </font></span><font color="#000000">LabelOpeningType::Pointer opening = LabelOpeningType::New();</font></p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><span style="white-space:pre-wrap"><font color="#000000">        </font></span><font color="#000000">opening-&gt;SetInput( relabel-&gt;GetOutput());</font></p>
<p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><span style="white-space:pre-wrap"><font color="#000000">        </font></span><font color="#000000">opening-&gt;SetBackgroundValue(0);</font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><span style="white-space:pre-wrap"><font color="#000000">        </font></span><font color="#000000">opening-&gt;SetLambda( 100 );</font></p>
<p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><span style="white-space:pre-wrap"><font color="#000000">        </font></span><font color="#000000">opening-&gt;SetReverseOrdering( false );</font></p>
<p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font color="#000000">//NO IDEA About the Attribute</font></p><p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font color="#000000">//I thought it should be the labelMap-&gt;Size()) should be as attribute</font></p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><span style="white-space:pre-wrap"><font color="#000000">        </font></span><font color="#000000">opening-&gt;SetAttribute(&quot;PERIMETER&quot;);</font></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo"><span style="white-space:pre-wrap"><font color="#000000">        </font></span><font color="#000000">itk::SimpleFilterWatcher watcher(opening, &quot;filter&quot;);</font></p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;min-height:13.0px"><span style="white-space:pre-wrap"><font color="#000000">        </font></span></p><p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;min-height:13.0px">
<span style="white-space:pre-wrap">T</span>hen i would like to get back the binary image and see it but i can&#39;t get the proper image types as input to LabelMapToLabelIamgeFilter....So the commented part is not working</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;min-height:13.0px"><br></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;color:#06830e"><span style="color:#000000"><span style="white-space:pre-wrap">        </span></span>/*typedef itk::LabelMapToLabelImageFilter&lt; LabelImageType, LabelImageType &gt; L2IType; </p>

<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;color:#06830e"><span style="white-space:pre-wrap">        </span>L2IType::Pointer l2i = L2IType::New(); </p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;color:#06830e"><span style="white-space:pre-wrap">        </span>l2i-&gt;SetInput( opening-&gt;GetOutput() );</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;color:#06830e;min-height:13.0px"><span style="white-space:pre-wrap">        </span></p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;color:#06830e"><span style="white-space:pre-wrap">        </span>typedef itk::ImageFileWriter&lt; LabelImageType &gt; WriterType;</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;color:#06830e"><span style="white-space:pre-wrap">        </span>WriterType::Pointer writer = WriterType::New();</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;color:#06830e"><span style="white-space:pre-wrap">        </span>writer-&gt;SetInput( l2i-&gt;GetOutput() );</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;color:#06830e"><span style="white-space:pre-wrap">        </span>writer-&gt;SetFileName( &quot;/Users/ellaK/Documents/Morphology/Opening.gipl&quot;);</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;color:#06830e"><span style="white-space:pre-wrap">        </span>writer-&gt;Update();*/</p>
<p style="margin:0.0px 0.0px 0.0px 0.0px;font:11.0px Menlo;color:#3d2380"><span style="color:#000000"><span style="white-space:pre-wrap">        </span></span><span style="color:#6f41a8">s</span><font color="#000000">td::getchar();</font></p>
<div><span style="color:#000000"><br></span></div><div><span style="color:#000000"><br></span></div><div><span style="color:#000000"><br></span></div><div><span style="color:#000000">Maybe i am doing this the wrong way, and i can&#39;t use it for 3D images.</span></div>
<div><span style="color:#000000">If anybody already already worked with this filters please give me a hint to what i am doing wrong.</span></div><div><span style="color:#000000">Thanks,</span></div><div><span style="color:#000000">   Ella</span></div>
</div></td></tr></tbody></table><br>_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
<br></blockquote></div><br>