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, 光流法, 图像处理, 数据擦除, 特征跟踪, 计算机视觉, 运动估计, 逆向工具