High level description

the SIFT implementation (in C) from S2P should be compiled as a shared library,
containing the extraction of SIFT keypoints, the computation of the descriptors,
and the matching algorithm.

this library can be declared in OTB as a 3rd party module.

development of a new OTB filter to use this library

Risks and benefits

There are several points to analyze:

the streaming should be handled carefully, sufficient margins should be taken

any extra copy of the image buffer should be avoided if possible, but it may not
be possible if the OTB filter is dealing with pixel type other than float.

the implementation of multi-threading is delicate, since OTB uses its own
framework. Provided the SIFT library used is thread safe, the OTB filter could
use the ITK multi-threading pattern, but the usage of image strips too small
could lead to missing keypoints.

the usage of AVX or SSE extension depends on the processor used. It may be
difficult to produce portable binaries if S2P SIFTs use specific extensions.

On the bright side, the OTB would gain a state-of-the-art implementation of SIFT.

Alternatives for implementations

The presented implementation strategy seems the best one. An other way could be
to integrate the corresponding S2P SIFT sources in the OTB (what was done in the
past), but this is not the chosen policy for 3rd parties anymore.