[ITK-users] Anti-alias filter

Tobias Gass gass at vision.ee.ethz.ch
Mon Aug 11 14:47:49 EDT 2014


> Can you post your code. The results do not look correct.


Sure. The {write,read}Image functions are just convenient wrappers for the
respective ITK tools.


#include <stdio.h>

#include <iostream>

#include "argstream.h"

#include "ImageUtils.h"

#include "itkAntiAliasBinaryImageFilter.h"

using namespace std;

using namespace itk;




int main(int argc, char ** argv)

{


 feenableexcept(FE_INVALID|FE_DIVBYZERO|FE_OVERFLOW);

    typedef  short PixelType;

    typedef double OutputPixelType;

    const unsigned int D=3;

    typedef Image<PixelType,D> ImageType;



    typedef ImageType::Pointer ImagePointerType;



    typedef Image<OutputPixelType,D> OutputImageType;

    typedef OutputImageType::Pointer OutputImagePointerType;



    argstream * as=new argstream(argc,argv);

    string inFile, outFile;

    double thresh=0.0;

    (*as) >> parameter ("in", inFile, " filename...", true);

    (*as) >> parameter ("out", outFile, " filename...", true);


    (*as) >> help();

    as->defaultErrorHandling();


    ImagePointerType img = ImageUtils<ImageType>::readImage(inFile);


    typedef itk::AntiAliasBinaryImageFilter <ImageType, OutputImageType>

        AntiAliasBinaryImageFilterType;



    AntiAliasBinaryImageFilterType::Pointer antiAliasFilter

        = AntiAliasBinaryImageFilterType::New ();

    antiAliasFilter->SetInput(img);

    antiAliasFilter->SetNumberOfIterations(5);

    antiAliasFilter->SetMaximumRMSError(0.02);


    antiAliasFilter->Update();


  // For increased code coverage.  Does nothing.

  antiAliasFilter->GetMaximumRMSError();




  antiAliasFilter->Update();


  std::cout << "Maximum RMS change value threshold was: 0.02 " << std::endl;

  std::cout << "Last RMS change value was: " <<
antiAliasFilter->GetRMSChange() << std::endl;


  std::cout<< antiAliasFilter->GetElapsedIterations() <<endl;


  std::cout<<antiAliasFilter->GetLowerBinaryValue()<<" "<<
antiAliasFilter->GetUpperBinaryValue()<<std::endl;


    OutputImagePointerType out=antiAliasFilter->GetOutput();


    ImageUtils<OutputImageType>::writeImage(outFile,out);


 return 1;

}

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.

Thanks a lot!
Tobias


>
> On Mon, Aug 11, 2014 at 12:18 PM, Tobias Gass <gass at vision.ee.ethz.ch>
> wrote:
> > Dear all,
> >
> > I'm having problems using the anti-alias filter, which I want to use in
> > order to smooth a binary segmentation volume. I'm using essentially the
> > example code from the repository, which for my input file seems to start
> > oscillating after 2 iterations, leading to weird 'pointy' artifacts on
> the
> > surface as can be seen from the attached screenshot (AA filter output is
> on
> > the left, input on the right).
> >
> > Is there any parameter to set/implement which could improve the behavior
> of
> > this filter? I'm assuming that my input is reasonable, or is this
> something
> > the filter is expected to have problems with? It is notable that such
> errors
> > seem to mainly appear in 'flat' regions of the volume, and are not
> apparent
> > in the curved shaft of the bone.
> >
> > Any help, or pointers to further resources are appreciated,
> > thanks,
> > Tobias
> >
> > _____________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Kitware offers ITK Training Courses, for more information visit:
> > http://www.kitware.com/products/protraining.php
> >
> > Please keep messages on-topic and check the ITK FAQ at:
> > http://www.itk.org/Wiki/ITK_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://public.kitware.com/mailman/listinfo/insight-users
> >
>
>
>
> --
> Unpaid intern in BillsBasement at noware dot com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20140811/52da4a1c/attachment.html>


More information about the Insight-users mailing list