[Insight-users] LaplacianImageFilter only works on float or double images?

David Doria daviddoria at gmail.com
Fri Dec 3 14:29:10 EST 2010


On Fri, Dec 3, 2010 at 2:04 PM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
> All of the edge detection filters require "float" data types. I assume
> this os because edge detection is sensitive to noise (and probably
> truncation errors).  As a test you could turn off concept checking and
> compare an unsigned char result with a float result.

Even with concept checking off, I get errors. Shouldn't it be the
user's responsibility to be aware of the truncation errors you
mentioned?

  typedef itk::Image< float,  2 >   FloatImageType;
  typedef itk::Image< unsigned char, 2 >   UnsignedCharImageType;
  typedef itk::LaplacianImageFilter<
		  UnsignedCharImageType, FloatImageType >  filterType;

/media/portable/Examples/c++/src/ITK/LaplacianImageFilter/LaplacianImageFilter.cxx:112:
  instantiated from here
/home/doriad/src/ITK/Code/BasicFilters/itkLaplacianImageFilter.txx:123:
error: no matching function for call to
‘itk::NeighborhoodOperatorImageFilter<itk::Image<unsigned char, 2u>,
itk::Image<float, 2u>,
float>::OverrideBoundaryCondition(itk::ZeroFluxNeumannBoundaryCondition<itk::Image<float,
2u> >*)’
/home/doriad/src/ITK/Code/BasicFilters/itkNeighborhoodOperatorImageFilter.h:114:
note: candidates are: void
itk::NeighborhoodOperatorImageFilter<TInputImage, TOutputImage,
TOperatorValueType>::OverrideBoundaryCondition(itk::ImageBoundaryCondition<TImage>*)
[with TInputImage = itk::Image<unsigned char, 2u>, TOutputImage =
itk::Image<float, 2u>, TOperatorValueType = float]

David


More information about the Insight-users mailing list