From 8b18cfd7f79c6c1d3c4d962508d2c64e22771851 Mon Sep 17 00:00:00 2001 From: Julien Michel <julien.michel@orfeo-toolbox.org> Date: Thu, 18 Apr 2019 11:03:56 +0000 Subject: [PATCH] REFAC: Remove DempsterShafer based classification of vectors framework (impact several modules) --- ..._LI_NOBUIL_RoadExtractionApplication.1.dbf | 3 - ..._LI_NOBUIL_RoadExtractionApplication.1.prj | 1 - ..._LI_NOBUIL_RoadExtractionApplication.1.shp | 3 - ..._LI_NOBUIL_RoadExtractionApplication.1.shx | 3 - ...ge_LI_NOBUIL_RoadExtractionApplication.dbf | 3 - ...ge_LI_NOBUIL_RoadExtractionApplication.prj | 1 - ...ge_LI_NOBUIL_RoadExtractionApplication.shp | 3 - ...ge_LI_NOBUIL_RoadExtractionApplication.shx | 3 - ...olylineFeatureFromImage_LI_NOBUIL_gt.1.dbf | 3 - ...olylineFeatureFromImage_LI_NOBUIL_gt.1.prj | 1 - ...olylineFeatureFromImage_LI_NOBUIL_gt.1.shp | 3 - ...olylineFeatureFromImage_LI_NOBUIL_gt.1.shx | 3 - ...ePolylineFeatureFromImage_LI_NOBUIL_gt.dbf | 3 - ...ePolylineFeatureFromImage_LI_NOBUIL_gt.prj | 1 - ...ePolylineFeatureFromImage_LI_NOBUIL_gt.shp | 3 - ...ePolylineFeatureFromImage_LI_NOBUIL_gt.shx | 3 - ...olylineFeatureFromImage_LI_NOBUIL_wr.1.dbf | 3 - ...olylineFeatureFromImage_LI_NOBUIL_wr.1.prj | 1 - ...olylineFeatureFromImage_LI_NOBUIL_wr.1.shp | 3 - ...olylineFeatureFromImage_LI_NOBUIL_wr.1.shx | 3 - ...ePolylineFeatureFromImage_LI_NOBUIL_wr.dbf | 3 - ...ePolylineFeatureFromImage_LI_NOBUIL_wr.prj | 1 - ...ePolylineFeatureFromImage_LI_NOBUIL_wr.shp | 3 - ...ePolylineFeatureFromImage_LI_NOBUIL_wr.shx | 3 - ...vVectorDataDSValidationOutpout_LI_gt.1.dbf | 3 - ...vVectorDataDSValidationOutpout_LI_gt.1.prj | 1 - ...vVectorDataDSValidationOutpout_LI_gt.1.shp | 3 - ...vVectorDataDSValidationOutpout_LI_gt.1.shx | 3 - ...bTvVectorDataDSValidationOutpout_LI_gt.dbf | 3 - ...bTvVectorDataDSValidationOutpout_LI_gt.prj | 1 - ...bTvVectorDataDSValidationOutpout_LI_gt.shp | 3 - ...bTvVectorDataDSValidationOutpout_LI_gt.shx | 3 - ...bTvVectorDataDSValidationOutpout_LI_wr.dbf | 3 - ...bTvVectorDataDSValidationOutpout_LI_wr.prj | 1 - ...bTvVectorDataDSValidationOutpout_LI_wr.shp | 3 - ...bTvVectorDataDSValidationOutpout_LI_wr.shx | 3 - ...OverlapDataNodeFeatureFunctionOutput.1.dbf | 3 - ...OverlapDataNodeFeatureFunctionOutput.1.shp | 3 - ...OverlapDataNodeFeatureFunctionOutput.1.shx | 3 - ...DBOverlapDataNodeFeatureFunctionOutput.dbf | 3 - ...DBOverlapDataNodeFeatureFunctionOutput.shp | 3 - ...DBOverlapDataNodeFeatureFunctionOutput.shx | 3 - ...NDVIDataNodeFeatureFunctionOutput_Line.dbf | 3 - ...NDVIDataNodeFeatureFunctionOutput_Line.shp | 3 - ...NDVIDataNodeFeatureFunctionOutput_Line.shx | 3 - ...IDataNodeFeatureFunctionOutput_Polygon.dbf | 3 - ...IDataNodeFeatureFunctionOutput_Polygon.shp | 3 - ...IDataNodeFeatureFunctionOutput_Polygon.shx | 3 - ...hoodDataNodeFeatureFunctionOutput_Line.dbf | 3 - ...hoodDataNodeFeatureFunctionOutput_Line.shp | 3 - ...hoodDataNodeFeatureFunctionOutput_Line.shx | 3 - ...dDataNodeFeatureFunctionOutput_Polygon.dbf | 3 - ...dDataNodeFeatureFunctionOutput_Polygon.shp | 3 - ...dDataNodeFeatureFunctionOutput_Polygon.shx | 3 - ...ngleDataNodeFeatureFunctionOutput_Line.dbf | 3 - ...ngleDataNodeFeatureFunctionOutput_Line.shp | 3 - ...ngleDataNodeFeatureFunctionOutput_Line.shx | 3 - ...eDataNodeFeatureFunctionOutput_Polygon.dbf | 3 - ...eDataNodeFeatureFunctionOutput_Polygon.shp | 3 - ...eDataNodeFeatureFunctionOutput_Polygon.shx | 3 - .../fzTvDSValidatedRoadVectorDataOutput.dbf | 3 - .../fzTvDSValidatedRoadVectorDataOutput.shp | 3 - .../fzTvDSValidatedRoadVectorDataOutput.shx | 3 - Data/Input/Dempster-Shafer/DSFuzzyModel.xml | 21 - .../Dempster-Shafer/DSFuzzyModel_Init.xml | 21 - .../Input/Dempster-Shafer/ROI_QB_TOULOUSE.TIF | 3 - .../Dempster-Shafer/ROI_QB_TOULOUSE.geom | 165 ------- .../ROI_QB_TOULOUSE_BUILDINGS.dbf | 3 - .../ROI_QB_TOULOUSE_BUILDINGS.prj | 1 - .../ROI_QB_TOULOUSE_BUILDINGS.shp | 3 - .../ROI_QB_TOULOUSE_BUILDINGS.shx | 3 - .../Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.dbf | 3 - .../Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.prj | 1 - .../Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shp | 3 - .../Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shx | 3 - Documentation/Cookbook/rst/recipes/improc.rst | 125 ----- .../AppClassification/app/CMakeLists.txt | 15 - .../otbComputePolylineFeatureFromImage.cxx | 282 ----------- .../app/otbDSFuzzyModelEstimation.cxx | 451 ------------------ .../app/otbVectorDataDSValidation.cxx | 171 ------- .../AppClassification/test/CMakeLists.txt | 154 ------ .../include/otbDataNodeImageFunction.h | 212 -------- .../include/otbDataNodeImageFunction.hxx | 98 ---- .../include/otbDataNodeVectorDataFunction.h | 112 ----- .../include/otbDataNodeVectorDataFunction.hxx | 70 --- ...tbParserConditionDataNodeFeatureFunction.h | 126 ----- ...ParserConditionDataNodeFeatureFunction.hxx | 129 ----- .../Filtering/MathParser/test/CMakeLists.txt | 27 -- .../test/otbMathParserTestDriver.cxx | 1 - ...ParserConditionDataNodeFeatureFunction.cxx | 121 ----- .../Filtering/Projection/test/CMakeLists.txt | 24 - .../test/otbProjectionTestDriver.cxx | 1 - ...tbSpectralAngleDataNodeFeatureFunction.cxx | 127 ----- .../otbDBOverlapDataNodeFeatureFunction.h | 106 ---- .../otbDBOverlapDataNodeFeatureFunction.hxx | 176 ------- ...sWithNeighborhoodDataNodeFeatureFunction.h | 164 ------- ...ithNeighborhoodDataNodeFeatureFunction.hxx | 228 --------- .../otbSpectralAngleDataNodeFeatureFunction.h | 135 ------ ...tbSpectralAngleDataNodeFeatureFunction.hxx | 204 -------- .../test/CMakeLists.txt | 37 -- .../otbDBOverlapDataNodeFeatureFunction.cxx | 106 ---- ...ithNeighborhoodDataNodeFeatureFunction.cxx | 124 ----- .../otbVectorDataManipulationTestDriver.cxx | 2 - .../include/otbStandardDSCostFunction.h | 184 ------- .../include/otbStandardDSCostFunction.hxx | 172 ------- ...bVectorDataToDSValidatedVectorDataFilter.h | 204 -------- ...ectorDataToDSValidatedVectorDataFilter.hxx | 228 --------- .../DempsterShafer/test/CMakeLists.txt | 11 - .../test/otbDempsterShaferTestDriver.cxx | 1 - ...ectorDataToDSValidatedVectorDataFilter.cxx | 93 ---- .../include/otbNDVIDataNodeFeatureFunction.h | 137 ------ .../otbNDVIDataNodeFeatureFunction.hxx | 141 ------ .../Radiometry/Indices/test/CMakeLists.txt | 26 - .../Indices/test/otbIndicesTestDriver.cxx | 1 - .../test/otbNDVIDataNodeFeatureFunction.cxx | 129 ----- 115 files changed, 5256 deletions(-) delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.dbf delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.prj delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.shp delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.shx delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.dbf delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.prj delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.shp delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.shx delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.dbf delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.prj delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.shp delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.shx delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.dbf delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.prj delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shp delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shx delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.dbf delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.prj delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.shp delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.shx delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.dbf delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.prj delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.shp delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.shx delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.dbf delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.prj delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.shp delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.shx delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.dbf delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.prj delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.shp delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.shx delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.dbf delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.prj delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.shp delete mode 100644 Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.shx delete mode 100644 Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.1.dbf delete mode 100644 Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.1.shp delete mode 100644 Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.1.shx delete mode 100644 Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.dbf delete mode 100644 Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.shp delete mode 100644 Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.shx delete mode 100644 Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Line.dbf delete mode 100644 Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Line.shp delete mode 100644 Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Line.shx delete mode 100644 Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.dbf delete mode 100644 Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.shp delete mode 100644 Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.shx delete mode 100644 Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.dbf delete mode 100644 Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.shp delete mode 100644 Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.shx delete mode 100644 Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.dbf delete mode 100644 Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.shp delete mode 100644 Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.shx delete mode 100644 Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.dbf delete mode 100644 Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.shp delete mode 100644 Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.shx delete mode 100644 Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.dbf delete mode 100644 Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.shp delete mode 100644 Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.shx delete mode 100644 Data/Baseline/OTB/Files/fzTvDSValidatedRoadVectorDataOutput.dbf delete mode 100644 Data/Baseline/OTB/Files/fzTvDSValidatedRoadVectorDataOutput.shp delete mode 100644 Data/Baseline/OTB/Files/fzTvDSValidatedRoadVectorDataOutput.shx delete mode 100644 Data/Input/Dempster-Shafer/DSFuzzyModel.xml delete mode 100644 Data/Input/Dempster-Shafer/DSFuzzyModel_Init.xml delete mode 100644 Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE.TIF delete mode 100644 Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE.geom delete mode 100644 Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.dbf delete mode 100644 Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.prj delete mode 100644 Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.shp delete mode 100644 Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.shx delete mode 100644 Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.dbf delete mode 100644 Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.prj delete mode 100644 Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shp delete mode 100644 Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shx delete mode 100644 Modules/Applications/AppClassification/app/otbComputePolylineFeatureFromImage.cxx delete mode 100644 Modules/Applications/AppClassification/app/otbDSFuzzyModelEstimation.cxx delete mode 100644 Modules/Applications/AppClassification/app/otbVectorDataDSValidation.cxx delete mode 100644 Modules/Core/VectorDataBase/include/otbDataNodeImageFunction.h delete mode 100644 Modules/Core/VectorDataBase/include/otbDataNodeImageFunction.hxx delete mode 100644 Modules/Core/VectorDataBase/include/otbDataNodeVectorDataFunction.h delete mode 100644 Modules/Core/VectorDataBase/include/otbDataNodeVectorDataFunction.hxx delete mode 100644 Modules/Filtering/MathParser/include/otbParserConditionDataNodeFeatureFunction.h delete mode 100644 Modules/Filtering/MathParser/include/otbParserConditionDataNodeFeatureFunction.hxx delete mode 100644 Modules/Filtering/MathParser/test/otbParserConditionDataNodeFeatureFunction.cxx delete mode 100644 Modules/Filtering/Projection/test/otbSpectralAngleDataNodeFeatureFunction.cxx delete mode 100644 Modules/Filtering/VectorDataManipulation/include/otbDBOverlapDataNodeFeatureFunction.h delete mode 100644 Modules/Filtering/VectorDataManipulation/include/otbDBOverlapDataNodeFeatureFunction.hxx delete mode 100644 Modules/Filtering/VectorDataManipulation/include/otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.h delete mode 100644 Modules/Filtering/VectorDataManipulation/include/otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.hxx delete mode 100644 Modules/Filtering/VectorDataManipulation/include/otbSpectralAngleDataNodeFeatureFunction.h delete mode 100644 Modules/Filtering/VectorDataManipulation/include/otbSpectralAngleDataNodeFeatureFunction.hxx delete mode 100644 Modules/Filtering/VectorDataManipulation/test/otbDBOverlapDataNodeFeatureFunction.cxx delete mode 100644 Modules/Filtering/VectorDataManipulation/test/otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.cxx delete mode 100644 Modules/Learning/DempsterShafer/include/otbStandardDSCostFunction.h delete mode 100644 Modules/Learning/DempsterShafer/include/otbStandardDSCostFunction.hxx delete mode 100644 Modules/Learning/DempsterShafer/include/otbVectorDataToDSValidatedVectorDataFilter.h delete mode 100644 Modules/Learning/DempsterShafer/include/otbVectorDataToDSValidatedVectorDataFilter.hxx delete mode 100644 Modules/Learning/DempsterShafer/test/otbVectorDataToDSValidatedVectorDataFilter.cxx delete mode 100644 Modules/Radiometry/Indices/include/otbNDVIDataNodeFeatureFunction.h delete mode 100644 Modules/Radiometry/Indices/include/otbNDVIDataNodeFeatureFunction.hxx delete mode 100644 Modules/Radiometry/Indices/test/otbNDVIDataNodeFeatureFunction.cxx diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.dbf b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.dbf deleted file mode 100644 index 872a668071..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f9d6c2cacc6b2947ee21de06212d8456f1ad1dd817eb08f0cca74a461982e6fc -size 13050 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.prj b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.prj deleted file mode 100644 index da98376fa4..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.prj +++ /dev/null @@ -1 +0,0 @@ -PROJCS["WGS_1984_UTM_Zone_31N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]] \ No newline at end of file diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.shp b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.shp deleted file mode 100644 index 0ae7cfbd6a..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:03dc018b3fda6afc76870dbb82d43cf954b483d451a44bc9609547a646cd5f69 -size 17244 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.shx b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.shx deleted file mode 100644 index d7d3c02a05..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.1.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9ddb05befb0e32de1d63c65853967329a2e279c8b47ead80a68e659a11f2d692 -size 1516 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.dbf b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.dbf deleted file mode 100644 index 872a668071..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f9d6c2cacc6b2947ee21de06212d8456f1ad1dd817eb08f0cca74a461982e6fc -size 13050 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.prj b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.prj deleted file mode 100644 index da98376fa4..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.prj +++ /dev/null @@ -1 +0,0 @@ -PROJCS["WGS_1984_UTM_Zone_31N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]] \ No newline at end of file diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.shp b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.shp deleted file mode 100644 index d989282e41..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a761c4931a9325ce306da5c82f1be3c709ab0f888aeab4a412932872c3e8d79d -size 23692 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.shx b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.shx deleted file mode 100644 index de9ebdc4ff..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1f99f80a26a8df140d6cdb44d9ed2f1a32a2477927138eca8c5aec56b9ab66e9 -size 1516 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.dbf b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.dbf deleted file mode 100644 index 0a7f2145c1..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c11d7da214ea38b7c3c0083a92ee13467c13dca735075c01d8ddb73124bc4437 -size 1881 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.prj b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.prj deleted file mode 100644 index da98376fa4..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.prj +++ /dev/null @@ -1 +0,0 @@ -PROJCS["WGS_1984_UTM_Zone_31N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]] \ No newline at end of file diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.shp b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.shp deleted file mode 100644 index f4493a2480..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6b7569316bbb6954532949243743a6a02bf59b8e6f15e8768ab74cd49d18ff9 -size 2948 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.shx b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.shx deleted file mode 100644 index 902c5a7618..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.1.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bd87422448e1242a1b30eb69ae88d4a36a96bfc2d00764a8ec3c35e02063a1c7 -size 292 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.dbf b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.dbf deleted file mode 100644 index 0a7f2145c1..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c11d7da214ea38b7c3c0083a92ee13467c13dca735075c01d8ddb73124bc4437 -size 1881 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.prj b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.prj deleted file mode 100644 index da98376fa4..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.prj +++ /dev/null @@ -1 +0,0 @@ -PROJCS["WGS_1984_UTM_Zone_31N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]] \ No newline at end of file diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shp b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shp deleted file mode 100644 index e549ed0a01..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c1a477f4f647ebb0feff76da6fe3b92adcac25972372a94e5fa9b5db4b3be02d -size 4084 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shx b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shx deleted file mode 100644 index 911a74cdb5..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:956ffd6cbb30ed2bc8c585e8c938477943d920f7309981a9864bf8f98ae3f992 -size 292 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.dbf b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.dbf deleted file mode 100644 index 9254d4d3c5..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:970b377a49bf3308da27de62de02dc2000e666a4cc49a220023e212cc5082896 -size 713 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.prj b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.prj deleted file mode 100644 index da98376fa4..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.prj +++ /dev/null @@ -1 +0,0 @@ -PROJCS["WGS_1984_UTM_Zone_31N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]] \ No newline at end of file diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.shp b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.shp deleted file mode 100644 index b8d4601a93..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6e9dbd487f0d15fc07a187b9e38649eaef4829ff8a64ffbbe0ebf59c0ced2848 -size 1172 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.shx b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.shx deleted file mode 100644 index b7889485ca..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.1.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eade214003f288170371c708073838963df379c9d55bfb68b77c488c94d10b7e -size 164 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.dbf b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.dbf deleted file mode 100644 index 9254d4d3c5..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:970b377a49bf3308da27de62de02dc2000e666a4cc49a220023e212cc5082896 -size 713 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.prj b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.prj deleted file mode 100644 index da98376fa4..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.prj +++ /dev/null @@ -1 +0,0 @@ -PROJCS["WGS_1984_UTM_Zone_31N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]] \ No newline at end of file diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.shp b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.shp deleted file mode 100644 index b3b4cc6c64..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3b83881bd76b1347059066ae1057d27cf0497cb92ac6cb16e07ec3d5ee29f5bd -size 1172 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.shx b/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.shx deleted file mode 100644 index 1b5b61f68e..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:78741d544b7ebd7211d6f2655d31b801443f6a60a75ec18a1dfe94e80f51852c -size 164 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.dbf b/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.dbf deleted file mode 100644 index 1227f9a239..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e98e653523faa8868276d04332dc8a207b8e99bb2e86814c2ecf3e71f64184d -size 3097 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.prj b/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.prj deleted file mode 100644 index da98376fa4..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.prj +++ /dev/null @@ -1 +0,0 @@ -PROJCS["WGS_1984_UTM_Zone_31N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]] \ No newline at end of file diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.shp b/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.shp deleted file mode 100644 index f4493a2480..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6b7569316bbb6954532949243743a6a02bf59b8e6f15e8768ab74cd49d18ff9 -size 2948 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.shx b/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.shx deleted file mode 100644 index 902c5a7618..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.1.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bd87422448e1242a1b30eb69ae88d4a36a96bfc2d00764a8ec3c35e02063a1c7 -size 292 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.dbf b/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.dbf deleted file mode 100644 index 1227f9a239..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e98e653523faa8868276d04332dc8a207b8e99bb2e86814c2ecf3e71f64184d -size 3097 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.prj b/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.prj deleted file mode 100644 index da98376fa4..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.prj +++ /dev/null @@ -1 +0,0 @@ -PROJCS["WGS_1984_UTM_Zone_31N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]] \ No newline at end of file diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.shp b/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.shp deleted file mode 100644 index e549ed0a01..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c1a477f4f647ebb0feff76da6fe3b92adcac25972372a94e5fa9b5db4b3be02d -size 4084 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.shx b/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.shx deleted file mode 100644 index 911a74cdb5..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_gt.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:956ffd6cbb30ed2bc8c585e8c938477943d920f7309981a9864bf8f98ae3f992 -size 292 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.dbf b/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.dbf deleted file mode 100644 index 9ba00259ac..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6ac3987c4408a1c86528898189249cc26502b02b536a0e64a5106f0d230b3a8b -size 33 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.prj b/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.prj deleted file mode 100644 index da98376fa4..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.prj +++ /dev/null @@ -1 +0,0 @@ -PROJCS["WGS_1984_UTM_Zone_31N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",3],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]] \ No newline at end of file diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.shp b/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.shp deleted file mode 100644 index f970b67678..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:926401bfc2997f7c001f827859a1281ceb6f688660720f605f14f3e54207568e -size 100 diff --git a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.shx b/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.shx deleted file mode 100644 index f970b67678..0000000000 --- a/Data/Baseline/OTB-Applications/Files/cdbTvVectorDataDSValidationOutpout_LI_wr.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:926401bfc2997f7c001f827859a1281ceb6f688660720f605f14f3e54207568e -size 100 diff --git a/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.1.dbf b/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.1.dbf deleted file mode 100644 index e514113af1..0000000000 --- a/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.1.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a91a7b2a449168136030deb765d660dc0851638543eced30eb006db94bc2123 -size 6583 diff --git a/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.1.shp b/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.1.shp deleted file mode 100644 index 0e5a1e7088..0000000000 --- a/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.1.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2ca53f866c1773b1ea1329e910073eb8c2c25513dca65b8e5ab21a047d31e333 -size 12860 diff --git a/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.1.shx b/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.1.shx deleted file mode 100644 index e4f82fd5c3..0000000000 --- a/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.1.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cd9270880008ed009e4e0e08ea105d91f40eb911f7c27e773348dfc74857bec2 -size 668 diff --git a/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.dbf b/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.dbf deleted file mode 100644 index 5c2e63d063..0000000000 --- a/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:539f3f381fe619efbf813b1f6a407f236ca577cd2f62f0d35cf8a717c30f3210 -size 6583 diff --git a/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.shp b/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.shp deleted file mode 100644 index d5ff96b992..0000000000 --- a/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d0b6e77ff1d3acae9432b63b929050ed0089e9aace8a831c817b07ac02b04063 -size 18388 diff --git a/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.shx b/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.shx deleted file mode 100644 index 72bda750b8..0000000000 --- a/Data/Baseline/OTB/Files/bfTvDBOverlapDataNodeFeatureFunctionOutput.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8e3f91df5a62beb63ba9b17a952d2673a732aa428b20861dce0c6dd986e588db -size 668 diff --git a/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Line.dbf b/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Line.dbf deleted file mode 100644 index 7c908dfa51..0000000000 --- a/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Line.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e03911f8e9f9eecd908084083cbed86b2084a1a8ec469a0bf58296ba9ca93f4 -size 6583 diff --git a/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Line.shp b/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Line.shp deleted file mode 100644 index b3adb3d3bb..0000000000 --- a/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Line.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ff01566163097422211e31b35823cc6ede15efa3965bcc72f2e89f8b95fc2b30 -size 12860 diff --git a/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Line.shx b/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Line.shx deleted file mode 100644 index 8eb95e8e60..0000000000 --- a/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Line.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b033aa81a9212511ecb13bf36bb9b92d26a2272e8fd2e7106fd938f623084664 -size 668 diff --git a/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.dbf b/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.dbf deleted file mode 100644 index 6cf1922682..0000000000 --- a/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2a314fb6c853dd6ed9864eb50da057c96bad6802b1d35e1c27e63f7c54ac5e6c -size 1517 diff --git a/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.shp b/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.shp deleted file mode 100644 index 4df7fd5f11..0000000000 --- a/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a02afbec1aac0b3b812282d4877310d5ce035b9fce9aa4d2427244a0c4404840 -size 3228 diff --git a/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.shx b/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.shx deleted file mode 100644 index e8977f2d43..0000000000 --- a/Data/Baseline/OTB/Files/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce4dc76a26a8fafad2f5e083c3aea4f5494319c7a46cfa7a339a0fd48161aa1d -size 252 diff --git a/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.dbf b/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.dbf deleted file mode 100644 index 0a2e444943..0000000000 --- a/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:881459241d920b7b0b0f04690ca4b64da9b40043e9761e8089867688fd8c868c -size 6583 diff --git a/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.shp b/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.shp deleted file mode 100644 index b3adb3d3bb..0000000000 --- a/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ff01566163097422211e31b35823cc6ede15efa3965bcc72f2e89f8b95fc2b30 -size 12860 diff --git a/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.shx b/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.shx deleted file mode 100644 index 8eb95e8e60..0000000000 --- a/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b033aa81a9212511ecb13bf36bb9b92d26a2272e8fd2e7106fd938f623084664 -size 668 diff --git a/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.dbf b/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.dbf deleted file mode 100644 index 7f7a14e7e9..0000000000 --- a/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0f0a24f1a9e719f6b7f9cea9e8dbb89d90436b8837178c1f7e2155f555cd274c -size 1517 diff --git a/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.shp b/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.shp deleted file mode 100644 index 4df7fd5f11..0000000000 --- a/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a02afbec1aac0b3b812282d4877310d5ce035b9fce9aa4d2427244a0c4404840 -size 3228 diff --git a/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.shx b/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.shx deleted file mode 100644 index e8977f2d43..0000000000 --- a/Data/Baseline/OTB/Files/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce4dc76a26a8fafad2f5e083c3aea4f5494319c7a46cfa7a339a0fd48161aa1d -size 252 diff --git a/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.dbf b/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.dbf deleted file mode 100644 index 1fd9789d1f..0000000000 --- a/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:abe817af5f07dd14805d6a14fe5a75fb988340ca1ffcc8e81d8e7adee531a42b -size 6583 diff --git a/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.shp b/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.shp deleted file mode 100644 index b3adb3d3bb..0000000000 --- a/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ff01566163097422211e31b35823cc6ede15efa3965bcc72f2e89f8b95fc2b30 -size 12860 diff --git a/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.shx b/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.shx deleted file mode 100644 index 8eb95e8e60..0000000000 --- a/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b033aa81a9212511ecb13bf36bb9b92d26a2272e8fd2e7106fd938f623084664 -size 668 diff --git a/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.dbf b/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.dbf deleted file mode 100644 index a84548112b..0000000000 --- a/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4b5fc99954f197ed6d0bcfc9ecf4178eb77f5893ba17b32a0906555a5c16fb63 -size 1517 diff --git a/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.shp b/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.shp deleted file mode 100644 index 4df7fd5f11..0000000000 --- a/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a02afbec1aac0b3b812282d4877310d5ce035b9fce9aa4d2427244a0c4404840 -size 3228 diff --git a/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.shx b/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.shx deleted file mode 100644 index e8977f2d43..0000000000 --- a/Data/Baseline/OTB/Files/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce4dc76a26a8fafad2f5e083c3aea4f5494319c7a46cfa7a339a0fd48161aa1d -size 252 diff --git a/Data/Baseline/OTB/Files/fzTvDSValidatedRoadVectorDataOutput.dbf b/Data/Baseline/OTB/Files/fzTvDSValidatedRoadVectorDataOutput.dbf deleted file mode 100644 index dad747fadf..0000000000 --- a/Data/Baseline/OTB/Files/fzTvDSValidatedRoadVectorDataOutput.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4910095bcc63510b5d14ced32ec054d329fb1f106676869563424bccd6d998bc -size 12597 diff --git a/Data/Baseline/OTB/Files/fzTvDSValidatedRoadVectorDataOutput.shp b/Data/Baseline/OTB/Files/fzTvDSValidatedRoadVectorDataOutput.shp deleted file mode 100644 index db9524f4ac..0000000000 --- a/Data/Baseline/OTB/Files/fzTvDSValidatedRoadVectorDataOutput.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a1e3ab5de6caec9d1e335eafe346c673f87ec06c02f0fb3a5ccafeb3919961c8 -size 12084 diff --git a/Data/Baseline/OTB/Files/fzTvDSValidatedRoadVectorDataOutput.shx b/Data/Baseline/OTB/Files/fzTvDSValidatedRoadVectorDataOutput.shx deleted file mode 100644 index 33a059571d..0000000000 --- a/Data/Baseline/OTB/Files/fzTvDSValidatedRoadVectorDataOutput.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0ffb45fdd34b1bb0bbb8817b1de538b4609e806972cf5287d9ec3b7828c86cc2 -size 628 diff --git a/Data/Input/Dempster-Shafer/DSFuzzyModel.xml b/Data/Input/Dempster-Shafer/DSFuzzyModel.xml deleted file mode 100644 index 034442d66e..0000000000 --- a/Data/Input/Dempster-Shafer/DSFuzzyModel.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" ?> -<FuzzydDescriptorsModel> - <Descriptor name="NONDVI"> - <Parameter value="0.0328422" /> - <Parameter value="0.0966684" /> - <Parameter value="0.128072" /> - <Parameter value="0.892172" /> - </Descriptor> - <Descriptor name="ROADSA"> - <Parameter value="0.0528834" /> - <Parameter value="0.125395" /> - <Parameter value="0.216374" /> - <Parameter value="1" /> - </Descriptor> - <Descriptor name="NOBUIL"> - <Parameter value="0.0198015" /> - <Parameter value="0.0944664" /> - <Parameter value="0.17092" /> - <Parameter value="0.87146" /> - </Descriptor> -</FuzzydDescriptorsModel> diff --git a/Data/Input/Dempster-Shafer/DSFuzzyModel_Init.xml b/Data/Input/Dempster-Shafer/DSFuzzyModel_Init.xml deleted file mode 100644 index 83f733dc4c..0000000000 --- a/Data/Input/Dempster-Shafer/DSFuzzyModel_Init.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" ?> -<FuzzydDescriptorsModel> - <Descriptor name="NONDVI"> - <Parameter value="0.05" /> - <Parameter value="0.15" /> - <Parameter value="0.20" /> - <Parameter value="0.95" /> - </Descriptor> - <Descriptor name="ROADSA"> - <Parameter value="0.15" /> - <Parameter value="0.30" /> - <Parameter value="0.50" /> - <Parameter value="0.95" /> - </Descriptor> - <Descriptor name="NOBUIL"> - <Parameter value="0.05" /> - <Parameter value="0.07" /> - <Parameter value="0.10" /> - <Parameter value="0.95" /> - </Descriptor> -</FuzzydDescriptorsModel> diff --git a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE.TIF b/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE.TIF deleted file mode 100644 index c35e58f773..0000000000 --- a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d4c708f6360cadd64d7c530b6412397ddc60929b8c3bcea79d4b45e392dde59c -size 1149268 diff --git a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE.geom b/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE.geom deleted file mode 100644 index 6845284827..0000000000 --- a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE.geom +++ /dev/null @@ -1,165 +0,0 @@ -adjustment_0.adj_param_0.center: 0 -adjustment_0.adj_param_0.description: intrack_offset -adjustment_0.adj_param_0.lock_flag: 0 -adjustment_0.adj_param_0.parameter: 0 -adjustment_0.adj_param_0.sigma: 50 -adjustment_0.adj_param_0.units: pixel -adjustment_0.adj_param_1.center: 0 -adjustment_0.adj_param_1.description: crtrack_offset -adjustment_0.adj_param_1.lock_flag: 0 -adjustment_0.adj_param_1.parameter: 0 -adjustment_0.adj_param_1.sigma: 50 -adjustment_0.adj_param_1.units: pixel -adjustment_0.adj_param_2.center: 0 -adjustment_0.adj_param_2.description: intrack_scale -adjustment_0.adj_param_2.lock_flag: 0 -adjustment_0.adj_param_2.parameter: 0 -adjustment_0.adj_param_2.sigma: 50 -adjustment_0.adj_param_2.units: unknown -adjustment_0.adj_param_3.center: 0 -adjustment_0.adj_param_3.description: crtrack_scale -adjustment_0.adj_param_3.lock_flag: 0 -adjustment_0.adj_param_3.parameter: 0 -adjustment_0.adj_param_3.sigma: 50 -adjustment_0.adj_param_3.units: unknown -adjustment_0.adj_param_4.center: 0 -adjustment_0.adj_param_4.description: map_rotation -adjustment_0.adj_param_4.lock_flag: 0 -adjustment_0.adj_param_4.parameter: 0 -adjustment_0.adj_param_4.sigma: 0.1 -adjustment_0.adj_param_4.units: degrees -adjustment_0.description: Initial adjustment -adjustment_0.dirty_flag: 0 -adjustment_0.number_of_params: 5 -bias_error: 0 -current_adjustment: 0 -height_off: 241 -height_scale: 500 -image_id: 02APR01105228-M1BS-000000128955_01_P001 -lat_off: 43.5757 -lat_scale: 0.0881 -line_den_coeff_00: 1 -line_den_coeff_01: 3.073151e-05 -line_den_coeff_02: 0.0006767593 -line_den_coeff_03: 0.0002759762 -line_den_coeff_04: 1.707011e-05 -line_den_coeff_05: -4.215218e-07 -line_den_coeff_06: -2.031982e-06 -line_den_coeff_07: 6.281466e-06 -line_den_coeff_08: -2.098686e-05 -line_den_coeff_09: 1.091061e-05 -line_den_coeff_10: 3.716818e-08 -line_den_coeff_11: 5.435656e-08 -line_den_coeff_12: -4.35619e-06 -line_den_coeff_13: 1.09022e-08 -line_den_coeff_14: 1.78519e-08 -line_den_coeff_15: 0.0004342067 -line_den_coeff_16: 6.371344e-08 -line_den_coeff_17: 0 -line_den_coeff_18: -1.416592e-05 -line_den_coeff_19: 1.653665e-08 -line_num_coeff_00: -0.001183432 -line_num_coeff_01: 0.001540212 -line_num_coeff_02: -0.9858373 -line_num_coeff_03: 0.01594806 -line_num_coeff_04: 2.730892e-05 -line_num_coeff_05: -9.785795e-07 -line_num_coeff_06: 0.0002528461 -line_num_coeff_07: -0.0007762763 -line_num_coeff_08: 0.001998298 -line_num_coeff_09: -5.855501e-06 -line_num_coeff_10: -8.293341e-07 -line_num_coeff_11: 4.496584e-08 -line_num_coeff_12: 2.925877e-05 -line_num_coeff_13: 0 -line_num_coeff_14: -8.818227e-06 -line_num_coeff_15: -4.465644e-05 -line_num_coeff_16: -1.06142e-05 -line_num_coeff_17: 4.172296e-07 -line_num_coeff_18: -4.632173e-06 -line_num_coeff_19: 1.915274e-07 -line_off: 3630 -line_scale: 3691 -ll_lat: 43.4876885949517 -ll_lon: 1.35617248105186 -long_off: 1.4635 -long_scale: 0.1091 -lr_lat: 43.487956450501 -lr_lon: 1.57224225725364 -meters_per_pixel_x: 2.55166863064346 -meters_per_pixel_y: 2.68906571490787 -number_lines: 7265 -number_of_adjustments: 1 -number_samples: 6876 -polynomial_format: B -rand_error: 0 -rect: 0 0 6875 7264 -ref_point_hgt: 241 -ref_point_lat: 43.5755460927759 -ref_point_line: 3632 -ref_point_lon: 1.46371767649799 -ref_point_samp: 3437.5 -samp_den_coeff_00: 1 -samp_den_coeff_01: 0.001117681 -samp_den_coeff_02: 0.002334335 -samp_den_coeff_03: -0.0006207135 -samp_den_coeff_04: -5.962135e-05 -samp_den_coeff_05: 1.552717e-06 -samp_den_coeff_06: -1.84009e-06 -samp_den_coeff_07: -4.876876e-06 -samp_den_coeff_08: 3.158963e-05 -samp_den_coeff_09: -1.201072e-05 -samp_den_coeff_10: -1.579758e-07 -samp_den_coeff_11: -9.944747e-08 -samp_den_coeff_12: 1.942372e-06 -samp_den_coeff_13: 0 -samp_den_coeff_14: -8.945496e-08 -samp_den_coeff_15: -1.480163e-06 -samp_den_coeff_16: -6.008504e-08 -samp_den_coeff_17: 3.055564e-08 -samp_den_coeff_18: 1.11032e-07 -samp_den_coeff_19: 1.314046e-08 -samp_num_coeff_00: -0.0021422 -samp_num_coeff_01: 1.003674 -samp_num_coeff_02: 0.00317708 -samp_num_coeff_03: 0.0002667587 -samp_num_coeff_04: -0.002315384 -samp_num_coeff_05: 0.0006203277 -samp_num_coeff_06: -0.0004161892 -samp_num_coeff_07: 0.001035653 -samp_num_coeff_08: -0.001198854 -samp_num_coeff_09: 7.437719e-06 -samp_num_coeff_10: 2.503507e-06 -samp_num_coeff_11: -2.185972e-05 -samp_num_coeff_12: -4.893912e-05 -samp_num_coeff_13: -1.149441e-05 -samp_num_coeff_14: 8.351017e-05 -samp_num_coeff_15: -7.642065e-05 -samp_num_coeff_16: -2.684169e-07 -samp_num_coeff_17: 2.340974e-08 -samp_num_coeff_18: 7.001246e-06 -samp_num_coeff_19: -3.846245e-08 -samp_off: 3438 -samp_scale: 3443 -sensor: QB02 -support_data.B_band_absCalFactor: 0.0160412 -support_data.G_band_absCalFactor: 0.0143847 -support_data.N_band_absCalFactor: 0.0154242 -support_data.R_band_absCalFactor: 0.0126735 -support_data.TDI_level: 13 -support_data.azimuth_angle: 154.8 -support_data.band_id: Multi -support_data.band_name_list: B G R N -support_data.bits_per_pixel: 16 -support_data.elevation_angle: 48.6 -support_data.generation_date: 2004-05-25T19:49:03.000000Z -support_data.sat_azimuth_angle: 359 -support_data.sat_elevation_angle: 72.4 -support_data.sat_id: QB02 -support_data.tlc_date: 2002-04-01T10:52:28.415362Z; -support_data.type: ossimQuickbirdMetaData -type: ossimQuickbirdRpcModel -ul_lat: 43.663535886024 -ul_lon: 1.35446328287058 -ur_lat: 43.6638304625161 -ur_lon: 1.57254618315919 diff --git a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.dbf b/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.dbf deleted file mode 100644 index 17a9903a40..0000000000 --- a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:63f211d703d89d3abd9c7b0c2729f11b94fc9918108e77ab707c3a5b087c8da7 -size 1028 diff --git a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.prj b/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.prj deleted file mode 100644 index a30c00a55d..0000000000 --- a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.prj +++ /dev/null @@ -1 +0,0 @@ -GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.shp b/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.shp deleted file mode 100644 index f901be7cd3..0000000000 --- a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a8d2eee9ba80d3bb867aada7db654ef86d17cad4f1d526b0385a943f29d82a6b -size 4564 diff --git a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.shx b/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.shx deleted file mode 100644 index 6f0fa666c0..0000000000 --- a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f3bdf591bf2d6a7e3025629649f3e3effa4511f9f1af793193365b3ef53d8eb3 -size 252 diff --git a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.dbf b/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.dbf deleted file mode 100644 index ed4287655d..0000000000 --- a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.dbf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d680b1d17582dc86c451bbe0446f9af84ae611b6afe06a5db38adecf191ba971 -size 4847 diff --git a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.prj b/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.prj deleted file mode 100644 index a30c00a55d..0000000000 --- a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.prj +++ /dev/null @@ -1 +0,0 @@ -GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shp b/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shp deleted file mode 100644 index d5ff96b992..0000000000 --- a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d0b6e77ff1d3acae9432b63b929050ed0089e9aace8a831c817b07ac02b04063 -size 18388 diff --git a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shx b/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shx deleted file mode 100644 index 72bda750b8..0000000000 --- a/Data/Input/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8e3f91df5a62beb63ba9b17a952d2673a732aa428b20861dce0c6dd986e588db -size 668 diff --git a/Documentation/Cookbook/rst/recipes/improc.rst b/Documentation/Cookbook/rst/recipes/improc.rst index 4216062f7e..72f24b4299 100644 --- a/Documentation/Cookbook/rst/recipes/improc.rst +++ b/Documentation/Cookbook/rst/recipes/improc.rst @@ -289,128 +289,3 @@ skipped. There is a cleanup option that can be disabled in order to check intermediate outputs of this composite application. - -Dempster Shafer based Classifier Fusion ---------------------------------------- - -This framework is dedicated to perform cartographic validation starting -from the result of a detection (for example a road extraction), enhance -the results viability by using a classifier fusion algorithm. Using a -set of descriptors, the processing chain validates or invalidates the -input geometrical features. - -Fuzzy Model (requisite) -~~~~~~~~~~~~~~~~~~~~~~~ - -The *DSFuzzyModelEstimation* application performs the fuzzy model -estimation (once by use case: descriptor set / Belief support / -Plausibility support). It has the following input parameters: - -- ``-psin`` a vector data of positive samples enriched according to the - “Compute Descriptors†part - -- ``-nsin`` a vector data of negative samples enriched according to the - “Compute Descriptors†part - -- ``-belsup`` a support for the Belief computation - -- ``-plasup`` a support for the Plausibility computation - -- ``-desclist`` an initialization model (xml file) or a descriptor name - list (listing the descriptors to be included in the model) - -The application can be used like this: - -:: - - otbcli_DSFuzzyModelEstimation -psin PosSamples.shp - -nsin NegSamples.shp - -belsup "ROADSA" - -plasup "NONDVI" "ROADSA" "NOBUIL" - -desclist "NONDVI" "ROADSA" "NOBUIL" - -out FuzzyModel.xml - -The output file ``FuzzyModel.xml`` contains the optimal model to perform -information fusion. - -First Step: Compute Descriptors -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The first step in the classifier fusion based validation is to compute, -for each studied polyline, the chosen descriptors. In this context, the -*ComputePolylineFeatureFromImage* application can be used for a large -range of descriptors. It has the following inputs: - -- ``-in`` an image (of the studied scene) corresponding to the chosen - descriptor (NDVI, building Mask…) - -- ``-vd`` a vector data containing polyline of interest - -- ``-expr`` a formula (“b1 >0.4â€, “b1 == 0â€) where b1 is the standard - name of input image first band - -- ``-field`` a field name corresponding to the descriptor codename - (NONDVI, ROADSA...) - -The output is a vector data containing polylines with a new field -containing the descriptor value. In order to add the “NONDVI†descriptor -to an input vector data (“inVD.shpâ€) corresponding to the percentage of -pixels along a polyline that verifies the formula “NDVI >0.4â€: - -:: - - otbcli_ComputePolylineFeatureFromImage -in NDVI.TIF - -vd inVD.shp - -expr "b1 > 0.4" - -field "NONDVI" - -out VD_NONDVI.shp - -``NDVI.TIF`` is the NDVI mono band image of the studied scene. This step -must be repeated for each chosen descriptor: - -:: - - otbcli_ComputePolylineFeatureFromImage -in roadSpectralAngle.TIF - -vd VD_NONDVI.shp - -expr "b1 > 0.24" - -field "ROADSA" - -out VD_NONDVI_ROADSA.shp - -:: - - otbcli_ComputePolylineFeatureFromImage -in Buildings.TIF - -vd VD_NONDVI_ROADSA.shp - -expr "b1 == 0" - -field "NOBUILDING" - -out VD_NONDVI_ROADSA_NOBUIL.shp - -Both ``NDVI.TIF`` and ``roadSpectralAngle.TIF`` can be produced using -**Monteverdi** feature extraction capabilities, and ``Buildings.TIF`` -can be generated using **Monteverdi** rasterization module. From now on, -``VD_NONDVI_ROADSA_NOBUIL.shp`` contains three descriptor fields. It -will be used in the following part. - -Second Step: Feature Validation -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The final application (*VectorDataDSValidation* ) will validate or -invalidate the studied samples using `the Dempster-Shafer -theory <http://en.wikipedia.org/wiki/Dempster%E2%80%93Shafer_theory>`_ -. Its inputs are: - -- ``-in`` an enriched vector data “VD\_NONDVI\_ROADSA\_NOBUIL.shp†- -- ``-belsup`` a support for the Belief computation - -- ``-plasup`` a support for the Plausibility computation - -- ``-descmod`` a fuzzy model FuzzyModel.xml - -The output is a vector data containing only the validated samples. - -:: - - otbcli_VectorDataDSValidation -in extractedRoads_enriched.shp - -descmod FuzzyModel.xml - -out validatedSamples.shp - diff --git a/Modules/Applications/AppClassification/app/CMakeLists.txt b/Modules/Applications/AppClassification/app/CMakeLists.txt index b646618959..50ac00ea16 100644 --- a/Modules/Applications/AppClassification/app/CMakeLists.txt +++ b/Modules/Applications/AppClassification/app/CMakeLists.txt @@ -48,11 +48,6 @@ otb_create_application( SOURCES otbFusionOfClassifications.cxx LINK_LIBRARIES ${${otb-module}_LIBRARIES}) -otb_create_application( - NAME ComputePolylineFeatureFromImage - SOURCES otbComputePolylineFeatureFromImage.cxx - LINK_LIBRARIES ${${otb-module}_LIBRARIES}) - if(OTB_USE_SHARK) otb_create_application( NAME KMeansClassification @@ -75,11 +70,6 @@ otb_create_application( SOURCES otbPredictRegression.cxx LINK_LIBRARIES ${${otb-module}_LIBRARIES}) -otb_create_application( - NAME DSFuzzyModelEstimation - SOURCES otbDSFuzzyModelEstimation.cxx - LINK_LIBRARIES ${${otb-module}_LIBRARIES}) - otb_create_application( NAME ClassificationMapRegularization SOURCES otbClassificationMapRegularization.cxx @@ -95,11 +85,6 @@ otb_create_application( SOURCES otbComputeImagesStatistics.cxx LINK_LIBRARIES ${${otb-module}_LIBRARIES}) -otb_create_application( - NAME VectorDataDSValidation - SOURCES otbVectorDataDSValidation.cxx - LINK_LIBRARIES ${${otb-module}_LIBRARIES}) - otb_create_application( NAME PolygonClassStatistics SOURCES otbPolygonClassStatistics.cxx diff --git a/Modules/Applications/AppClassification/app/otbComputePolylineFeatureFromImage.cxx b/Modules/Applications/AppClassification/app/otbComputePolylineFeatureFromImage.cxx deleted file mode 100644 index 919ad16354..0000000000 --- a/Modules/Applications/AppClassification/app/otbComputePolylineFeatureFromImage.cxx +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#include <iostream> - -#include "otbVectorImage.h" - -#include "otbWrapperApplicationFactory.h" - - -#include "otbVectorDataFileReader.h" -#include "otbVectorDataFileWriter.h" -#include "itkPreOrderTreeIterator.h" - -#include "otbVectorDataIntoImageProjectionFilter.h" -#include "otbVectorDataTransformFilter.h" -#include "itkAffineTransform.h" - -#include "otbParserConditionDataNodeFeatureFunction.h" -#include "otbNDVIDataNodeFeatureFunction.h" - -// Elevation handler -#include "otbWrapperElevationParametersHandler.h" - -namespace otb -{ -namespace Wrapper -{ - -class ComputePolylineFeatureFromImage: public Application -{ -public: - /** Standard class typedefs. */ - typedef ComputePolylineFeatureFromImage Self; - typedef Application Superclass; - typedef itk::SmartPointer<Self> Pointer; - typedef itk::SmartPointer<const Self> ConstPointer; - // Images - typedef FloatVectorImageType::PixelType PixelType; - typedef FloatVectorImageType ImageType; - - // VectorData - typedef VectorData<> VectorDataType; - typedef VectorDataType::DataNodeType DataNodeType; - typedef DataNodeType::ValuePrecisionType PrecisionType; - typedef DataNodeType::PrecisionType CoordRepType; - typedef itk::PreOrderTreeIterator<VectorDataType::DataTreeType> TreeIteratorType; - typedef VectorDataIntoImageProjectionFilter<VectorDataType, ImageType> VectorDataIntoImageProjType; - typedef VectorDataProjectionFilter<VectorDataType, VectorDataType> VectorDataProjectionFilterType; - - typedef ParserConditionDataNodeFeatureFunction<ImageType, CoordRepType, PrecisionType> - ParserConditionFeatureFunctionType; - - /** Standard macro */ - itkNewMacro(Self) -; - - itkTypeMacro(ComputePolylineFeatureFromImage, otb::Application) -; - -private: - void DoInit() override - { - SetName("ComputePolylineFeatureFromImage"); - SetDescription("This application computes the chosen descriptors for each studied polyline contained in the input VectorData."); - - SetDocName("Compute Polyline Feature From Image"); - SetDocLongDescription("The first step in the classifier fusion based validation is to compute the chosen descriptors for each studied polyline."); - SetDocLimitations("Since it does not rely on streaming process, take care of the size of input image before launching application."); - SetDocAuthors("OTB-Team"); - SetDocSeeAlso(" "); - AddDocTag(Tags::FeatureExtraction); - - AddParameter(ParameterType_InputImage, "in", "Input Image"); - SetParameterDescription("in", "An image to compute the descriptors on."); - - AddParameter(ParameterType_InputVectorData, "vd", "Vector Data"); - SetParameterDescription("vd", "Vector data containing the polylines where the features will be computed."); - - // Elevation - ElevationParametersHandler::AddElevationParameters(this, "elev"); - - AddParameter(ParameterType_String, "expr", "Feature expression"); - SetParameterDescription("expr", "The feature formula (b1 < 0.3) where b1 is the standard name of input image first band"); - - AddParameter(ParameterType_String, "field", "Feature name"); - SetParameterDescription("field", "The field name corresponding to the feature codename (NONDVI, ROADSA...)"); - - AddParameter(ParameterType_OutputVectorData, "out", "Output Vector Data"); - SetParameterDescription("out", "The output vector data containing polylines with a new field"); - - // Doc example parameter settings - SetDocExampleParameterValue("in", "NDVI.TIF"); - SetDocExampleParameterValue("vd", "roads_ground_truth.shp"); - SetDocExampleParameterValue("expr", "\"(b1 > 0.4)\""); - SetDocExampleParameterValue("field", "NONDVI"); - SetDocExampleParameterValue("out", "PolylineFeatureFromImage_LI_NONDVI_gt.shp"); - - SetOfficialDocLink(); - } - - void DoUpdateParameters() override - { - // Nothing to do here : all parameters are independent - } - - void DoExecute() override - { - // Vector Data into Image projection - FloatVectorImageType::Pointer inImage = GetParameterImage("in"); - - inImage->UpdateOutputInformation(); - try - { - inImage->Update(); - } - catch (...) - { - itkGenericExceptionMacro(<< "Error during image update, maybe your image is to big."); - } - - otbAppLogDEBUG( << "Starting PolylineFeature extraction process" ) - - // Vector Data into Image projection - //// Read the Vectordata - - VectorDataType* inVectorData = GetParameterVectorData("vd"); - inVectorData->Update(); - //// Projection - VectorDataIntoImageProjType::Pointer vprojIm = VectorDataIntoImageProjType::New(); - vprojIm->SetInputVectorData(inVectorData); - vprojIm->SetInputImage(inImage); - - // Setup the DEM Handler - otb::Wrapper::ElevationParametersHandler::SetupDEMHandlerFromElevationParameters(this,"elev"); - - vprojIm->SetUseOutputSpacingAndOriginFromImage(true); // we want index as input; - vprojIm->Update(); - - // Add description - ParserConditionFeatureFunctionType::Pointer vdescriptor = ParserConditionFeatureFunctionType::New(); - vdescriptor->SetExpression(GetParameterString("expr")); - vdescriptor->SetInputImage(inImage); - - m_OutVectorData = VectorDataType::New(); - // Retrieving root node - DataNodeType::Pointer root = m_OutVectorData->GetDataTree()->GetRoot()->Get(); - // Create the document node - DataNodeType::Pointer document = DataNodeType::New(); - document->SetNodeType(otb::DOCUMENT); - // Adding the layer to the data tree - m_OutVectorData->GetDataTree()->Add(document, root); - // Create the folder node - DataNodeType::Pointer folder = DataNodeType::New(); - folder->SetNodeType(otb::FOLDER); - // Adding the layer to the data tree - m_OutVectorData->GetDataTree()->Add(folder, document); - - TreeIteratorType itVector(vprojIm->GetOutput()->GetDataTree()); - itVector.GoToBegin(); - - while (!itVector.IsAtEnd()) - { - vdescriptor->SetInputImage(inImage); - if (!itVector.Get()->IsRoot() && !itVector.Get()->IsDocument() && !itVector.Get()->IsFolder()) - { - DataNodeType::Pointer currentGeometry = itVector.Get(); - currentGeometry->SetFieldAsDouble(GetParameterString("field"), - (double) (vdescriptor->Evaluate(*(currentGeometry.GetPointer()))[0])); - m_OutVectorData->GetDataTree()->Add(currentGeometry, folder); - } - ++itVector; - } - - /* - * Reprojection of the output VectorData - * - * The output of VectorDataToRoadDescription is in image index coordinates - * - * 3 cases : - * - input image has no geo-information : pass through - * - input image is in cartographic projection : apply image spacing and origin, and set the ProjectionRef - * - input image is in sensor model geometry : reproject in WGS84 - * - */ - - std::string projRef = inImage->GetProjectionRef(); - ImageKeywordlist kwl; - itk::ExposeMetaData<ImageKeywordlist>(inImage->GetMetaDataDictionary(), MetaDataKey::OSSIMKeywordlistKey, kwl); - - if (!projRef.empty()) - { - // image is in cartographic projection - // apply spacing and origin + set projection WKT - // The VectorData in output of the chain is in image index coordinate, - // and the projection information is lost - // Apply an affine transform to apply image origin and spacing, - // and arbitrarily set the ProjectionRef to the input image ProjectionRef - - typedef itk::AffineTransform<VectorDataType::PrecisionType, 2> TransformType; - typedef otb::VectorDataTransformFilter<VectorDataType, VectorDataType> VDTransformType; - - TransformType::ParametersType params; - params.SetSize(6); - params[0] = inImage->GetSignedSpacing()[0]; - params[1] = 0; - params[2] = 0; - params[3] = inImage->GetSignedSpacing()[1]; - params[4] = inImage->GetOrigin()[0]; - params[5] = inImage->GetOrigin()[1]; - - TransformType::Pointer transform = TransformType::New(); - transform->SetParameters(params); - - VDTransformType::Pointer vdTransform = VDTransformType::New(); - vdTransform->SetTransform(transform); - vdTransform->SetInput(m_OutVectorData); - vdTransform->Update(); - - m_ProjectedVectorData = vdTransform->GetOutput(); - - m_ProjectedVectorData->SetProjectionRef(inImage->GetProjectionRef()); - } - else - if (kwl.GetSize() > 0) - { - // image is in sensor model geometry - - // Reproject VectorData in image projection - VectorDataProjectionFilterType::Pointer vproj = VectorDataProjectionFilterType::New(); - vproj->SetInput(m_OutVectorData); - - vproj->SetOutputKeywordList(inImage->GetImageKeywordlist()); - vproj->SetOutputProjectionRef(inImage->GetProjectionRef()); - vproj->SetOutputOrigin(inImage->GetOrigin()); - vproj->SetOutputSpacing(inImage->GetSignedSpacing()); - - // Setup the DEM Handler - otb::Wrapper::ElevationParametersHandler::SetupDEMHandlerFromElevationParameters(this,"elev"); - - vproj->Update(); - m_ProjectedVectorData = vproj->GetOutput(); - } - else - { - // no georeferencing information - m_ProjectedVectorData = m_OutVectorData; - } - - // Set the output vectorData - SetParameterOutputVectorData("out", m_ProjectedVectorData); - - }; - - VectorDataType::Pointer m_ProjectedVectorData; - VectorDataType::Pointer m_OutVectorData; - -}; - -} -} - -OTB_APPLICATION_EXPORT(otb::Wrapper::ComputePolylineFeatureFromImage) - - diff --git a/Modules/Applications/AppClassification/app/otbDSFuzzyModelEstimation.cxx b/Modules/Applications/AppClassification/app/otbDSFuzzyModelEstimation.cxx deleted file mode 100644 index 2804718d78..0000000000 --- a/Modules/Applications/AppClassification/app/otbDSFuzzyModelEstimation.cxx +++ /dev/null @@ -1,451 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - - -#include <iostream> - -#include "otbWrapperApplication.h" -#include "otbWrapperApplicationFactory.h" -#include "otbWrapperStringListParameter.h" -#include "otbImageToEnvelopeVectorDataFilter.h" -#include "otbVectorDataToRandomLineGenerator.h" -#include "itkAmoebaOptimizer.h" -#include "otbStandardDSCostFunction.h" - - -namespace otb -{ - -namespace Wrapper -{ - -#include "itkCommand.h" -class CommandIterationUpdate : public itk::Command -{ -public: -typedef CommandIterationUpdate Self; -typedef itk::Command Superclass; -typedef itk::SmartPointer<Self> Pointer; -itkNewMacro( Self ); -protected: -CommandIterationUpdate() {}; -public: -typedef itk::AmoebaOptimizer OptimizerType; -typedef const OptimizerType * OptimizerPointer; - - -void Execute(itk::Object *caller, const itk::EventObject & event) override -{ - Execute( (const itk::Object *)caller, event); -} - -void Execute(const itk::Object * object, const itk::EventObject & event) override -{ - OptimizerPointer optimizer = - dynamic_cast< OptimizerPointer >( object ); - if( ! itk::IterationEvent().CheckEvent( &event ) ) - { - return; - } - std::ostringstream message; - message << optimizer->GetCachedValue() << " "; - message << optimizer->GetCachedCurrentPosition() << std::endl; - std::cout<<message.str()<<std::endl; -} - - -}; - - -class DSFuzzyModelEstimation: public Application -{ -public: - /** Standard class typedefs. */ - typedef DSFuzzyModelEstimation Self; - typedef Application Superclass; - typedef itk::SmartPointer<Self> Pointer; - typedef itk::SmartPointer<const Self> ConstPointer; - - typedef VectorData<double> VectorDataType; - - typedef VectorDataType::DataTreeType DataTreeType; - typedef VectorDataType::DataNodeType DataNodeType; - - typedef VectorDataType::ValuePrecisionType PrecisionType; - typedef VectorDataType::PrecisionType CoordRepType; - - typedef otb::Wrapper::StringListParameter::StringListType StringListType; - - typedef otb::VectorDataToDSValidatedVectorDataFilter<VectorDataType, PrecisionType> - ValidationFilterType; - typedef otb::StandardDSCostFunction<ValidationFilterType> CostFunctionType; - typedef CostFunctionType::LabelSetType LabelSetType; - - typedef itk::AmoebaOptimizer OptimizerType; - - typedef otb::FuzzyDescriptorsModelManager::DescriptorsModelType - DescriptorsModelType; - typedef otb::FuzzyDescriptorsModelManager::DescriptorListType - DescriptorListType; - - typedef itk::PreOrderTreeIterator<VectorDataType::DataTreeType> - TreeIteratorType; - - - /** Standard macro */ - itkNewMacro(Self); - - itkTypeMacro(DSFuzzyModelEstimation, otb::Application); - -private: - void DoInit() override - { - SetName("DSFuzzyModelEstimation"); - SetDescription("Estimate feature fuzzy model parameters using 2 vector data (ground truth samples and wrong samples)."); - - SetDocName("Fuzzy Model estimation"); - SetDocLongDescription("Estimate feature fuzzy model parameters using 2 vector data (ground truth samples and wrong samples)."); - SetDocLimitations("None."); - SetDocAuthors("OTB-Team"); - SetDocSeeAlso(" "); - - AddDocTag(Tags::FeatureExtraction); - - AddParameter(ParameterType_InputVectorData, "psin", "Input Positive Vector Data"); - SetParameterDescription("psin", "Ground truth vector data for positive samples"); - - AddParameter(ParameterType_InputVectorData, "nsin", "Input Negative Vector Data"); - SetParameterDescription("nsin", "Ground truth vector data for negative samples"); - - AddParameter(ParameterType_StringList, "belsup", "Belief Support"); - SetParameterDescription("belsup", "Dempster Shafer study hypothesis to compute belief"); - - AddParameter(ParameterType_StringList, "plasup", "Plausibility Support"); - SetParameterDescription("plasup", "Dempster Shafer study hypothesis to compute plausibility"); - - AddParameter(ParameterType_OutputFilename, "out", "Output filename"); - SetParameterDescription("out", "Output model file name (xml file) contains the optimal model to perform information fusion."); - - AddParameter(ParameterType_String, "cri", "Criterion"); - SetParameterDescription("cri", "Dempster Shafer criterion (by default (belief+plausibility)/2)"); - MandatoryOff("cri"); - SetParameterString("cri","((Belief + Plausibility)/2.)"); - - AddParameter(ParameterType_Float,"wgt","Weighting"); - SetParameterDescription("wgt","Coefficient between 0 and 1 to promote undetection or false detections (default 0.5)"); - MandatoryOff("wgt"); - SetParameterFloat("wgt",0.5); - - AddParameter(ParameterType_InputFilename,"initmod","initialization model"); - SetParameterDescription("initmod","Initialization model (xml file) to be used. If the xml initialization model is set, the descriptor list is not used (specified using the option -desclist)"); - MandatoryOff("initmod"); - - AddParameter(ParameterType_StringList, "desclist","Descriptor list"); - SetParameterDescription("desclist","List of the descriptors to be used in the model (must be specified to perform an automatic initialization)"); - MandatoryOff("desclist"); - - AddParameter(ParameterType_Int,"maxnbit","Maximum number of iterations"); - MandatoryOff("maxnbit"); - SetParameterDescription("maxnbit","Maximum number of optimizer iteration (default 200)"); - SetParameterInt("maxnbit",200); - - AddParameter(ParameterType_Bool,"optobs","Optimizer Observer"); - SetParameterDescription("optobs","Activate the optimizer observer"); - - // Doc example parameter settings - SetDocExampleParameterValue("psin", "cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shp"); - SetDocExampleParameterValue("nsin", "cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.shp"); - SetDocExampleParameterValue("belsup", "\"ROADSA\""); - SetDocExampleParameterValue("plasup", "\"NONDVI\" \"ROADSA\" \"NOBUIL\""); - SetDocExampleParameterValue("initmod", "Dempster-Shafer/DSFuzzyModel_Init.xml"); - SetDocExampleParameterValue("maxnbit", "4"); - SetDocExampleParameterValue("optobs", "true"); - SetDocExampleParameterValue("out", "DSFuzzyModelEstimation.xml"); - - SetOfficialDocLink(); - } - - void DoUpdateParameters() override - { - // Nothing to do here : all parameters are independent - - - // .. // - - - } - - void DoExecute() override - { - - //Instantiate - m_CostFunction = CostFunctionType::New(); - m_Optimizer = OptimizerType::New(); - - //Read the vector datas - VectorDataType::Pointer psVectorData = GetParameterVectorData("psin"); - psVectorData->Update(); - VectorDataType::Pointer nsVectorData = GetParameterVectorData("nsin"); - nsVectorData->Update(); - - // Load the initial descriptor model - DescriptorListType descList; - DescriptorsModelType descMod; - if (IsParameterEnabled("initmod")) - { - std::string descModFile = GetParameterString("initmod"); - descMod = FuzzyDescriptorsModelManager::Read(descModFile); - descList = FuzzyDescriptorsModelManager::GetDescriptorList(descMod); - } - else - { - StringListType stringList = GetParameterStringList("desclist"); - int nbsdDesc = stringList.size(); - for (int i = 0; i < nbsdDesc; i++) - { - descList.push_back(stringList[i]); - } - } - - m_CostFunction->SetDescriptorList(descList); - - // Compute statistics of all the descriptors - - std::vector<double> accFirstOrderPS, accSecondOrderPS, minPS, maxPS; - accFirstOrderPS.resize(descList.size()); - accSecondOrderPS.resize(descList.size()); - std::fill(accFirstOrderPS.begin(), accFirstOrderPS.end(), 0); - std::fill(accSecondOrderPS.begin(), accSecondOrderPS.end(), 0); - minPS.resize(descList.size()); - maxPS.resize(descList.size()); - unsigned int accNbElemPS = 0; - - TreeIteratorType itVectorPS(psVectorData->GetDataTree()); - for (itVectorPS.GoToBegin(); !itVectorPS.IsAtEnd(); ++itVectorPS) - { - if (!itVectorPS.Get()->IsRoot() && !itVectorPS.Get()->IsDocument() && !itVectorPS.Get()->IsFolder()) - { - DataNodeType::Pointer currentGeometry = itVectorPS.Get(); - - for (unsigned int i = 0; i < descList.size(); ++i) - { - double desc = currentGeometry->GetFieldAsDouble(descList[i]); - - accFirstOrderPS[i] += desc; - accSecondOrderPS[i] += desc * desc; - - if (desc < minPS[i]) - { - minPS[i] = desc; - } - if (desc > maxPS[i]) - { - maxPS[i] = desc; - } - - } - accNbElemPS++; - } - } - if (accNbElemPS == 0) - { - otbAppLogFATAL(<< "Error : no element found in positive vector data!"); - } - - TreeIteratorType itVectorNS(nsVectorData->GetDataTree()); - std::vector<double> accFirstOrderNS, accSecondOrderNS, minNS, maxNS; - minNS.resize(descList.size()); - maxNS.resize(descList.size()); - accFirstOrderNS.resize(descList.size()); - accSecondOrderNS.resize(descList.size()); - std::fill(accFirstOrderNS.begin(), accFirstOrderNS.end(), 0); - std::fill(accSecondOrderNS.begin(), accSecondOrderNS.end(), 0); - std::fill(minNS.begin(), minNS.end(), 1); - std::fill(maxNS.begin(), maxNS.end(), 0); - unsigned int accNbElemNS = 0; - - for (itVectorNS.GoToBegin(); !itVectorNS.IsAtEnd(); ++itVectorNS) - { - if (!itVectorNS.Get()->IsRoot() && !itVectorNS.Get()->IsDocument() && !itVectorNS.Get()->IsFolder()) - { - DataNodeType::Pointer currentGeometry = itVectorNS.Get(); - - for (unsigned int i = 0; i < descList.size(); ++i) - { - double desc = currentGeometry->GetFieldAsDouble(descList[i]); - - accFirstOrderNS[i] += desc; - accSecondOrderNS[i] += desc * desc; - - if (desc < minNS[i]) - { - minNS[i] = desc; - } - if (desc > maxNS[i]) - { - maxNS[i] = desc; - } - - } - accNbElemNS++; - } - } - if (accNbElemNS == 0) - { - otbAppLogFATAL(<< "Error : no element found in negative vector data!"); - } - otbAppLogINFO( << "Descriptors Stats : "); - otbAppLogINFO( << "Positive Samples"); - for (unsigned int i = 0; i < descList.size(); ++i) - { - double mean = accFirstOrderPS[i] / accNbElemPS; - double stddev = std::sqrt(accSecondOrderPS[i] / accNbElemPS - mean * mean); - otbAppLogINFO( << descList[i] << " : " << mean << " +/- " << stddev << " (min: " << minPS[i] << " max: " << maxPS[i] << ")"<< std::endl); - } - - otbAppLogINFO( << "Negative Samples" << std::endl); - for (unsigned int i = 0; i < descList.size(); ++i) - { - double mean = accFirstOrderNS[i] / accNbElemNS; - double stddev = std::sqrt(accSecondOrderNS[i] / accNbElemNS - mean * mean); - otbAppLogINFO(<< descList[i] << " : " << mean << " +/- " << stddev << " (min: " << minNS[i] << " max: " << maxNS[i] << ")"<< std::endl); - } - - OptimizerType::ParametersType initialPosition(4 * descList.size()); - - if (IsParameterEnabled("initmod")) - { - - for (unsigned int i = 0; i < 4; i++) - { - for (unsigned int j = 0; j < descList.size(); j++) - { - initialPosition.SetElement( - i + 4 * j, - otb::FuzzyDescriptorsModelManager::GetDescriptor(descList[j].c_str(), descMod).second[i]); - } - } - } - else - { - for (unsigned int j = 0; j < descList.size(); j++) - { - initialPosition.SetElement((j * 4), std::min(minNS[j], maxPS[j])); - initialPosition.SetElement((j * 4) + 2, std::max(minNS[j], maxPS[j])); - initialPosition.SetElement( - (j * 4) + 1, - 0.5 - * (initialPosition.GetElement((j * 4)) + initialPosition.GetElement((j * 4) + 2))); - initialPosition.SetElement((j * 4) + 3, 0.95); - } - } - - otbAppLogINFO(<<"Initial model: "<<initialPosition); - - //Cost Function - //Format Hypothesis - LabelSetType Bhyp, Phyp; - int nbSet; - - StringListType stringList = GetParameterStringList("belsup"); - nbSet = stringList.size(); - - for (int i = 0; i < nbSet; i++) - { - std::string str = stringList[i]; - Bhyp.insert(str); - } - m_CostFunction->SetBeliefHypothesis(Bhyp); - stringList = GetParameterStringList("plasup"); - nbSet = stringList.size(); - for (int i = 0; i < nbSet; i++) - { - std::string str = stringList[i]; - Phyp.insert(str); - } - m_CostFunction->SetPlausibilityHypothesis(Phyp); - - m_CostFunction->SetWeight(GetParameterFloat("wgt")); - - m_CostFunction->SetCriterionFormula(GetParameterString("cri")); - - m_CostFunction->SetGTVectorData(psVectorData); - m_CostFunction->SetNSVectorData(nsVectorData); - //Optimizer - m_Optimizer->SetCostFunction(m_CostFunction); - - m_Optimizer->SetMaximumNumberOfIterations(GetParameterInt("maxnbit")); - - OptimizerType::ParametersType simplexDelta(m_CostFunction->GetNumberOfParameters()); - simplexDelta.Fill(0.1); - - m_Optimizer->AutomaticInitialSimplexOff(); - m_Optimizer->SetInitialSimplexDelta(simplexDelta); - - m_Optimizer->SetInitialPosition(initialPosition); - - // Create the Command observer and register it with the optimizer. - CommandIterationUpdate::Pointer observer = CommandIterationUpdate::New(); - if (GetParameterInt("optobs")) - { - m_Optimizer->AddObserver(itk::IterationEvent(), observer); - } - - try - { - // do the optimization - m_Optimizer->StartOptimization(); - } - catch (itk::ExceptionObject& err) - { - // An error has occurred in the optimization. - // Update the parameters - otbAppLogFATAL("ERROR: Exception Caught : "<< err.GetDescription() << std::endl - << "numberOfIterations : " << m_Optimizer->GetOptimizer()->get_num_evaluations() << std::endl - << "Results : " << m_Optimizer->GetCurrentPosition() << std::endl); - } - // get the results - const unsigned int numberOfIterations = m_Optimizer->GetOptimizer()->get_num_evaluations(); - otbAppLogINFO("numberOfIterations : " << numberOfIterations << std::endl); - otbAppLogINFO("Results : " << m_Optimizer->GetCurrentPosition() << std::endl); - - for (unsigned int i = 0; i < descList.size(); i++) - { - otb::FuzzyDescriptorsModelManager::ParameterType tmpParams; - for (unsigned int j = 0; j < 4; j++) - { - tmpParams.push_back(m_Optimizer->GetCurrentPosition()[(i * 4) + j]); - } - otb::FuzzyDescriptorsModelManager::AddDescriptor(descList[i], tmpParams, m_Model); - } - otb::FuzzyDescriptorsModelManager::Save(GetParameterString("out"), m_Model); - - }; - - CostFunctionType::Pointer m_CostFunction; - OptimizerType::Pointer m_Optimizer; - otb::FuzzyDescriptorsModelManager::DescriptorsModelType m_Model; -}; - -} -} - -OTB_APPLICATION_EXPORT(otb::Wrapper::DSFuzzyModelEstimation) - diff --git a/Modules/Applications/AppClassification/app/otbVectorDataDSValidation.cxx b/Modules/Applications/AppClassification/app/otbVectorDataDSValidation.cxx deleted file mode 100644 index 64001c6a13..0000000000 --- a/Modules/Applications/AppClassification/app/otbVectorDataDSValidation.cxx +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - - -#include "otbVectorDataToDSValidatedVectorDataFilter.h" -#include "otbWrapperApplication.h" -#include "otbWrapperApplicationFactory.h" -#include "otbWrapperStringListParameter.h" - - -namespace otb -{ -namespace Wrapper -{ - -class VectorDataDSValidation: public Application -{ - - -public: - /** Standard class typedefs. */ - typedef VectorDataDSValidation Self; - typedef Application Superclass; - typedef itk::SmartPointer<Self> Pointer; - typedef itk::SmartPointer<const Self> ConstPointer; - - - typedef double PrecisionType; - typedef otb::VectorData<PrecisionType> VectorDataType; - typedef otb::VectorDataToDSValidatedVectorDataFilter<VectorDataType, PrecisionType> - VectorDataValidationFilterType; - typedef VectorDataValidationFilterType::LabelSetType - LabelSetType; - typedef FuzzyDescriptorsModelManager::DescriptorsModelType DescriptorsModelType; - - typedef otb::Wrapper::StringListParameter::StringListType StringListType; - - /** Standard macro */ - itkNewMacro(Self); - - itkTypeMacro(VectorDataDSValidation, otb::Application); - -private: - void DoInit() override - { - SetName("VectorDataDSValidation"); - SetDescription("Vector data validation based on the fusion of features using Dempster-Shafer evidence theory framework."); - - SetDocName("Vector Data validation"); - SetDocLongDescription("This application validates or unvalidate the studied samples using the Dempster-Shafer theory."); - SetDocLimitations("None."); - SetDocAuthors("OTB-Team"); - SetDocSeeAlso("http://en.wikipedia.org/wiki/Dempster-Shafer_theory"); - - AddDocTag(Tags::FeatureExtraction); - - - AddParameter(ParameterType_InputVectorData, "in", "Input Vector Data"); - SetParameterDescription("in", "Input vector data to validate"); - - AddParameter(ParameterType_InputFilename, "descmod", "Descriptors model filename"); - SetParameterDescription("descmod", "Fuzzy descriptors model (xml file)"); - - AddParameter(ParameterType_StringList, "belsup", "Belief Support"); - SetParameterDescription("belsup", "Dempster Shafer study hypothesis to compute belief"); - - AddParameter(ParameterType_StringList, "plasup", "Plausibility Support"); - SetParameterDescription("plasup", "Dempster Shafer study hypothesis to compute plausibility"); - - AddParameter(ParameterType_OutputVectorData, "out", "Output Vector Data"); - SetParameterDescription("out", "Output VectorData containing only the validated samples"); - - AddParameter(ParameterType_String, "cri", "Criterion"); - SetParameterDescription("cri", "Dempster Shafer criterion (by default (belief+plausibility)/2)"); - MandatoryOff("cri"); - SetParameterString("cri", "((Belief + Plausibility)/2.)"); - - AddParameter(ParameterType_Float, "thd", "Criterion threshold"); - SetParameterDescription("thd", "Criterion threshold (default 0.5)"); - MandatoryOff("thd"); - SetParameterFloat("thd",0.5); - - // Doc example parameter settings - SetDocExampleParameterValue("in", "cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shp"); - SetDocExampleParameterValue("belsup", "cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shp"); - SetDocExampleParameterValue("descmod", "DSFuzzyModel.xml"); - SetDocExampleParameterValue("out", "VectorDataDSValidation.shp"); - - SetOfficialDocLink(); - } - - void DoUpdateParameters() override - { - // Nothing to do here : all parameters are independent - - - // .. // - - - } - - void DoExecute() override - { - - //Read the vector data - VectorDataType::Pointer inVectorData = GetParameterVectorData("in"); - inVectorData->Update(); - - // Load the descriptors model - std::string descModFile = GetParameterString("descmod"); - DescriptorsModelType descMod = FuzzyDescriptorsModelManager::Read(descModFile); - - LabelSetType Bhyp, Phyp; - int nbSet; - - StringListType stringList = GetParameterStringList("belsup"); - nbSet = stringList.size(); - - for (int i = 0; i < nbSet; i++) - { - std::string str = stringList[i]; - Bhyp.insert(str); - } - stringList = GetParameterStringList("plasup"); - nbSet = stringList.size(); - for (int i = 0; i < nbSet; i++) - { - std::string str = stringList[i]; - Phyp.insert(str); - } - - // Process - m_ValidationFilter = VectorDataValidationFilterType::New(); - m_ValidationFilter->SetInput(inVectorData); - m_ValidationFilter->SetDescriptorModels(descMod); - m_ValidationFilter->SetBeliefHypothesis(Bhyp); - m_ValidationFilter->SetPlausibilityHypothesis(Phyp); - - m_ValidationFilter->SetCriterionFormula(GetParameterString("cri")); - m_ValidationFilter->SetCriterionThreshold(GetParameterFloat("thd")); - - // Set the output image - SetParameterOutputVectorData("out", m_ValidationFilter->GetOutput()); - - }; - - VectorDataValidationFilterType::Pointer m_ValidationFilter; - - -}; -} -} - -OTB_APPLICATION_EXPORT(otb::Wrapper::VectorDataDSValidation); diff --git a/Modules/Applications/AppClassification/test/CMakeLists.txt b/Modules/Applications/AppClassification/test/CMakeLists.txt index 6a05178e64..e24260482b 100644 --- a/Modules/Applications/AppClassification/test/CMakeLists.txt +++ b/Modules/Applications/AppClassification/test/CMakeLists.txt @@ -563,104 +563,6 @@ otb_test_application(NAME apTvFusionOfClassificationsMV2Inputs ${OTBAPP_BASELINE}/apTvFusionOfClassifications2InputsOutput.tif ${TEMP}/apTvFusionOfClassificationsMV2InputsOutput.tif) - -#----------- ComputePolylineFeatureFromImage TESTS ---------------- -otb_test_application(NAME apTvCdbComputePolylineFeatureFromImage_LI_NONDVI_wr - APP ComputePolylineFeatureFromImage - OPTIONS -in LARGEINPUT{DEMPSTER-SHAFER/NDVI.TIF} - -vd LARGEINPUT{DEMPSTER-SHAFER/wrongroads.shp} - -expr "(b1 > 0.4)" - -field "NONDVI" - -out ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_NONDVI_wr.shp) - -# FIXME cascade dependencies to largeinput repository -if(OTB_DATA_USE_LARGEINPUT) - otb_test_application(NAME apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_RoadExtractionApplication - APP ComputePolylineFeatureFromImage - OPTIONS -in LARGEINPUT{DEMPSTER-SHAFER/SpectralAngleRoad.TIF} - -vd ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_NONDVI_RoadExtractionApplication.shp - -expr "(b1 > 0.25)" - -field "ROADSA" - -out ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_RoadExtractionApplication.shp) - - set_tests_properties(apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_RoadExtractionApplication PROPERTIES DEPENDS apTvCdbComputePolylineFeatureFromImage_LI_NONDVI_RoadExtractionApplication) - - otb_test_application(NAME apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_wr - APP ComputePolylineFeatureFromImage - OPTIONS -in LARGEINPUT{DEMPSTER-SHAFER/SpectralAngleRoad.TIF} - -vd ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_NONDVI_wr.shp - -expr "(b1 > 0.25)" - -field "ROADSA" - -out ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_wr.shp) - - set_tests_properties(apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_wr PROPERTIES DEPENDS apTvCdbComputePolylineFeatureFromImage_LI_NONDVI_wr) - - otb_test_application(NAME apTvCdbComputePolylineFeatureFromImage_LI_NOBUIL_wr - APP ComputePolylineFeatureFromImage - OPTIONS -in LARGEINPUT{DEMPSTER-SHAFER/BUILDINGS.TIF} - -vd ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_wr.shp - -expr "(b1 == 0)" - -field "NOBUIL" - -out ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_NOBUIL_wr.shp - VALID --compare-ogr ${EPSILON_9} - ${OTBAPP_BASELINE_FILES}/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.shp - ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_NOBUIL_wr.shp) - - set_tests_properties(apTvCdbComputePolylineFeatureFromImage_LI_NOBUIL_wr PROPERTIES DEPENDS apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_wr) - - otb_test_application(NAME apTvCdbComputePolylineFeatureFromImage_LI_NONDVI_RoadExtractionApplication - APP ComputePolylineFeatureFromImage - OPTIONS -in LARGEINPUT{DEMPSTER-SHAFER/NDVI.TIF} - -vd LARGEINPUT{DEMPSTER-SHAFER/road_extraction.shp} - -expr "(b1 > 0.4)" - -field "NONDVI" - -out ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_NONDVI_RoadExtractionApplication.shp) - - otb_test_application(NAME apTvCdbComputePolylineFeatureFromImage_LI_NONDVI_gt - APP ComputePolylineFeatureFromImage - OPTIONS -in LARGEINPUT{DEMPSTER-SHAFER/NDVI.TIF} - -vd LARGEINPUT{DEMPSTER-SHAFER/roads_ground_truth.shp} - -expr "(b1 > 0.4)" - -field NONDVI - -out ${TEMP}/apTvCdbComputePolylineFeatureFromImage.shp) - - otb_test_application(NAME apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_gt - APP ComputePolylineFeatureFromImage - OPTIONS -in LARGEINPUT{DEMPSTER-SHAFER/SpectralAngleRoad.TIF} - -vd ${TEMP}/apTvCdbComputePolylineFeatureFromImage.shp - -expr "(b1 > 0.25)" - -field "ROADSA" - -out ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_gt.shp) - - set_tests_properties(apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_gt PROPERTIES DEPENDS apTvCdbComputePolylineFeatureFromImage_LI_NONDVI_gt) - - otb_test_application(NAME apTvCdbComputePolylineFeatureFromImage_LI_NOBUIL_gt - APP ComputePolylineFeatureFromImage - OPTIONS -in LARGEINPUT{DEMPSTER-SHAFER/BUILDINGS.TIF} - -vd ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_gt.shp - -expr "(b1 == 0)" - -field "NOBUIL" - -out ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_NOBUIL_gt.shp - VALID --compare-ogr ${EPSILON_9} - ${OTBAPP_BASELINE_FILES}/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shp - ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_NOBUIL_gt.shp) - - set_tests_properties(apTvCdbComputePolylineFeatureFromImage_LI_NOBUIL_gt PROPERTIES DEPENDS apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_gt) - - otb_test_application(NAME apTvCdbComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication - APP ComputePolylineFeatureFromImage - OPTIONS -in LARGEINPUT{DEMPSTER-SHAFER/BUILDINGS.TIF} - -vd ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_RoadExtractionApplication.shp - -expr "(b1 == 0)" - -field "NOBUIL" - -out ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.shp - VALID --compare-ogr ${EPSILON_9} - ${OTBAPP_BASELINE_FILES}/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.shp - ${TEMP}/apTvCdbComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.shp) - - set_tests_properties(apTvCdbComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication PROPERTIES DEPENDS apTvCdbComputePolylineFeatureFromImage_LI_ROADSA_RoadExtractionApplication) -endif() - #----------- KMeansClassification TESTS ---------------- if(OTB_USE_SHARK) otb_test_application(NAME apTvClKMeansImageClassification_composite @@ -769,30 +671,6 @@ if(OTB_USE_LIBSVM) ${TEMP}/clsvmConfMatQB1_allOpt.svm) endif() -#----------- DSFuzzyModelEstimation TESTS ---------------- -otb_test_application(NAME apTvCdbDSFuzzyModelEstimation_LI_autoInit - APP DSFuzzyModelEstimation - OPTIONS -psin ${OTBAPP_BASELINE_FILES}/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shp - -nsin ${OTBAPP_BASELINE_FILES}/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.shp - -belsup "ROADSA" - -plasup "NONDVI" "ROADSA" "NOBUIL" - -desclist "NONDVI" "ROADSA" "NOBUIL" - -maxnbit 4 - -optobs true - -out ${TEMP}/apTvCdbDSFuzzyModelEstimatorOutput_LI_autoInit.xml) - -otb_test_application(NAME apTvCdbDSFuzzyModelEstimation_LI - APP DSFuzzyModelEstimation - OPTIONS -psin ${OTBAPP_BASELINE_FILES}/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shp - -nsin ${OTBAPP_BASELINE_FILES}/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.shp - -belsup "ROADSA" - -plasup "NONDVI" "ROADSA" "NOBUIL" - -initmod ${OTB_DATA_ROOT}/Input/Dempster-Shafer/DSFuzzyModel_Init.xml - -maxnbit 4 - -optobs true - -out ${TEMP}/apTvCdbDSFuzzyModelEstimatorOutput_LI.xml) - - #----------- ClassificationMapRegularization TESTS ---------------- otb_test_application(NAME apTvClassificationMapRegularization APP ClassificationMapRegularization @@ -853,38 +731,6 @@ otb_test_application(NAME apTvClComputeImagesStatisticsQB123 ${OTBAPP_BASELINE_FILES}/clImageStatisticsQB123.xml ${TEMP}/apTvClEstimateImageStatisticsQB123.xml) - -#----------- VectorDataDSValidation TESTS ---------------- -otb_test_application(NAME cdbTvVectorDataDSValidationGroundTruth_LI - APP VectorDataDSValidation - OPTIONS -in ${OTBAPP_BASELINE_FILES}/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_gt.shp - -belsup "ROADSA" - -plasup "NONDVI" "ROADSA" "NOBUIL" - -descmod ${OTB_DATA_ROOT}/Input/Dempster-Shafer/DSFuzzyModel.xml - -out ${TEMP}/cdbTvVectorDataDSValidationOutpout_LI_gt.shp - VALID --compare-ogr 0.0 - ${OTBAPP_BASELINE_FILES}/cdbTvVectorDataDSValidationOutpout_LI_gt.shp - ${TEMP}/cdbTvVectorDataDSValidationOutpout_LI_gt.shp) - -otb_test_application(NAME apTvCdbVectorDataDSValidationRoadExtractionApplication_LI - APP VectorDataDSValidation - OPTIONS -in ${OTBAPP_BASELINE_FILES}/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_RoadExtractionApplication.shp - -belsup "ROADSA" - -plasup "NONDVI" "ROADSA" "NOBUIL" - -descmod ${OTB_DATA_ROOT}/Input/Dempster-Shafer/DSFuzzyModel.xml - -out ${TEMP}/apTvCdbVectorDataDSValidationOutpout_LI_RoadExtractionApplication.shp) - -otb_test_application(NAME cdbTvVectorDataDSValidationWrongRoads_LI - APP VectorDataDSValidation - OPTIONS -in ${OTBAPP_BASELINE_FILES}/cdbTvComputePolylineFeatureFromImage_LI_NOBUIL_wr.shp - -belsup "ROADSA" - -plasup "NONDVI" "ROADSA" "NOBUIL" - -descmod ${OTB_DATA_ROOT}/Input/Dempster-Shafer/DSFuzzyModel.xml - -out ${TEMP}/cdbTvVectorDataDSValidationOutpout_LI_wr.shp - VALID --compare-ogr 0.0 - ${OTBAPP_BASELINE_FILES}/cdbTvVectorDataDSValidationOutpout_LI_wr.shp - ${TEMP}/cdbTvVectorDataDSValidationOutpout_LI_wr.shp) - if(OTB_USE_OPENCV) #----------- TrainRegression TESTS ---------------- # y = 0.01*x^2 + 1.5*x - 300 diff --git a/Modules/Core/VectorDataBase/include/otbDataNodeImageFunction.h b/Modules/Core/VectorDataBase/include/otbDataNodeImageFunction.h deleted file mode 100644 index 4406a107fb..0000000000 --- a/Modules/Core/VectorDataBase/include/otbDataNodeImageFunction.h +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbDataNodeImageFunction_h -#define otbDataNodeImageFunction_h - -#include "otbDataNodeFunctionBase.h" -#include "otbDataNode.h" -#include "itkContinuousIndex.h" -#include "itkImageBase.h" - -namespace otb -{ -/** \class DataNodeImageFunction - * \brief TODO - * - * - * - * \ingroup Functions - * \sa NDVIDataNodeFeatureFunction - * - * \ingroup OTBVectorDataBase - */ - -template < -class TImage, -class TOutput, -class TCoordRep = double, -class TPrecision = double -> -class ITK_EXPORT DataNodeImageFunction : - public DataNodeFunctionBase<DataNode<TCoordRep, - TImage::ImageDimension, - TPrecision>, - TOutput> -{ -public: - /** Dimension underlying input image. */ - itkStaticConstMacro(ImageDimension, unsigned int, - TImage::ImageDimension); - - /** Standard class typedefs. */ - typedef DataNodeImageFunction Self; - typedef DataNodeFunctionBase<DataNode<TCoordRep, - itkGetStaticConstMacro(ImageDimension), - TPrecision>, - TOutput> Superclass; - typedef itk::SmartPointer<Self> Pointer; - typedef itk::SmartPointer<const Self> ConstPointer; - - /** Run-time type information (and related methods). */ - itkTypeMacro(DataNodeImageFunction, DataNodeFunctionBase); - - /** Some typedefs. */ - typedef TImage InputImageType; - typedef typename InputImageType::PixelType InputPixelType; - typedef typename InputImageType::ConstPointer InputImageConstPointer; - - typedef TOutput OutputType; - - /** CoordRepType typedef support. */ - typedef TCoordRep CoordRepType; - - /** PrecisionType typedef support. */ - typedef TPrecision PrecisionType; - - /** Index Type. */ - typedef typename InputImageType::IndexType IndexType; - typedef typename InputImageType::IndexValueType IndexValueType; - - /** ContinuousIndex Type. */ - typedef itk::ContinuousIndex<CoordRepType, itkGetStaticConstMacro(ImageDimension)> - ContinuousIndexType; - - /** DataNode Type */ - typedef typename Superclass::DataNodeType DataNodeType; - - /** Point Type */ - typedef typename DataNodeType::PointType PointType; - - /** Set the input image. - * \warning this method caches BufferedRegion information. - * If the BufferedRegion has changed, user must call - * SetInputImage again to update cached values. */ - virtual void SetInputImage( const InputImageType * ptr ); - - /** Get the input image. */ - const InputImageType * GetInputImage() const - { return m_Image.GetPointer(); } - - /** Evaluate the function at specified DataNode position. - * Subclasses must provide this method. */ - TOutput Evaluate( const DataNodeType& node ) const override = 0; - - /** Check if an index is inside the image buffer. - * we take into account the fact that each voxel has its - * center at the integer coordinate and extends half way - * to the next integer coordinate. - * \warning For efficiency, no validity checking of - * the input image is done. */ - virtual bool IsInsideBuffer( const IndexType & index ) const - { - for( unsigned int j = 0; j < ImageDimension; ++j ) - { - if( index[j] < m_StartIndex[j] ) - { - return false; - } - if( index[j] > m_EndIndex[j] ) - { - return false; - } - } - return true; - } - - /** Check if a continuous index is inside the image buffer. - * \warning For efficiency, no validity checking of - * the input image is done. */ - virtual bool IsInsideBuffer( const ContinuousIndexType & index ) const - { - for( unsigned int j = 0; j < ImageDimension; ++j ) - { - if( index[j] < m_StartContinuousIndex[j] ) - { - return false; - } - if( index[j] >= m_EndContinuousIndex[j] ) - //Comment this instruction after itkv4 migration (correct - //usage of centered-pixel coordinates) - //if( index[j] > m_EndContinuousIndex[j] ) - { - return false; - } - } - return true; - } - - /** Check if a point is inside the image buffer. - * \warning For efficiency, no validity checking of - * the input image pointer is done. */ - virtual bool IsInsideBuffer( const PointType & point ) const - { - ContinuousIndexType index; - m_Image->TransformPhysicalPointToContinuousIndex( point, index ); - return this->IsInsideBuffer( index ); - } - - /** Convert point to continuous index */ - void ConvertPointToContinuousIndex( const PointType & point, - ContinuousIndexType & cindex ) const - { - m_Image->TransformPhysicalPointToContinuousIndex( point, cindex ); - } - - /** Convert continuous index to nearest index. */ - inline void ConvertContinuousIndexToNearestIndex( const ContinuousIndexType & cindex, - IndexType & index ) const - { - index.CopyWithRound( cindex ); - } - - /** Set/Get methods */ - itkGetConstReferenceMacro(StartIndex, IndexType); - itkGetConstReferenceMacro(EndIndex, IndexType); - - itkGetConstReferenceMacro(StartContinuousIndex, ContinuousIndexType); - itkGetConstReferenceMacro(EndContinuousIndex, ContinuousIndexType); - -protected: - DataNodeImageFunction(); - ~DataNodeImageFunction() override {} - void PrintSelf(std::ostream& os, itk::Indent indent) const override; - - /** Const pointer to the input image. */ - InputImageConstPointer m_Image; - - /** Cache some values for testing if indices are inside buffered region. */ - IndexType m_StartIndex; - IndexType m_EndIndex; - ContinuousIndexType m_StartContinuousIndex; - ContinuousIndexType m_EndContinuousIndex; - -private: - DataNodeImageFunction(const Self&) = delete; - void operator=(const Self&) = delete; - -}; - -} -#ifndef OTB_MANUAL_INSTANTIATION -#include "otbDataNodeImageFunction.hxx" -#endif - -#endif diff --git a/Modules/Core/VectorDataBase/include/otbDataNodeImageFunction.hxx b/Modules/Core/VectorDataBase/include/otbDataNodeImageFunction.hxx deleted file mode 100644 index b06e770312..0000000000 --- a/Modules/Core/VectorDataBase/include/otbDataNodeImageFunction.hxx +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbDataNodeImageFunction_hxx -#define otbDataNodeImageFunction_hxx - -#include "otbDataNodeImageFunction.h" - -namespace otb -{ - -/** - * Constructor - */ -template <class TImage, class TOutput, class TCoordRep, class TPrecision> -DataNodeImageFunction<TImage, TOutput, TCoordRep, TPrecision> -::DataNodeImageFunction() -{ - m_Image = nullptr; - m_StartIndex.Fill(0); - m_EndIndex.Fill(0); - m_StartContinuousIndex.Fill(0.0f); - m_EndContinuousIndex.Fill(0.0f); -} - - -/** - * Standard "PrintSelf" method - */ -template <class TImage, class TOutput, class TCoordRep, class TPrecision> -void -DataNodeImageFunction<TImage, TOutput, TCoordRep, TPrecision> -::PrintSelf( - std::ostream& os, - itk::Indent indent) const -{ - Superclass::PrintSelf( os, indent ); - os << indent << "InputImage: " << m_Image.GetPointer() << std::endl; - os << indent << "StartIndex: " << m_StartIndex << std::endl; - os << indent << "EndIndex: " << m_EndIndex << std::endl; - os << indent << "StartContinuousIndex: " << m_StartContinuousIndex << std::endl; - os << indent << "EndContinuousIndex: " << m_EndContinuousIndex << std::endl; -} - - -/** - * Initialize by setting the input image - */ -template <class TImage, class TOutput, class TCoordRep, class TPrecision> -void -DataNodeImageFunction<TImage, TOutput, TCoordRep, TPrecision> -::SetInputImage( - const InputImageType * ptr ) -{ - // set the input image - m_Image = ptr; - - if ( ptr ) - { - typename InputImageType::SizeType size = ptr->GetBufferedRegion().GetSize(); - m_StartIndex = ptr->GetBufferedRegion().GetIndex(); - - for ( unsigned int j = 0; j < ImageDimension; ++j ) - { - m_EndIndex[j] = m_StartIndex[j] + static_cast<IndexValueType>( size[j] ) - 1; - m_StartContinuousIndex[j] = static_cast<CoordRepType>( m_StartIndex[j] - 0.5 ); - m_EndContinuousIndex[j] = static_cast<CoordRepType>( m_EndIndex[j] + 0.5 ); - - //Comment these instructions after migration to ITKv4 where there is a correct - //usage of centered-pixel coordinates - //(ITK_USE_CENTERED_PIXEL_COORDINATES_CONSISTENTLY always ON) - //m_StartContinuousIndex[j] = static_cast<CoordRepType>( m_StartIndex[j] ); - //m_EndContinuousIndex[j] = static_cast<CoordRepType>( m_EndIndex[j] ); - } - } -} - - -} // end namespace itk - -#endif diff --git a/Modules/Core/VectorDataBase/include/otbDataNodeVectorDataFunction.h b/Modules/Core/VectorDataBase/include/otbDataNodeVectorDataFunction.h deleted file mode 100644 index c99f15d0b2..0000000000 --- a/Modules/Core/VectorDataBase/include/otbDataNodeVectorDataFunction.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbDataNodeVectorDataFunction_h -#define otbDataNodeVectorDataFunction_h - -#include "otbDataNodeFunctionBase.h" -#include "otbVectorDataProperties.h" - - -namespace otb -{ -/** \class DataNodeVectorDataFunction - * \brief TODO - * - * - * - * \ingroup Functions - * \sa - * - * \ingroup OTBVectorDataBase - */ - -template < -class TOutput, -class TCoordRep = double, -class TPrecision = double -> -class ITK_EXPORT DataNodeVectorDataFunction : - public DataNodeFunctionBase<DataNode<TCoordRep, - 2, - TPrecision>, - TOutput> -{ -public: - /** Standard class typedefs. */ - typedef DataNodeVectorDataFunction Self; - typedef DataNodeFunctionBase<DataNode<TCoordRep, - 2, - TPrecision>, - TOutput> Superclass; - typedef itk::SmartPointer<Self> Pointer; - typedef itk::SmartPointer<const Self> ConstPointer; - - /** Run-time type information (and related methods). */ - itkTypeMacro(DataNodeVetorDataFunction, DataNodeFunctionBase); - - /** Some typedefs. */ - typedef VectorData<TCoordRep, 2, TPrecision> VectorDataType; - typedef typename VectorDataType::ConstPointer VectorDataConstPointerType; - typedef TOutput OutputType; - - /** CoordRepType typedef support. */ - typedef TCoordRep CoordRepType; - - /** PrecisionType typedef support. */ - typedef TPrecision PrecisionType; - - /** DataNode Type */ - typedef typename Superclass::DataNodeType DataNodeType; - - /** Point Type */ - typedef typename DataNodeType::PointType PointType; - - /** Set the input VetorData. */ - virtual void SetInputVectorData( const VectorDataType * ptr ); - - /** Get the input VectorData. */ - const VectorDataType * GetInputVectorData() const - { return m_VectorData.GetPointer(); } - - /** Evaluate the function at specified DataNode position. - * Subclasses must provide this method. */ - TOutput Evaluate( const DataNodeType& node ) const override = 0; - -protected: - DataNodeVectorDataFunction(); - ~DataNodeVectorDataFunction() override {} - void PrintSelf(std::ostream& os, itk::Indent indent) const override; - - /** Const pointer to the input VectorData. */ - VectorDataConstPointerType m_VectorData; - -private: - DataNodeVectorDataFunction(const Self&) = delete; - void operator=(const Self&) = delete; - -}; - -} -#ifndef OTB_MANUAL_INSTANTIATION -#include "otbDataNodeVectorDataFunction.hxx" -#endif - -#endif diff --git a/Modules/Core/VectorDataBase/include/otbDataNodeVectorDataFunction.hxx b/Modules/Core/VectorDataBase/include/otbDataNodeVectorDataFunction.hxx deleted file mode 100644 index 9ca52e1798..0000000000 --- a/Modules/Core/VectorDataBase/include/otbDataNodeVectorDataFunction.hxx +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbDataNodeVectorDataFunction_hxx -#define otbDataNodeVectorDataFunction_hxx - -#include "otbDataNodeVectorDataFunction.h" - -namespace otb -{ - -/** - * Constructor - */ -template <class TOutput, class TCoordRep, class TPrecision> -DataNodeVectorDataFunction<TOutput, TCoordRep, TPrecision> -::DataNodeVectorDataFunction() -{ - m_VectorData = nullptr; -} - - -/** - * Standard "PrintSelf" method - */ -template <class TOutput, class TCoordRep, class TPrecision> -void -DataNodeVectorDataFunction<TOutput, TCoordRep, TPrecision> -::PrintSelf( - std::ostream& os, - itk::Indent indent) const -{ - Superclass::PrintSelf( os, indent ); - os << indent << "VetorData: " << m_VectorData.GetPointer() << std::endl; -} - - -/** - * Initialize by setting the input VectorData - */ -template <class TOutput, class TCoordRep, class TPrecision> -void -DataNodeVectorDataFunction<TOutput, TCoordRep, TPrecision> -::SetInputVectorData( - const VectorDataType * ptr ) -{ - // set the input VectorData - m_VectorData = ptr; -} - -} // end namespace otb - -#endif diff --git a/Modules/Filtering/MathParser/include/otbParserConditionDataNodeFeatureFunction.h b/Modules/Filtering/MathParser/include/otbParserConditionDataNodeFeatureFunction.h deleted file mode 100644 index f04fbd9892..0000000000 --- a/Modules/Filtering/MathParser/include/otbParserConditionDataNodeFeatureFunction.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbParserConditionDataNodeFeatureFunction_h -#define otbParserConditionDataNodeFeatureFunction_h - -#include "otbDataNodeImageFunction.h" -#include "otbPolyLineImageConstIterator.h" -#include "otbMaskMuParserFunctor.h" -#include <string> - -namespace otb -{ -/** \class ParserConditionDataNodeFeatureFunction - * \brief Compute a ParserCondition based feature alongside a - * datanode. - * - * This function evaluate a condition alongside a datanode. - * The descriptor is the percentage of pixels iterated for which - * the condition is true. - * - * \ingroup Functions - * \sa DataNodeImageFunction - * \sa SpectralAngleDataNodeFeatureFunction - * - * \ingroup OTBMathParser - */ - -template < -class TImage, -class TCoordRep = double, -class TPrecision = double -> -class ITK_EXPORT ParserConditionDataNodeFeatureFunction : - public DataNodeImageFunction<TImage, std::vector<TPrecision>, TCoordRep, TPrecision> -{ -public: - /** Standard class typedefs. */ - typedef ParserConditionDataNodeFeatureFunction Self; - typedef DataNodeImageFunction<TImage, std::vector<TPrecision>, TCoordRep, TPrecision> - Superclass; - typedef itk::SmartPointer<Self> Pointer; - typedef itk::SmartPointer<const Self> ConstPointer; - - /** Method for creation through the object factory. */ - itkNewMacro(Self); - - /** Run-time type information (and related methods). */ - itkTypeMacro(ParserConditionDataNodeFeatureFunction, DataNodeImageFunction); - - /** Some typedefs. */ - typedef typename Superclass::DataNodeType DataNodeType; - typedef typename DataNodeType::LineType LineType; - - typedef TImage InputImageType; - typedef typename InputImageType::ConstPointer InputImageConstPointer; - typedef typename InputImageType::PixelType PixelType; - typedef typename InputImageType::InternalPixelType ScalarRealType; - typedef typename InputImageType::IndexType IndexType; - typedef typename InputImageType::IndexValueType IndexValueType; - - typedef TCoordRep CoordRepType; - - typedef TPrecision PrecisionType; - - typedef PolyLineImageConstIterator<InputImageType, LineType> - ImageLineIteratorType; - - typedef Functor::MaskMuParserFunctor<PixelType> ParserConditionFunctorType; - typedef typename ParserConditionFunctorType::Pointer ParserConditionFunctorPointer; - - typedef std::vector<PrecisionType> OutputType; - - OutputType Evaluate( const DataNodeType& node ) const override; - - std::string GetExpression() const - { - return m_ParserConditionFunctor->GetExpression(); - } - - void SetExpression(std::string expression) - { - m_ParserConditionFunctor->SetExpression(expression); - } - - void SetSpectralAngleReferencePixel(const PixelType& pixel) - { - m_ParserConditionFunctor->SetSpectralAngleReferencePixel(pixel); - } - -protected: - ParserConditionDataNodeFeatureFunction(); - ~ParserConditionDataNodeFeatureFunction() override {} - void PrintSelf(std::ostream& os, itk::Indent indent) const override; - -private: - ParserConditionDataNodeFeatureFunction(const Self&) = delete; - void operator=(const Self&) = delete; - - /** ParserCondition Functor */ - ParserConditionFunctorPointer m_ParserConditionFunctor; -}; - -} -#ifndef OTB_MANUAL_INSTANTIATION -#include "otbParserConditionDataNodeFeatureFunction.hxx" -#endif - -#endif diff --git a/Modules/Filtering/MathParser/include/otbParserConditionDataNodeFeatureFunction.hxx b/Modules/Filtering/MathParser/include/otbParserConditionDataNodeFeatureFunction.hxx deleted file mode 100644 index a32c38294f..0000000000 --- a/Modules/Filtering/MathParser/include/otbParserConditionDataNodeFeatureFunction.hxx +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbParserConditionDataNodeFeatureFunction_hxx -#define otbParserConditionDataNodeFeatureFunction_hxx - -#include "otbParserConditionDataNodeFeatureFunction.h" - -namespace otb -{ - -/** - * Constructor - */ -template <class TImage, class TCoordRep, class TPrecision> -ParserConditionDataNodeFeatureFunction<TImage, TCoordRep, TPrecision> -::ParserConditionDataNodeFeatureFunction() -{ - m_ParserConditionFunctor = ParserConditionFunctorType::New(); -} - -/** - * Standard "PrintSelf" method - */ -template <class TImage, class TCoordRep, class TPrecision> -void -ParserConditionDataNodeFeatureFunction<TImage, TCoordRep, TPrecision> -::PrintSelf( std::ostream& os, itk::Indent indent) const -{ - Superclass::PrintSelf( os, indent ); - //os << indent << "ParserCondition : " << m_ParserConditionFunctor << std::endl; -} - -template <class TImage, class TCoordRep, class TPrecision> -typename ParserConditionDataNodeFeatureFunction<TImage, TCoordRep, TPrecision> -::OutputType - ParserConditionDataNodeFeatureFunction<TImage, TCoordRep, TPrecision> -::Evaluate( const DataNodeType& node ) const -{ - // The parser evaluation can't be const since the parser state - // changes at the first evaluation, but in fact we don't modify - // anything here. - // To fit with the rest of the framework, we try to keep the Evaluate - // function const - Self* _this = const_cast<Self*>(this); - ParserConditionFunctorType& parser = *(_this->m_ParserConditionFunctor); - // Ugly things over - - - const typename ImageLineIteratorType::PathType* path; - - switch (node.GetNodeType()) - { - case FEATURE_POINT: - { - itkExceptionMacro(<< "This DataNode type is not handle yet"); - break; - } - case FEATURE_LINE: - { - path = node.GetLine(); - break; - } - case FEATURE_POLYGON: - { - path = node.GetPolygonExteriorRing(); - break; - } - default: - { - itkExceptionMacro(<< "This DataNode type is not handle yet"); - break; - } - } - - ImageLineIteratorType lineIt(this->GetInputImage(), path); - lineIt.GoToBegin(); - - double nbValidPixel = 0.; - double nbVisitedPixel = 0.; - - while(!lineIt.IsAtEnd()) - { - if(this->IsInsideBuffer(lineIt.GetIndex())) - { - if( parser(this->GetInputImage()->GetPixel(lineIt.GetIndex())) ) - { - nbValidPixel += 1; - } - nbVisitedPixel += 1; - } - ++lineIt; - } - - OutputType output; - if(nbVisitedPixel == 0) - { - output.push_back(static_cast<PrecisionType>(0.)); - } - else - { - output.push_back(static_cast<PrecisionType>(nbValidPixel/nbVisitedPixel)); - } - - output.push_back(static_cast<PrecisionType>(nbValidPixel)); - output.push_back(static_cast<PrecisionType>(nbVisitedPixel)); - return output; -} - -} // end namespace otb - -#endif diff --git a/Modules/Filtering/MathParser/test/CMakeLists.txt b/Modules/Filtering/MathParser/test/CMakeLists.txt index 9f082865ac..f2dbcdfd27 100644 --- a/Modules/Filtering/MathParser/test/CMakeLists.txt +++ b/Modules/Filtering/MathParser/test/CMakeLists.txt @@ -23,7 +23,6 @@ otb_module_test() set(OTBMathParserTests otbMathParserTestDriver.cxx otbMaskMuParserFilterTest.cxx -otbParserConditionDataNodeFeatureFunction.cxx otbParserTest.cxx otbImageListToSingleImageFilterTest.cxx otbBandMathImageFilter.cxx @@ -48,32 +47,6 @@ otb_add_test(NAME bfTvMaskMuParserFilterTest COMMAND otbMathParserTestDriver "(b1>100)*(b2>120)" ) -otb_add_test(NAME bfTvParserConditionDataNodeFeatureFunction_Line_NDVI COMMAND otbMathParserTestDriver - --compare-ogr ${EPSILON_9} - ${BASELINE_FILES}/bfTvNDVIDataNodeFeatureFunctionOutput_Line.shp - ${TEMP}/bfTvParserConditionDataNodeFeatureFunction_Line_NDVI.shp - otbParserConditionDataNodeFeatureFunction - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shp - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE.TIF - ${INPUTDATA}/DEM/srtm_directory - ${TEMP}/bfTvParserConditionDataNodeFeatureFunction_Line_NDVI.shp - "ndvi(b3,b4) > 0.047" - 0 - ) - -otb_add_test(NAME bfTvParserConditionDataNodeFeatureFunction_Polygon_NDVI COMMAND otbMathParserTestDriver - --compare-ogr ${EPSILON_6} - ${BASELINE_FILES}/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.shp - ${TEMP}/bfTvParserConditionDataNodeFeatureFunction_Polygon_NDVI.shp - otbParserConditionDataNodeFeatureFunction - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.shp - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE.TIF - ${INPUTDATA}/DEM/srtm_directory - ${TEMP}/bfTvParserConditionDataNodeFeatureFunction_Polygon_NDVI.shp - "ndvi(b3,b4) > 0.047" - 0 - ) - otb_add_test(NAME coTvParser COMMAND otbMathParserTestDriver otbParserTest ) diff --git a/Modules/Filtering/MathParser/test/otbMathParserTestDriver.cxx b/Modules/Filtering/MathParser/test/otbMathParserTestDriver.cxx index 5ef579c49a..4f12db6c96 100644 --- a/Modules/Filtering/MathParser/test/otbMathParserTestDriver.cxx +++ b/Modules/Filtering/MathParser/test/otbMathParserTestDriver.cxx @@ -23,7 +23,6 @@ void RegisterTests() { REGISTER_TEST(otbMaskMuParserFilterTest); - REGISTER_TEST(otbParserConditionDataNodeFeatureFunction); REGISTER_TEST(otbParserTest); REGISTER_TEST(otbImageListToSingleImageFilter); REGISTER_TEST(otbBandMathImageFilter); diff --git a/Modules/Filtering/MathParser/test/otbParserConditionDataNodeFeatureFunction.cxx b/Modules/Filtering/MathParser/test/otbParserConditionDataNodeFeatureFunction.cxx deleted file mode 100644 index 4982b50ced..0000000000 --- a/Modules/Filtering/MathParser/test/otbParserConditionDataNodeFeatureFunction.cxx +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - - -#include "otbParserConditionDataNodeFeatureFunction.h" - -#include "otbVectorImage.h" -#include "otbImageFileReader.h" -#include "otbVectorData.h" -#include "otbVectorDataFileReader.h" -#include "otbVectorDataIntoImageProjectionFilter.h" -#include "otbVectorDataFileWriter.h" -#include "itkPreOrderTreeIterator.h" - - -int otbParserConditionDataNodeFeatureFunction(int itkNotUsed(argc), char* argv[]) -{ - const char * inputVD = argv[1]; - const char * inputImg = argv[2]; - const char * DEMDir = argv[3]; - const char * outputVD = argv[4]; - const char * expression = argv[5]; - int DisplayWarnings = atoi(argv[6]); - - typedef double CoordRepType; - typedef double PrecisionType; - typedef otb::VectorImage<PrecisionType> ImageType; - typedef otb::ImageFileReader<ImageType> ImageReaderType; - typedef otb::VectorData<CoordRepType, 2, PrecisionType> VectorDataType; - typedef VectorDataType::DataNodeType DataNodeType; - typedef otb::VectorDataFileReader<VectorDataType> VectorDataReaderType; - typedef otb::VectorDataIntoImageProjectionFilter<VectorDataType, ImageType> VectorDataReProjFilter; - typedef otb::VectorDataFileWriter<VectorDataType> VectorDataWriterType; - typedef itk::PreOrderTreeIterator<VectorDataType::DataTreeType> TreeIteratorType; - - typedef otb::ParserConditionDataNodeFeatureFunction<ImageType, CoordRepType, PrecisionType> - ParserConditionDataNodeFeaturefunctionType; - typedef ParserConditionDataNodeFeaturefunctionType::OutputType ParserConditionFeatureOutputType; - - ImageReaderType::Pointer imgReader = ImageReaderType::New(); - VectorDataReaderType::Pointer vdReader = VectorDataReaderType::New(); - VectorDataReProjFilter::Pointer vdReProjFilter = VectorDataReProjFilter::New(); - VectorDataWriterType::Pointer vdWriter = VectorDataWriterType::New(); - ParserConditionDataNodeFeaturefunctionType::Pointer - ParserConditionFeatureFunction = ParserConditionDataNodeFeaturefunctionType::New(); - - if (!DisplayWarnings) - { - imgReader->SetGlobalWarningDisplay(0); - } - - otb::DEMHandler::Instance()->OpenDEMDirectory(DEMDir); - - vdReader->SetFileName(inputVD); - vdReader->Update(); - - imgReader->SetFileName(inputImg); - imgReader->UpdateOutputInformation(); - imgReader->Update(); //Needed to set m_EndIndex, m_StartIndex in otbDataNodeImageFunction - - vdReProjFilter->SetInputImage(imgReader->GetOutput()); - vdReProjFilter->SetInputVectorData(vdReader->GetOutput()); - vdReProjFilter->SetUseOutputSpacingAndOriginFromImage(true); - vdReProjFilter->Update(); - - ParserConditionFeatureFunction->SetExpression(expression); - ParserConditionFeatureFunction->SetInputImage(imgReader->GetOutput()); - - // Output - VectorDataType::Pointer outVD = VectorDataType::New(); - // Retrieving root node - DataNodeType::Pointer root = outVD->GetDataTree()->GetRoot()->Get(); - // Create the document node - DataNodeType::Pointer document = DataNodeType::New(); - document->SetNodeType(otb::DOCUMENT); - // Adding the layer to the data tree - outVD->GetDataTree()->Add(document, root); - // Create the folder node - DataNodeType::Pointer folder = DataNodeType::New(); - folder->SetNodeType(otb::FOLDER); - // Adding the layer to the data tree - outVD->GetDataTree()->Add(folder, document); - - TreeIteratorType itVector(vdReProjFilter->GetOutput()->GetDataTree()); - itVector.GoToBegin(); - while (!itVector.IsAtEnd()) - { - if (itVector.Get()->IsLineFeature() || itVector.Get()->IsPolygonFeature()) - { - const DataNodeType::Pointer currentGeometry = itVector.Get(); - ParserConditionFeatureOutputType currentResult; - currentResult = ParserConditionFeatureFunction->Evaluate(*(currentGeometry.GetPointer())); - currentGeometry->SetFieldAsDouble("NDVI", (double) (currentResult[0])); - outVD->GetDataTree()->Add(currentGeometry, folder); - } - ++itVector; - } - - vdWriter->SetInput(outVD); - vdWriter->SetFileName(outputVD); - vdWriter->Update(); - - return EXIT_SUCCESS; -} diff --git a/Modules/Filtering/Projection/test/CMakeLists.txt b/Modules/Filtering/Projection/test/CMakeLists.txt index e2e346b3c1..7a8ba7c02d 100644 --- a/Modules/Filtering/Projection/test/CMakeLists.txt +++ b/Modules/Filtering/Projection/test/CMakeLists.txt @@ -44,7 +44,6 @@ otbVectorDataProjectionFilterFromMapToImage.cxx otbGenericRSTransformFromImage.cxx otbCompositeTransform.cxx otbLeastSquareAffineTransformEstimator.cxx -otbSpectralAngleDataNodeFeatureFunction.cxx otbGCPsToRPCSensorModelImageFilterCheckRpcModel.cxx otbGeographicalDistance.cxx otbTileImageFilterRSTransformTest.cxx @@ -583,29 +582,6 @@ otb_add_test(NAME prTvLeastSquareAffineTransformEstimator COMMAND otbProjectionT 352 807 919 10023 12102 14181 ) -otb_add_test(NAME bfTvSpectralAngleDataNodeFeatureFunction_Polygon COMMAND otbProjectionTestDriver - --compare-ogr ${EPSILON_3} - ${BASELINE_FILES}/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.shp - ${TEMP}/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.shp - otbSpectralAngleDataNodeFeatureFunction - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.shp - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE.TIF - ${INPUTDATA}/DEM/srtm_directory - ${TEMP}/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Polygon.shp - 0 ) - -otb_add_test(NAME bfTvSpectralAngleDataNodeFeatureFunction_Line COMMAND otbProjectionTestDriver - --compare-ogr ${EPSILON_9} - ${BASELINE_FILES}/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.shp - ${TEMP}/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.shp - otbSpectralAngleDataNodeFeatureFunction - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shp - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE.TIF - ${INPUTDATA}/DEM/srtm_directory - ${TEMP}/bfTvSpectralAngleDataNodeFeatureFunctionOutput_Line.shp - 0 - ) - set(VALID_CONDITION err=12) if(OTB_OSSIM_VERSION LESS 20200) set(VALID_CONDITION err=10) diff --git a/Modules/Filtering/Projection/test/otbProjectionTestDriver.cxx b/Modules/Filtering/Projection/test/otbProjectionTestDriver.cxx index 6f985e5f5c..6a0d8992d5 100644 --- a/Modules/Filtering/Projection/test/otbProjectionTestDriver.cxx +++ b/Modules/Filtering/Projection/test/otbProjectionTestDriver.cxx @@ -46,7 +46,6 @@ void RegisterTests() REGISTER_TEST(otbGenericRSTransformImageAndMNTToWGS84ConversionChecking); REGISTER_TEST(otbCompositeTransform); REGISTER_TEST(otbLeastSquareAffineTransformEstimator); - REGISTER_TEST(otbSpectralAngleDataNodeFeatureFunction); REGISTER_TEST(otbGCPsToRPCSensorModelImageFilterCheckRpcModel); REGISTER_TEST(otbGeographicalDistance); REGISTER_TEST(otbTileImageFilterRSTransformTest); diff --git a/Modules/Filtering/Projection/test/otbSpectralAngleDataNodeFeatureFunction.cxx b/Modules/Filtering/Projection/test/otbSpectralAngleDataNodeFeatureFunction.cxx deleted file mode 100644 index eb239242e2..0000000000 --- a/Modules/Filtering/Projection/test/otbSpectralAngleDataNodeFeatureFunction.cxx +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - - - -#include "otbSpectralAngleDataNodeFeatureFunction.h" - -#include "otbVectorImage.h" -#include "otbImageFileReader.h" -#include "otbVectorData.h" -#include "otbVectorDataFileReader.h" -#include "otbVectorDataIntoImageProjectionFilter.h" -#include "otbVectorDataFileWriter.h" -#include "itkPreOrderTreeIterator.h" - - -int otbSpectralAngleDataNodeFeatureFunction(int itkNotUsed(argc), char* argv[]) -{ - const char * inputVD = argv[1]; - const char * inputImg = argv[2]; - const char * DEMDir = argv[3]; - const char * outputVD = argv[4]; - int DisplayWarnings = atoi(argv[5]); - - typedef double CoordRepType; - typedef double PrecisionType; - typedef otb::VectorImage<PrecisionType> ImageType; - typedef otb::ImageFileReader<ImageType> ImageReaderType; - typedef otb::VectorData<CoordRepType, 2, PrecisionType> - VectorDataType; - typedef VectorDataType::DataNodeType DataNodeType; - typedef otb::VectorDataFileReader<VectorDataType> VectorDataReaderType; - typedef otb::VectorDataIntoImageProjectionFilter<VectorDataType, ImageType> - VectorDataReProjFilter; - typedef otb::VectorDataFileWriter<VectorDataType> VectorDataWriterType; - typedef itk::PreOrderTreeIterator<VectorDataType::DataTreeType> - TreeIteratorType; - - typedef otb::SpectralAngleDataNodeFeatureFunction<ImageType, CoordRepType, PrecisionType> - FeaturefunctionType; - typedef FeaturefunctionType::OutputType - FeatureOutputType; - - ImageReaderType::Pointer imgReader = ImageReaderType::New(); - VectorDataReaderType::Pointer vdReader = VectorDataReaderType::New(); - VectorDataReProjFilter::Pointer vdReProjFilter = VectorDataReProjFilter::New(); - VectorDataWriterType::Pointer vdWriter = VectorDataWriterType::New(); - FeaturefunctionType::Pointer featureFunction = FeaturefunctionType::New(); - - if (!DisplayWarnings) - { - imgReader->SetGlobalWarningDisplay(0); - } - - otb::DEMHandler::Instance()->OpenDEMDirectory(DEMDir); - - vdReader->SetFileName(inputVD); - vdReader->Update(); - - imgReader->SetFileName(inputImg); - imgReader->UpdateOutputInformation(); - imgReader->Update(); //Needed to set m_EndIndex, m_StartIndex in otbDataNodeImageFunction - - vdReProjFilter->SetInputImage(imgReader->GetOutput()); - vdReProjFilter->SetInputVectorData(vdReader->GetOutput()); - vdReProjFilter->SetUseOutputSpacingAndOriginFromImage(true); - vdReProjFilter->Update(); - - std::cout<< "vdReProjFilter->GetOutput()->Size(): " - << vdReProjFilter->GetOutput()->Size() << std::endl; - - featureFunction->SetInputImage(imgReader->GetOutput()); - featureFunction->SetRadius(0); - - // Output - VectorDataType::Pointer outVD = VectorDataType::New(); - // Retrieving root node - DataNodeType::Pointer root = outVD->GetDataTree()->GetRoot()->Get(); - // Create the document node - DataNodeType::Pointer document = DataNodeType::New(); - document->SetNodeType(otb::DOCUMENT); - // Adding the layer to the data tree - outVD->GetDataTree()->Add(document, root); - // Create the folder node - DataNodeType::Pointer folder = DataNodeType::New(); - folder->SetNodeType(otb::FOLDER); - // Adding the layer to the data tree - outVD->GetDataTree()->Add(folder, document); - - TreeIteratorType itVector(vdReProjFilter->GetOutput()->GetDataTree()); - itVector.GoToBegin(); - while (!itVector.IsAtEnd()) - { - if (itVector.Get()->IsLineFeature() || itVector.Get()->IsPolygonFeature()) - { - const DataNodeType::Pointer currentGeometry = itVector.Get(); - FeatureOutputType currentResult; - currentResult = featureFunction->Evaluate(*(currentGeometry.GetPointer())); - currentGeometry->SetFieldAsDouble("RADIOM", (double)(currentResult[0])); - outVD->GetDataTree()->Add(currentGeometry, folder); - } - ++itVector; - } - - vdWriter->SetInput(outVD); - vdWriter->SetFileName(outputVD); - vdWriter->Update(); - - return EXIT_SUCCESS; -} diff --git a/Modules/Filtering/VectorDataManipulation/include/otbDBOverlapDataNodeFeatureFunction.h b/Modules/Filtering/VectorDataManipulation/include/otbDBOverlapDataNodeFeatureFunction.h deleted file mode 100644 index 5a0d897384..0000000000 --- a/Modules/Filtering/VectorDataManipulation/include/otbDBOverlapDataNodeFeatureFunction.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbDBOverlapDataNodeFeatureFunction_h -#define otbDBOverlapDataNodeFeatureFunction_h - -#include "otbDataNodeVectorDataFunction.h" - -#include "itkPreOrderTreeIterator.h" - -namespace otb -{ -/** \class DBOverlapDataNodeFeatureFunction - * \brief - * - * - * \ingroup Functions - * \sa DataNodeVectorDataFunction - * - * \ingroup OTBVectorDataManipulation - */ - -template < -class TCoordRep = double, -class TPrecision = double -> -class ITK_EXPORT DBOverlapDataNodeFeatureFunction : - public DataNodeVectorDataFunction<std::vector<TPrecision>, TCoordRep, TPrecision> -{ -public: - /** Standard class typedefs. */ - typedef DBOverlapDataNodeFeatureFunction Self; - typedef DataNodeVectorDataFunction<std::vector<TPrecision>, TCoordRep, TPrecision> - Superclass; - typedef itk::SmartPointer<Self> Pointer; - typedef itk::SmartPointer<const Self> ConstPointer; - - /** Method for creation through the object factory. */ - itkNewMacro(Self); - - /** Run-time type information (and related methods). */ - itkTypeMacro(DBOverlapDataNodeFeatureFunction, DataNodeVectorDataFunction); - - /** Some typedefs. */ - typedef typename Superclass::DataNodeType DataNodeType; - typedef typename DataNodeType::PointType PointType; - typedef typename DataNodeType::LineType LineType; - typedef typename LineType::VertexType VertexType; - typedef typename DataNodeType::PolygonType PolygonType; - - typedef typename Superclass::VectorDataType VectorDataType; - typedef typename VectorDataType::DataTreeType DataTreeType; - typedef itk::PreOrderTreeIterator<typename VectorDataType::DataTreeType> - TreeIteratorType; - - typedef TCoordRep CoordRepType; - - typedef TPrecision PrecisionType; - - typedef std::vector<PrecisionType> OutputType; - - OutputType Evaluate( const DataNodeType& node ) const override; - - /** Set/Get methods */ - itkGetConstMacro(DistanceThreshold, PrecisionType); - itkSetMacro(DistanceThreshold, PrecisionType); - - /** Method to compute the distance of a point to a segment */ - double ComputeEuclideanDistanceMetricToSegment(VertexType q1, VertexType q2, VertexType p) const; - -protected: - DBOverlapDataNodeFeatureFunction(); - ~DBOverlapDataNodeFeatureFunction() override {} - void PrintSelf(std::ostream& os, itk::Indent indent) const override; - -private: - DBOverlapDataNodeFeatureFunction(const Self&) = delete; - void operator=(const Self&) = delete; - - /** Road / Building distance Threshold */ - PrecisionType m_DistanceThreshold; -}; - -} -#ifndef OTB_MANUAL_INSTANTIATION -#include "otbDBOverlapDataNodeFeatureFunction.hxx" -#endif - -#endif diff --git a/Modules/Filtering/VectorDataManipulation/include/otbDBOverlapDataNodeFeatureFunction.hxx b/Modules/Filtering/VectorDataManipulation/include/otbDBOverlapDataNodeFeatureFunction.hxx deleted file mode 100644 index 3ede4ecc7f..0000000000 --- a/Modules/Filtering/VectorDataManipulation/include/otbDBOverlapDataNodeFeatureFunction.hxx +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbDBOverlapDataNodeFeatureFunction_hxx -#define otbDBOverlapDataNodeFeatureFunction_hxx - -#include "otbDBOverlapDataNodeFeatureFunction.h" - -namespace otb -{ - -/** - * Constructor - */ -template <class TCoordRep, class TPrecision> -DBOverlapDataNodeFeatureFunction<TCoordRep, TPrecision> -::DBOverlapDataNodeFeatureFunction() - :m_DistanceThreshold(50)//in physical coordinates -{ -} - -/** - * Standard "PrintSelf" method - */ -template <class TCoordRep, class TPrecision> -void -DBOverlapDataNodeFeatureFunction<TCoordRep, TPrecision> -::PrintSelf( - std::ostream& os, - itk::Indent indent) const -{ - Superclass::PrintSelf( os, indent ); - os << indent << "Distance Threshold: " << m_DistanceThreshold << std::endl; -} - -/** - * Method to compute the distance of a point to a segment - */ -template <class TCoordRep, class TPrecision> -double -DBOverlapDataNodeFeatureFunction<TCoordRep, TPrecision> -::ComputeEuclideanDistanceMetricToSegment(VertexType q1, VertexType q2, VertexType p) const -{ - // Length of the segment - double l2 = q1.SquaredEuclideanDistanceTo(q2); - - // Is the projection of p on the segment inside (0<u<1) or - // inside the segment bounds - double u = ((p[0] - q1[0]) *(q2[0] - q1[0] ) + - (p[1] - q1[1]) *(q2[1] - q1[1])) / l2; - - if( u < 1e-10 ) u = 0.; - if( u -1. > 1e-10 ) u = 1.; - double x = q1[0] + u *(q2[0] - q1[0] ); - double y = q1[1] + u *(q2[1] - q1[1] ); - double dx = x - p[0]; - double dy = y - p[1]; - - return std::sqrt(dx*dx + dy*dy); - } - -template <class TCoordRep, class TPrecision> -typename DBOverlapDataNodeFeatureFunction<TCoordRep, TPrecision> -::OutputType -DBOverlapDataNodeFeatureFunction<TCoordRep, TPrecision> -::Evaluate( const DataNodeType& node ) const -{ - OutputType output; - - //build the tmp DataTree containing polygon within the radius - typename VectorDataType::Pointer tmpDataTree = VectorDataType::New(); - typename DataNodeType::Pointer root = tmpDataTree->GetDataTree()->GetRoot()->Get(); - typename DataNodeType::Pointer document = DataNodeType::New(); - document->SetNodeType(otb::DOCUMENT); - tmpDataTree->GetDataTree()->Add(document, root); - - TreeIteratorType itVector(this->GetInputVectorData()->GetDataTree()); - itVector.GoToBegin(); - while (!itVector.IsAtEnd()) - { - if (itVector.Get()->IsPolygonFeature()) - { - typename DataNodeType::Pointer currentGeometry = itVector.Get(); - unsigned int i=0; - while (i<currentGeometry->GetPolygonExteriorRing()->GetVertexList()->Size()) - { - unsigned int j=0; - while (j<node.GetLine()->GetVertexList()->Size()-1) - { - double dist; - dist = this->ComputeEuclideanDistanceMetricToSegment(node.GetLine()->GetVertexList()->GetElement(j), - node.GetLine()->GetVertexList()->GetElement(j+1), - currentGeometry->GetPolygonExteriorRing()->GetVertexList()->GetElement(i)); - //std::cout << "dist: " << dist << std::endl; - //std::cout << "m_DistanceThreshold: " << m_DistanceThreshold << std::endl; - if (dist <= m_DistanceThreshold) - { - //Add the current polygon to the tmp DataTree - //jump to the next one - tmpDataTree->GetDataTree()->Add(currentGeometry, document); - j = node.GetLine()->GetVertexList()->Size(); - i = currentGeometry->GetPolygonExteriorRing()->GetVertexList()->Size(); - } - ++j; - } - ++i; - } - } - ++itVector; - } - - /* - std::cout << this->GetInputVectorData()->GetDataTree()->Count() << std::endl; - std::cout << tmpDataTree->GetDataTree()->Count() << std::endl; - */ - unsigned int crossAcc = 0; - unsigned int nbBuildings = 0; - - TreeIteratorType it(tmpDataTree->GetDataTree()); - it.GoToBegin(); - while (!it.IsAtEnd()) - { - if (it.Get()->IsPolygonFeature()) - { - typename DataNodeType::Pointer currentGeometry = it.Get(); - nbBuildings ++; - for (unsigned int i=0; i<node.GetLine()->GetVertexList()->Size()-1; ++i) - { - - if(currentGeometry->GetPolygonExteriorRing()->NbCrossing(node.GetLine()->GetVertexList()->GetElement(i), - node.GetLine()->GetVertexList()->GetElement(i+1))) - { - crossAcc ++; - break; - } - } - } - ++it; - } - - if(nbBuildings == 0) - { - output.push_back(static_cast<PrecisionType>(0.)); - } - else - { - output.push_back(static_cast<PrecisionType>((double)(crossAcc)/(double)(nbBuildings))); - } - - output.push_back(static_cast<PrecisionType>(crossAcc)); - output.push_back(static_cast<PrecisionType>(nbBuildings)); - - return output; -} - - -} // end namespace otb - -#endif diff --git a/Modules/Filtering/VectorDataManipulation/include/otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.h b/Modules/Filtering/VectorDataManipulation/include/otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.h deleted file mode 100644 index 303db1003b..0000000000 --- a/Modules/Filtering/VectorDataManipulation/include/otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.h +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction_h -#define otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction_h - -#include "otbDataNodeImageFunction.h" - -#include "otbBinarySpectralAngleFunctor.h" -#include "otbPolyLineImageConstIterator.h" -#include "itkLineConstIterator.h" -#include "itkVariableLengthVector.h" - -namespace otb -{ -/** \class RadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction - * \brief Compute the spectral angle between the radiometry along - * a line and its neighborhood - * - * This function compares the radiometry along a datanode with the - * radiometry of the neighborhood. - * - * It computes the mean of a rectangular area around each line segment, - * and the mean of two rectangular areas on each side of the line segment. - * The descriptor is the spectral angle between the two values, - * scaled by \$f\pi\$f. - * - * The width of the area around a line segment can be specified with - * SetCenterRadius. - * - * The neighborhood area can be specified by two radius, using SetNeighborhoodBeginRadius - * and SetNeighborhoodEndRadius. - * - * - * \ingroup Functions - * \sa DataNodeImageFunction - * \sa NDVIDataNodeFeatureFunction - * - * \ingroup OTBVectorDataManipulation - */ - -template < -class TImage, -class TCoordRep = double, -class TPrecision = double -> -class ITK_EXPORT RadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction : - public DataNodeImageFunction<TImage, std::vector<TPrecision>, TCoordRep, TPrecision> -{ -public: - /** Standard class typedefs. */ - typedef RadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction Self; - typedef DataNodeImageFunction<TImage, std::vector<TPrecision>, TCoordRep, TPrecision> - Superclass; - typedef itk::SmartPointer<Self> Pointer; - typedef itk::SmartPointer<const Self> ConstPointer; - - /** Method for creation through the object factory. */ - itkNewMacro(Self); - - /** Run-time type information (and related methods). */ - itkTypeMacro(RadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction, DataNodeImageFunction); - - /** Some typedefs. */ - typedef typename Superclass::DataNodeType DataNodeType; - typedef typename DataNodeType::LineType LineType; - typedef typename LineType::Pointer LinePointer; - typedef typename LineType::ContinuousIndexType ContinuousIndexType; - typedef typename LineType::VertexListConstIteratorType VertexListConstIteratorType; - - typedef TImage InputImageType; - typedef typename InputImageType::ConstPointer InputImageConstPointer; - typedef typename InputImageType::PixelType PixelType; - typedef typename InputImageType::InternalPixelType ScalarRealType; - typedef typename InputImageType::IndexType IndexType; - typedef typename InputImageType::IndexValueType IndexValueType; - - typedef TCoordRep CoordRepType; - - typedef TPrecision PrecisionType; - - typedef itk::VariableLengthVector<PrecisionType> ReferencePixelType; - - typedef PolyLineImageConstIterator<InputImageType, LineType> ImageLineIteratorType; - typedef itk::LineConstIterator<InputImageType> LineIteratorType; - - typedef Functor::BinarySpectralAngleFunctor<PixelType, ReferencePixelType, PrecisionType> - SpectralAngleFunctorType; - - typedef std::pair<IndexType, IndexType> IndexPairType; - typedef std::vector<PrecisionType> OutputType; - - /* Compute the descriptor value along this DataNode */ - OutputType Evaluate( const DataNodeType& node ) const override; - - /* Get the radius used to define the area around a line segment. - * A radius of 0 means that the area is reduced to a line joining - * the two segments extremities. */ - itkGetConstMacro(CenterRadius, unsigned int); - - /* Set the radius used to define the area around a line segment. - * A radius of 0 means that the area is reduced to a line joining - * the two segments extremities. */ - itkSetMacro(CenterRadius, unsigned int); - - /* Get the radius used to define the start of the neighboring area. - * Typically this value must be greater than CenterRadius */ - itkGetConstMacro(NeighborhoodBeginRadius, unsigned int); - - /* Set the radius used to define the start of the neighboring area. - * Typically this value must be greater than CenterRadius */ - itkSetMacro(NeighborhoodBeginRadius, unsigned int); - - /* Get the radius used to define the end of the neighboring area. - * Typically this value must be greater than NeighborhoodBeginRadius */ - itkGetConstMacro(NeighborhoodEndRadius, unsigned int); - - /* Set the radius used to define the end of the neighboring area. - * Typically this value must be greater than NeighborhoodBeginRadius */ - itkSetMacro(NeighborhoodEndRadius, unsigned int); - -protected: - RadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction(); - ~RadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction() override {} - void PrintSelf(std::ostream& os, itk::Indent indent) const override; - -private: - RadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction(const Self&) = delete; - void operator=(const Self&) = delete; - - /** Center radius */ - unsigned int m_CenterRadius; - - /** Neighborhood start radius */ - unsigned int m_NeighborhoodBeginRadius; - - /** Neighborhood end radius */ - unsigned int m_NeighborhoodEndRadius; - -}; - -} -#ifndef OTB_MANUAL_INSTANTIATION -#include "otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.hxx" -#endif - -#endif diff --git a/Modules/Filtering/VectorDataManipulation/include/otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.hxx b/Modules/Filtering/VectorDataManipulation/include/otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.hxx deleted file mode 100644 index eadf8f167a..0000000000 --- a/Modules/Filtering/VectorDataManipulation/include/otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.hxx +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction_hxx -#define otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction_hxx - -#include "otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.h" - -namespace otb -{ - -/** - * Constructor - */ -template<class TImage, class TCoordRep, class TPrecision> -RadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction<TImage, TCoordRep, TPrecision>::RadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction() : - m_CenterRadius(1), m_NeighborhoodBeginRadius(2), m_NeighborhoodEndRadius(3) -{ -} - -/** - * Standard "PrintSelf" method - */ -template<class TImage, class TCoordRep, class TPrecision> -void RadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction<TImage, TCoordRep, TPrecision>::PrintSelf(std::ostream& os, - itk::Indent indent) const -{ - Superclass::PrintSelf(os, indent); -} - -template<class TImage, class TCoordRep, class TPrecision> -typename RadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction<TImage, TCoordRep, TPrecision>::OutputType RadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction< - TImage, TCoordRep, TPrecision>::Evaluate(const DataNodeType& node) const -{ - - // TODO faire avce un ikk - const typename ImageLineIteratorType::PathType* path; - - switch (node.GetNodeType()) - { - case FEATURE_POINT: - { - itkExceptionMacro(<< "This DataNode type is not handled yet"); - break; - } - case FEATURE_LINE: - { - path = node.GetLine(); - break; - } - case FEATURE_POLYGON: - { - path = node.GetPolygonExteriorRing(); - break; - } - default: - { - itkExceptionMacro(<< "This DataNode type is not handle yet"); - break; - } - } - - std::vector<std::pair<IndexType, IndexType> > splitedLineIdNeigh; - std::vector<std::pair<IndexType, IndexType> > splitedLineIdCentral; - - // Split line and polygon into segment (ie. line with two vertex - VertexListConstIteratorType it1 = path->GetVertexList()->Begin(); - VertexListConstIteratorType it2 = path->GetVertexList()->Begin(); - VertexListConstIteratorType itStop = path->GetVertexList()->End(); - - ++it2; - if (it2 == itStop) - { - itkExceptionMacro(<< "Invalid DataNode, must at least contain two points"); - } - - while (it1 != itStop && it2 != itStop) - { - IndexType id1, id2; - id1[0] = static_cast<int> (it1.Value()[0]); - id1[1] = static_cast<int> (it1.Value()[1]); - id2[0] = static_cast<int> (it2.Value()[0]); - id2[1] = static_cast<int> (it2.Value()[1]); - - // Compute the direction of the current line - itk::Vector<double, 2> direction; - direction[0] = it2.Value()[0] - it1.Value()[0]; - direction[1] = it2.Value()[1] - it1.Value()[1]; - direction.Normalize(); - - // Compute the orthogonal direction of the current line - itk::Vector<double, 2> orthogonalDirection; - orthogonalDirection[0] = direction[1]; - orthogonalDirection[1] = -direction[0]; - - splitedLineIdCentral.push_back(IndexPairType(id1, id2)); - for (unsigned int j = 1; j <= m_CenterRadius; ++j) - { - IndexType shift11, shift12; - shift11[0] = id1[0] - j * orthogonalDirection[0]; - shift11[1] = id1[1] - j * orthogonalDirection[1]; - shift12[0] = id1[0] + j * orthogonalDirection[0]; - shift12[1] = id1[1] + j * orthogonalDirection[1]; - IndexType shift21, shift22; - shift21[0] = id2[0] - j * orthogonalDirection[0]; - shift21[1] = id2[1] - j * orthogonalDirection[1]; - shift22[0] = id2[0] + j * orthogonalDirection[0]; - shift22[1] = id2[1] + j * orthogonalDirection[1]; - - splitedLineIdCentral.push_back(IndexPairType(shift11, shift21)); - splitedLineIdCentral.push_back(IndexPairType(shift12, shift22)); - } - - for (unsigned int j = m_NeighborhoodBeginRadius; j <= m_NeighborhoodEndRadius; ++j) - { - IndexType shift11, shift12; - shift11[0] = id1[0] - j * orthogonalDirection[0]; - shift11[1] = id1[1] - j * orthogonalDirection[1]; - shift12[0] = id1[0] + j * orthogonalDirection[0]; - shift12[1] = id1[1] + j * orthogonalDirection[1]; - IndexType shift21, shift22; - shift21[0] = id2[0] - j * orthogonalDirection[0]; - shift21[1] = id2[1] - j * orthogonalDirection[1]; - shift22[0] = id2[0] + j * orthogonalDirection[0]; - shift22[1] = id2[1] + j * orthogonalDirection[1]; - - splitedLineIdNeigh.push_back(IndexPairType(shift11, shift21)); - splitedLineIdNeigh.push_back(IndexPairType(shift12, shift22)); - } - ++it1; - ++it2; - } - - // in FEATURE_POLYGON case, first point appears twice (first vertex and last vertew, thus we create a line of 1 point...) - if (node.GetNodeType() == FEATURE_POLYGON) - { - splitedLineIdCentral.pop_back(); - splitedLineIdNeigh.pop_back(); - splitedLineIdNeigh.pop_back(); - } - - double centralNbVisitedPixel = 0.; - - PixelType centralRadiomAcc(this->GetInputImage()->GetNumberOfComponentsPerPixel()); - centralRadiomAcc.Fill(0); - - for (unsigned int i = 0; i < splitedLineIdCentral.size(); ++i) - { - LineIteratorType lineIt(this->GetInputImage(), splitedLineIdCentral[i].first, splitedLineIdCentral[i].second); - lineIt.GoToBegin(); - - while (!lineIt.IsAtEnd()) - { - if (this->IsInsideBuffer(lineIt.GetIndex())) - { - centralRadiomAcc += this->GetInputImage()->GetPixel( lineIt.GetIndex() ); - centralNbVisitedPixel += 1; - } - ++lineIt; - } - } - - double neighNbVisitedPixel = 0.; - - PixelType neighborRadiomAcc(this->GetInputImage()->GetNumberOfComponentsPerPixel()); - neighborRadiomAcc.Fill(0); - - for (unsigned int i = 0; i < splitedLineIdNeigh.size(); ++i) - { - LineIteratorType lineIt(this->GetInputImage(), splitedLineIdNeigh[i].first, splitedLineIdNeigh[i].second); - lineIt.GoToBegin(); - - while (!lineIt.IsAtEnd()) - { - if (this->IsInsideBuffer(lineIt.GetIndex())) - { - neighborRadiomAcc += this->GetInputImage()->GetPixel( lineIt.GetIndex() ); - neighNbVisitedPixel += 1; - } - ++lineIt; - } - } - - OutputType output; - if (centralNbVisitedPixel > 0 && neighNbVisitedPixel > 0) - { - // Compute averaged radiometry in both areas - centralRadiomAcc /= centralNbVisitedPixel; - neighborRadiomAcc /= neighNbVisitedPixel; - - // Compute the spectral angle between the center area and the neighbor area - SpectralAngleFunctorType spectralAngleFunctor; - double angle = spectralAngleFunctor(neighborRadiomAcc, centralRadiomAcc); - - // Make sure we are in [0, 1] interval - angle /= otb::CONST_PI; - - output.push_back(static_cast<PrecisionType> (angle)); - } - else - { - output.push_back(static_cast<PrecisionType> (0.)); - } - - // TODO: handle streaming, need to output the current state - return output; -} - -} // end namespace otb - -#endif diff --git a/Modules/Filtering/VectorDataManipulation/include/otbSpectralAngleDataNodeFeatureFunction.h b/Modules/Filtering/VectorDataManipulation/include/otbSpectralAngleDataNodeFeatureFunction.h deleted file mode 100644 index 1bc3dce3fe..0000000000 --- a/Modules/Filtering/VectorDataManipulation/include/otbSpectralAngleDataNodeFeatureFunction.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbSpectralAngleDataNodeFeatureFunction_h -#define otbSpectralAngleDataNodeFeatureFunction_h - -#include "otbDataNodeImageFunction.h" - -#include "otbBinarySpectralAngleFunctor.h" -#include "otbPolyLineImageConstIterator.h" -#include "itkLineConstIterator.h" -#include "itkVariableLengthVector.h" - -namespace otb -{ -/** \class SpectralAngleDataNodeFeatureFunction - * \brief Compute a spectral angle based feature alongside a - * datanode. - * - * This function compute a spectral angle alongside a datanode. - * The feature is the mean spectral angle regarding a - * reference pixel alongside the tested datanode. - * - * The output has three elements: - * - #0: mean spectral angle of a neighborhood around the datanode, weighted to fit in [0, 1] interval - * - #1: accumulator of the spectral angle alongside the datanode - * - #2: number of visited pixel - * - * \ingroup Functions - * \sa DataNodeImageFunction - * \sa NDVIDataNodeFeatureFunction - * - * \ingroup OTBVectorDataManipulation - */ - -template < -class TImage, -class TCoordRep = double, -class TPrecision = double -> -class ITK_EXPORT SpectralAngleDataNodeFeatureFunction : - public DataNodeImageFunction<TImage, std::vector<TPrecision>, TCoordRep, TPrecision> -{ -public: - /** Standard class typedefs. */ - typedef SpectralAngleDataNodeFeatureFunction Self; - typedef DataNodeImageFunction<TImage, std::vector<TPrecision>, TCoordRep, TPrecision> - Superclass; - typedef itk::SmartPointer<Self> Pointer; - typedef itk::SmartPointer<const Self> ConstPointer; - - /** Method for creation through the object factory. */ - itkNewMacro(Self); - - /** Run-time type information (and related methods). */ - itkTypeMacro(SpectralAngleDataNodeFeatureFunction, DataNodeImageFunction); - - /** Some typedefs. */ - typedef typename Superclass::DataNodeType DataNodeType; - typedef typename DataNodeType::LineType LineType; - typedef typename LineType::Pointer LinePointer; - typedef typename LineType::ContinuousIndexType ContinuousIndexType; - typedef typename LineType::VertexListConstIteratorType VertexListConstIteratorType; - - typedef TImage InputImageType; - typedef typename InputImageType::ConstPointer InputImageConstPointer; - typedef typename InputImageType::PixelType PixelType; - typedef typename InputImageType::InternalPixelType ScalarRealType; - typedef typename InputImageType::IndexType IndexType; - typedef typename InputImageType::IndexValueType IndexValueType; - - typedef TCoordRep CoordRepType; - - typedef TPrecision PrecisionType; - - typedef itk::VariableLengthVector<PrecisionType> ReferencePixelType; - - typedef PolyLineImageConstIterator<InputImageType, LineType> ImageLineIteratorType; - typedef itk::LineConstIterator<InputImageType> LineIteratorType; - - typedef Functor::BinarySpectralAngleFunctor<PixelType, ReferencePixelType, PrecisionType> - SpectralAngleFunctorType; - - typedef std::pair<IndexType, IndexType> IndexPairType; - typedef std::vector<PrecisionType> OutputType; - - OutputType Evaluate( const DataNodeType& node ) const override; - - /** Set/Get methods */ - itkGetConstMacro(RefPixel, PixelType); - itkSetMacro(RefPixel, PixelType); - - itkGetConstMacro(Radius, unsigned int); - itkSetMacro(Radius, unsigned int); - -protected: - SpectralAngleDataNodeFeatureFunction(); - ~SpectralAngleDataNodeFeatureFunction() override {} - void PrintSelf(std::ostream& os, itk::Indent indent) const override; - -private: - SpectralAngleDataNodeFeatureFunction(const Self&) = delete; - void operator=(const Self&) = delete; - - /** SpectralAngle Functor & ReferencePixel*/ - ReferencePixelType m_RefPixel; - SpectralAngleFunctorType m_SpectralAngleFunctor; - - /** Neighborhood radius */ - unsigned int m_Radius; -}; - -} -#ifndef OTB_MANUAL_INSTANTIATION -#include "otbSpectralAngleDataNodeFeatureFunction.hxx" -#endif - -#endif diff --git a/Modules/Filtering/VectorDataManipulation/include/otbSpectralAngleDataNodeFeatureFunction.hxx b/Modules/Filtering/VectorDataManipulation/include/otbSpectralAngleDataNodeFeatureFunction.hxx deleted file mode 100644 index c2ed9e81e2..0000000000 --- a/Modules/Filtering/VectorDataManipulation/include/otbSpectralAngleDataNodeFeatureFunction.hxx +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbSpectralAngleDataNodeFeatureFunction_hxx -#define otbSpectralAngleDataNodeFeatureFunction_hxx - -#include "otbSpectralAngleDataNodeFeatureFunction.h" - -namespace otb -{ - -/** - * Constructor - */ -template<class TImage, class TCoordRep, class TPrecision> -SpectralAngleDataNodeFeatureFunction<TImage, TCoordRep, TPrecision>::SpectralAngleDataNodeFeatureFunction() : - m_Radius(2) -{ - //Example for QuickBird images (on a specific image) - m_RefPixel.SetSize(4); - m_RefPixel.SetElement(0, 252.284); - m_RefPixel.SetElement(1, 357.3); - m_RefPixel.SetElement(2, 232.644); - m_RefPixel.SetElement(3, 261.558); -} - -/** - * Standard "PrintSelf" method - */ -template<class TImage, class TCoordRep, class TPrecision> -void SpectralAngleDataNodeFeatureFunction<TImage, TCoordRep, TPrecision>::PrintSelf(std::ostream& os, - itk::Indent indent) const -{ - Superclass::PrintSelf(os, indent); - os << indent << "Reference Pixel: " << m_RefPixel << std::endl; -} - -template<class TImage, class TCoordRep, class TPrecision> -typename SpectralAngleDataNodeFeatureFunction<TImage, TCoordRep, TPrecision>::OutputType SpectralAngleDataNodeFeatureFunction< - TImage, TCoordRep, TPrecision>::Evaluate(const DataNodeType& node) const -{ - - // TODO faire avce un ikk - const typename ImageLineIteratorType::PathType* path; - - switch (node.GetNodeType()) - { - case FEATURE_POINT: - { - itkExceptionMacro(<< "This DataNode type is not handle yet"); - break; - } - case FEATURE_LINE: - { - path = node.GetLine(); - break; - } - case FEATURE_POLYGON: - { - path = node.GetPolygonExteriorRing(); - break; - } - default: - { - itkExceptionMacro(<< "This DataNode type is not handle yet"); - break; - } - } - - std::vector<std::pair<IndexType, IndexType> > splitedLineIdNeigh; - std::vector<std::pair<IndexType, IndexType> > splitedLineIdCentral; - - // Split line and polygon into segment (ie. line with two vertex - VertexListConstIteratorType it1 = path->GetVertexList()->Begin(); - VertexListConstIteratorType it2 = path->GetVertexList()->Begin(); - VertexListConstIteratorType itStop = path->GetVertexList()->End(); - - ++it2; - if (it2 == itStop) - { - itkExceptionMacro(<< "Invalid DataNode, must at least contain two points"); - } - - while (it1 != itStop && it2 != itStop) - { - IndexType id1, id2; - id1[0] = static_cast<int> (it1.Value()[0]); - id1[1] = static_cast<int> (it1.Value()[1]); - id2[0] = static_cast<int> (it2.Value()[0]); - id2[1] = static_cast<int> (it2.Value()[1]); - - // Compute the direction of the current line - itk::Vector<double, 2> direction; - direction[0] = it2.Value()[0] - it1.Value()[0]; - direction[1] = it2.Value()[1] - it1.Value()[1]; - direction.Normalize(); - - // Compute the orthogonal direction of the current line - itk::Vector<double, 2> orthogonalDirection; - orthogonalDirection[0] = direction[1]; - orthogonalDirection[1] = -direction[0]; - - splitedLineIdCentral.push_back(IndexPairType(id1, id2)); - - for (unsigned int j = 1; j <= m_Radius; ++j) - { - IndexType shift11, shift12; - shift11[0] = id1[0] - j * orthogonalDirection[0]; - shift11[1] = id1[1] - j * orthogonalDirection[1]; - shift12[0] = id1[0] + j * orthogonalDirection[0]; - shift12[1] = id1[1] + j * orthogonalDirection[1]; - IndexType shift21, shift22; - shift21[0] = id2[0] - j * orthogonalDirection[0]; - shift21[1] = id2[1] - j * orthogonalDirection[1]; - shift22[0] = id2[0] + j * orthogonalDirection[0]; - shift22[1] = id2[1] + j * orthogonalDirection[1]; - - splitedLineIdCentral.push_back(IndexPairType(shift11, shift21)); - splitedLineIdCentral.push_back(IndexPairType(shift12, shift22)); - } - - ++it1; - ++it2; - } - - // in FEATURE_POLYGON case, first point appears twice (first vertex and last vertew, thus we create a line of 1 point...) - if (node.GetNodeType() == FEATURE_POLYGON) - { - splitedLineIdCentral.pop_back(); - } - - double centralAccSpectralAngle = 0.; - //double centralAccSpectralAngleSecondOrder = 0.; - double centralNbVisitedPixel = 0.; - - for (unsigned int i = 0; i < splitedLineIdCentral.size(); ++i) - { - LineIteratorType lineIt(this->GetInputImage(), splitedLineIdCentral[i].first, splitedLineIdCentral[i].second); - lineIt.GoToBegin(); - - while (!lineIt.IsAtEnd()) - { - if (this->IsInsideBuffer(lineIt.GetIndex())) - { - PixelType currPixel = this->GetInputImage()->GetPixel( lineIt.GetIndex() ); - double angle = m_SpectralAngleFunctor(currPixel, this->GetRefPixel()); - centralAccSpectralAngle += angle; - //centralAccSpectralAngleSecondOrder += angle * angle; - centralNbVisitedPixel += 1; - } - ++lineIt; - } - } - - OutputType output; - - double meanCentral = 0.; - //double stddevCentral = 0.; - if (centralNbVisitedPixel != 0.) - { - meanCentral = static_cast<double> (centralAccSpectralAngle) / centralNbVisitedPixel; - //stddevCentral = std::sqrt( centralAccSpectralAngleSecondOrder/centralNbVisitedPixel - meanCentral*meanCentral ); - } - - if (meanCentral == 0.) - { - output.push_back(static_cast<PrecisionType> (0.)); - } - else - { - // Compute the descriptor here - // meanCentral is in [0, pi] - // We need a descriptor in [0 1] - - double descriptor = meanCentral / otb::CONST_PI; - output.push_back(static_cast<PrecisionType>( descriptor )); - } - - output.push_back(static_cast<PrecisionType> (centralAccSpectralAngle)); - output.push_back(static_cast<PrecisionType> (centralNbVisitedPixel)); - - return output; -} - -} // end namespace otb - -#endif diff --git a/Modules/Filtering/VectorDataManipulation/test/CMakeLists.txt b/Modules/Filtering/VectorDataManipulation/test/CMakeLists.txt index 8513e931ac..7163568ab7 100644 --- a/Modules/Filtering/VectorDataManipulation/test/CMakeLists.txt +++ b/Modules/Filtering/VectorDataManipulation/test/CMakeLists.txt @@ -22,12 +22,10 @@ otb_module_test() set(OTBVectorDataManipulationTests otbVectorDataManipulationTestDriver.cxx -otbDBOverlapDataNodeFeatureFunction.cxx otbVectorDataExtractROI.cxx otbPolygonCompacityFunctor.cxx otbVectorDataToRandomLineGenerator.cxx otbConcatenateVectorDataFilter.cxx -otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.cxx ) add_executable(otbVectorDataManipulationTestDriver ${OTBVectorDataManipulationTests}) @@ -36,18 +34,6 @@ otb_module_target_label(otbVectorDataManipulationTestDriver) # Tests Declaration -otb_add_test(NAME bfTvDBOverlapDataNodeFeatureFunction COMMAND otbVectorDataManipulationTestDriver - --compare-ogr ${NOTOL} - ${BASELINE_FILES}/bfTvDBOverlapDataNodeFeatureFunctionOutput.shp - ${TEMP}/bfTvDBOverlapDataNodeFeatureFunctionOutput.shp - otbDBOverlapDataNodeFeatureFunction - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shp - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.shp - ${TEMP}/bfTvDBOverlapDataNodeFeatureFunctionOutput.shp - 0 - ) - - otb_add_test(NAME coTvVectorDataExtractROI COMMAND otbVectorDataManipulationTestDriver --compare-ogr ${NOTOL} ${BASELINE_FILES}/coVectorDataExtractROIOutput.shp @@ -88,8 +74,6 @@ otb_add_test(NAME bfTvVectorDataToRandomLineGenerator COMMAND otbVectorDataManip ${TEMP}/bfTvVectorDataToRandomLineGeneratorOutput.shp ) - - otb_add_test(NAME bfTvConcatenateVectorDataFilter COMMAND otbVectorDataManipulationTestDriver --compare-ogr ${NOTOL} ${BASELINE_FILES}/otbConcatenateVectorDataFilter_Output.shp @@ -99,24 +83,3 @@ otb_add_test(NAME bfTvConcatenateVectorDataFilter COMMAND otbVectorDataManipulat ${INPUTDATA}/waterways.shp ${TEMP}/otbConcatenateVectorDataFilter_Output.shp ) - -otb_add_test(NAME bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction_Polygon COMMAND otbVectorDataManipulationTestDriver - --compare-ogr ${EPSILON_3} - ${BASELINE_FILES}/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.shp - ${TEMP}/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.shp - otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.shp - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE.TIF - ${INPUTDATA}/DEM/srtm_directory - ${TEMP}/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Polygon.shp - 0 ) -otb_add_test(NAME bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction_Line COMMAND otbVectorDataManipulationTestDriver - --compare-ogr ${EPSILON_9} - ${BASELINE_FILES}/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.shp - ${TEMP}/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.shp - otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shp - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE.TIF - ${INPUTDATA}/DEM/srtm_directory - ${TEMP}/bfTvRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunctionOutput_Line.shp - 0 ) diff --git a/Modules/Filtering/VectorDataManipulation/test/otbDBOverlapDataNodeFeatureFunction.cxx b/Modules/Filtering/VectorDataManipulation/test/otbDBOverlapDataNodeFeatureFunction.cxx deleted file mode 100644 index 7bc471de76..0000000000 --- a/Modules/Filtering/VectorDataManipulation/test/otbDBOverlapDataNodeFeatureFunction.cxx +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - - - -#include "otbDBOverlapDataNodeFeatureFunction.h" - -#include "otbVectorData.h" -#include "otbVectorDataFileReader.h" -#include "otbVectorDataFileWriter.h" - - -int otbDBOverlapDataNodeFeatureFunction(int itkNotUsed(argc), char* argv[]) -{ - const char * inputVD = argv[1]; - const char * inputDB = argv[2]; - const char * outputVD = argv[3]; - int DisplayWarnings = atoi(argv[4]); - - typedef double CoordRepType; - typedef double PrecisionType; - typedef otb::VectorData<CoordRepType, 2, PrecisionType> - VectorDataType; - typedef VectorDataType::DataNodeType DataNodeType; - typedef otb::VectorDataFileReader<VectorDataType> VectorDataReaderType; - typedef otb::VectorDataFileWriter<VectorDataType> VectorDataWriterType; - typedef itk::PreOrderTreeIterator<VectorDataType::DataTreeType> - TreeIteratorType; - - typedef otb::DBOverlapDataNodeFeatureFunction<CoordRepType, PrecisionType> - DataNodeFunctionType; - typedef DataNodeFunctionType::OutputType - FeatureOutputType; - - VectorDataReaderType::Pointer vdReader = VectorDataReaderType::New(); - VectorDataReaderType::Pointer vdDBReader = VectorDataReaderType::New(); - VectorDataWriterType::Pointer vdWriter = VectorDataWriterType::New(); - DataNodeFunctionType::Pointer function = DataNodeFunctionType::New(); - - if (!DisplayWarnings) - { - vdReader->SetGlobalWarningDisplay(0); - } - - vdReader->SetFileName(inputVD); - vdReader->Update(); - - vdDBReader->SetFileName(inputDB); - vdDBReader->Update(); - - function->SetInputVectorData(vdDBReader->GetOutput()); - function->SetDistanceThreshold(0.003); - - // Output - VectorDataType::Pointer outVD = VectorDataType::New(); - // Retrieving root node - DataNodeType::Pointer root = outVD->GetDataTree()->GetRoot()->Get(); - // Create the document node - DataNodeType::Pointer document = DataNodeType::New(); - document->SetNodeType(otb::DOCUMENT); - // Adding the layer to the data tree - outVD->GetDataTree()->Add(document, root); - // Create the folder node - DataNodeType::Pointer folder = DataNodeType::New(); - folder->SetNodeType(otb::FOLDER); - // Adding the layer to the data tree - outVD->GetDataTree()->Add(folder, document); - - TreeIteratorType itVector(vdReader->GetOutput()->GetDataTree()); - itVector.GoToBegin(); - while (!itVector.IsAtEnd()) - { - if (itVector.Get()->IsLineFeature() || itVector.Get()->IsPolygonFeature()) - { - const DataNodeType::Pointer currentGeometry = itVector.Get(); - FeatureOutputType currentResult; - currentResult = function->Evaluate(*(currentGeometry.GetPointer())); - currentGeometry->SetFieldAsDouble("DBOVER", (double)(currentResult[0])); - outVD->GetDataTree()->Add(currentGeometry, folder); - } - ++itVector; - } - - vdWriter->SetInput(outVD); - vdWriter->SetFileName(outputVD); - vdWriter->Update(); - - return EXIT_SUCCESS; -} diff --git a/Modules/Filtering/VectorDataManipulation/test/otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.cxx b/Modules/Filtering/VectorDataManipulation/test/otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.cxx deleted file mode 100644 index a5481e05d3..0000000000 --- a/Modules/Filtering/VectorDataManipulation/test/otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.cxx +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#include "otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction.h" - -#include "otbVectorImage.h" -#include "otbImageFileReader.h" -#include "otbVectorData.h" -#include "otbVectorDataFileReader.h" -#include "otbVectorDataIntoImageProjectionFilter.h" -#include "otbVectorDataFileWriter.h" -#include "itkPreOrderTreeIterator.h" - - -int otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction(int itkNotUsed(argc), char* argv[]) -{ - const char * inputVD = argv[1]; - const char * inputImg = argv[2]; - const char * DEMDir = argv[3]; - const char * outputVD = argv[4]; - int DisplayWarnings = atoi(argv[5]); - - typedef double CoordRepType; - typedef double PrecisionType; - typedef otb::VectorImage<PrecisionType> ImageType; - typedef otb::ImageFileReader<ImageType> ImageReaderType; - typedef otb::VectorData<CoordRepType, 2, PrecisionType> - VectorDataType; - typedef VectorDataType::DataNodeType DataNodeType; - typedef otb::VectorDataFileReader<VectorDataType> VectorDataReaderType; - typedef otb::VectorDataIntoImageProjectionFilter<VectorDataType, ImageType> - VectorDataReProjFilter; - typedef otb::VectorDataFileWriter<VectorDataType> VectorDataWriterType; - typedef itk::PreOrderTreeIterator<VectorDataType::DataTreeType> - TreeIteratorType; - - typedef otb::RadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction<ImageType, CoordRepType, PrecisionType> - FeaturefunctionType; - typedef FeaturefunctionType::OutputType - FeatureOutputType; - - ImageReaderType::Pointer imgReader = ImageReaderType::New(); - VectorDataReaderType::Pointer vdReader = VectorDataReaderType::New(); - VectorDataReProjFilter::Pointer vdReProjFilter = VectorDataReProjFilter::New(); - VectorDataWriterType::Pointer vdWriter = VectorDataWriterType::New(); - FeaturefunctionType::Pointer featureFunction = FeaturefunctionType::New(); - - if (!DisplayWarnings) - { - imgReader->SetGlobalWarningDisplay(0); - } - - otb::DEMHandler::Instance()->OpenDEMDirectory(DEMDir); - - vdReader->SetFileName(inputVD); - vdReader->Update(); - - imgReader->SetFileName(inputImg); - imgReader->UpdateOutputInformation(); - imgReader->Update(); //Needed to set m_EndIndex, m_StartIndex in otbDataNodeImageFunction - - vdReProjFilter->SetInputImage(imgReader->GetOutput()); - vdReProjFilter->SetInputVectorData(vdReader->GetOutput()); - vdReProjFilter->SetUseOutputSpacingAndOriginFromImage(true); - vdReProjFilter->Update(); - - std::cout<< "vdReProjFilter->GetOutput()->Size(): " - << vdReProjFilter->GetOutput()->Size() << std::endl; - - featureFunction->SetInputImage(imgReader->GetOutput()); - - // Output - VectorDataType::Pointer outVD = VectorDataType::New(); - // Retrieving root node - DataNodeType::Pointer root = outVD->GetDataTree()->GetRoot()->Get(); - // Create the document node - DataNodeType::Pointer document = DataNodeType::New(); - document->SetNodeType(otb::DOCUMENT); - // Adding the layer to the data tree - outVD->GetDataTree()->Add(document, root); - // Create the folder node - DataNodeType::Pointer folder = DataNodeType::New(); - folder->SetNodeType(otb::FOLDER); - // Adding the layer to the data tree - outVD->GetDataTree()->Add(folder, document); - - TreeIteratorType itVector(vdReProjFilter->GetOutput()->GetDataTree()); - itVector.GoToBegin(); - while (!itVector.IsAtEnd()) - { - if (itVector.Get()->IsLineFeature() || itVector.Get()->IsPolygonFeature()) - { - const DataNodeType::Pointer currentGeometry = itVector.Get(); - FeatureOutputType currentResult; - currentResult = featureFunction->Evaluate(*(currentGeometry.GetPointer())); - currentGeometry->SetFieldAsDouble("RADIOM_HOM", (double)(currentResult[0])); - outVD->GetDataTree()->Add(currentGeometry, folder); - } - ++itVector; - } - - vdWriter->SetInput(outVD); - vdWriter->SetFileName(outputVD); - vdWriter->Update(); - - return EXIT_SUCCESS; -} diff --git a/Modules/Filtering/VectorDataManipulation/test/otbVectorDataManipulationTestDriver.cxx b/Modules/Filtering/VectorDataManipulation/test/otbVectorDataManipulationTestDriver.cxx index c4230b1155..d09a9aaed3 100644 --- a/Modules/Filtering/VectorDataManipulation/test/otbVectorDataManipulationTestDriver.cxx +++ b/Modules/Filtering/VectorDataManipulation/test/otbVectorDataManipulationTestDriver.cxx @@ -22,10 +22,8 @@ void RegisterTests() { - REGISTER_TEST(otbDBOverlapDataNodeFeatureFunction); REGISTER_TEST(otbVectorDataExtractROI); REGISTER_TEST(otbPolygonCompacityFunctor); REGISTER_TEST(otbVectorDataToRandomLineGenerator); REGISTER_TEST(otbConcatenateVectorDataFilter); - REGISTER_TEST(otbRadiometryHomogenousWithNeighborhoodDataNodeFeatureFunction); } diff --git a/Modules/Learning/DempsterShafer/include/otbStandardDSCostFunction.h b/Modules/Learning/DempsterShafer/include/otbStandardDSCostFunction.h deleted file mode 100644 index 224f16af2c..0000000000 --- a/Modules/Learning/DempsterShafer/include/otbStandardDSCostFunction.h +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbStandardDSCostFunction_h -#define otbStandardDSCostFunction_h - -#include "itkSingleValuedCostFunction.h" - -#include "otbVectorDataToDSValidatedVectorDataFilter.h" -#include <string> - -namespace otb -{ -/** \class StandardDSCostFunction - * \brief Standard Cost Function used to estimate the fuzzy model parameters - * in the Dempster-Shafer framework - * - * This class has been developed to estimate, with the help of the Amoeba - * optimizer, the fuzzy model parameters to be used in the class - * otb::VectorDataToDSValidatedVectorDataFilter. The cost value compute the - * cost according to: - * - an enriched ground truth vector data (using VectorDataToRoadDescription) - * - an enriched negative sample VectorData or at least random samples - * - an hypothesis (the same as the considered DSValidationFilter) - * (by default (NONDVI, ROADSA, NOBUIL)) - * - a weight between 0 and 1 (0.5 by default) corresponding to the situation - * policy regarding under detection/false detection (1 no under detection - * 0 no false detection) - * For now the cost function use the NONDVI Feature, ROADSA Feature and and - * the NOBUIL Feature. - * For each evolution of the VectorDataToDSValidatedVectorDataFilter, - * this cost function must be adapted. - * - * \ingroup CostFunction - * \sa VectorDataToDSValidatedVectorDataFilter - * \sa AmoebaOptimizer - * - * \ingroup OTBDempsterShafer - */ - -template <class TDSValidationFilter> -class ITK_EXPORT StandardDSCostFunction : -public itk::SingleValuedCostFunction -{ -public: - /** Standard class typedefs. */ - typedef StandardDSCostFunction Self; - typedef itk::SingleValuedCostFunction Superclass; - typedef itk::SmartPointer<Self> Pointer; - typedef itk::SmartPointer<const Self> ConstPointer; - - /** Method for creation through the object factory. */ - itkNewMacro(Self); - - /** Run-time type information (and related methods). */ - itkTypeMacro(StandardDSCostFunction, itk::SingleValuedCostFunction); - - typedef Superclass::MeasureType MeasureType; //double - typedef Superclass::DerivativeType DerivativeType; //Array<double> - typedef Superclass::ParametersType ParametersType; //Array<double> - - typedef TDSValidationFilter DSValidationFilterType; - typedef typename DSValidationFilterType::VectorDataType - VectorDataType; - typedef typename DSValidationFilterType::TreeIteratorType - TreeIteratorType; - typedef typename DSValidationFilterType::LabelSetType - LabelSetType; - - typedef FuzzyDescriptorsModelManager FuzzyDescriptorsModelManagerType; - - typedef FuzzyDescriptorsModelManager::DescriptorListType - DescriptorListType; - typedef FuzzyDescriptorsModelManager::DescriptorsModelType - DescriptorsModelType; - typedef FuzzyDescriptorsModelManager::PairType PairType; - - typedef Parser ParserType; - - /** This method returns the value of the cost function corresponding - * to the specified parameters. */ - MeasureType GetValue( const ParametersType & parameters ) const override; - - /** This method returns the derivative of the cost function corresponding - * to the specified parameters. */ - void GetDerivative( const ParametersType & parameters, - DerivativeType & derivative ) const override; - - unsigned int GetNumberOfParameters(void) const override; - - itkSetMacro(Weight, double); - itkGetConstMacro(Weight, double); - - itkSetMacro(CriterionFormula, std::string); - itkGetConstMacro(CriterionFormula, std::string); - - void SetDescriptorList(DescriptorListType list) - { - m_DescriptorList = list; - } - - DescriptorListType GetDescriptorList() - { - return m_DescriptorList; - } - - itkSetObjectMacro(GTVectorData, VectorDataType); - itkGetConstObjectMacro(GTVectorData, VectorDataType); - - itkSetObjectMacro(NSVectorData, VectorDataType); - itkGetConstObjectMacro(NSVectorData, VectorDataType); - - - LabelSetType GetBeliefHypothesis() - { - return m_BeliefHypothesis; - } - - void SetBeliefHypothesis(LabelSetType hypothesis) - { - m_BeliefHypothesis = hypothesis; - } - - LabelSetType GetPlausibilityHypothesis() - { - return m_PlausibilityHypothesis; - } - - void SetPlausibilityHypothesis(LabelSetType hypothesis) - { - m_PlausibilityHypothesis = hypothesis; - } - -protected: - /** Constructor */ - StandardDSCostFunction(); - /** Destructor */ - ~StandardDSCostFunction() override {} - /**PrintSelf method */ - void PrintSelf(std::ostream& os, itk::Indent indent) const override; - -private: - StandardDSCostFunction(const Self &) = delete; - void operator =(const Self&) = delete; - - - typename VectorDataType::Pointer m_GTVectorData; //Ground Truth - typename VectorDataType::Pointer m_NSVectorData; //Negative Samples - - typename ParserType::Pointer m_Parser; - std::string m_CriterionFormula; - - double m_Weight; //range ]0; 1[ - - LabelSetType m_BeliefHypothesis; - LabelSetType m_PlausibilityHypothesis; - - DescriptorListType m_DescriptorList; -}; - -} // end namespace otb - -#ifndef OTB_MANUAL_INSTANTIATION -#include "otbStandardDSCostFunction.hxx" -#endif - -#endif diff --git a/Modules/Learning/DempsterShafer/include/otbStandardDSCostFunction.hxx b/Modules/Learning/DempsterShafer/include/otbStandardDSCostFunction.hxx deleted file mode 100644 index 236c1e5e9a..0000000000 --- a/Modules/Learning/DempsterShafer/include/otbStandardDSCostFunction.hxx +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbStandardDSCostFunction_hxx -#define otbStandardDSCostFunction_hxx - -#include "otbStandardDSCostFunction.h" - -namespace otb -{ -// Constructor -template <class TDSValidationFilter> -StandardDSCostFunction<TDSValidationFilter> -::StandardDSCostFunction() : - m_CriterionFormula("((Belief + Plausibility)/2.)"), - m_Weight(0.5) -{ - m_GTVectorData = VectorDataType::New(); - m_NSVectorData = VectorDataType::New(); - m_Parser = ParserType::New(); -} - -template <class TDSValidationFilter> -unsigned int -StandardDSCostFunction<TDSValidationFilter> -::GetNumberOfParameters() const - { - return m_DescriptorList.size()*4; - } - -template <class TDSValidationFilter> -typename StandardDSCostFunction<TDSValidationFilter> -::MeasureType - StandardDSCostFunction<TDSValidationFilter> -::GetValue(const ParametersType & parameters) const - { - if (parameters.size() != m_DescriptorList.size()*4) - { - itkExceptionMacro(<< "Wrong model!" ) - } - - //Initialize parser - m_Parser->SetExpr(m_CriterionFormula); - - DescriptorsModelType descModel; - for (unsigned int i = 0; i < m_DescriptorList.size(); ++i) - { - std::vector<double> tmp; - for (unsigned int j = 0; j < 4; ++j) - { - tmp.push_back(parameters[4*i+j]); - } - PairType pair( m_DescriptorList[i], tmp); - descModel.push_back(pair); - } - - typename DSValidationFilterType::Pointer internalFunctionGT = DSValidationFilterType::New(); - internalFunctionGT->SetCriterionFormula("1"); - internalFunctionGT->SetInput(m_GTVectorData); - internalFunctionGT->SetBeliefHypothesis(m_BeliefHypothesis); - internalFunctionGT->SetPlausibilityHypothesis(m_PlausibilityHypothesis); - try - { - internalFunctionGT->SetDescriptorModels(descModel); - } - catch ( itk::ExceptionObject & ) - { - return 1; - } - internalFunctionGT->Update(); - - typename DSValidationFilterType::Pointer internalFunctionNS = DSValidationFilterType::New(); - internalFunctionNS->SetCriterionFormula("1"); - internalFunctionNS->SetInput(m_NSVectorData); - internalFunctionNS->SetBeliefHypothesis(m_BeliefHypothesis); - internalFunctionNS->SetBeliefHypothesis(m_PlausibilityHypothesis); - try - { - internalFunctionNS->SetDescriptorModels(descModel); - } - catch (itk::ExceptionObject &) - { - return 1; - } - internalFunctionNS->Update(); - - double accGT = 0.0; - double accNS = 0.0; - double nGT = 0.0; - double nNS = 0.0; - - TreeIteratorType itVectorGT(internalFunctionGT->GetOutput()->GetDataTree()); - itVectorGT.GoToBegin(); - while (!itVectorGT.IsAtEnd()) - { - if (!itVectorGT.Get()->IsRoot() && !itVectorGT.Get()->IsDocument() && !itVectorGT.Get()->IsFolder()) - { - double belief = itVectorGT.Get()->GetFieldAsDouble("Belief"); - double plausibility = itVectorGT.Get()->GetFieldAsDouble("Plausi"); - - m_Parser->DefineVar("Belief", &belief); - m_Parser->DefineVar("Plausibility", &plausibility); - - accGT += ((1 - m_Parser->Eval()) * (1 - m_Parser->Eval())); - nGT += 1.0; - - m_Parser->ClearVar(); - } - itVectorGT++; - } - - TreeIteratorType itVectorNS(internalFunctionNS->GetOutput()->GetDataTree()); - itVectorNS.GoToBegin(); - while (!itVectorNS.IsAtEnd()) - { - if (!itVectorNS.Get()->IsRoot() && !itVectorNS.Get()->IsDocument() && !itVectorNS.Get()->IsFolder()) - { - double belief = itVectorNS.Get()->GetFieldAsDouble("Belief"); - double plausibility = itVectorNS.Get()->GetFieldAsDouble("Plausi"); - - m_Parser->DefineVar("Belief", &belief); - m_Parser->DefineVar("Plausibility", &plausibility); - - accNS += (m_Parser->Eval() * m_Parser->Eval()); - nNS += 1.0; - - m_Parser->ClearVar(); - } - itVectorNS++; - } - return (m_Weight * accGT / nGT + (1 - m_Weight) * accNS / nNS); -} - -template <class TDSValidationFilter> -void -StandardDSCostFunction<TDSValidationFilter> -::GetDerivative(const ParametersType & itkNotUsed(parameters), DerivativeType & itkNotUsed(derivative)) const - { - //Not necessary for Amoeba Optimizer - itkExceptionMacro(<< "Not Supposed to be used when using Amoeba Optimizer!") - } - -// PrintSelf Method -template <class TDSValidationFilter> -void -StandardDSCostFunction<TDSValidationFilter> -::PrintSelf(std::ostream& os, itk::Indent indent) const -{ - Superclass::PrintSelf(os, indent); -} - - -}// end namespace otb - -#endif diff --git a/Modules/Learning/DempsterShafer/include/otbVectorDataToDSValidatedVectorDataFilter.h b/Modules/Learning/DempsterShafer/include/otbVectorDataToDSValidatedVectorDataFilter.h deleted file mode 100644 index 43a3b9a6f9..0000000000 --- a/Modules/Learning/DempsterShafer/include/otbVectorDataToDSValidatedVectorDataFilter.h +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbVectorDataToDSValidatedVectorDataFilter_h -#define otbVectorDataToDSValidatedVectorDataFilter_h - -#include "otbMassOfBelief.h" - -#include "otbVectorDataToVectorDataFilter.h" - -#include "itkPreOrderTreeIterator.h" -#include "otbVectorData.h" -#include "otbFuzzyDescriptorsModelManager.h" - -#include "otbFuzzyVariable.h" -#include "otbJointMassOfBeliefFilter.h" -#include "otbParser.h" -#include <string> - -namespace otb -{ -/** \class VectorDataToDSValidatedVectorDataFilter - * \brief VectorData filter validating data nodes using - * Dempster-Shafer theory. - * - * This filter takes as input a vector data containing - * features score and validate (or not) each data node - * according to these features score, a fuzzy model corresponding - * to each feature and a criterion according to the Dempster-Shafer - * theory. By default the filter is (for now) parametrized to process - * VectorDatas providing by the VectorDataToRoadDescriptionFilter. - * The hypothesis must be set using the SetHypothesis method. - * The convention is for each feature Fe, a mass of Belief is defined - * with two variables named Fe and Fe_. Thus, an hypothesis must declared: - * VectorDataToVectorDataFilter::LabelSetType hyp; - * hyp.insert("Fe(i)"); - * hyp.insert("Fe(j)_"); - * hyp.insert("Fe(k)_"); - * - * Fe(i), Fe(j) and Fe(k) being descriptors. - * - * The criterion can be set through SetCriterionFormula() as a - * string referring to "Belief" and "Plausibility" from the - * Dempster-Shafer theory. By default the criterion is: - * "((Belief + Plausibility)/2) >= 0.5" - * - * The considered features will be the intersection between - * the features embedded in this filter and the features embedded - * in the input vector data. For now, the filter uses "NONDVI" and - * "ROADSA" features. - * - * - * \ingroup VectorDataFilter - * \sa VectorDataToRoadDescriptionFilter - * \sa VectorDataToBuildingDescriptionFilter - * - * \ingroup OTBDempsterShafer - */ - -template <class TVectorData, class TPrecision=float> -class ITK_EXPORT VectorDataToDSValidatedVectorDataFilter : -public otb::VectorDataToVectorDataFilter<TVectorData, TVectorData> -{ -public: - /** Standard class typedefs. */ - typedef VectorDataToDSValidatedVectorDataFilter Self; - typedef VectorDataToVectorDataFilter<TVectorData, - TVectorData> Superclass; - typedef itk::SmartPointer<Self> Pointer; - typedef itk::SmartPointer<const Self> ConstPointer; - - /** Method for creation through the object factory. */ - itkNewMacro(Self); - - /** Run-time type information (and related methods). */ - itkTypeMacro(VectorDataToDSValidatedVectorDataFilter, VectorDataToVectorDataFilter); - - /** Some typedefs. */ - typedef TVectorData VectorDataType; - typedef typename VectorDataType::Pointer VectorDataPointer; - typedef typename VectorDataType::DataNodeType DataNodeType; - typedef itk::PreOrderTreeIterator<typename VectorDataType::DataTreeType> - TreeIteratorType; - - typedef TPrecision PrecisionType; - typedef MassOfBelief<std::string, PrecisionType> - MassOfBeliefFunctionType; - typedef typename MassOfBeliefFunctionType::LabelSetType - LabelSetType; - typedef JointMassOfBeliefFilter<MassOfBeliefFunctionType> - JointMassOfBeliefFilterType; - typedef Parser ParserType; - - typedef itk::DataObject::Pointer DataObjectPointer; - typedef itk::DataObject DataObject; - - - typedef FuzzyVariable<std::string, PrecisionType> FuzzyVarType; - - typedef FuzzyDescriptorsModelManager::PairType PairType; - typedef FuzzyDescriptorsModelManager::DescriptorsModelType DescriptorModelsType; - - /** Descriptor model accessors. */ - virtual void AddDescriptor(const std::string& key, std::vector<double> model); - virtual void ClearDescriptors(); - - void SetDescriptorModels( DescriptorModelsType model ); - DescriptorModelsType GetDescriptorModels() - { - return m_DescriptorModels; - } - - /** Parameter accessors. */ - itkGetConstMacro(CriterionFormula, std::string); - itkSetMacro(CriterionFormula, std::string); - - itkGetMacro(CriterionThreshold, double); - itkSetMacro(CriterionThreshold, double); - - LabelSetType GetBeliefHypothesis() - { - return m_BeliefHypothesis; - } - - void SetBeliefHypothesis(LabelSetType hypothesis) - { - m_BeliefHypothesis = hypothesis; - } - - LabelSetType GetPlausibilityHypothesis() - { - return m_PlausibilityHypothesis; - } - - void SetPlausibilityHypothesis(LabelSetType hypothesis) - { - m_PlausibilityHypothesis = hypothesis; - } - - unsigned int GetNumberOfParameters() - { - return (m_DescriptorModels.size() * 4); - } - - -protected: - /** Triggers the Computation */ - void GenerateData(void) override; - /** Constructor */ - VectorDataToDSValidatedVectorDataFilter(); - /** Destructor */ - ~VectorDataToDSValidatedVectorDataFilter() override {} - /**PrintSelf method */ - void PrintSelf(std::ostream& os, itk::Indent indent) const override; - - std::string GetNextID() - { - std::ostringstream oss; - oss << m_CurrentID++; - return oss.str(); - } - -private: - VectorDataToDSValidatedVectorDataFilter(const Self &) = delete; - void operator =(const Self&) = delete; - - // Descriptor bench - DescriptorModelsType m_DescriptorModels; - std::vector< typename FuzzyVarType::Pointer > m_FuzzyVars; - LabelSetType m_Universe, - m_BeliefHypothesis, - m_PlausibilityHypothesis; - double m_Bel, m_Plau; - typename ParserType::Pointer m_Parser; - - std::string m_CriterionFormula; - double m_CriterionThreshold; - unsigned int m_CurrentID; -}; - -} // end namespace otb - -#ifndef OTB_MANUAL_INSTANTIATION -#include "otbVectorDataToDSValidatedVectorDataFilter.hxx" -#endif - -#endif diff --git a/Modules/Learning/DempsterShafer/include/otbVectorDataToDSValidatedVectorDataFilter.hxx b/Modules/Learning/DempsterShafer/include/otbVectorDataToDSValidatedVectorDataFilter.hxx deleted file mode 100644 index 8e07927bb6..0000000000 --- a/Modules/Learning/DempsterShafer/include/otbVectorDataToDSValidatedVectorDataFilter.hxx +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbVectorDataToDSValidatedVectorDataFilter_hxx -#define otbVectorDataToDSValidatedVectorDataFilter_hxx - -#include "otbVectorDataToDSValidatedVectorDataFilter.h" -#include <iostream> - -namespace otb -{ - -// Constructor -template <class TVectorData, class TPrecision> - VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision> -::VectorDataToDSValidatedVectorDataFilter() : - m_Bel(0.0), - m_Plau(0.0), - m_CriterionFormula("((Belief + Plausibility)/2.)"), - m_CriterionThreshold(0.5), - m_CurrentID(0) -{ - this->SetNumberOfRequiredInputs(1); - - m_Parser = ParserType::New(); -} - - -template <class TVectorData, class TPrecision> -void -VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision> -::AddDescriptor(const std::string& key, std::vector<double> model) -{ - bool alreadyExist = false; - - if (model.size() != 4) - { - itkExceptionMacro(<< "Wrong model! Size(=" << model.size() << ") > 4" ) - } - else if (model[0]<0 || model[1]<model[0] || model[2]<model[1] || model[2]>1) - { - itkExceptionMacro(<< "Wrong model! Values have to be 0<=v1<=v2<=v3<=1" ) - } - else if (model[3]<.75 || model[3]>1.0) - { - itkExceptionMacro(<< "Wrong model! Values have to be 0.75<=v4<=1" ) - } - else - { - for (unsigned int i=0; i<m_DescriptorModels.size(); ++i) - { - if (m_DescriptorModels[i].first.compare(key) == 0) - { - for (unsigned int j=0; j<4; ++j) - { - m_DescriptorModels[i].second.at(j) = model[j]; - } - alreadyExist = true; - } - } - if (!alreadyExist) - { - m_DescriptorModels.push_back(std::pair<std::string, std::vector<double> >(key, model)); - } - } - - this->Modified(); -} - - -template <class TVectorData, class TPrecision> -void -VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision> -::ClearDescriptors() -{ - m_DescriptorModels.clear(); -} - -template <class TVectorData, class TPrecision> -void -VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision> -::SetDescriptorModels(DescriptorModelsType model) -{ - for (unsigned int i=0; i<model.size(); ++i) - { - this->AddDescriptor(model[i].first, model[i].second); - } -} - - -template <class TVectorData, class TPrecision> -void -VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision> -::GenerateData() -{ - //Initialize Dempster Shafer tools - if( m_DescriptorModels.size() == 0 ) - { - itkExceptionMacro(<< "No defined Descriptor. Please add a descriptor model."); - } - - for (unsigned int i=0; i<m_DescriptorModels.size(); ++i) - { - typename FuzzyVarType::Pointer fuz = FuzzyVarType::New(); - std::string fuzName, fuzName_; - fuzName = m_DescriptorModels[i].first; - fuzName_ = m_DescriptorModels[i].first + "_"; - - fuz->SetMembership(fuzName, - 0.0, - 0.0, - m_DescriptorModels[i].second[0], - m_DescriptorModels[i].second[1], - 0.0, - m_DescriptorModels[i].second[3]); - fuz->SetMembership(fuzName_, - m_DescriptorModels[i].second[1], - m_DescriptorModels[i].second[2], - 1.0, - 1.0, - 0.0, - m_DescriptorModels[i].second[3]); - - m_FuzzyVars.push_back(fuz); - - m_Universe.insert(fuzName); - m_Universe.insert(fuzName_); - } - - //Initialize parser - m_Parser->SetExpr(m_CriterionFormula); - m_Parser->DefineVar("Belief", &m_Bel); - m_Parser->DefineVar("Plausibility", &m_Plau); - - // Output - this->GetOutput(0)->SetMetaDataDictionary(this->GetInput()->GetMetaDataDictionary()); - // Retrieving root node - typename DataNodeType::Pointer root = this->GetOutput(0)->GetDataTree()->GetRoot()->Get(); - // Create the document node - typename DataNodeType::Pointer document = DataNodeType::New(); - document->SetNodeType(otb::DOCUMENT); - // Adding the layer to the data tree - this->GetOutput(0)->GetDataTree()->Add(document, root); - // Create the folder node - typename DataNodeType::Pointer folder = DataNodeType::New(); - folder->SetNodeType(otb::FOLDER); - // Adding the layer to the data tree - this->GetOutput(0)->GetDataTree()->Add(folder, document); - this->GetOutput(0)->SetProjectionRef(this->GetInput()->GetProjectionRef()); - - TreeIteratorType itVector(this->GetInput()->GetDataTree()); - itVector.GoToBegin(); - while (!itVector.IsAtEnd()) - { - if (!itVector.Get()->IsRoot() && !itVector.Get()->IsDocument() && !itVector.Get()->IsFolder()) - { - typename DataNodeType::Pointer currentGeometry = itVector.Get(); - typename JointMassOfBeliefFilterType::Pointer jointMassFilter = JointMassOfBeliefFilterType::New(); - - for (unsigned int i=0; i<m_DescriptorModels.size(); ++i) - { - if (currentGeometry->HasField(m_DescriptorModels[i].first)) - { - LabelSetType H, H_; - std::string fuzName, fuzName_; - fuzName = m_DescriptorModels[i].first; - fuzName_ = m_DescriptorModels[i].first + "_"; - - typename MassOfBeliefFunctionType::Pointer mass = MassOfBeliefFunctionType::New(); - mass->InitializePowerSetMasses(m_Universe); - - H.insert(fuzName); - H_.insert(fuzName_); - - mass->SetMass(H, m_FuzzyVars[i]->GetMembership(fuzName, currentGeometry->GetFieldAsDouble(fuzName))); - mass->SetMass(H_, m_FuzzyVars[i]->GetMembership(fuzName_, currentGeometry->GetFieldAsDouble(fuzName))); - - mass->EstimateUncertainty(); - - jointMassFilter->PushBackInput(mass); - } - } - jointMassFilter->Update(); - m_Bel = jointMassFilter->GetOutput()->GetBelief(m_BeliefHypothesis); - m_Plau = jointMassFilter->GetOutput()->GetPlausibility(m_PlausibilityHypothesis); - - if (m_Parser->Eval() >= m_CriterionThreshold) - { - currentGeometry->SetNodeId(this->GetNextID()); - currentGeometry->SetFieldAsDouble("Belief", m_Bel); - currentGeometry->SetFieldAsDouble("Plausi", m_Plau); - this->GetOutput(0)->GetDataTree()->Add(currentGeometry, folder); - } - } - ++itVector; - } -} - - -// PrintSelf Method -template <class TVectorData, class TPrecision> -void -VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision> -::PrintSelf(std::ostream& os, itk::Indent indent) const -{ - Superclass::PrintSelf(os, indent); -} - -} // end namespace otb - -#endif diff --git a/Modules/Learning/DempsterShafer/test/CMakeLists.txt b/Modules/Learning/DempsterShafer/test/CMakeLists.txt index d999a90fa0..9ebe35857f 100644 --- a/Modules/Learning/DempsterShafer/test/CMakeLists.txt +++ b/Modules/Learning/DempsterShafer/test/CMakeLists.txt @@ -24,7 +24,6 @@ set(OTBDempsterShaferTests otbDempsterShaferTestDriver.cxx otbMassOfBeliefDSApplied.cxx otbConfusionMatrixToMassOfBeliefTest.cxx -otbVectorDataToDSValidatedVectorDataFilter.cxx otbDempsterShaferFusionTests.cxx otbDSFusionOfClassifiersImageFilterTest.cxx otbJointMassOfBeliefFilter.cxx @@ -85,16 +84,6 @@ otb_add_test(NAME fzTvConfusionMatrixToMassOfBeliefTestRecall COMMAND otbDempste otbConfusionMatrixToMassOfBeliefTest RECALL) -otb_add_test(NAME fzTvVectorDataToDSValidatedVectorDataFilter COMMAND otbDempsterShaferTestDriver - --compare-ogr ${EPSILON_9} - ${BASELINE_FILES}/fzTvDSValidatedRoadVectorDataOutput.shp - ${TEMP}/fzTvDSValidatedRoadVectorDataOutput.shp - otbVectorDataToDSValidatedVectorDataFilter - ${TEMP}/fzTvVectorDataToRoadDescriptionFilterOutput.shp - ${TEMP}/fzTvDSValidatedRoadVectorDataOutput.shp - ) -set_property(TEST fzTvVectorDataToDSValidatedVectorDataFilter PROPERTY DEPENDS fzTvVectorDataToRoadDescriptionFilter) - otb_add_test(NAME fzDSFusionTestConfMatFileVCMTestPrecision COMMAND otbDempsterShaferTestDriver otbDempsterShaferFusionConfMatFileTest ${INPUTDATA}/Classification/QB_1_ortho_C1_V.csv diff --git a/Modules/Learning/DempsterShafer/test/otbDempsterShaferTestDriver.cxx b/Modules/Learning/DempsterShafer/test/otbDempsterShaferTestDriver.cxx index c38750c9cb..d8b30b3339 100644 --- a/Modules/Learning/DempsterShafer/test/otbDempsterShaferTestDriver.cxx +++ b/Modules/Learning/DempsterShafer/test/otbDempsterShaferTestDriver.cxx @@ -24,7 +24,6 @@ void RegisterTests() { REGISTER_TEST(otbMassOfBeliefDSApplied); REGISTER_TEST(otbConfusionMatrixToMassOfBeliefTest); - REGISTER_TEST(otbVectorDataToDSValidatedVectorDataFilter); REGISTER_TEST(otbDempsterShaferFusionOptRecConfMatTest); REGISTER_TEST(otbDempsterShaferFusionOptRecTest); REGISTER_TEST(otbDempsterShaferFusionOptTest); diff --git a/Modules/Learning/DempsterShafer/test/otbVectorDataToDSValidatedVectorDataFilter.cxx b/Modules/Learning/DempsterShafer/test/otbVectorDataToDSValidatedVectorDataFilter.cxx deleted file mode 100644 index d237ea5d2f..0000000000 --- a/Modules/Learning/DempsterShafer/test/otbVectorDataToDSValidatedVectorDataFilter.cxx +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - - - -#include "otbVectorDataToDSValidatedVectorDataFilter.h" - -#include "otbVectorDataFileReader.h" -#include "otbVectorDataFileWriter.h" - - -int otbVectorDataToDSValidatedVectorDataFilter(int itkNotUsed(argc), char* argv[]) -{ - const char * inputVD = argv[1]; - const char * outputVD = argv[2]; - - typedef float PrecisionType; - typedef otb::VectorData<PrecisionType> VectorDataType; - typedef otb::VectorDataFileReader<VectorDataType> - VectorDataReaderType; - typedef otb::VectorDataFileWriter<VectorDataType> - VectorDataWriterType; - - typedef otb::VectorDataToDSValidatedVectorDataFilter<VectorDataType, PrecisionType> - VectorDataValidationFilterType; - typedef VectorDataValidationFilterType::LabelSetType - LabelSetType; - typedef otb::FuzzyDescriptorsModelManager - FuzzyManagerType; - VectorDataReaderType::Pointer vdReader = VectorDataReaderType::New(); - VectorDataWriterType::Pointer vdWriter = VectorDataWriterType::New(); - - VectorDataValidationFilterType::Pointer filter = - VectorDataValidationFilterType::New(); - - vdReader->SetFileName(inputVD); - vdReader->Update(); - - filter->SetInput(vdReader->GetOutput()); - //filter->GetDescriptorModels(); - FuzzyManagerType::Print(filter->GetDescriptorModels()); - LabelSetType plau, bel; - plau.insert("NONDVI"); - plau.insert("ROADSA"); - plau.insert("NOBUIL"); - filter->SetPlausibilityHypothesis(plau); - bel.insert("ROADSA"); - bel.insert("NONDVI"); - bel.insert("NOBUIL"); - filter->SetBeliefHypothesis(bel); - - std::vector<double> stdModel; - stdModel.push_back(0.25); - stdModel.push_back(0.50); - stdModel.push_back(0.75); - stdModel.push_back(0.90); - filter->AddDescriptor("NONDVI", stdModel); - filter->AddDescriptor("ROADSA", stdModel); - filter->AddDescriptor("NOBUIL", stdModel); - - FuzzyManagerType::Print(filter->GetDescriptorModels()); - - vdWriter->SetFileName(outputVD); - vdWriter->SetInput(filter->GetOutput()); - vdWriter->Update(); - - std::cout << "Input VectorData Size : " - << vdReader->GetOutput()->Size() << std::endl - << "CriterionFormula : " - << filter->GetCriterionFormula() << std::endl - << "Output VecttorData Size : " - << filter->GetOutput()->Size() - << std::endl; - - return EXIT_SUCCESS; -} diff --git a/Modules/Radiometry/Indices/include/otbNDVIDataNodeFeatureFunction.h b/Modules/Radiometry/Indices/include/otbNDVIDataNodeFeatureFunction.h deleted file mode 100644 index 58120ad259..0000000000 --- a/Modules/Radiometry/Indices/include/otbNDVIDataNodeFeatureFunction.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbNDVIDataNodeFeatureFunction_h -#define otbNDVIDataNodeFeatureFunction_h - -#include "otbDataNodeImageFunction.h" - -#include "otbVegetationIndicesFunctor.h" -#include "otbPolyLineImageConstIterator.h" - -namespace otb -{ -/** \class NDVIDataNodeFeatureFunction - * \brief Compute a NDVI based feature alongside a - * datanode. - * - * This function compute a feature alongside a datanode. - * The feature is (NDVI >= threshold) per cent along the - * tested datanode. - * - * \ingroup Functions - * \sa DataNodeImageFunction - * \sa SpectralAngleDataNodeFeatureFunction - * - * \ingroup OTBIndices - */ - -template < -class TImage, -class TCoordRep = double, -class TPrecision = double -> -class ITK_EXPORT NDVIDataNodeFeatureFunction : - public DataNodeImageFunction<TImage, std::vector<TPrecision>, TCoordRep, TPrecision> -{ -public: - /** Standard class typedefs. */ - typedef NDVIDataNodeFeatureFunction Self; - typedef DataNodeImageFunction<TImage, std::vector<TPrecision>, TCoordRep, TPrecision> - Superclass; - typedef itk::SmartPointer<Self> Pointer; - typedef itk::SmartPointer<const Self> ConstPointer; - - /** Method for creation through the object factory. */ - itkNewMacro(Self); - - /** Run-time type information (and related methods). */ - itkTypeMacro(NDVIDataNodeFeatureFunction, DataNodeImageFunction); - - /** Some typedefs. */ - typedef typename Superclass::DataNodeType DataNodeType; - typedef typename DataNodeType::LineType LineType; - - typedef TImage InputImageType; - typedef typename InputImageType::ConstPointer InputImageConstPointer; - typedef typename InputImageType::PixelType PixelType; - typedef typename InputImageType::InternalPixelType ScalarRealType; - typedef typename InputImageType::IndexType IndexType; - typedef typename InputImageType::IndexValueType IndexValueType; - - typedef TCoordRep CoordRepType; - - typedef TPrecision PrecisionType; - - typedef PolyLineImageConstIterator<InputImageType, LineType> - ImageLineIteratorType; - - typedef Functor::NDVI<ScalarRealType, ScalarRealType, PrecisionType> - NDVIFunctorType; - - typedef std::vector<PrecisionType> OutputType; - - OutputType Evaluate( const DataNodeType& node ) const override; - - /** Set/Get methods */ - itkGetConstMacro(NDVIThreshold, PrecisionType); - itkSetMacro(NDVIThreshold, PrecisionType); - - //TODO replace by metadata parsing - unsigned int GetREDChannelIndex() const - { - return m_NDVIFunctor.GetRedIndex()+1; - } - - void SetREDChannelIndex(unsigned int id) - { - m_NDVIFunctor.SetRedIndex(id-1); - } - - unsigned int GetNIRChannelIndex() const - { - return m_NDVIFunctor.GetNIRIndex()+1; - } - - void SetNIRChannelIndex(unsigned int id) - { - m_NDVIFunctor.SetNIRIndex(id-1); - } - -protected: - NDVIDataNodeFeatureFunction(); - ~NDVIDataNodeFeatureFunction() override {} - void PrintSelf(std::ostream& os, itk::Indent indent) const override; - -private: - NDVIDataNodeFeatureFunction(const Self&) = delete; - void operator=(const Self&) = delete; - - /** NDVI Threshold & Functor */ - PrecisionType m_NDVIThreshold; - NDVIFunctorType m_NDVIFunctor; -}; - -} -#ifndef OTB_MANUAL_INSTANTIATION -#include "otbNDVIDataNodeFeatureFunction.hxx" -#endif - -#endif diff --git a/Modules/Radiometry/Indices/include/otbNDVIDataNodeFeatureFunction.hxx b/Modules/Radiometry/Indices/include/otbNDVIDataNodeFeatureFunction.hxx deleted file mode 100644 index 910bc13c1f..0000000000 --- a/Modules/Radiometry/Indices/include/otbNDVIDataNodeFeatureFunction.hxx +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - -#ifndef otbNDVIDataNodeFeatureFunction_hxx -#define otbNDVIDataNodeFeatureFunction_hxx - -#include "otbNDVIDataNodeFeatureFunction.h" - -namespace otb -{ - -/** - * Constructor - */ -template <class TImage, class TCoordRep, class TPrecision> -NDVIDataNodeFeatureFunction<TImage, TCoordRep, TPrecision> -::NDVIDataNodeFeatureFunction() -{ - m_NDVIThreshold = 0.3; //Advised for QuickBird images - this->SetREDChannelIndex(3); //for QuickBird images - this->SetNIRChannelIndex(4); //for QuickBird images -} - -/** - * Standard "PrintSelf" method - */ -template <class TImage, class TCoordRep, class TPrecision> -void -NDVIDataNodeFeatureFunction<TImage, TCoordRep, TPrecision> -::PrintSelf( - std::ostream& os, - itk::Indent indent) const -{ - Superclass::PrintSelf( os, indent ); - os << indent << "NDVI Threshold: " << m_NDVIThreshold << std::endl; - os << indent << "RED Channel Index: " << this->GetREDChannelIndex() << std::endl; - os << indent << "NIR Channel Index: " << this->GetNIRChannelIndex() << std::endl; -} - - -template <class TImage, class TCoordRep, class TPrecision> -typename NDVIDataNodeFeatureFunction<TImage, TCoordRep, TPrecision> -::OutputType - NDVIDataNodeFeatureFunction<TImage, TCoordRep, TPrecision> -::Evaluate( const DataNodeType& node ) const -{ - if(!((this->GetREDChannelIndex() <= this->GetInputImage()->GetNumberOfComponentsPerPixel()) - && (this->GetNIRChannelIndex() <= this->GetInputImage()->GetNumberOfComponentsPerPixel()) - && (this->GetREDChannelIndex() > 0) - && (this->GetNIRChannelIndex() > 0))) - { - itkExceptionMacro(<< "Invalid RED or NIR Channel Index"); - } - - const typename ImageLineIteratorType::PathType* path; - - switch (node.GetNodeType()) - { - case FEATURE_POINT: - { - itkExceptionMacro(<< "This DataNode type is not handle yet"); - break; - } - case FEATURE_LINE: - { - path = node.GetLine(); - break; - } - case FEATURE_POLYGON: - { - path = node.GetPolygonExteriorRing(); - break; - } - default: - { - itkExceptionMacro(<< "This DataNode type is not handle yet"); - break; - } - } - - ImageLineIteratorType lineIt(this->GetInputImage(), path); - lineIt.GoToBegin(); - - double nbValidPixel=0.; - double nbVisitedPixel=0.; - - while(!lineIt.IsAtEnd()) - { - if(this->IsInsideBuffer(lineIt.GetIndex())) - { - PixelType pixel = this->GetInputImage()->GetPixel(lineIt.GetIndex()); - if(m_NDVIFunctor(pixel [this->GetREDChannelIndex() - 1], - pixel [this->GetNIRChannelIndex() - 1]) >= this->GetNDVIThreshold()) - { - nbValidPixel += 1; - } - nbVisitedPixel += 1; - } - ++lineIt; - } - - OutputType output; - - if(nbVisitedPixel == 0) - { - //std::cout << "nbValidPixel: " << nbValidPixel << "nbVisitedPixel" << nbVisitedPixel << std::endl; - //itkExceptionMacro(<< "The DataNode and the Support Image are disjointed"); - output.push_back(static_cast<PrecisionType>(0.)); - } - else - { - output.push_back(static_cast<PrecisionType>(nbValidPixel/nbVisitedPixel)); - } - - output.push_back(static_cast<PrecisionType>(nbValidPixel)); - output.push_back(static_cast<PrecisionType>(nbVisitedPixel)); - - return output; -} - - -} // end namespace otb - -#endif diff --git a/Modules/Radiometry/Indices/test/CMakeLists.txt b/Modules/Radiometry/Indices/test/CMakeLists.txt index 3e5c835467..15b51770fd 100644 --- a/Modules/Radiometry/Indices/test/CMakeLists.txt +++ b/Modules/Radiometry/Indices/test/CMakeLists.txt @@ -22,7 +22,6 @@ otb_module_test() set(OTBIndicesTests otbIndicesTestDriver.cxx -otbNDVIDataNodeFeatureFunction.cxx otbLandsatTMIndexNDSITest.cxx otbLandsatTMIndexBIOTest.cxx otbLAIFromReflectancesLinearFunctorTest.cxx @@ -53,31 +52,6 @@ otb_module_target_label(otbIndicesTestDriver) # Tests Declaration -otb_add_test(NAME bfTvNDVIDataNodeFeatureFunction_Polygon COMMAND otbIndicesTestDriver - --compare-ogr ${EPSILON_3} - ${BASELINE_FILES}/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.shp - ${TEMP}/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.shp - otbNDVIDataNodeFeatureFunction - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE_BUILDINGS.shp - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE.TIF - ${INPUTDATA}/DEM/srtm_directory - ${TEMP}/bfTvNDVIDataNodeFeatureFunctionOutput_Polygon.shp - 0 - ) - -otb_add_test(NAME bfTvNDVIDataNodeFeatureFunction_Line COMMAND otbIndicesTestDriver - --compare-ogr ${EPSILON_9} - ${BASELINE_FILES}/bfTvNDVIDataNodeFeatureFunctionOutput_Line.shp - ${TEMP}/bfTvNDVIDataNodeFeatureFunctionOutput_Line.shp - otbNDVIDataNodeFeatureFunction - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE_ROADS.shp - ${INPUTDATA}/Dempster-Shafer/ROI_QB_TOULOUSE.TIF - ${INPUTDATA}/DEM/srtm_directory - ${TEMP}/bfTvNDVIDataNodeFeatureFunctionOutput_Line.shp - 0 - ) - - otb_add_test(NAME raTvLandsatTMIndexNDSITest COMMAND otbIndicesTestDriver otbLandsatTMIndexNDSI 3 #TM1 diff --git a/Modules/Radiometry/Indices/test/otbIndicesTestDriver.cxx b/Modules/Radiometry/Indices/test/otbIndicesTestDriver.cxx index d0b41d61e7..74b65ccde9 100644 --- a/Modules/Radiometry/Indices/test/otbIndicesTestDriver.cxx +++ b/Modules/Radiometry/Indices/test/otbIndicesTestDriver.cxx @@ -22,7 +22,6 @@ void RegisterTests() { - REGISTER_TEST(otbNDVIDataNodeFeatureFunction); REGISTER_TEST(otbLandsatTMIndexNDSI); REGISTER_TEST(otbLandsatTMIndexBIO); REGISTER_TEST(otbLAIFromReflectancesLinear); diff --git a/Modules/Radiometry/Indices/test/otbNDVIDataNodeFeatureFunction.cxx b/Modules/Radiometry/Indices/test/otbNDVIDataNodeFeatureFunction.cxx deleted file mode 100644 index 18289e76d7..0000000000 --- a/Modules/Radiometry/Indices/test/otbNDVIDataNodeFeatureFunction.cxx +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) - * - * 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. - */ - - - -#include "otbNDVIDataNodeFeatureFunction.h" - -#include "otbVectorImage.h" -#include "otbImageFileReader.h" -#include "otbVectorData.h" -#include "otbVectorDataFileReader.h" -#include "otbVectorDataIntoImageProjectionFilter.h" -#include "otbVectorDataFileWriter.h" -#include "itkPreOrderTreeIterator.h" - - -int otbNDVIDataNodeFeatureFunction(int itkNotUsed(argc), char* argv[]) -{ - const char * inputVD = argv[1]; - const char * inputImg = argv[2]; - const char * DEMDir = argv[3]; - const char * outputVD = argv[4]; - int DisplayWarnings = atoi(argv[5]); - - typedef double CoordRepType; - typedef double PrecisionType; - typedef otb::VectorImage<PrecisionType> ImageType; - typedef otb::ImageFileReader<ImageType> ImageReaderType; - typedef otb::VectorData<CoordRepType, 2, PrecisionType> - VectorDataType; - typedef VectorDataType::DataNodeType DataNodeType; - typedef otb::VectorDataFileReader<VectorDataType> VectorDataReaderType; - typedef otb::VectorDataIntoImageProjectionFilter<VectorDataType, ImageType> - VectorDataReProjFilter; - typedef otb::VectorDataFileWriter<VectorDataType> VectorDataWriterType; - typedef itk::PreOrderTreeIterator<VectorDataType::DataTreeType> - TreeIteratorType; - - typedef otb::NDVIDataNodeFeatureFunction<ImageType, CoordRepType, PrecisionType> - NDVIDataNodeFeaturefunctionType; - typedef NDVIDataNodeFeaturefunctionType::OutputType - NDVIFeatureOutputType; - - ImageReaderType::Pointer imgReader = ImageReaderType::New(); - VectorDataReaderType::Pointer vdReader = VectorDataReaderType::New(); - VectorDataReProjFilter::Pointer vdReProjFilter = VectorDataReProjFilter::New(); - VectorDataWriterType::Pointer vdWriter = VectorDataWriterType::New(); - NDVIDataNodeFeaturefunctionType::Pointer NDVIFeatureFunction = NDVIDataNodeFeaturefunctionType::New(); - - if (!DisplayWarnings) - { - imgReader->SetGlobalWarningDisplay(0); - } - - otb::DEMHandler::Instance()->OpenDEMDirectory(DEMDir); - - vdReader->SetFileName(inputVD); - vdReader->Update(); - - imgReader->SetFileName(inputImg); - imgReader->UpdateOutputInformation(); - imgReader->Update(); //Needed to set m_EndIndex, m_StartIndex in otbDataNodeImageFunction - - vdReProjFilter->SetInputImage(imgReader->GetOutput()); - vdReProjFilter->SetInputVectorData(vdReader->GetOutput()); - vdReProjFilter->SetUseOutputSpacingAndOriginFromImage(true); - vdReProjFilter->Update(); -/* - std::cout<< "vdReProjFilter->GetOutput()->Size(): " - << vdReProjFilter->GetOutput()->Size() << std::endl; -*/ - NDVIFeatureFunction->SetREDChannelIndex(3); - NDVIFeatureFunction->SetNIRChannelIndex(4); - NDVIFeatureFunction->SetNDVIThreshold(0.047); - NDVIFeatureFunction->SetInputImage(imgReader->GetOutput()); - - // Output - VectorDataType::Pointer outVD = VectorDataType::New(); - // Retrieving root node - DataNodeType::Pointer root = outVD->GetDataTree()->GetRoot()->Get(); - // Create the document node - DataNodeType::Pointer document = DataNodeType::New(); - document->SetNodeType(otb::DOCUMENT); - // Adding the layer to the data tree - outVD->GetDataTree()->Add(document, root); - // Create the folder node - DataNodeType::Pointer folder = DataNodeType::New(); - folder->SetNodeType(otb::FOLDER); - // Adding the layer to the data tree - outVD->GetDataTree()->Add(folder, document); - - TreeIteratorType itVector(vdReProjFilter->GetOutput()->GetDataTree()); - itVector.GoToBegin(); - while (!itVector.IsAtEnd()) - { - if (itVector.Get()->IsLineFeature() || itVector.Get()->IsPolygonFeature()) - { - const DataNodeType::Pointer currentGeometry = itVector.Get(); - NDVIFeatureOutputType currentResult; - currentResult = NDVIFeatureFunction->Evaluate(*(currentGeometry.GetPointer())); - currentGeometry->SetFieldAsDouble("NDVI", (double)(currentResult[0])); - outVD->GetDataTree()->Add(currentGeometry, folder); - } - ++itVector; - } - - vdWriter->SetInput(outVD); - vdWriter->SetFileName(outputVD); - vdWriter->Update(); - - return EXIT_SUCCESS; -} -- GitLab