otbBundleToPerfectSensor.cxx 3.67 KB
Newer Older
1
/*
Julien Michel's avatar
Julien Michel committed
2
 * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES)
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 *
 * This file is part of Orfeo Toolbox
 *
 *     https://www.orfeo-toolbox.org/
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
20

21
#include "otbWrapperApplicationFactory.h"
22
#include "otbWrapperCompositeApplication.h"
23

24

25
26
namespace otb
{
27
namespace Wrapper
28
{
29
class BundleToPerfectSensor : public CompositeApplication
30
{
31
32
33
34
35
36
37
38
39
40
public:
  /** Standard class typedefs. */
  typedef BundleToPerfectSensor         Self;
  typedef Application                   Superclass;
  typedef itk::SmartPointer<Self>       Pointer;
  typedef itk::SmartPointer<const Self> ConstPointer;

  /** Standard macro */
  itkNewMacro(Self);

41
  itkTypeMacro(BundleToPerfectSensor, otb::Wrapper::CompositeApplication);
42
43
44

private:

45
  void DoInit() override
46
47
48
  {
    SetName("BundleToPerfectSensor");
    SetDescription("Perform P+XS pansharpening");
49
50

    // Documentation
51
    SetDocLongDescription("This application performs P+XS pansharpening. The default mode use Pan and XS sensor models to estimate the transformation to superimpose XS over Pan before the fusion (\"default mode\"). The application provides also a PHR mode for Pleiades images which does not use sensor models as Pan and XS products are already coregistered but only estimate an affine transformation to superimpose XS over the Pan.Note that this option is automatically activated in case Pleiades images are detected as input.");
52
53
54
    SetDocLimitations("None");
    SetDocAuthors("OTB-Team");
    SetDocSeeAlso(" ");
55

56
57
    AddDocTag(Tags::Geometry);
    AddDocTag(Tags::Pansharpening);
58

59
    ClearApplications();
60
61
    AddApplication("Superimpose", "superimpose", "Reproject XS onto Pan");
    AddApplication("Pansharpening", "pansharp", "Fusion of XS and Pan");
62

63
64
65
66
67
    ShareParameter("inp","superimpose.inr","Input PAN Image","Input panchromatic image.");
    ShareParameter("inxs","superimpose.inm","Input XS Image","Input XS image.");
    ShareParameter("out","pansharp.out");
    ShareParameter("elev","superimpose.elev");
    ShareParameter("mode","superimpose.mode");
68
    ShareParameter("method","pansharp.method");
69
70
71
    ShareParameter("lms","superimpose.lms",
      "Spacing of the deformation field",
      "Spacing of the deformation field. Default is 10 times the PAN image spacing.");
72
    ShareParameter("interpolator","superimpose.interpolator");
73
    ShareParameter("fv","superimpose.fv");
74
    ShareParameter("ram","superimpose.ram");
75

76
77
    Connect("pansharp.inp","superimpose.inr");
    Connect("pansharp.ram","superimpose.ram");
78
    
79
80
81
82
    // Doc example parameter settings
    SetDocExampleParameterValue("inp", "QB_Toulouse_Ortho_PAN.tif");
    SetDocExampleParameterValue("inxs", "QB_Toulouse_Ortho_XS.tif");
    SetDocExampleParameterValue("out", "BundleToPerfectSensor.png uchar");
83

84
    SetOfficialDocLink();
85
  }
86

87
  void DoUpdateParameters() override
88
  {
89
    UpdateInternalParameters("superimpose");
90
91
  }

92
  void DoExecute() override
93
  {
94
    ExecuteInternal("superimpose");
95

96
97
    GetInternalApplication("pansharp")->SetParameterInputImage("inxs",
      GetInternalApplication("superimpose")->GetParameterOutputImage("out"));
98

99
    ExecuteInternal("pansharp");
100
  }
101

102
};
103
104
105


}
106
107
108
}

OTB_APPLICATION_EXPORT(otb::Wrapper::BundleToPerfectSensor)