[ITK-users] Anti-alias filter

Bill Lorensen bill.lorensen at gmail.com
Mon Aug 11 16:17:10 EDT 2014


Paraview should do the right thing.

On Mon, Aug 11, 2014 at 3:38 PM, Tobias Gass <gass at vision.ee.ethz.ch> wrote:
> 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
>
>



-- 
Unpaid intern in BillsBasement at noware dot com


More information about the Insight-users mailing list