From 3e8b4c661faa2c1fb5c645b00b8a9d14cf36873c Mon Sep 17 00:00:00 2001 From: Thomas Feuvrier <thomas.feuvrier@c-s.fr> Date: Fri, 10 Apr 2009 17:12:40 +0200 Subject: [PATCH] TEST: Add new testing for ChangeLabelImageFilter class. Probleme with the ITK base class, the output is false, the test failed. A ITK message will be reported. --- Testing/Code/BasicFilters/CMakeLists.txt | 21 +++- .../BasicFilters/otbBasicFiltersTests12.cxx | 2 + .../otbChangeLabelImageFilter.cxx | 99 +++++-------------- 3 files changed, 48 insertions(+), 74 deletions(-) diff --git a/Testing/Code/BasicFilters/CMakeLists.txt b/Testing/Code/BasicFilters/CMakeLists.txt index 0114e5e871..988ad59033 100644 --- a/Testing/Code/BasicFilters/CMakeLists.txt +++ b/Testing/Code/BasicFilters/CMakeLists.txt @@ -1451,7 +1451,7 @@ ADD_TEST(bfTvListSampleToHistogramListGenerator ${BASICFILTERS_TESTS11} # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ------- otbEdgeDetectorImageFilter ---------------------------- -ADD_TEST(bfTvEdgeDetectorImageFilterNew ${BASICFILTERS_TESTS12} +ADD_TEST(bfTuEdgeDetectorImageFilterNew ${BASICFILTERS_TESTS12} otbEdgeDetectorImageFilterNew ) @@ -1466,6 +1466,23 @@ ADD_TEST(bfTvEdgeDetectorImageFilter ${BASICFILTERS_TESTS12} 255 # upper threshold ) +# ------- otbChangeLabelImageFilter ---------------------------- +ADD_TEST(bfTuChangeLabelImageFilterNew ${BASICFILTERS_TESTS12} + otbChangeLabelImageFilterNew + ) + +ADD_TEST(bfTvChangeLabelImageFilter ${BASICFILTERS_TESTS12} +--compare-image ${TOL} + ${BASELINE}/bfChangeLabelImageFilter.tif + ${TEMP}/bfChangeLabelImageFilter.tif + otbChangeLabelImageFilter + ${INPUTDATA}/QB_Toulouse_Ortho_PAN.tif + # ${INPUTDATA}/poupees_sub_c1.png + ${TEMP}/bfChangeLabelImageFilter.tif + 255 # Mask value + 100 # lower threshold + 200 # upper threshold +) @@ -1662,6 +1679,8 @@ otbListSampleToHistogramListGenerator.cxx SET(BasicFilters_SRCS12 otbEdgeDetectorImageFilter.cxx otbEdgeDetectorImageFilterNew.cxx +otbChangeLabelImageFilterNew.cxx +otbChangeLabelImageFilter.cxx ) INCLUDE_DIRECTORIES("${OTBTesting_BINARY_DIR}") diff --git a/Testing/Code/BasicFilters/otbBasicFiltersTests12.cxx b/Testing/Code/BasicFilters/otbBasicFiltersTests12.cxx index 7818a2bfbe..7b2c8d9093 100644 --- a/Testing/Code/BasicFilters/otbBasicFiltersTests12.cxx +++ b/Testing/Code/BasicFilters/otbBasicFiltersTests12.cxx @@ -29,4 +29,6 @@ void RegisterTests() { REGISTER_TEST(otbEdgeDetectorImageFilter); REGISTER_TEST(otbEdgeDetectorImageFilterNew); +REGISTER_TEST(otbChangeLabelImageFilterNew); +REGISTER_TEST(otbChangeLabelImageFilter); } diff --git a/Testing/Code/BasicFilters/otbChangeLabelImageFilter.cxx b/Testing/Code/BasicFilters/otbChangeLabelImageFilter.cxx index ad1ddd47d9..1036c0a6c4 100644 --- a/Testing/Code/BasicFilters/otbChangeLabelImageFilter.cxx +++ b/Testing/Code/BasicFilters/otbChangeLabelImageFilter.cxx @@ -22,101 +22,54 @@ #include "itkRandomImageSource.h" #include "otbChangeLabelImageFilter.h" #include "itkImageRegionIteratorWithIndex.h" +#include "otbImageFileWriter.h" +#include "otbImageFileReader.h" -int otbChangeLabelImageFilterTest(int argc, char * argv[]) +int otbChangeLabelImageFilter(int argc, char * argv[]) { - const unsigned int ImageDimension = 3; - - typedef otb::Image<unsigned short, ImageDimension> InputImageType; - typedef otb::VectorImage<unsigned char, ImageDimension> OutputImageType; + const unsigned int ImageDimension = 2; + const char * inputFilename(argv[1]); + const char * outFilename(argv[2]); + typedef unsigned short PixelType; + typedef otb::Image<PixelType, ImageDimension> InputImageType; + typedef otb::VectorImage<PixelType, ImageDimension> OutputImageType; typedef InputImageType::PixelType InputPixelType; typedef OutputImageType::PixelType OutputPixelType; typedef itk::ImageRegionIteratorWithIndex<InputImageType> InputIteratorType; typedef itk::ImageRegionIteratorWithIndex<OutputImageType> OutputIteratorType; typedef itk::RandomImageSource<InputImageType> SourceType; typedef otb::ChangeLabelImageFilter<InputImageType, OutputImageType> FilterType; + typedef otb::ImageFileWriter<OutputImageType> WriterType; + typedef otb::ImageFileReader<InputImageType> ReaderType; SourceType::Pointer source = SourceType::New(); FilterType::Pointer filter = FilterType::New(); InputImageType::Pointer vectImage = InputImageType::New(); - unsigned long sizeArray[ImageDimension] = { 3,3,3 }; + WriterType::Pointer writer = WriterType::New(); + ReaderType::Pointer reader = ReaderType::New(); - InputPixelType upper = 10; - source->SetMin( itk::NumericTraits<InputPixelType>::Zero ); - source->SetMax( upper ); - source->SetSize( sizeArray ); - source->SetNumberOfThreads(1); - filter->SetNumberOfComponentsPerPixel(5); + reader->SetFileName( inputFilename ); + writer->SetFileName( outFilename ); + PixelType maskValue = static_cast<PixelType>(atoi(argv[3])); + InputPixelType lower = static_cast<PixelType>(atoi(argv[4])); + InputPixelType upper = static_cast<PixelType>(atoi(argv[5])); - // Eliminate most labels + filter->SetNumberOfComponentsPerPixel(3); OutputPixelType background; background.SetSize( filter->GetNumberOfComponentsPerPixel() ); - background.Fill(1); - InputPixelType maxRemainingLabel = 2; - for (InputPixelType i = maxRemainingLabel; i <= upper; i++) - { - filter->SetChange( i, background ); - } + background.Fill(maskValue); - filter->Print( std::cout ); - filter->SetInput( source->GetOutput() ); - - OutputImageType::Pointer outputImage = filter->GetOutput(); - - // Execute the filter - try - { - filter->Update(); - filter->SetFunctor(filter->GetFunctor()); - } - catch (...) + filter->SetChange( 0,0 ); + for (InputPixelType i = lower; i <= upper; i++) { - std::cerr << "Caught an unexpected exception. " << std::endl; - std::cerr << "Test failed. " << std::endl; - return EXIT_FAILURE; + filter->SetChange( i, background ); } - // Create an iterator for going through the image output - InputIteratorType it( source->GetOutput(), source->GetOutput()->GetRequestedRegion() ); - OutputIteratorType ot(outputImage, outputImage->GetRequestedRegion()); - - bool pass = true; - - // Check the content of the result image - std::cout << "Verification of the output " << std::endl; - - ot.GoToBegin(); - it.GoToBegin(); - while ( !ot.IsAtEnd() ) - { - const InputPixelType input = it.Get(); - const OutputPixelType output = ot.Get(); - std::cout << (double) input<<": "; - for (unsigned int j=0; j<filter->GetNumberOfComponentsPerPixel(); j++) - { - std::cout<< " " << (double)output[j]; - if ( (double)output[j] > (double)maxRemainingLabel ) - { - pass = false; - } - } - std::cout<<std::endl; - - if ( !pass ) - { - std::cerr << "Error in otbChangeLabelImageFilterTest " << std::endl; - std::cerr << " input = " << input; - std::cerr << " output = " << output; - std::cerr << std::endl; - - return EXIT_FAILURE; - } - - ++ot; - ++it; - } + filter->SetInput( reader->GetOutput() ); + writer->SetInput(filter->GetOutput()); + writer->Update(); return EXIT_SUCCESS; } -- GitLab