光流估计概念和算法

什么是光流?

光流就是物体观测者之间的互相运动亮度变化速度矢量,下图两张图片表示了光流的原理。
光流估计概念和算法_第1张图片

光流的算法有几个基本不变的假设:

光流估计概念和算法_第2张图片

1,光强不变假设;
一元的n阶泰勒公式:
在这里插入图片描述
在这里插入图片描述只要前面的一阶,不要后面的,拓展到多元的话,就是图二所呈现的公式。
两边同时除以delta_t,就得到了下面的公式
光流估计概念和算法_第3张图片u是x方向的速度,v是y方向的速度。

光流算法分类

稀疏光流算法(Sparse optical flow)

对图片中的一些特征比较明显的像素点,角点,边进行跟踪。
稀疏光流算法是H-S算法,它的原理如下图:
光流估计概念和算法_第4张图片

稠密光流算法(Dense optical flow)

对图片中所有像素点进行计算。
计算量比较大,也比较,但是不存在跟踪的问题。比较重要的是L-K算法,依旧遵循的是光强不变原理I_x·u+I_y·v+I_t=0
相邻像素点中光流是一样的,即相邻小窗格中所有像素点光流是一样的

L-K算法

在物体运动很快的情况下,或者有遮挡的情况,会出现跟踪不准的(跟丢)。
遮挡,旋转,光照不准”会出现错误或不准确

速度很快的情况,两帧图片之间像素格位置偏差比较大,那么光强不变假设就不成立了。用一种图像金字塔的方法,去使图片满足光强不变假设。(将原来分辨率很大的图片,将它的分辨率不断缩小,直至相邻,就可以用光强不变假设了。)

在最小尺度上,用L-K算法(像素相邻情况)算出一个光流出来。计算出来的光流与上一层计算出的光流组合起来,给上上层用。最终得到一个结合多尺度的最终光流

这个方法可以比较好的解决速度快的问题。

Farneback算法

不存在跟踪的问题。(对所有的点进行光流,所以它不存在跟踪,遮挡之后也不会存在跟丢的情况)
用到的基本假设是:光流强度不变假设。

光流的应用

1,人体姿态检测;
2,飞行器壁障;(图片扫描时,速度越大,光流越大,越亮,要避开)
3,交通检测,测速;(相似三角形,计算速度)
4,视频补帧,视频减震等。

一些存在的问题

1,自然现象,如烟,火,云,浪花等——光流复杂,计算难度大
2,镜面反射(没有运动意义)
3,光照变化,光源移动或暗光环境(光强小,光流计算复杂)
4,不重要运动,如叶子的摆动(不重要运动占用计算资源)
5,快速运动小物体
6,训练集较小,训练数据难以获取和标记等(深度学习,数据集很难标记)

你可能感兴趣的:(算法,算法)