<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Can you post your code. The results do not look correct.</blockquote><div><br></div><div>Sure. The {write,read}Image functions are just convenient wrappers for the respective ITK tools.</div><div><br></div><div><p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">
<br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">#include <stdio.h></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">#include <iostream></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">#include "argstream.h"</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">#include "ImageUtils.h"</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">#include "itkAntiAliasBinaryImageFilter.h"<br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">using namespace std;<br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">using namespace itk;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">int main(int argc, char ** argv)</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">{</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo"><span class="" style="white-space:pre">        </span>feenableexcept(FE_INVALID|FE_DIVBYZERO|FE_OVERFLOW);</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    typedef  short PixelType;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    typedef double OutputPixelType;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    const unsigned int D=3;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    typedef Image<PixelType,D> ImageType;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    typedef ImageType::Pointer ImagePointerType;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">  </p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    typedef Image<OutputPixelType,D> OutputImageType;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    typedef OutputImageType::Pointer OutputImagePointerType;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"> </p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    argstream * as=new argstream(argc,argv);</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    string inFile, outFile;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    double thresh=0.0;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    (*as) >> parameter ("in", inFile, " filename...", true);</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    (*as) >> parameter ("out", outFile, " filename...", true);</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    (*as) >> help();</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    as->defaultErrorHandling();</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    ImagePointerType img = ImageUtils<ImageType>::readImage(inFile);</p>
<p style="margin:0px;font-size:11px;font-family:Menlo"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    typedef itk::AntiAliasBinaryImageFilter <ImageType, OutputImageType></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">        AntiAliasBinaryImageFilterType;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">    </p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    AntiAliasBinaryImageFilterType::Pointer antiAliasFilter</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">        = AntiAliasBinaryImageFilterType::New ();</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    antiAliasFilter->SetInput(img);</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    antiAliasFilter->SetNumberOfIterations(5);</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    antiAliasFilter->SetMaximumRMSError(0.02);</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    antiAliasFilter->Update();</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">  // For increased code coverage.  Does nothing.</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">  antiAliasFilter->GetMaximumRMSError();</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">  antiAliasFilter->Update();</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">  std::cout << "Maximum RMS change value threshold was: 0.02 " << std::endl;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">  std::cout << "Last RMS change value was: " << antiAliasFilter->GetRMSChange() << std::endl;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">  std::cout<< antiAliasFilter->GetElapsedIterations() <<endl;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">  std::cout<<antiAliasFilter->GetLowerBinaryValue()<<" "<<    antiAliasFilter->GetUpperBinaryValue()<<std::endl;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    OutputImagePointerType out=antiAliasFilter->GetOutput();</p>
<p style="margin:0px;font-size:11px;font-family:Menlo"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo">    ImageUtils<OutputImageType>::writeImage(outFile,out);</p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo"><span class="" style="white-space:pre">        </span>return 1;</p>
<p style="margin:0px;font-size:11px;font-family:Menlo">}</p></div><div><br></div><div>I tried different values for maxIter (1,2,3,4,5,10,100,1000) and maxRMSError (0.02 0.07 0.08 0.8), and the best visual results are achieved after one iteration where RMSE changes by about 0.08. This increases for all following iterations, which have an RMSE-change of about 0.25 for all number of  iterations tested. All this is using ITK 4.5 pulled from the GIT repository a while ago, running on an intel i7 on Debian.</div>
<div><br></div><div>Thanks a lot!</div><div>Tobias</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><div class="h5">
<br>
On Mon, Aug 11, 2014 at 12:18 PM, Tobias Gass <<a href="mailto:gass@vision.ee.ethz.ch">gass@vision.ee.ethz.ch</a>> wrote:<br>
> Dear all,<br>
><br>
> I'm having problems using the anti-alias filter, which I want to use in<br>
> order to smooth a binary segmentation volume. I'm using essentially the<br>
> example code from the repository, which for my input file seems to start<br>
> oscillating after 2 iterations, leading to weird 'pointy' artifacts on the<br>
> surface as can be seen from the attached screenshot (AA filter output is on<br>
> the left, input on the right).<br>
><br>
> Is there any parameter to set/implement which could improve the behavior of<br>
> this filter? I'm assuming that my input is reasonable, or is this something<br>
> the filter is expected to have problems with? It is notable that such errors<br>
> seem to mainly appear in 'flat' regions of the volume, and are not apparent<br>
> in the curved shaft of the bone.<br>
><br>
> Any help, or pointers to further resources are appreciated,<br>
> thanks,<br>
> Tobias<br>
><br>
</div></div>> _____________________________________<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.php" target="_blank">http://www.kitware.com/products/protraining.php</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://public.kitware.com/mailman/listinfo/insight-users" target="_blank">http://public.kitware.com/mailman/listinfo/insight-users</a><br>
><br>
<span class=""><font color="#888888"><br>
<br>
<br>
--<br>
Unpaid intern in BillsBasement at noware dot com<br>
</font></span></blockquote></div><br></div></div>