tsenst/RLOFLib

GitHub: tsenst/RLOFLib

该库提供了一套快速且准确的稀疏光流与特征跟踪算法实现,其计算复杂度与特征数量呈线性关系,现已并入OpenCV Contrib。

Stars: 75 | Forks: 22

***Robust Local Optical Flow 的源代码现已可用!*** 我们很高兴 Robust Local Optical Flow 现已成为 [OpenCV Contribution GIT](https://github.com/opencv/opencv_contrib) 的一部分。 # Robust Local Optical Flow V1.3 此代码库包含用于基于 Robust Local Optical Flow 的运动估计的 RLOF 库。该软件实现了多个版本的 RLOF 算法。 请访问我们的网页获取更多信息 (http://www.nue.tu-berlin.de/menue/forschung/projekte/rlof/)。 ``` If you use this algorithm for a scientific publication, please cite the one of the paper listed below. ``` RLOFlib 库是一个稀疏光流和特征跟踪库。该库的主要目标是提供一个**快速**且**准确**的运动估计解决方案。 RLOF 方法的主要优势在于其运行时和计算复杂度是可调节的,这与大多数常见的光流方法不同,它与需要估计的运动向量(特征)数量呈线性关系。 因此,RLOF 是一种局部光流方法,与 PLK 方法(通常被称为 KLT Tracker)以及著名的 Lucas Kanade 方法最为相关。 我们希望此软件对您有用。如果您有任何问题、意见或故障,请随时与我们联系。 ``` Tobias Senst: ``` ## 要求 您的操作系统应该没有额外的要求。该库已在以下环境中进行了测试: - OpenCV3.1.0 - Microsoft Visual Studio 2013 / 2017 - Matlab 2015a - Windows 7 (x64) / xubuntu Linux (x64) 该库是使用 OpenCV 3.1.0 构建的。为了实现与另一个 OpenCV 版本的兼容性,我们提供了 rlof::Image 包装器接口。 因此,请使用 USE_NO_OPENCV 预处理器标志禁用 OpenCV 的链接。 ## 安装说明 ``` git clone http://github.com/tsenst/RLOFLib ``` ### C++ 接口 C++ 接口的头文件可以在 `/include/` 目录中找到。库文件位于 `/lib/` 目录下。 该库是使用 OpenCV 3.1.0 构建的。为了实现与另一个 OpenCV 版本的兼容性,我们提供了 rlof::Image 包装器接口。 如果不使用 OpenCV,请设置 USE_NO_OPENCV 预处理器标志以禁用与 OpenCV 相关的代码。 C++ 库文件已使用以下操作系统和开发环境进行编译: - Visual Studio 2012 (vc120) / x64 / Windows 7 - Visual Studio 2017 (vc141) / x64 / Windows 7 - gcc-5.4.0 / x64 / Ubuntu 17.04(实验性) 演示 RLOF 库应用的一个示例应用程序可以在 `/RLOFApp/` 目录中找到。 更详细的说明可以在[这里...](https://github.com/tsenst/RLOFLib/tree/master/RLOFSample)找到 ### Matlab 接口 适用于各操作系统的 Matlab Mex 文件位于 `/Matlab/` 目录中。 这些 mex 文件已使用以下操作系统和开发环境进行编译: - Matlab 2015 / Visual Studio 2012 / x64 / Windows - Linux(... 进行中) 调用 `help mex_SparseRLOF` 或 `help mex_DenseRLOF` 获取参数说明,并查看 **RLOFSample.m** 了解该函数的示例用法。 更详细的说明可以在[这里...](https://github.com/tsenst/RLOFLib/tree/master/Matlab)找到 ### Python 接口 Python 接口依赖于 *boost-python* 和 python 的 *numpy* 包。该接口位于 `\Python` 目录中。 此外,示例应用程序依赖于 *python-opencv* 包。 #### Python 2.X 安装 python、numpy 和 opencv 包。 ``` sudo apt install python-numpy libboost-python-dev python-opencv ``` 运行示例应用程序。 ``` cd RLOFLib/Python python RLOFExample.py ``` #### Python 3.X 安装 python、numpy 和 pip3 包。使用 pip3 安装 python3 opencv 包。 ``` sudo apt install python3-numpy pip3 libboost-python-dev sudo pip3 install opencv-python ``` 运行示例应用程序。 ``` cd RLOFLib/Python python3 RLOFExample.py ``` Python 接口库已使用以下操作系统和开发环境进行编译: - Python 3.5.2 / gcc-5.4.0 / Ubuntu 17.04 - Python 2.7.12 / gcc-5.4.0 / Ubuntu 17.04 - Python 3.5 / Visual Studio 2017 (vc141) / Windows 调用 `import rlof` 导入 RLOF 库。**RLOFSample.py** 展示了如何使用 RLOF 库。 更详细的说明可以在[这里...](https://github.com/tsenst/RLOFLib/tree/master/Python)找到 ## 描述 RLOF 库包含: - 以下所述(Senst et al. 2011-2016)基于 PLK/RLOF 方法的编译版本。 - C++ 接口和一个示例项目。 - Matlab MEX 函数接口和一个 Matlab 示例脚本。 - 支持 Windows 和 Linux 操作系统。 - 文档。 RLOF 库支持以下发表在文章中的方法: - 基于收缩 Hampel 范数的鲁棒局部光流,Senst et al. 2011, Senst et al. 2012 。 - RLOF 基于残差的支持区域构建,Senst et al. 2011, Senst et al. 2012。 @ARTICLE{Senst2012, AUTHOR = {Tobias Senst and Volker Eiselein and Thomas Sikora}, TITLE = {Robust Local Optical Flow for Feature Tracking}, JOURNAL = {IEEE Transactions on Circuits and Systems for Video Technology}, YEAR = {2012}, PAGES = {1377--1387}, DOI = {10.1109/TCSVT.2012.2202070} } - 用于 PLK 和 RLOF 的基于交叉的支持区域构建,Senst et al. 2014。 @INPROCEEDINGS{Senst2014, AUTHOR = {Tobias Senst and Thilo Borgmann and Ivo Keller and Thomas Sikora}, TITLE = {Cross based Robust Local Optical Flow}, BOOKTITLE = {21th IEEE International Conference on Image Processing}, YEAR = {2014}, PAGES = {1967--1971}, } - 使用双线性方程的 PLK 和 RLOF 迭代细化策略,Senst et al. 2013。 @INPROCEEDINGS{Senst2013, AUTHOR = {Tobias Senst and Jonas Geistert and Ivo Keller and Thomas Sikora}, TITLE = {Robust Local Optical Flow Estimation using Bilinear Equations for Sparse Motion Estimation}, BOOKTITLE = {20th IEEE International Conference on Image Processing}, YEAR = {2013}, PAGES = {2499--2503}, DOI = {10.1109/ICIP.2013.6738515}, } - 用于 PLK 和 RLOF 的光照鲁棒模型与全局运动先验,Senst et al. 2016。 @INPROCEEDINGS{Senst2016, AUTHOR = {Tobias Senst and Jonas Geistert and Thomas Sikora}, TITLE = {Robust local optical flow: Long-range motions and varying illuminations}, BOOKTITLE = {IEEE International Conference on Image Processing}, YEAR = {2016}, PAGES = {4478--4482}, DOI:10.1109/ICIP.2016.7533207}, } - 要启用 PLK 实现而不是 RLOF 实现,请设置 rlof::Parameter::m_HampelNormS0 = std::numeric_limits::max()。 为了提高所提出实现的鲁棒性并避免依赖,我们决定不再提供 GPU 实现。相反,我们专注于基于 CPU 的并行化技术,例如 Streaming SIMD Extension 指令集和使用 OpenMP 的多线程处理。
标签:C++, OpenCV, 光流法, 图像处理, 数据擦除, 特征跟踪, 计算机视觉, 运动估计, 逆向工具