三种光流法的OpenCV-API
(一) Horn-Schunck光流法
CalcOpticalFlowHS
Horn–Schunck光流算法用一种全局方法估计图像的稠密光流场(即对图像中的每个像素计算光流)
算法原理参考论文:Determining Optical Flow
(二) Lucas-Kanade光流法
Lucas-Kanada最初于1981年提出,该算法假设在一个小的空间邻域内运动矢量保持恒定,使用加权最小二乘法估计光流。由于该算法应用于输入图像的一组点上时比较方便,因此被广泛应用于稀疏光流场。
算法原理参考论文:Pyramidal Implementation of the Lucas Kanade Feature TrackerDescription of the algorithm
(三) Farneback光流法
Farneback是一种基于梯度的方法,假设图像梯度恒定且假设局部光流恒定,计算出图像上所有像素点的光流。
算法原理参考论文:Polynomial Expansion for Orientation and Motion Estimation
三种光流法的实验效果对比
实验引自论文:Comparative Performance Analysis of Optical Flow Algorithms for Anomaly Detection
上图为实验流程图,可以具体分为以下6个步骤:
1)从视频片段中提取出图像/帧;
2)把RGB图形转换为灰度图,降低复杂度;
3)应用Horn-Schunk、Lukas-Kanade和Farneback三种光流法;
4)计算出对应的variance manitude和variance orientation;
5)计算出平均值用在做异常检测;
6)训练出异常检测分类器。
(一) 在 UCF web数据集上做实验
数据集名称:UCF web dataset
上图从左到右:正常的原图,分别采用Farneback、H-S和L-K的光流图。
上图从左到右:异常的原图,分别采用Farneback、H-S和L-K的光流图。
针对Farneback光流法,左图是正常情况下的光流图,右图是异常情况下的光流图。
上图从左到右:异常的另一张原图,分别采用Farneback、H-S和L-K的光流图。
这里引入两个异常检测相关的参数:Manitude(模值)和 Orientation(方向)。原文解释:Anomaly detection with dynamic threshold in changing light conditions. Graphs showing the difference for abnormal/normal behaviour for videos (on y-axis) are considered with respect to resolution pixels on x-axis。大意是X轴表示分辨率,Y轴表示参数变化(对比正常和异常两种情况)。下面分别展示Farneback、H-S和L-K算法对应的结果图:
由上图可以得知,Farneback光流法在Variance Manitude参数上对某些异常场景敏感,且优于另外两种算法。
由上图可以看到,在MSE指标上Farneback优于另外两种算法。
(二) 在UMN数据集上做实验、
数据集名称:The University of Minnesota (UMN) database
上面左图为正常场景,右图为异常场景。
由上图可以得知,Farneback光流法在Variance Manitude参数上同样对异常场景敏感,且优于另外两种算法。
(三) 在UCSD异常数据集上做实验
数据集名称:UCSD Anomaly dataset
上面左图为异常场景(有白色卡车开入步行区),右图为正常场景。
由上图可以得知,Farneback光流法在Variance Manitude参数上同样对异常场景敏感,且优于另外两种算法。
实验结论
基于论文的实验结果,相比Horn-Schunck光流法和Lucas–Kanade光流法,明显可以看到Farneback光流法在人群异常的检测方面存在较大的优势。后续会从这些光流算法的原理层面剖析更深层次的原因,为后面的人群异常领域研究建立扎实的理论基础。
参考资料
1. 本文的内容主要引自 ICCIP-2019 的一篇文献:
Comparative Performance Analysis of Optical Flow Algorithms for Anomaly Detection
2. 光流法的代码部分主要引自OpenCV官方文档:https://docs.opencv.org/4.1.0/