otb issueshttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues2020-10-12T13:25:04Zhttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2075Release 7.2.02020-10-12T13:25:04ZCédric TraizetRelease 7.2.0This is the planning issue for release 7.2.0
We are currently working on the next major release (8.0.0). However, this version will not be available in a near future: according to our estimations it should be released in late October th...This is the planning issue for release 7.2.0
We are currently working on the next major release (8.0.0). However, this version will not be available in a near future: according to our estimations it should be released in late October this year.
OTB 7.1.0 has been released in march, so it could be useful to publish another minor release before version 8.0.0.
This release 7.2.0 would contain all non breaking changes since release 7.1.0. This include some bug fixes and two new applications : [PantexFeatureExtraction](https://www.orfeo-toolbox.org/CookBook-develop/Applications/app_PantexTextureExtraction.html) and [SpectralAngleClassification](https://www.orfeo-toolbox.org/CookBook-develop/Applications/app_SpectralAngleClassification.html).
The develop branch currently does not contain breaking changes, except for !697 that should not be included in the release.
The following actions should be done :
* [x] Wait for all issues marked 7.2.0 to be merged
## Release candidate
### 1. Branches
* [x] **(if major or minor release)** Feature freeze: [create the new release branch](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#create-release-branch)
* [x] Make sure the version number in `CMakeLists.txt` is 7.2.0
### 2. Housekeeping
* [x] In this story, make a list of blocking issues for the release (if any)
* [x] Issue #2090
* [x] Fix compilation warnings on CI
* [x] [Update the SuperBuild archive](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#superbuild-archive). Note: waiting for the actual release to move the 7.1.0 archive
* [x] Update release notes (walk the GitLab MR merged history and log all improvements)
* [x] Update the date in RELEASE_NOTES.txt
* [x] Check [SonarQube](https://sonar.orfeo-toolbox.org/dashboard?id=orfeotoolbox-otb)
* [x] Run Debian [spelling](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#spelling-check) checker
* [x] Run shellcheck script from [OTB-Devutils/Scripts/](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb-devutils/blob/master/Scripts/run_shellcheck.sh)
* [x] [Update translation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#translation-for-monteverdi-mapla) for Monteverdi and Mapla
* [x] [Sanity check the binary packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#standalone-packages-sanity-check)
* [x] Windows
* [x] Linux
* [x] Mac
* [x] Test QGIS on qgis docker image : done using QGIS 3.15
### 3. Actual release
Once all blocking issues are closed, and the previous steps are done:
* [x] [Tag the release or RC](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#release-tag) for the rc onldy otb tag has been create
* [x] Update GIT_TAG for all official remote modules (if needed)
### 4. Publish and plan next release
* [x] [Prepare and upload source packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#prepare-and-upload-source-packages)
* [x] [Promote staging packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#promote-staging-packages)
* [x] [Update documentation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#update-documentation)
* [x] Cookbook
* [x] Doxygen
* [x] Release announcement on the forum
## Release
### 1. Branches
* [x] Make sure the version number in `CMakeLists.txt` is 7.2.0
### 2. Housekeeping
* [x] In this story, make a list of blocking issues for the release (if any)
* [x] Fix compilation warnings on CI
* [x] [Update the SuperBuild archive](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#superbuild-archive). Note: waiting for the actual release to move the 7.2.0 archive
* [x] Update release notes (walk the GitLab MR merged history and log all improvements)
* [x] Update the date in RELEASE_NOTES.txt
* [x] Check [SonarQube](https://sonar.orfeo-toolbox.org/dashboard?id=orfeotoolbox-otb)
* [x] Run Debian [spelling](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#spelling-check) checker
* [x] Run shellcheck script from [OTB-Devutils/Scripts/](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb-devutils/blob/master/Scripts/run_shellcheck.sh)
* [x] [Update translation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#translation-for-monteverdi-mapla) for Monteverdi and Mapla
* [x] [Sanity check the binary packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#standalone-packages-sanity-check)
* [x] Windows
* [x] Linux
* [x] Mac
* [x] Test QGIS on qgis docker image
### 3. Actual release
Once all blocking issues are closed, and the previous steps are done:
* [x] [Tag the release or RC](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#release-tag) for the rc onldy otb tag has been create
* [x] Merge the release into develop
* [x] Merge the release into master
* [x] Update GIT_TAG for all official remote modules (if needed)
### 4. Publish and plan next release
* [x] [Prepare and upload source packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#prepare-and-upload-source-packages)
* [x] [Promote staging packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#promote-staging-packages)
* [x] [Update documentation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#update-documentation)
* [x] Cookbook
* [x] Doxygen
* [x] WordPress page "Home" and "Download" pages
* [x] Upload OTB source archive to [Zenodo](https://zenodo.org/) to create a unique Digital Object Identifier (DOI)
* [x] Release announcement on the forum
* [x] Release announcement on the blog
* [x] Announcement on social networks (twitter)
* [x] Forward announcement to news_item@osgeo.org ([OSGeo news](https://www.osgeo.org/foundation-news/))
* [x] Remove public branches related to MR or bugfix merged before the release7.2.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2081SuperBuild fails while building Qt52020-08-31T06:37:55ZJulien OsmanSuperBuild fails while building Qt5### Description
When compiling OTB using the SuperBuild, the build step for Qt5 fails.
Here is the content of **OTB/QT5/src/QT5-stamp/QT5-build-err.log**:
```
/usr/bin/ld: warning: libpng.so.1, needed by BUILD_DIR/QT5/build/qtbase/li...### Description
When compiling OTB using the SuperBuild, the build step for Qt5 fails.
Here is the content of **OTB/QT5/src/QT5-stamp/QT5-build-err.log**:
```
/usr/bin/ld: warning: libpng.so.1, needed by BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so, not found (try using -rpath or -rpath-link)
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_create_info_struct »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_compression_level »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_valid »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_error »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_invert_mono »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_text »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_strip_16 »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_channels »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_error_fn »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_create_write_struct »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_bgr »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_longjmp_fn »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_read_image »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_tRNS »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_oFFs »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_gAMA »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_write_rows »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_expand »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_filler »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_PLTE »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_write_fn »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_tRNS »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_interlace_handling »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_text »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_IHDR »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_destroy_write_struct »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_iCCP »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_gAMA »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_y_pixels_per_meter »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_x_pixels_per_meter »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_packing »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_gray_to_rgb »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_image_width »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_read_row »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_cHRM »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_write_chunk »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_read_update_info »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_packswap »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_create_read_struct »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_destroy_read_struct »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_IHDR »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_write_image »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_iCCP »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_read_fn »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_write_info »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_read_end »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_PLTE »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_sig_bytes »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_gamma »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_option »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_pHYs »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_io_ptr »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_sRGB »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_write_end »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_read_info »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_swap »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_get_image_height »
BUILD_DIR/QT5/build/qtbase/lib/libQt5Gui.so : référence indéfinie vers « png_set_oFFs »
collect2: error: ld returned 1 exit status
make[7]: *** [../../../bin/assistant] Error 1
make[6]: *** [sub-assistant-make_first] Error 2
make[5]: *** [sub-assistant-make_first] Error 2
make[4]: *** [sub-src-make_first] Error 2
make[3]: *** [module-qttools-make_first] Error 2
```
### Configuration information
OS: Ubuntu 18.04
OTB version: develop branch
### Steps to reproduce
Follow the steps in [the Cookbook](https://www.orfeo-toolbox.org/CookBook/CompilingOTBFromSource.html#superbuild-build-otb-and-all-dependencies).7.2.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2083Update MuParser version in Superbuild2020-08-28T17:50:08ZCédric TraizetUpdate MuParser version in Superbuild[MuParser 2.3.2](https://github.com/beltoforion/muparser/tree/v2.3.2.) is available. Notable changes are :
* MuParser now uses C++ 11
* MuParser is now a CMake project.
Superbuild should be updated to use this new version. Currently a ...[MuParser 2.3.2](https://github.com/beltoforion/muparser/tree/v2.3.2.) is available. Notable changes are :
* MuParser now uses C++ 11
* MuParser is now a CMake project.
Superbuild should be updated to use this new version. Currently a CMakeList.txt file is provided to the Superbuild to compile the library as a CMake project. This can be simplified as Muparser is now a CMake project !
The [FindMuparser.cmake](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/blob/develop/CMake/FindMuParser.cmake) should also be updated. It currently fails to extract the version string from muParserDef.h, leading to errors in the configuration step, see #20717.2.0Cédric TraizetCédric Traizethttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2070Uninitialized values (and ITK setters) in `otb::ImageToGenericRSOutputParamet...2020-08-21T17:50:07ZLuc HermitteUninitialized values (and ITK setters) in `otb::ImageToGenericRSOutputParameters`### Description
When `itkSetMacro()` is used with member-data left uninitialized in their constructors, quality related tools will emit error/warning messages.
### Steps to reproduce
It's for instance the case for valgrind that'll bar...### Description
When `itkSetMacro()` is used with member-data left uninitialized in their constructors, quality related tools will emit error/warning messages.
### Steps to reproduce
It's for instance the case for valgrind that'll barks things like
```
==26964== Conditional jump or move depends on uninitialised value(s)
==26964== at 0x34B56F4D: operator!= (itkSize.h:145)
==26964== by 0x34B56F4D: SetOutputSize (otbImageToGenericRSOutputParameters.h:106)
==26964== by 0x34B56F4D: otb::ImageToGenericRSOutputParameters<otb::VectorImage<float, 2u> >::EstimateOutputSize() (otbImageToGenericRSOutputParameters.hxx:249)
==26964== by 0x34B5CAE4: otb::ImageToGenericRSOutputParameters<otb::VectorImage<float, 2u> >::Compute() (otbImageToGenericRSOutputParameters.hxx:66)
==26964== by 0x34B5D137: otb::Wrapper::OrthoRectification::DoUpdateParameters() (otbOrthoRectification.cxx:285)
==26964== by 0x2D034A93: otb::Wrapper::Application::UpdateParameters() (otbWrapperApplication.cxx:490)
```
### Proposed resolution
I've identified the issue in `otb::ImageToGenericRSOutputParameters` class, where it could be fixed with
```c++
PointType m_OutputOrigin{0.0};
SpacingType m_OutputSpacing{0.0};
SizeType m_OutputSize{0, 0};
```
(IMO, the easiest is to use C++11 member initialization given we have these setters; and unfortunately ITK constructors prevents zero-initialisation with empty braces.)
I haven't checked whether it happens elsewhere.7.2.0Julie BrossardJulie Brossardhttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2079SuperBuild failed for release-7.1 (with Docker)2020-07-28T12:54:26ZVincent DelbarSuperBuild failed for release-7.1 (with Docker)I'm trying a full SuperBuild of OTB 7.1 inside a docker container.
My Dockerfile worked fine with v7.0 but I'm struggling to make it work with v7.1.
I tried with ubuntu 18.04 and debian 10.
Here is the error (during OTB configuration s...I'm trying a full SuperBuild of OTB 7.1 inside a docker container.
My Dockerfile worked fine with v7.0 but I'm struggling to make it work with v7.1.
I tried with ubuntu 18.04 and debian 10.
Here is the error (during OTB configuration step):
```
CMake Warning at /usr/share/cmake-3.10/Modules/FindBoost.cmake:801 (message):
New Boost version may have incorrect or missing dependencies and imported
targets
Call Stack (most recent call first):
/usr/share/cmake-3.10/Modules/FindBoost.cmake:907 (_Boost_COMPONENT_DEPENDENCIES)
/usr/share/cmake-3.10/Modules/FindBoost.cmake:1558 (_Boost_MISSING_DEPENDENCIES)
CMake/FindShark.cmake:58 (find_package)
Modules/ThirdParty/Shark/otb-module-init.cmake:21 (find_package)
CMake/OTBModuleEnablement.cmake:273 (include)
CMakeLists.txt:332 (include)
CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find OpenCV (missing: OPENCV_core_LIBRARY) (found version
"4.1.1")
Call Stack (most recent call first):
/usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
CMake/FindOpenCV.cmake:141 (find_package_handle_standard_args)
Modules/ThirdParty/OpenCV/otb-module-init.cmake:21 (find_package)
CMake/OTBModuleEnablement.cmake:273 (include)
CMakeLists.txt:332 (include)
```
I checked the container and I can see every libs in /opt/otb/lib. I tried to add cmake flags but:
```
CMake Warning:
Manually-specified variables were not used by the project:
OpenCV_core_LIBRARY
OpenCV_ml_LIBRARY
```
I also tried with 'LDFLAGS="-Wl,-rpath-link,/opt/otb/lib"'
I attached the stand-alone [Dockerfile](/uploads/8b31ee1c16f72abb319660598d8c0e22/Dockerfile) and the [CMakeError.log](/uploads/f7eb16430c9ecc164416db38444bbb0c/CMakeError.log).
Any ideas ?7.2.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2056Move documentation about OTB integration in QGIS to qgis documentation2020-07-22T13:17:48ZMickael SavinaudMove documentation about OTB integration in QGIS to qgis documentation### What changes will be made and why they would make a better Orfeo ToolBox?
Move documentation about OTB configuration into qgis to qgis documentation website.
#### High level description
Following !713, The documentation about how to...### What changes will be made and why they would make a better Orfeo ToolBox?
Move documentation about OTB configuration into qgis to qgis documentation website.
#### High level description
Following !713, The documentation about how to configure OTB for qgis must be moved to qgis documentation:
* for [3.10](https://docs.qgis.org/testing/en/docs/user_manual/processing/3rdParty.html)
* and [for testing](https://docs.qgis.org/testing/en/docs/user_manual/processing/3rdParty.html)
through the specific github project branches [release-3.10](https://github.com/qgis/QGIS-Documentation/blob/release_3.10/docs/user_manual/processing/3rdParty.rst) and [master](https://github.com/qgis/QGIS-Documentation/blob/master/docs/user_manual/processing/3rdParty.rst).
Moreover we can complete the following pages:
* [3.10](https://docs.qgis.org/3.10/en/docs/user_manual/processing_algs/index.html)
* [testing](https://docs.qgis.org/testing/en/docs/user_manual/processing_algs/index.html)
with a link to otb applications documentation with the cookbook.
We can keep some information into the otb cookbook but avoid duplication with qgis documentation. The main user oriented information must be in QGIS and the technical information must be put into OTB cookbook. A link to otb cookbook must be available into QGIS documentation and reciprocally into OTB documentation to qgis one.
#### Risks and benefits
More users for OTB into QGIS !
#### Alternatives for implementations
none
### Who will be developing the proposed changes?
currently not defined7.2.0Mickael SavinaudMickael Savinaudhttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2015Fix warnings2020-07-17T08:20:25ZCédric TraizetFix warningsMerge request !653 fixed many of warnings issued by otb CI build, but there are many warnings remaining, in particular on windows builds. They should be fixed!Merge request !653 fixed many of warnings issued by otb CI build, but there are many warnings remaining, in particular on windows builds. They should be fixed!7.2.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2012Spectral Information Divergence2020-07-17T08:19:04ZCédric TraizetSpectral Information DivergenceFeature request from the [forum](https://forum.orfeo-toolbox.org/t/feature-request-spectral-information-divergence/502) :
After abundance maps are generated by the following available module:
https://www.orfeo-toolbox.org/CookBook/App...Feature request from the [forum](https://forum.orfeo-toolbox.org/t/feature-request-spectral-information-divergence/502) :
After abundance maps are generated by the following available module:
https://www.orfeo-toolbox.org/CookBook/Applications/app_HyperspectralUnmixing.html
Could you add a module for classifying the bundance maps using Spectral Information-Divergence (SID) and Spectral Angle Mapper (SAM) like below?
https://pysptools.sourceforge.io/classification.html#spectral-information-divergence-sid
Thank you.7.2.0Cédric TraizetCédric Traizethttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2052Support for GDAL 3.12020-07-17T08:17:48ZCédric TraizetSupport for GDAL 3.1GDAL 3.1 is available ! See the related [osgeo post](https://www.osgeo.org/foundation-news/gdal-3-1-0-is-released/)
We should :
* Test OTB compatibility with this release, and modify the library accordingly.
* Upgrade gdal version in S...GDAL 3.1 is available ! See the related [osgeo post](https://www.osgeo.org/foundation-news/gdal-3-1-0-is-released/)
We should :
* Test OTB compatibility with this release, and modify the library accordingly.
* Upgrade gdal version in Superbuild to 3.1 ?7.2.0Cédric TraizetCédric Traizethttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2051Problem with spatial reference when using SampleExtraction2020-07-17T08:16:16ZYannick TANGUYProblem with spatial reference when using SampleExtraction### Description
SampleExtraction fails with this message whereas the image and the database seem to have a consistent projection.
```
RuntimeError: Exception thrown in otbApplication Application_ExecuteAndWriteOutput: /home/yannick/Dev...### Description
SampleExtraction fails with this message whereas the image and the database seem to have a consistent projection.
```
RuntimeError: Exception thrown in otbApplication Application_ExecuteAndWriteOutput: /home/yannick/Dev/otb/Modules/Learning/Sampling/include/otbImageSampleExtractorFilter.hxx:134:
itk::ERROR: PersistentImageSampleExtractorFilter(0x557731cc9e80): Spatial reference of input image and samples don't match:
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AXIS["Latitude",NORTH],
AXIS["Longitude",EAST],
AUTHORITY["EPSG","4326"]]
vs
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AXIS["Latitude",NORTH],
AXIS["Longitude",EAST],
AUTHORITY["EPSG","4326"]]
```
### Steps to reproduce
otbcli_SampleExtraction -in imagestack.tif -vec imagestack_samples.sqlite -field class_simp
### Configuration information
Fails with OTB 7.1 (Linux) and OTB develop (my build is at least 2 weeks old).
Works fine with OTB 7.0
[imagestack.tif](/uploads/32d77b2d98fb67e7001ab01e05b742a1/imagestack.tif)
[imagestack.geom](/uploads/c1ce4cc4091d9c93fdd482b80eaff554/imagestack.geom)
[imagestack_samples.sqlite](/uploads/979c4b2b892bb6938f94d1db31eb169d/imagestack_samples.sqlite)7.2.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2055otbcli_Segmentation VECTOR mode projection issue2020-07-17T08:16:11Zlecrabeotbcli_Segmentation VECTOR mode projection issue### Description
The otbcli_Segmentation in VECTOR mode crashes because of a mismatch between how projection systems are read.
### Steps to reproduce
The input image is a Sentinel-2 mosaic, with 8000 by 9000 pixels so it is above the s...### Description
The otbcli_Segmentation in VECTOR mode crashes because of a mismatch between how projection systems are read.
### Steps to reproduce
The input image is a Sentinel-2 mosaic, with 8000 by 9000 pixels so it is above the size that can be processed in RASTER mode.
When using the VECTOR mode, here is the error message
```
xxxxxxx@1dac02b57fab:~/downloads/kilua_mosaics$ otbcli_Segmentation -in input.tif -mode vector -mode.vector.out SegmentationRaster.shp -filter meanshift
2020-05-20 09:02:31 (INFO) Segmentation: Default RAM limit for OTB is 256 MB
2020-05-20 09:02:31 (INFO) Segmentation: GDAL maximum cache size is 783 MB
2020-05-20 09:02:31 (INFO) Segmentation: OTB will use at most 4 threads
2020-05-20 09:02:31 (INFO) Segmentation: Use threaded Mean-shift segmentation.
2020-05-20 09:02:31 (INFO) Segmentation: Large scale segmentation mode which output vector data
2020-05-20 09:02:31 (FATAL) Segmentation: itk::ERROR: PersistentImageToOGRLayerSegmentationFilter(0x1bf9660): Spatial reference of input image and target layer do not match!
Input image : GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AXIS["Latitude",NORTH],
AXIS["Longitude",EAST],
AUTHORITY["EPSG","4326"]]
Target layer : GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
```
### Configuration information
Distributor ID: Ubuntu
Description: Ubuntu 18.04.4 LTS
Release: 18.04
Codename: bionic
OTB version 7.1.07.2.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2046Crash in Superimpose with PHR mode2020-07-17T08:14:37ZGuillaume PaseroCrash in Superimpose with PHR mode### Description
The application `Superimpose` crashed with a segmentation fault during resampling:
```
Program received signal SIGSEGV, Segmentation fault.
0x00002aaaedf394ee in itk::NearestNeighborInterpolateImageFunction<otb::VectorI...### Description
The application `Superimpose` crashed with a segmentation fault during resampling:
```
Program received signal SIGSEGV, Segmentation fault.
0x00002aaaedf394ee in itk::NearestNeighborInterpolateImageFunction<otb::VectorImage<float, 2u>, double>::EvaluateAtContinuousIndex(itk::ContinuousIndex<double, 2u> const&) const () from /usr/local/otb/lib/otb/applications/otbapp_Superimpose.so
(gdb) bt
#0 0x00002aaaedf394ee in itk::NearestNeighborInterpolateImageFunction<otb::VectorImage<float, 2u>, double>::EvaluateAtContinuousIndex(itk::ContinuousIndex<double, 2u> const&) const () from /usr/local/otb/lib/otb/applications/otbapp_Superimpose.so
#1 0x00002aaaedf3aa52 in otb::GridResampleImageFilter<otb::VectorImage<float, 2u>, otb::VectorImage<float, 2u>, double>::ThreadedGenerateData(itk::ImageRegion<2u> const&, unsigned int) () from /usr/local/otb/lib/otb/applications/otbapp_Superimpose.so
#2 0x00002aaaedf2205b in itk::ImageSource<otb::VectorImage<float, 2u> >::ThreaderCallback(void*) () from /usr/local/otb/lib/otb/applications/otbapp_Superimpose.so
#3 0x00002aaad5781ee8 in itk::MultiThreader::SingleMethodExecute() () from /usr/local/otb/lib/libITKCommon-4.13.so.1
#4 0x00002aaaedf1cad0 in itk::ImageSource<otb::VectorImage<float, 2u> >::GenerateData() () from /usr/local/otb/lib/otb/applications/otbapp_Superimpose.so
#5 0x00002aaad577ce45 in itk::ProcessObject::UpdateOutputData(itk::DataObject*) () from /usr/local/otb/lib/libITKCommon-4.13.so.1
#6 0x00002aaad577ccaf in itk::ProcessObject::UpdateOutputData(itk::DataObject*) () from /usr/local/otb/lib/libITKCommon-4.13.so.1
#7 0x00002aaad577ce18 in itk::ProcessObject::UpdateOutputData(itk::DataObject*) () from /usr/local/otb/lib/libITKCommon-4.13.so.1
#8 0x00002aaad577ce18 in itk::ProcessObject::UpdateOutputData(itk::DataObject*) () from /usr/local/otb/lib/libITKCommon-4.13.so.1
#9 0x00002aaad1bab503 in otb::ImageFileWriter<otb::VectorImage<unsigned char, 2u> >::Update() () from /usr/local/otb/lib/libOTBImageIO-7.0.so.1
#10 0x00002aaad129cec4 in otb::Wrapper::OutputImageParameter::Write() () from /usr/local/otb/lib/libOTBApplicationEngine-7.0.so.1
#11 0x00002aaad144aa25 in otb::Wrapper::Application::WriteOutput() () from /usr/local/otb/lib/libOTBApplicationEngine-7.0.so.1
#12 0x00002aaad144ff4c in otb::Wrapper::Application::ExecuteAndWriteOutput() () from /usr/local/otb/lib/libOTBApplicationEngine-7.0.so.1
#13 0x00002aaad0a4fe49 in _wrap_Application_ExecuteAndWriteOutput () from /usr/local/otb/lib/python/_otbApplication.so
```
After investigation I found that the interpolated index was out of image bounds.
### Steps to reproduce
Quite difficult to reproduce, I had this crash when running a larger processing chain calling OTB applications from Python. I tried to call the OTB application out of the chain but couldn't reproduce the bug. Basically, I ran Superimpose with the following parameters:
* `inr` : a PHR Pan image
* `inm` : the corresponding PHR XS image
* `interpolator` : Nearest neighbor (this setting is important to reproduce the bug)
The application uses the PHR mode and resample the XS image with a `otb::GridResampleImageFilter`.
This filter doesn't check explicitely that input indexes are in the input buffered region. It uses a `m_ReachableOutputRegion` to crop the output region processed. The problem appears because an output pixel is right on the border of the input image extent, and since I use a nearest neighbor interpolator, this one converts the continuous index to an out-of-bound index. To illustrate on a simple case:
* Input image
* origin [0.5, 0.5]
* spacing [1, 1]
* size [10, 10]
* so the physical extent is [0., 0.] to [10.0, 10.0]
* If I have an output pixel whose center is at physical position [5.5, 10.0]
* you can say that it is inside the input physical extent
* but its continuous index in input image is [5.0, 9.5]
* so its index is then [5, 10] -> OUT-OF-BOUND
### Configuration information
OS: centOS 7
OTB: rev. 6aca6c3e51eeaf0cd6725b2de3c425b41d2b28c9
Standalone package
### Proposed patch
I solved this problem by adding an _epsilon_ margin to compute the `m_ReachableOutputRegion`.
You can adapt this patch, it also answers partially the comment about interpolation radius in `otbGridResampleImageFilter.hxx`.[superimpose_segfault.patch](/uploads/bf786d8e772f27fcd1a98ed9a8bf4944/superimpose_segfault.patch)7.2.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1889Add map projection parameter to GridBasedImageResampling application2020-07-17T08:12:47ZMickael SavinaudAdd map projection parameter to GridBasedImageResampling applicationThe GridBasedImageResampling allow to set a output origin but not a map projection. This can be useful when this app is used to project image to ground.
Currently in this case it is required to do a gdal_edit or a gdal_translate to put...The GridBasedImageResampling allow to set a output origin but not a map projection. This can be useful when this app is used to project image to ground.
Currently in this case it is required to do a gdal_edit or a gdal_translate to put the right coordinate system.7.2.0Julien OsmanJulien Osmanhttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2014Refactor compare image2020-07-09T12:30:55ZGuillaume PaseroRefactor compare imageThe implementation of `otb::TestHelper::RegressionTestImage` could be improved, mostly to deal with large images. I was a bit shocked to read this at the beginning of the function:
```
baselineReader->UpdateLargestPossibleRegion();
[......The implementation of `otb::TestHelper::RegressionTestImage` could be improved, mostly to deal with large images. I was a bit shocked to read this at the beginning of the function:
```
baselineReader->UpdateLargestPossibleRegion();
[...]
testReader->UpdateLargestPossibleRegion();
```
and a few lines later, there is finally a check on the image size, to decide if we upload the difference image to CDash. But if your input images are large (let say a few GB), you already have flooded the RAM memory of your laptop, and maybe the swap as well. As OTB is supposed to manage properly large images this behaviour has to be changed.
My solution step by step:
* First call a `UpdateOutputInformation()` on both readers (baseline and test image) in a try/catch
* Check images have the same size
* Plug the pipeline with the `otb::DifferenceImageFilter` (also: add the Reset/Synthetise function to make it streamable)
* Test if the total number of pixel is above the "cdash" limit
* No: proceed with actual behaviour
* Update() on the difference filter
* check amount of different pixels
* rescale and write difference image as PNG, as well as baseline and test image
* Yes:
* plug a virtual writer after the difference image and update it (streaming processing)
* TBD: write the difference image (not as a PNG but as a geotiff)7.2.0Cédric TraizetCédric Traizet