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