From 1e87abcd932c2eac48e142ed20ab3debd6ef4296 Mon Sep 17 00:00:00 2001
From: Otmane Lahlou <otmane.lahlou@c-s.fr>
Date: Fri, 26 Nov 2010 17:54:20 +0100
Subject: [PATCH] ENH:  refactoring of the repository OTB-Applications: add a
 directory Legacy : All the applications were put in Legacy

---
 DisparityMap/otbFineRegistration.cxx | 320 ---------------------------
 1 file changed, 320 deletions(-)
 delete mode 100644 DisparityMap/otbFineRegistration.cxx

diff --git a/DisparityMap/otbFineRegistration.cxx b/DisparityMap/otbFineRegistration.cxx
deleted file mode 100644
index b70aa1d37c..0000000000
--- a/DisparityMap/otbFineRegistration.cxx
+++ /dev/null
@@ -1,320 +0,0 @@
-/*=========================================================================
-
-  Program:   ORFEO Toolbox
-  Language:  C++
-  Date:      $Date$
-  Version:   $Revision$
-
-
-  Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
-  See OTBCopyright.txt for details.
-
-
-     This software is distributed WITHOUT ANY WARRANTY; without even 
-     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
-     PURPOSE.  See the above copyright notices for more information.
-
-=========================================================================*/
-#include "otbImage.h"
-#include "otbImageFileReader.h"
-#include "otbStreamingImageFileWriter.h"
-#include "otbFineRegistrationImageFilter.h"
-#include "otbStandardWriterWatcher.h"
-#include "otbCommandLineArgumentParser.h"
-#include "otbVectorImage.h"
-#include "otbImageList.h"
-#include "otbImageListToVectorImageFilter.h"
-
-#include "itkTimeProbe.h"
-#include "itkFixedArray.h"
-#include "itkNormalizedCorrelationImageToImageMetric.h"
-#include "itkMeanReciprocalSquareDifferenceImageToImageMetric.h"
-#include "itkMeanSquaresImageToImageMetric.h"
-#include "itkMattesMutualInformationImageToImageMetric.h"
-#include "itkDiscreteGaussianImageFilter.h"
-#include "itkAbsImageFilter.h"
-#include "itkVectorIndexSelectionCastImageFilter.h"
-#include "itkBinaryThresholdImageFilter.h"
-
-int main(int argc, char * argv[])
-{
-  // Parse command line parameters
-  typedef otb::CommandLineArgumentParser ParserType;
-  ParserType::Pointer parser = ParserType::New();
-
-  parser->SetProgramDescription("Estimate disparity map between two images. Output image contain x offset, y offset and metric value.");
-  parser->AddOption("--Reference","The reference image","-ref", 1,true);
-  parser->AddOption("--Secondary","The secondary image","-sec", 1,true);
-  parser->AddOutputImage();
-  parser->AddOption("--ExplorationRadius","Radius (in pixels) of the exploration window","-er",2,true);
-  parser->AddOption("--MetricRadius","Radius (in pixels) of the metric computation window","-mr",2,true);
-  parser->AddOption("--CoarseOffset","(optional) Coarse offset (in physical space) between the two images. Default is [0,0].","-co",2,false);
-  parser->AddOption("--SubSamplingRate","(optional) Generate a result at a coarser resolution with a given sub-sampling rate in each direction (in pixels). Default is no sub-sampling","-ssr",2,false);
-  parser->AddOption("--ReferenceGaussianSmoothing","(optional) Perform a gaussian smoothing of the reference image. Parameters are gaussian sigma (in pixels) in each direction. Default is no smoothing.","-rgs",2,false);
-  parser->AddOption("--SecondaryGaussianSmoothing","(optional) Perform a gaussian smoothing of the secondary image. Parameters are gaussian sigma (in pixels) in each direction. Default is no smoothing.","-sgs",2,false);
-  parser->AddOption("--Metric","(optional) Choose the metric used for block matching. Available metrics are cross-correlation (CC), cross-correlation with subtracted mean (CCSM), mean-square difference (MSD), mean reciprocal square difference (MRSD) and mutual information (MI). Default is cross-correlation","-m",1,false);
-  parser->AddOption("--SubPixelAccuracy","(optional) Metric extrema location will be refined up to the given accuracy. Default is 0.01","-spa",1,false);
-  parser->AddOption("--ValidityMask","(optional) Threshold to obtain a validity mask. Params are lowerThan or greaterThan and a threshold","-vm",2,false);
-
-  typedef otb::CommandLineArgumentParseResult ParserResultType;
-  ParserResultType::Pointer  parseResult = ParserResultType::New();
-
-  try
-  {
-    parser->ParseCommandLine(argc,argv,parseResult);
-  }
-  catch ( itk::ExceptionObject & err )
-  {
-    std::string descriptionException = err.GetDescription();
-    if (descriptionException.find("ParseCommandLine(): Help Parser") != std::string::npos)
-      {
-      return EXIT_SUCCESS;
-      }
-    if (descriptionException.find("ParseCommandLine(): Version Parser") != std::string::npos)
-      {
-      return EXIT_SUCCESS;
-      }
-    return EXIT_FAILURE;
-  }
-
-  const unsigned int Dimension = 2;
-  typedef double     PixelType;
-
-  typedef itk::FixedArray<PixelType,Dimension>                                 DeformationValueType;
-  typedef otb::Image< PixelType,  Dimension >                                  ImageType;
-  typedef otb::VectorImage<PixelType,Dimension>                                VectorImageType;
-  typedef otb::ImageList<ImageType>                                            ImageListType;
-  typedef otb::ImageListToVectorImageFilter<ImageListType,VectorImageType>     IL2VIFilterType;
-  typedef otb::Image<DeformationValueType,Dimension>                           FieldImageType;
-  typedef otb::ImageFileReader< ImageType >                                    ReaderType;
-  typedef otb::StreamingImageFileWriter< VectorImageType >                     WriterType;
-  typedef otb::FineRegistrationImageFilter<ImageType,ImageType,FieldImageType> RegistrationFilterType;
-  typedef itk::DiscreteGaussianImageFilter<ImageType,ImageType>                GaussianFilterType;
-  typedef itk::VectorIndexSelectionCastImageFilter<FieldImageType,ImageType>   VectorImageToImageFilterType;
-  typedef itk::AbsImageFilter<ImageType,ImageType>                             AbsFilterType;
-  typedef itk::BinaryThresholdImageFilter<ImageType,ImageType>                 BinaryThresholdImageFilterType;
-
-  // Read reference image
-  ReaderType::Pointer freader = ReaderType::New();
-  freader->SetFileName(parseResult->GetParameterString("--Reference"));
-
-  // Read secondary image
-  ReaderType::Pointer mreader = ReaderType::New();
-  mreader->SetFileName(parseResult->GetParameterString("--Secondary"));
-
-  // Retrieve main registration parameters
-  RegistrationFilterType::SizeType radius, sradius;
-  ImageType::OffsetType ssrate;
-  sradius[0] = parseResult->GetParameterULong("--ExplorationRadius",0);
-  sradius[1] = parseResult->GetParameterULong("--ExplorationRadius",1);
-  radius[0] = parseResult->GetParameterULong("--MetricRadius",0);
-  radius[1] = parseResult->GetParameterULong("--MetricRadius",1);
-
-  double accuracy = 0.01;
-  if(parseResult->IsOptionPresent("--SubPixelAccuracy"))
-    {
-    accuracy = parseResult->GetParameterDouble("--SubPixelAccuracy");
-    }
-  ssrate.Fill(1);
-  if(parseResult->IsOptionPresent("--SubSamplingRate"))
-    {
-    ssrate[0] = parseResult->GetParameterDouble("--SubSamplingRate",0);
-    ssrate[1] = parseResult->GetParameterDouble("--SubSamplingRate",1);
-    }
-  RegistrationFilterType::SpacingType initialOffset;
-  initialOffset.Fill(0);
-  if(parseResult->IsOptionPresent("--CoarseOffset"))
-    {
-    initialOffset[0] = parseResult->GetParameterDouble("--CoarseOffset",0);
-    initialOffset[1] = parseResult->GetParameterDouble("--CoarseOffset",1);
-    }
-
-  // Display info
-  std::cout<<"Reference image   : "<<freader->GetFileName()<<std::endl;
-  std::cout<<"Secondary image   : "<<mreader->GetFileName()<<std::endl;
-
-  std::cout<<"Exploration radius: "<<sradius<<" (pixels)"<<std::endl;
-  std::cout<<"Metric radius     : "<<radius<<" (pixels)"<<std::endl;
-  std::cout<<"Sub-sampling rate : "<<ssrate<<" (pixels)"<<std::endl;
-  std::cout<<"Coarse offset     : "<<initialOffset<<" (physical unit)"<<std::endl;
-  std::cout<<"Accuracy          : "<<accuracy<<" (physical unit)"<<std::endl;
-
-
-  RegistrationFilterType::Pointer registration = RegistrationFilterType::New();
-  registration->SetRadius(radius);
-  registration->SetSearchRadius(sradius);
-  registration->SetSubPixelAccuracy(accuracy);
-  registration->SetGridStep(ssrate);
-  registration->SetInitialOffset(initialOffset);
-
-  GaussianFilterType::Pointer refGaussianFilter,secGaussianFilter;
-
-  if(parseResult->IsOptionPresent("--ReferenceGaussianSmoothing"))
-    {
-    refGaussianFilter = GaussianFilterType::New();
-    refGaussianFilter->SetInput(freader->GetOutput());
-    GaussianFilterType::ArrayType sigma;
-    sigma[0] = parseResult->GetParameterDouble("--ReferenceGaussianSmoothing",0);
-    sigma[1] = parseResult->GetParameterDouble("--ReferenceGaussianSmoothing",1);
-    refGaussianFilter->SetVariance(sigma);
-    refGaussianFilter->SetUseImageSpacingOff();
-    std::cout<<"Reference image gaussian smoothing on."<<std::endl;
-    std::cout<<"variance        : "<<sigma<<" (pixels)"<<std::endl;
-    registration->SetFixedInput(refGaussianFilter->GetOutput());
-    }
-  else
-    {
-    std::cout<<"Reference image gaussian smoothing off."<<std::endl;
-    registration->SetFixedInput(freader->GetOutput());
-    }
-
-  if(parseResult->IsOptionPresent("--SecondaryGaussianSmoothing"))
-      {
-      secGaussianFilter = GaussianFilterType::New();
-      secGaussianFilter->SetInput(mreader->GetOutput());
-      GaussianFilterType::ArrayType sigma;
-      sigma[0] = parseResult->GetParameterDouble("--SecondaryGaussianSmoothing",0);
-      sigma[1] = parseResult->GetParameterDouble("--SecondaryGaussianSmoothing",1);
-      secGaussianFilter->SetVariance(sigma);
-      secGaussianFilter->SetUseImageSpacingOff();
-      std::cout<<"Secondary image gaussian smoothing on."<<std::endl;
-      std::cout<<"variance        : "<<sigma<<" (pixels)"<<std::endl;
-      registration->SetMovingInput(secGaussianFilter->GetOutput());
-      }
-    else
-      {
-      std::cout<<"Secondary image gaussian smoothing off."<<std::endl;
-      registration->SetMovingInput(mreader->GetOutput());
-      }
-
-  // Retrieve metric name
-  std::string metricId = "CC";
-  if(parseResult->IsOptionPresent("--Metric"))
-    {
-    metricId = parseResult->GetParameterString("--Metric");
-    }
-
-  if(metricId == "CC")
-    {
-    std::cout<<"Metric            : Cross-correlation"<<std::endl;
-    typedef itk::NormalizedCorrelationImageToImageMetric<ImageType,ImageType> NCCType;
-    NCCType::Pointer metricPtr = NCCType::New();
-    metricPtr->SubtractMeanOff();
-    registration->SetMetric(metricPtr);
-    registration->MinimizeOn();
-    }
-  else if(metricId == "CCSM")
-    {
-    std::cout<<"Metric            : Cross-correlation (mean subtracted)"<<std::endl;
-    typedef itk::NormalizedCorrelationImageToImageMetric<ImageType,ImageType> NCCType;
-    NCCType::Pointer metricPtr = NCCType::New();
-    metricPtr->SubtractMeanOn();
-    registration->SetMetric(metricPtr);
-    registration->MinimizeOn();
-    }
-  else if(metricId == "MSD")
-    {
-    std::cout<<"Metric            : Mean square difference"<<std::endl;
-    typedef itk::MeanSquaresImageToImageMetric<ImageType,ImageType> MeanSquareType;
-    MeanSquareType::Pointer metricPtr = MeanSquareType::New();
-    registration->SetMetric(metricPtr);
-    registration->MinimizeOn();
-    }
-  else if(metricId == "MRSD")
-    {
-    std::cout<<"Metric            : Mean reciprocal square difference"<<std::endl;
-    typedef itk::MeanReciprocalSquareDifferenceImageToImageMetric<ImageType,ImageType> MRSDType;
-    MRSDType::Pointer metricPtr = MRSDType::New();
-    registration->SetMetric(metricPtr);
-    registration->MinimizeOff();
-    }
-  else if(metricId == "MI")
-    {
-    std::cout<<"Metric            : Mutual information"<<std::endl;
-    typedef itk::MattesMutualInformationImageToImageMetric<ImageType,ImageType> MIType;
-    MIType::Pointer metricPtr = MIType::New();
-    registration->SetMetric(metricPtr);
-    registration->MinimizeOn();
-    }
-  else
-    {
-    std::cerr<<"Metric "<<metricId<<" not recognized."<<std::endl;
-    std::cerr<<"Possible choices are: CC, CCMS, MSD, MRSD, MI"<<std::endl;
-    return EXIT_FAILURE;
-    }
-  VectorImageToImageFilterType::Pointer xExtractor = VectorImageToImageFilterType::New();
-  xExtractor->SetInput(registration->GetOutputDeformationField());
-  xExtractor->SetIndex(0);
-
-  VectorImageToImageFilterType::Pointer yExtractor = VectorImageToImageFilterType::New();
-  yExtractor->SetInput(registration->GetOutputDeformationField());
-  yExtractor->SetIndex(1);
-
-  ImageListType::Pointer il = ImageListType::New();
-  il->PushBack(xExtractor->GetOutput());
-  il->PushBack(yExtractor->GetOutput());
-
-  AbsFilterType::Pointer absFilter;
-
-  // Invert correlation to get classical rendering
-  if(metricId == "CC" || metricId == "CCSM")
-    {
-    absFilter = AbsFilterType::New();
-    absFilter->SetInput(registration->GetOutput());
-    il->PushBack(absFilter->GetOutput());
-    }
-  else
-    {
-    il->PushBack(registration->GetOutput());
-    }
-
-  BinaryThresholdImageFilterType::Pointer threshold;
-  if(parseResult->IsOptionPresent("--ValidityMask"))
-    {
-    threshold = BinaryThresholdImageFilterType::New();
-
-    if(metricId == "CC" || metricId == "CCSM")
-      {
-      threshold->SetInput(absFilter->GetOutput());
-      }
-    else
-      {
-      threshold->SetInput(registration->GetOutput());
-      }
-    if(parseResult->GetParameterString("--ValidityMask",0)=="greaterThan")
-      {
-      threshold->SetLowerThreshold(parseResult->GetParameterDouble("--ValidityMask",1));
-      }
-    else if(parseResult->GetParameterString("--ValidityMask",0)=="lowerThan")
-      {
-      threshold->SetUpperThreshold(parseResult->GetParameterDouble("--ValidityMask",1));
-      }
-    else
-      {
-      std::cerr<<"Arguments of --ValidityMask option should begin with lowerThan or greaterThan"<<std::endl;
-      return EXIT_FAILURE;
-      }
-
-    std::cout<<"A validity mask will be produced as the 4th band (valid pixels = 1.0, not valid = 0.0)."<<std::endl;
-    std::cout<<"Pixels are considered valid if metric is "<<parseResult->GetParameterString("--ValidityMask",0)<<" ";
-    std::cout<<parseResult->GetParameterDouble("--ValidityMask",1)<<std::endl;
-
-    threshold->SetInsideValue(1.0);
-    threshold->SetOutsideValue(0.);
-    il->PushBack(threshold->GetOutput());
-    }
-
-  IL2VIFilterType::Pointer il2vi = IL2VIFilterType::New();
-  il2vi->SetInput(il);
-
-  WriterType::Pointer writer = WriterType::New();
-  writer->SetFileName(parseResult->GetOutputImage());
-  writer->SetInput(il2vi->GetOutput());
-
-  std::cout<<std::endl;
-  otb::StandardWriterWatcher watcher(writer,registration,"Fine Registration");
-
-  writer->Update();
-
-  return EXIT_SUCCESS;
-}
-- 
GitLab