Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
otb
otb
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 298
    • Issues 298
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 14
    • Merge Requests 14
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Main Repositories
  • otbotb
  • Merge Requests
  • !528

Open
Opened Jun 24, 2019 by Cédric Traizet@ctraizetDeveloper
  • Report abuse
Report abuse

Support of ITK 5.0 in OTB (wip)

  • Overview 12
  • Commits 67
  • Pipelines 22
  • Changes 245

Summary

ITK 5.0 has been released !

This merge request is based on the work done in !194 (closed), the original branch ( cs-si:itk5_preperation) has been rebased on top of develop, and additional changes have been made to make the branch compatible with the release.

Rationale

See the ITK 5 migration guidelines

Prior to ITK 5.0, only a subset of C+11 functionality was used, when available, through backports and macros. ITK now requires a C+11 standard compiler. And this get rid of lot of macros. Move to C++11 does not affect OTB since it has already moved to a higher standard (C++14).

Another important API change in ITK is its threading model. This affects OTB , Remote Modules and projects depending on OTB (both official and unofficial) in large scale. This merge request approaches threading model issues between ITK 5.0 and OTB. We had observed a 99% of passing test with our changeset while not breaking compatibility with ITK 4.x.

This MR does not fully cover compatibility yet. There can be classes of filters that are not covered by testing and hence remain un-patched.

Until debian-testing, OpenSUSE, ubuntu and many others pick up the yet-to-release ITK 5.0, it is important to keep support of ITK 4.x. Even though binary packages and superbuild can use alpha version but still a compatibility layer is necessary.

There are several levels of compatibility:

  • ITKV4_COMPATIBILITY=ON and ITK_LEGACY_REMOVE=OFF
  • ITKV4_COMPATIBILITY=OFF and ITK_LEGACY_REMOVE=OFF
  • ITKV4_COMPATIBILITY=OFF and ITK_LEGACY_REMOVE=ON

For now the code compiles with the first level of compatibility, but there are still issues with classes using spatial objects (most tests are failing, and the SpatialObjectToImageDrawing test has been commented for now because it doesn't compile). According to the guidelines, I think we should aim for the second level of compatibility, but this implies some additional API changes.

Implementation Details

TODO

Copyright

The copyright owner is CNES and has signed the ORFEO ToolBox Contributor License Agreement.


Check before merging:

  • All discussions are resolved
  • At least 2 👍 votes from core developers, no 👎 vote.
  • The feature branch is (reasonably) up-to-date with the base branch
  • Dashboard is green
  • Copyright owner has signed the ORFEO ToolBox Contributor License Agreement
  • Optionally, run git diff develop... -U0 --no-color | clang-format-diff.py -p1 -i on latest changes and commit
Edited Jun 28, 2019 by Cédric Traizet
Assignee
Assign to
Reviewer
Request review from
8.0.0
Milestone
8.0.0
Assign milestone
Time tracking
Reference: orfeotoolbox/otb!528
Source branch: itk5_preperation