diff --git a/Modules/Filtering/ImageManipulation/test/CMakeLists.txt b/Modules/Filtering/ImageManipulation/test/CMakeLists.txt index 834a6d3da072adf5c4dbc385d46db7931132de97..17035f96f66fe1d52562e23782a123d628688b83 100644 --- a/Modules/Filtering/ImageManipulation/test/CMakeLists.txt +++ b/Modules/Filtering/ImageManipulation/test/CMakeLists.txt @@ -624,7 +624,7 @@ otb_add_test(NAME bfTvClampImageFilterTest COMMAND otbImageManipulationTestDrive ) otb_add_test(NAME bfTvClampImageFilterConversionTest COMMAND otbImageManipulationTestDriver - otbClampImageFilterConversionTest + otbClampImageFilterConversionFromRealTest ${INPUTDATA}/veryverySmallFSATSW.tif ) diff --git a/Modules/Filtering/ImageManipulation/test/otbClampImageFilter.cxx b/Modules/Filtering/ImageManipulation/test/otbClampImageFilter.cxx index fa48af6d6ec69b0451d5240647a98713a6106802..20b2a9c3fe81d8f7f813735316b07b1022a07d17 100644 --- a/Modules/Filtering/ImageManipulation/test/otbClampImageFilter.cxx +++ b/Modules/Filtering/ImageManipulation/test/otbClampImageFilter.cxx @@ -115,7 +115,7 @@ CompareImageReal( const ImageRefType::Pointer imRef , { return false; } - else if ( ref != static_cast<double>( val ) ) + else if ( static_cast<RealPixelType>( ref ) != val ) { return false; } @@ -156,11 +156,12 @@ CompareVectorReal( const ImageRefType::Pointer imRef , { return false; } - else if ( ref != static_cast<double>( val ) ) + else if ( static_cast<RealPixelType>(ref) != val ) { return false; } } + std::cout<<itRef.Get()<<std::endl; ++it; ++itRef; } @@ -190,18 +191,18 @@ CompareImageComplex( const ImageRefType::Pointer imageRef , val = it.Get(); reRef = itRef.Get()[0]; imRef = itRef.Get()[1]; - if ( ( reRef > static_cast<double>( max ) && val.real != max ) - || ( imRef > static_cast<double>( max ) && val.imag != max ) ) + if ( ( reRef > static_cast<double>( max ) && val.real() != max ) + || ( imRef > static_cast<double>( max ) && val.imag() != max ) ) { return false; } - else if ( ( reRef < static_cast<double>( min ) && val.real != min ) - || ( imRef < static_cast<double>( min ) && val.imag != min ) ) + else if ( ( reRef < static_cast<double>( min ) && val.real() != min ) + || ( imRef < static_cast<double>( min ) && val.imag() != min ) ) { return false; } - else if ( reRef != static_cast<double>( val.real ) - || imRef != static_cast<double>( val.imag ) ) + else if ( static_cast<RealType>( reRef ) != val.real() + || static_cast<RealType>( imRef ) != val.imag() ) { return false; } @@ -229,27 +230,29 @@ CompareVectorComplex( const ImageRefType::Pointer imageRef , it.GoToBegin(); unsigned int nbChanel = im->GetNumberOfComponentsPerPixel (); ComplexType val; - double reRef , imRef; + float reRef , imRef; while ( !it.IsAtEnd() ) { - for (unsigned int i = 0 ; i < nbChanel ; i++ ) { val = it.Get()[i]; reRef = itRef.Get()[ 2 * i ]; imRef = itRef.Get()[ 2 * i + 1 ]; - if ( ( reRef > static_cast<double>( max ) && val.real != max ) - || ( imRef > static_cast<double>( max ) && val.imag != max ) ) + std::cout<<it.Get()[0].real()<<" , "<<it.Get()[0].imag()<<" ; "<< + it.Get()[1].real()<<" , "<<it.Get()[1].imag()<<std::endl; + std::cout<<itRef.Get()<<std::endl; + if ( ( reRef > static_cast<double>( max ) && val.real() != max ) + || ( imRef > static_cast<double>( max ) && val.imag() != max ) ) { return false; } - else if ( ( reRef < static_cast<double>( min ) && val.real != min ) - || ( imRef < static_cast<double>( min ) && val.imag != min ) ) + else if ( ( reRef < static_cast<double>( min ) && val.real() != min ) + || ( imRef < static_cast<double>( min ) && val.imag() != min ) ) { return false; } - else if ( reRef != static_cast<double>( val.real ) - || imRef != static_cast<double>( val.imag ) ) + else if ( static_cast<RealType>( reRef ) != val.real() + || static_cast<RealType>( imRef ) != val.imag() ) { return false; } @@ -260,17 +263,27 @@ CompareVectorComplex( const ImageRefType::Pointer imageRef , return true; } -int otbClampImageFilterConversionTest(int itkNotUsed(argc), char* argv[]) +int otbClampImageFilterConversionFromRealTest(int itkNotUsed(argc), char* argv[]) { typedef otb::ImageFileReader< ImageRefType > ReaderType; ReaderType::Pointer reader ( ReaderType::New() ); reader->SetFileName( argv[1] ); reader->Update(); ImageRefType::Pointer imageRef = reader->GetOutput(); - otb::VectorImage<int>::Pointer image = - Cross < otb::VectorImage< std::complex<float> > , otb::VectorImage<int> > ( argv[1] ); - bool test = CompareVectorReal < otb::VectorImage<int> >( imageRef , image ); - if (test) + otb::VectorImage< std::complex<float>>::Pointer image1 = + Cross < otb::VectorImage< float > , otb::VectorImage<std::complex<float>> > ( argv[1] ); + bool test1 = CompareVectorComplex < otb::VectorImage<std::complex<float>> >( imageRef , image1 ); + + + otb::Image<double>::Pointer image2 = + Cross < otb::VectorImage< float > , otb::Image<double> > ( argv[1] ); + bool test2 = CompareImageReal < otb::Image<double> >( imageRef , image2 ); + + otb::Image< std::complex<float>>::Pointer image3 = + Cross < otb::VectorImage< float > , otb::Image<std::complex<float>> > ( argv[1] ); + bool test3 = CompareImageComplex < otb::Image<std::complex<float>> >( imageRef , image3 ); + + if (test1 && test2 && test3) return EXIT_SUCCESS; return 42; } diff --git a/Modules/Filtering/ImageManipulation/test/otbImageManipulationTestDriver.cxx b/Modules/Filtering/ImageManipulation/test/otbImageManipulationTestDriver.cxx index c5b59f8ef2d62eb790adf085e5c9121db5f28d4a..da2d733fb90ced66e8b741e946fd26755c486131 100644 --- a/Modules/Filtering/ImageManipulation/test/otbImageManipulationTestDriver.cxx +++ b/Modules/Filtering/ImageManipulation/test/otbImageManipulationTestDriver.cxx @@ -85,7 +85,7 @@ void RegisterTests() REGISTER_TEST(otbMultiplyByScalarImageFilterTest); REGISTER_TEST(otbClampImageFilterNew); REGISTER_TEST(otbClampImageFilterTest); - REGISTER_TEST(otbClampImageFilterConversionTest); + REGISTER_TEST(otbClampImageFilterConversionFromRealTest); REGISTER_TEST(otbConcatenateVectorImageFilter); REGISTER_TEST(otbBinaryImageMinimalBoundingRegionCalculatorNew); REGISTER_TEST(otbVectorRescaleIntensityImageFilterNew);