[ITK] [ITK-users] Anti-alias filter
Tobias Gass
gass at vision.ee.ethz.ch
Mon Aug 11 15:38:45 EDT 2014
I will try that tomorrow morning (living in GMT+1). I used paraview to
extract the isosurface, but also looked at the output of the AA-filter
directly (which looked fuzzy). I can also post an image of that tomorrow.
Thanks for your help!
Tobias
2014-08-11 21:22 GMT+02:00 Bill Lorensen <bill.lorensen at gmail.com>:
> How are you extracting the final isosurface?
>
> On Mon, Aug 11, 2014 at 3:22 PM, Bill Lorensen <bill.lorensen at gmail.com>
> wrote:
> > If you change
> > typedef short PixelType;
> > to
> > typedef double PixelType;
> >
> > do the results change.
> >
> >
> > On Mon, Aug 11, 2014 at 2:47 PM, Tobias Gass <gass at vision.ee.ethz.ch>
> wrote:
> >>
> >>> 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
> >>
> >>
> >
> >
> >
> > --
> > Unpaid intern in BillsBasement at noware dot com
>
>
>
> --
> Unpaid intern in BillsBasement at noware dot com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/community/attachments/20140811/89706249/attachment-0002.html>
-------------- next part --------------
_____________________________________
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
More information about the Community
mailing list