笔记:移动摄像运动检测
第一章 介绍
- 固定机位的运动检测有一下常用方法:
- frame difference
- background subtraction
- optical flow
- 而移动相机的检测的复杂性主要来自于:背景的多样性、背景的运动
- 今年来的移动相机运动检测论文:
- [1], [2], [8], [9], [10], [11], [12],[13], [14]
- 第一类方法:使用目标物体和背景的径向光流差异。
- 问题:什么是 radial optical flow?
- 主要是对比目标物体和背景的径向模式,差异大说明在运动
- 优点:计算简单
- 缺点:对噪音和色彩比较敏感,无法表达运动的差异
- 第二类方法:使用自适应背景模型
- 问题:什么是 adaptive background modelling?
- 首先计算背景的移动方向,然后使用 background subtraction or image difference between consecutive video frames 计算前景的运动
- 缺点:当背景剧烈变化时,效果不好。并且计算量大。
- 目前的难点:
- 针对移动的相机,提供对象级别的位置、语义分类、运动信息。
1.2 前人工作的数据
- State-of-the-art object detection techniques such as deformable part based model (DPM)
- 只检测出那块区域在运动
- 主要的缺点是:没有提供运动信息、没有检查静止目标、没有目标的分类、目标物的数量
1.3 本文所提出的方法
- 缩写:
- CMD:context-aware motion descriptor(感知上下文的运动描述)
- HOOF:histograms of oriented optical flow(光流直方图)
- 使用context-aware motion descriptor (CMD) 来描述物体的运动。
- CMD 对比目标和周围区域的有向光流直方图(histograms of oriented optical flow (HOOF)),以区分目标和背景的运动差异。
1.4 本文的贡献
- 一种对比目标和背景的 HOOF 的方法
- An orientation-wise soft margin operator is designed to compare the HOOF of the object and its background
- 理论上背景的 flow vector 是一致的,我们可以通过对比flow vector 的不同来区分背景和前景。但是实际中背景的 flow vector 是有细微差别的,导致背景的不同区域被分到直方图的不同 bin 中,导致算法失效。
- 为了解决这个问题,我们为目标周围的直方图增加了 soft margin ,并且使用背景 HOOF 中较大的 bin 和目标的HOOF对比
- 一种生成 CMD 的方法
- A histogram of binary vector generation technique is developed to generate the CMD
- 生成二位直方图:因为光流包含两个方向,所以需要二位直方图
- 这个方法考虑了光流的分布,对目标移动方向的光流进行增强,较少了噪音
- 我们通过连接二维直方图(生成自pyramid HOOF)来构造CMD
第二章 CMD
- 主要包含一下几个技术
- 抽取 extraction HOOF
- HOOF 比较:针对方向增加了 soft margin operator
- CMD的构造方法
2.1 Context-Aware HOOF
如上图所以,移动物体的光流在方向和强度上和周围背景的光流不同。context-aware HOOF 可以描述这种不一致,它获取了目标周围的光流信息(也就是上下文contextual flow field information)。
- 首先计算整张图片的光流:使用的方法 D. Q. Sun, S. Roth, and M.J. Black. Secrets of optical flow estimation and their principles. In IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 2432–2439, June 2010.
- 如图三所以建立8个区域
- 分别计算每个区域的直方图
-
直方图的横坐标是光流的角度,纵坐标是这个 bin 的光流的幅度(magnitude)的加总。
-
角度和幅度的计算公式如下。
-
-
-
这些直方图需要做标准化,也就是横坐标加总需要等于一。这样方便在不同大小区块之间做对比。
-
直方图的横坐标有 B 个格子,B的大小是一个超参,我们将只用不同的 B 来生成pyramid HOOF,将在 Section 2.3 中讨论。
-
2.2 Orientation-Wise Soft Margin Operator
为了表达目标物体和周围背景的不同,我们对比它们的 orientation-wise HOOF ,并产生一组二进制向量(binary vector)。
我们用 ub (i) 来描述两个直方图在某个方向上的差异。b 表示选定的方向,i 表示第 i 个邻居,一个有 8 个邻居。
上图表示目标在 b 方向的速度比周围8个区域在 b 方向上速度大。
例如我们对比 b=1 这个方向,那么可以得到一个 binary vector,例如[1,1,1,1,1,1,1,1],这表示目标在朝这个方向移动。相反如果静止的物体带到的 binary vector 可是能[0,0,0,0,0,0,0,]。
如果相机有运动,那么角落上的 flow 会比较大,所以静止物体得到的 binary vector 可能是[00001111] 或者 [11110000]。
但是这种简单的对比方法可能会出问题。图片左上角和右下角也可能产生[1,1,1,1,1,1,1,1],所以我们需要改进对比方法。
2.2.1 优化生成binary vector的方法
这里表示目标物体在角度 b 上的值(直方图上的纵坐标,体现了速度)不仅比周围8个区域在这个方向的速度大,同时也大于相似角度内所有的fi(b)。
个人的理解:相机在移动的过程中,背景区域的光流的主方向是不一致的,但是角度不会差很多。所以中间区域的主方向和周围会有差异。在这种情况下传统方法会把静止的物体误认为是运动的。所以要增加对比的角度范围。问题:是否是相机的形变导致的。
2.3 CMD
这个部分主要讨论如何使用 binary vector 生成物体相对于背景的运动状态的具体表述(CMD)
- 首先我们已经得到了在角度 b 上运动信息(例如[1,1,1,1,1,1,1,1])
- 将每个角度的 binary vector 转化为 [0-255]
- 然后进一步转化为256维的直方图
- 直方图数据累加的时候使用fo(b):也就是中间目标在改方向上的光流幅度
- 这样的好处是可以加强主方向上的数据,较少噪音
- 我们使用不同大小的B(直方图分桶的数量)来生成上面这个直方图,分桶数量越多分辨力越高,但是会降低通用型
- 最后需要把这些直方图全部链接起来,由于高分辨率的直方图保留了更多信息,所以连接的时候分别乘以不同的权重,分辨力越低权重越小
附录
1. 先记录一些基础知识
1.1 光流(optical flow field)
资料:https://zhuanlan.zhihu.com/p/74460341
传统算法 Lucas-Kanade
深度学习光流估计算法将以FlowNet/FlowNet2.0
1.2 Lucas-Kanade
- 角点检测方法(还没有来得及看):https://en.wikipedia.org/wiki/Harris_corner_detector
- 用计算机求矩阵的逆(伪逆),还没有看
- 也需要看一下:HornSchunck 方法
1.3 FlowNet/FlowNet2.0
单独介绍这个内容
- 训练数据:人工生成,图片和背景同时移动,模拟了相机的移动