### Pull Request Readiness Checklist
See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
The bug has already been reported and explained on the OpenCV forum:
- [optflow-calcopticalflowsparserlof-giving-assertion-error](https://forum.opencv.org/t/cv2-optflow-calcopticalflowsparserlof-giving-assertion-error/4835)
- [calcopticalflowsparserlof-assertion-error-in-initialflow](https://forum.opencv.org/t/calcopticalflowsparserlof-assertion-error-in-initialflow/8669)
The bug is manifested only if 'UseInitialFlow' is set to true and 'ForwardBackwardThreshold' > 0 (enabled).
Rework RLOF by using HAL universal instructions
* * distinguish between SSE2 and SSE 4.1 support
* SSE2 now implements no paralellized _blendv functiona and allows to compile with SSE2 instructions
* * add interface function do enable disable M-estimator framework
* bugfix blendv functions
* * make use of _mm_store and _mm_load functions in blendv_ps and blendv_epi function to fix compiler error
* * implement substitute of _mm_cvtepi8_epi16 and _mm_cvtepi16_epi32 when compiling with less than SSE 4.1 support
* * implement substitute of _mm_abs_epi16 when compiling with less than SSE 3 support
* * move _mm_abs_epi16 to SSE4 req.
* * add HAL intrinsic functions for RLOF ICA
* first tests are OK
* * HAL intrinsic functions -> RLOF ICA is ready now
* * add HAL functions for RLOF illumination model
* * add HAL for PLK ILL
* * add HAL functions for plk ica
* * commit HAL functions for beplk ica
* * add HAL functions for berlof ica
* * add HAL functions for BEPLK ILL
* *remove unused #ifdef
* * remove white spaces and unused variables
* * remove not used variables
* + remove get4BitMask function which contained pure SEE instructions
* * remove buffIdx which has not been used but initialized
* * fix replacement of #ifdef CV_SIMD128 with #if CV_SIMD128
* rename useMEstimator to setUseMEstimator
* *remove whitespace
* * remove unused variable abss
* * remove unused value
* * rename W_BITS1 to W_BITS since they contain same value
* Fix bug: Invalid Syntax at line 14(draw_motion_comp method)
* Fix bug: TypeError- integer argument expected, got float
* Fix bug: clean up the camera by adding .release()
optflow: RLOF fixes (python-binding, status flag, flat textures) (#2097)
* * Bugfix for python-binding related to issue #2094. Copying the prevPtsMat to prevPoints was broken, when using python-binding.
* * Connect the blurred image correctly to CROSS support region segmentation. This allows to compute more robust support region shapes. Commit refers to issue #2094.
* * Bugfix to avoid the unintended assertion on flat textures discussed in issue #2094.
* * Bugfix on SparseRLOFOpticalFlow status was wrongly to to 0 if forward backward error < threshold, which is wrong. Inequation has been corrected. Refers to in issue #2087.
* small documentation changes
* bugfix on assertions and small test changes
Add robust local optical flow (RLOF) implementations (#1940)
* Add robust local optical flow (RLOF) implementations which is an improved pyramidal iterative Lucas-Kanade approach. This implementations contains interfaces for sparse optical flow for feature tracking and dense optical flow based on sparse-to-dense interpolation schemes.
Add performance and accuracy tests have been implementation as well as documentation with the related publications
* - exchange tabs with spaces
- fix optflow.bib indentation
- remove optflow_o.hpp
- change RLOFOpticalFlowParameter interfaces to Ptr<RLOFOpticalFlowParameter>
to remove error on building. Fix warnings
* introducing precompiler flag RLOD_SSE
* remove header that could not be found
* remove whitespaces
fix perf and accuracy tests
* remove x86intrin.h header
* fix ios and arm by removing last sse commands
* fix warnings for windows compilation
* fix documentation RLOFOpticalFlowParameter
* integrate cast to remove last warnings
* * add create method and function inferfaces to RLOFOpticalFlowParamter to enable python wrapper interfaces
* white space fixes / coding style
* fix perf test
* other changes: precomp.hpp / static
* use Matx44f and Vec4f instead of Mat
* normSigmas into constants
* replace ceil() calls
* maximum level is set to 5 so that it is similar value used in the papers
* implement paralellized horizontal cross segmentation as used in Geistert2016
* drop dead code
* Avoid using "data" and "step" calculations. Use .ptr<mat_type>(row, col) instead.
* Avoid using "data" and "step" calculations. Use .ptr<mat_type>(row, col) instead.
* bugfix on BEPLK with ica and adapt the accuracy tests
* more 'static' functions
* bugfix after changing ptr + step to .ptr(y,x) calls by adjusting ROI of
prevImage, currImage and derivI as well as changing the offset of the
points in the invoker classes.
* add some static_cast to avoid warning
* remove 50 grid size sample from perf test. This grid size is to sparse
for the epic interpolation
* remove notSameColor function since it is not used anymore