1.帧间差分法
假设有两帧不同时间采集的图像,检测运动的最简单方法是计算图像差值。即所谓的相邻帧差法或者三帧差法。
帧差法依据的原则是:当视频中存在移动物体的时候,相邻帧(或相邻三帧)之间在灰度上会有差别,求取两帧图像灰度差的绝对值,则静止的物体在差值图像上表现出来全是0,而移动物体特别是移动物体的轮廓处由于存在灰度变化为非0,这样就能大致计算出移动物体的位置、轮廓和移动路径等。
帧间差分法的优点是算法实现简单,程序设计复杂度低;对光线等场景变化不太敏感,能够适应各种动态环境,稳定性较好。缺点是不能提取出对象的完整区域,对象内部有“空洞”,只能提取出边界,边界轮廓比较粗,往往比实际物体要大。对快速运动的物体,容易出现鬼影的现象,甚至会被检测为两个不同的运动物体,对慢速运动的物体,当物体在前后两帧中几乎完全重叠时,则检测不到物体。
除这些不确定性之外,差值计算最重要的局限性是运动自身信息不足。也就是说,我们不能确切的看到图像点是如何运动的。要描述图像中点进行移动的方法,需要学习一下像素位置在每帧图像上是如何变化的。
2.光流
在不同时间拍摄同一个场景时,三维元素被映射到图像中的对应像素。因此,如果图像特征没有被遮挡,它们应该互相有关联,而且运动可以被看作是一组图像平面上的位移。该位移所对应的是场景中目标的投射移动,这称为光流。
如果有了一帧图像以及其光流,就可以得到图像序列的下一帧图像。因此,光流就像是一个速度矢量,是时间单位上像素的移动,简单记为像素/帧。通过查找图像中对用特诊就可以得到光流。
下面这一段来自我i智能博主的目标检测光流法(一):对光流法的认识
所谓光流,是计算机视觉研究领域的术语,直观的认识就是提供一个对运动物体的的描述,因此也常用于运动物体的检测与识别。现实生活中,我们之所以能感受到物体的动与不动,就是因为这个物体在前后两个时间点上出现在了不同的位置,我们人脑自动根据这个偏差就可以知道物体是运动了还是没有运动,是变远了还是变近了等等。那么基于这种思想下的运动目标检测,就诞生了光流。
所以可以看出,光流不但可以检测出物体是否存在运动,运动的方向、角度也是可以计算出来的。光流的概念是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。简单来说就是上面说的那样,在一个连续时间点前后,比较一下这两个时刻的图像有什么不同,把这个不同通过一种方式计算出来就是光流了。
通常一个视频是由摄像机等装置拍出来的,视频其实就是一系列图像帧的组合,每一帧如果挑出来其实就是一副图像。那么既然是摄像机拍出来的,就存在摄像机运动与不运动的情况了,如果摄像机不运动(比如一些监控场所的摄像头),那么光流检测出来的运动就是物体的运动了,假设摄像机运动,那么光流检测出来的运动可就是物体的运动加上摄像机的运动的合成运动了,这种情况通常是不希望看到了,会给运动目标检测带来一定的影响,所有有时候通常要先把摄像机的运动给去掉。
光流的计算方法可以分为以下几类:
(1)基于区域或基于特征的匹配方法
(2)基于频域的方法
(3)基于梯度的方法
目前较为多的几种计算光流的方法有:
(1)Lucas-Kanada方法,这种方法是较早也是较为经典的一种方法。是一种基于局部特征计算光流的方法。
基于光流法研究有三个前提假设:
(1)相邻帧之间的亮度恒定;
(2)相邻视频帧的取帧时间连续,或者,相邻帧之间物体的运动比较“微小”;
(3)保持空间一致性;即,同一子图像的像素点具有相同的运动
关于L-K方法的详细过程可以看论文,也可以看下面几个博客对论文里面公式的提要:
(2)Horn-Schunck方法。这是一种全局性质下计算光流的方法,该方法运算较慢,
Wiki百科上的介绍
里面有相关公式推导与论文的介绍,感兴趣可以详细研究。
除此之外还有一些方法:
Buxton方法,一种基于边缘运动的图像序列模型的方法。
Glyn W. Humphreys and Vicki Bruce (1989). Visual Cognition. Psychology Press.ISBN 0-86377-124-6.
Black-Jepson方法。相关论文。
上述这些计算光流的方法在opencv与一些研究机构开发的matlab中都有集成,后续将分别简单他们的用法。
//————————————————————分割线——————————————————————————-
关于光流法介绍,也可以看这篇博客光流Optical Flow介绍与OpenCV实现
光流场是图片中每个像素都有一个x方向和y方向的位移,所以在上面那些光流计算结束后得到的光流flow是个和原来图像大小相等的双通道图像。那怎么可视化呢?
孟塞尔颜色系统(MunsellColor System)
它是美国艺术家阿尔伯特孟塞尔(Albert H. Munsell,1858-1918)在1898年创制的颜色描述系统。

孟塞尔颜色系统的空间大致成一个圆柱形:
南北轴=明度(value),从全黑(1)到全白(10)。
经度=色相(hue)。把一周均分成五种主色调和五种中间色:红(R)、红黄(YR)、黄(Y)、黄绿(GY)、绿(G)、绿蓝(BG)、蓝(B)、蓝紫(PB)、紫(P)、紫红(RP)。相邻的两个位置之间再均分10份,共100份。
距轴的距离=色度(chroma),表示色调的纯度。其数值从中间(0)向外随着色调的纯度增加,没有理论上的上限(普通的颜色实际上限为10左右,反光、荧光等材料可高达30)。由于人眼对各种颜色的的敏感度不同,色度不一定与每个色调和明度组合相匹配。
具体颜色的标识形式为:色相+明度+色度。
//————————————————————————————————————–
下面是计算机视觉特征提取与图像处理那本书上的介绍,公式太多了,就不一一敲上来了,把主要公式推导介绍的几页上传上来。
1.

2.

3.

4.

5.

6.

原理部分就到这里,后面主要是代码的实现,主要都是对于网上一些资源的整合。