[ITK-users] Setting tolerance is ignored
Chr. Rossmanith
cr at neuro.ma.uni-heidelberg.de
Wed Sep 21 05:05:12 EDT 2016
Hi,
I have two images with slightly differing image origins:
InputImage Origin: [-7.9896713e+01, -7.0397179e+01, 0.0000000e+00]
InputImage_1 Origin: [-7.9896706e+01, -7.0397186e+01, 0.0000000e+00]
which are used as input for MaskImageFilter. Processing fails with the
error "Inputs do not occupy the same physical space!" and tolerance
being reported as 4.6875000e-07 even if I set it to 0.001 by
filter->SetGlobalDefaultCoordinateTolerance( 0.001 ).
If itkImageToImageFilter would call
GetGlobalDefaultCoordinateTolerance() instead of using
this->m_CoordinateTolerance in VerifyInputInformation() the user defined
tolerance is used.
Is this a bug or is the current behaviour intended?
Regards,
Christina Rossmanith
--
Dept. of Neurology
University Medicine Mannheim
University of Heidelberg
--------------------------------------------- Code
----------------------------------------------------------------------------
#include "itkImageFileReader.h"
#include "itkMaskImageFilter.h"
int main (int argc, char *argv[])
{
const unsigned int Dimension = 3;
typedef short PixelType;
typedef itk::Image< PixelType, Dimension > ImageType;
typedef itk::ImageFileReader< ImageType > ReaderType;
ReaderType::Pointer reader = ReaderType::New();
reader->SetFileName( argv[1] );
reader->Update();
ReaderType::Pointer mask = ReaderType::New();
mask->SetFileName( argv[2] );
mask->Update();
typedef itk::MaskImageFilter< ImageType, ImageType > FilterType;
FilterType::Pointer filter = FilterType::New();
filter->SetGlobalDefaultCoordinateTolerance( 0.001 );
filter->SetInput1( reader->GetOutput() );
filter->SetInput2( mask->GetOutput() );
try
{
filter->Update();
}
catch ( itk::ExceptionObject & e )
{
std::cout << "MaskImageFilter failed: " << e << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
More information about the Insight-users
mailing list