diff --git a/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorNew.cxx b/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorNew.cxx index d1dd9fdb390f161cc20b151ac2b0300e4cd2de2b..1ea4a91c2f385c887383712b5a00920743058097 100644 --- a/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorNew.cxx +++ b/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorNew.cxx @@ -17,18 +17,21 @@ =========================================================================*/ #include "itkExceptionObject.h" -#include "otbContinuousMinimumMaximumImageCalculator.h" + #include "otbImage.h" +#include "otbContinuousMinimumMaximumImageCalculator.h" -int otbContinuousMinimumMaximumImageCalculatorNew( int argc, char * argv[]) +int otbContinuousMinimumMaximumImageCalculatorNew(int argc, char * argv[]) { - const unsigned int Dimension = 2; - typedef unsigned char PixelType; - - typedef otb::Image<PixelType,Dimension> ImageType; - typedef otb::ContinuousMinimumMaximumImageCalculator<ImageType> ContinuousMinimumMaximumImageCalculatorType; - - // Instantiating object - ContinuousMinimumMaximumImageCalculatorType::Pointer object = ContinuousMinimumMaximumImageCalculatorType::New(); - return EXIT_SUCCESS; + const unsigned int ImageDimension = 2; + + typedef otb::Image<unsigned int, ImageDimension> InputImageType; + + typedef otb::ContinuousMinimumMaximumImageCalculator<InputImageType> FilterType; + + FilterType::Pointer filter = FilterType::New(); + + + return EXIT_SUCCESS; + } diff --git a/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorTest.cxx b/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorTest.cxx index 903c48f2e89c45f29bc5fa9d47b21df1b2b5f09c..36460c4aaa89fa65142b4347c6e900189b1f3a5d 100644 --- a/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorTest.cxx +++ b/Testing/Code/BasicFilters/otbContinuousMinimumMaximumImageCalculatorTest.cxx @@ -15,39 +15,109 @@ PURPOSE. See the above copyright notices for more information. =========================================================================*/ -#include "itkExceptionObject.h" -#include "otbContinuousMinimumMaximumImageCalculator.h" -#include "otbImageFileReader.h" + +#if defined(_MSC_VER) +#pragma warning ( disable : 4786 ) +#endif #include "otbImage.h" +#include "otbContinuousMinimumMaximumImageCalculator.h" +#include "itkSize.h" -int otbContinuousMinimumMaximumImageCalculatorTest( int argc, char * argv[]) +int +otbContinuousMinimumMaximumImageCalculatorTest(int ,char *[] ) { - const char * infname = argv[1]; - const unsigned int Dimension = 2; - typedef unsigned char PixelType; - - typedef otb::Image<PixelType,Dimension> ImageType; - typedef otb::ContinuousMinimumMaximumImageCalculator<ImageType> ContinuousMinimumMaximumImageCalculatorType; - typedef otb::ImageFileReader<ImageType> ReaderType; - - ReaderType::Pointer reader = ReaderType::New(); - reader->SetFileName(infname); - - //Tes with a small image - reader->Update(); - - ContinuousMinimumMaximumImageCalculatorType::Pointer continuous = ContinuousMinimumMaximumImageCalculatorType::New(); - continuous->SetImage(reader->GetOutput()); - //Compute values - continuous->ComputeMinimum(); - continuous->ComputeMaximum(); - continuous->Compute(); -// PB Timeout. Test provisoirement en FAILURE - -// std::cout << continuous->GetMinimum() <<std::endl; - - - - return EXIT_FAILURE; + + typedef short int PixelType; + typedef itk::Size<2> SizeType; + typedef otb::Image<PixelType, 2> ImageType; + + typedef otb::ContinuousMinimumMaximumImageCalculator<ImageType> MinMaxCalculatorType; + + /* Define the image size and physical coordinates */ + SizeType size = {{20, 20}}; + double origin [2] = { 0.0, 0.0}; + double spacing[2] = { 1, 1}; + + int flag = 0; /* Did this test program work? */ + + std::cout << "Testing Minimum and Maximum Image Calculator:\n"; + + // Allocate a simple test image + ImageType::Pointer image = ImageType::New(); + ImageType::RegionType region; + region.SetSize(size); + image->SetLargestPossibleRegion(region); + image->SetRequestedRegion(region); + image->SetBufferedRegion(region); + image->Allocate(); + + // Set origin and spacing of physical coordinates + image->SetOrigin(origin); + image->SetSpacing(spacing); + + PixelType minimum = -52; + PixelType maximum = 103; + + + // Initialize the image contents with the minimum value + itk::Index<2> index; + for (int row = 0; row <20; row++) { + index[1] = row; + for (int col = 0; col < 20; col++) { + index[0] = col; + image->SetPixel(index, minimum); + } + } + + + // Set voxel (10,10) to maximum value + index[0] = 10; + index[1] = 10; + image->SetPixel(index, maximum); + + index[0] = 10; + index[1] = 11; + image->SetPixel(index, 41); + + + // Create and initialize the calculator + MinMaxCalculatorType::Pointer calculator = MinMaxCalculatorType::New(); + calculator->SetImage( image ); + calculator->Compute(); + + // Return minimum of intensity + PixelType minimumResult = calculator->GetMinimum(); + std::cout << "The Minimum intensity value is : " << minimumResult << std::endl; + std::cout << "Its index position is : " << calculator->GetContinuousIndexOfMinimum() << std::endl; + + if(minimumResult != minimum) + { + std::cout << "Minimum Value is wrong : " << minimumResult ; + std::cout << " != " << minimum << std::endl; + flag = 1; + } + + // Return maximum of intensity + PixelType maximumResult = calculator->GetMaximum(); + std::cout << "The Maximum intensity value is : " << maximumResult << std::endl; + std::cout << "Its index position is : " << calculator->GetContinuousIndexOfMaximum() << std::endl; + + if(maximumResult != maximum) + { + std::cout << "Maximum Value is wrong : " << maximumResult ; + std::cout << " != " << maximum << std::endl; + flag = 2; + } + + + // Return results of test + if (flag != 0) { + std::cout << "*** Some tests failed" << std::endl; + return flag; } + else { + std::cout << "All tests successfully passed" << std::endl; + return EXIT_SUCCESS; } + } +