From 4a5a4e76690f5d02aa526f873bf6f5d316ed2e96 Mon Sep 17 00:00:00 2001 From: Jonathan Guinet <jonathan.guinet@c-s.fr> Date: Wed, 20 Jun 2012 15:57:43 +0200 Subject: [PATCH] TEST: AdhesionCorrectionFilter test --- Testing/Code/DisparityMap/CMakeLists.txt | 20 +++++ .../otbAdhesionCorrectionFilter.cxx | 80 +++++++++++++++++-- .../DisparityMap/otbDisparityMapTests4.cxx | 1 + 3 files changed, 96 insertions(+), 5 deletions(-) diff --git a/Testing/Code/DisparityMap/CMakeLists.txt b/Testing/Code/DisparityMap/CMakeLists.txt index 6b727535cc..a4e3ebfb43 100644 --- a/Testing/Code/DisparityMap/CMakeLists.txt +++ b/Testing/Code/DisparityMap/CMakeLists.txt @@ -529,6 +529,26 @@ SET_TESTS_PROPERTIES(dmTvDisparityMapMedianFilter PROPERTIES DEPENDS dmTvSubPixe ADD_TEST(dmTuAdhesionCorrectionFilterNew ${DISPARITYMAP_TESTS4} otbAdhesionCorrectionFilterNew) + + ADD_TEST(dmTuAdhesionCorrectionFilter ${DISPARITYMAP_TESTS4} + otbAdhesionCorrectionFilter + ${INPUTDATA}/StereoFixedEdges.tif + ${TEMP}/dmTvDisparityMapMedianFilterOutput.tif + ${INPUTDATA}/BlankMask.tif + ${INPUTDATA}/MedianOutputEdges.tif + ${INPUTDATA}/BlankMask.tif + ${TEMP}/dmTvAdhesionCorrectionFilterDisparity.tif + ${TEMP}/dmTvAdhesionCorrectionFilterMask.tif + ${TEMP}/dmTvAdhesionCorrectionFilterRiskEdges.tif + 3 + 0.25 + 10 + 30 + 100.0 + 100.0 + ) + +SET_TESTS_PROPERTIES(dmTuAdhesionCorrectionFilter PROPERTIES DEPENDS dmTvDisparityMapMedianFilter) # ------- Fichiers sources CXX ----------------------------------- SET(BasicDisparityMap_SRCS1 diff --git a/Testing/Code/DisparityMap/otbAdhesionCorrectionFilter.cxx b/Testing/Code/DisparityMap/otbAdhesionCorrectionFilter.cxx index 3f8cda433b..d13d8330f4 100644 --- a/Testing/Code/DisparityMap/otbAdhesionCorrectionFilter.cxx +++ b/Testing/Code/DisparityMap/otbAdhesionCorrectionFilter.cxx @@ -17,17 +17,28 @@ =========================================================================*/ #include "otbAdhesionCorrectionFilter.h" #include "otbImage.h" +#include "otbStreamingImageFileWriter.h" +#include "otbStandardWriterWatcher.h" +#include "otbImageFileReader.h" -int otbAdhesionCorrectionFilterNew(int argc, char* argv[]) -{ - const unsigned int Dimension = 2; + const unsigned int Dimension = 2; typedef float PixelType; typedef otb::Image<PixelType, Dimension> ImageType; - typedef unsigned char MaskPixelType; + typedef float MaskPixelType; typedef otb::Image<MaskPixelType, Dimension> MaskType; + + typedef otb::ImageFileReader<ImageType> ReaderType; + typedef otb::ImageFileReader<MaskType> MaskReaderType; + + typedef otb::StreamingImageFileWriter<ImageType> WriterType; + typedef otb::StreamingImageFileWriter<MaskType> MaskWriterType; + typedef otb::AdhesionCorrectionFilter<ImageType, MaskType> AdhesionCorrectionFilterType; +int otbAdhesionCorrectionFilterNew(int argc, char* argv[]) +{ + // Instantiation AdhesionCorrectionFilterType::Pointer filter = AdhesionCorrectionFilterType::New(); @@ -36,8 +47,67 @@ int otbAdhesionCorrectionFilterNew(int argc, char* argv[]) int otbAdhesionCorrectionFilter(int argc, char* argv[]) { + if ((argc != 15)) + { + std::cerr << "Usage: " << argv[0]; + std::cerr << " imageinput_fname meddispinput_fname medmaskinput_fname edgedispinput_fname subpixmaskinput_fname" + << std::endl; + std::cerr << " ouputmap_filename outputmask_filename outputriskedges_filename "; + std::cerr << " radius tolerance discontinuitythres discontinuityhighthres edgethres maxedgegap "; + return EXIT_FAILURE; + } + AdhesionCorrectionFilterType::Pointer filter = AdhesionCorrectionFilterType::New(); - return EXIT_SUCCESS; + ReaderType::Pointer inReader = ReaderType::New(); + inReader->SetFileName(argv[1]); + + ReaderType::Pointer medianDispReader = ReaderType::New(); + medianDispReader->SetFileName(argv[2]); + + MaskReaderType::Pointer medianMaskReader = MaskReaderType::New(); + medianMaskReader->SetFileName(argv[3]); + + + ReaderType::Pointer edgeDispReader = ReaderType::New(); + edgeDispReader->SetFileName(argv[4]); + + MaskReaderType::Pointer subPixelMaskReader = MaskReaderType::New(); + subPixelMaskReader->SetFileName(argv[5]); + + filter->SetInput(inReader->GetOutput()); + filter->SetMedianDisparityInput(medianDispReader->GetOutput()); + filter->SetMedianMaskInput(medianMaskReader->GetOutput()); + filter->SetEdgesDisparityInput(edgeDispReader->GetOutput()); + filter->SetSubPixelMaskInput(subPixelMaskReader->GetOutput()); + + filter->SetRadius(atoi(argv[9])); + filter->SetTolerance(atof(argv[10])); + filter->SetDiscontinuityThreshold(atof(argv[11])); + filter->SetDiscontinuityHighThreshold(atof(argv[12])); + filter->SetEdgeThreshold(atof(argv[13])); + filter->SetMaxEdgeGap(atof(argv[14])); + + +WriterType ::Pointer dispWriter = WriterType::New(); + dispWriter->SetInput(filter->GetOutput()); + dispWriter->SetFileName(argv[6]); + otb::StandardWriterWatcher watcher1(dispWriter, filter, "Computing disparity "); + + dispWriter->Update(); + + WriterType::Pointer maskWriter = WriterType::New(); + maskWriter->SetInput(filter->GetOutputMask()); + maskWriter->SetFileName(argv[7]); + + maskWriter->Update(); + + WriterType::Pointer edgeWriter = WriterType::New(); + edgeWriter->SetInput(filter->GetOutputRiskEdges()); + edgeWriter->SetFileName(argv[8]); + + edgeWriter->Update(); + + return EXIT_SUCCESS; } diff --git a/Testing/Code/DisparityMap/otbDisparityMapTests4.cxx b/Testing/Code/DisparityMap/otbDisparityMapTests4.cxx index 537235fb0f..18c2c4f028 100644 --- a/Testing/Code/DisparityMap/otbDisparityMapTests4.cxx +++ b/Testing/Code/DisparityMap/otbDisparityMapTests4.cxx @@ -25,6 +25,7 @@ void RegisterTests() { REGISTER_TEST(otbAdhesionCorrectionFilterNew); + REGISTER_TEST(otbAdhesionCorrectionFilter); REGISTER_TEST(otbDisparityMapMedianFilterNew); REGISTER_TEST(otbDisparityMapMedianFilter); REGISTER_TEST(otbPixelWiseBlockMatchingImageFilterNew); -- GitLab