LK光流算法总结-精选.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运动目标检测之Lucas-Kanade 光流算法读书笔记
视觉是人类感知自身周围复杂环境最直接有效的手段之一,而在现实生活中大量有意义的视觉信息都包含在运动中,人眼对运动的物体和目标也更敏感,能够快速的发现运动目标。随着计算机技术、通信技术、图像处理技术的不断发展,计算机视觉己成为目前的热
点研究问题之一。而运动目标检测是计算机视觉研究的核心课题之一,融合了图像处理、模式识别、人工智能、自动控制、计算机等众多领域的先进技术,在军事制导、视觉导航、视频监控、智能交通、医疗诊断、工业产品检测等方面有着重要的实用价值和广阔的发展
前景。
一目标检测
运动目标检测运动目标检测是指从序列图像中将运动的前景目标从背景图像中提取出
来。目前,已有的运动目标检测方法按照算法的基本原理可以分为三类:背景差分法,帧间差
分法和光流法。
1 背景差分法
背景差分法又称背景减除法,背景差分法的原理是将当前帧与背景图像进行差分来得到
运动目标区域,但是需要构建一幅背景图像,这幅背景图像必须不含运动目标,并且应该能不断的更新来适应当前背景的变化,构建背景图像的方法有很多,比较常用的有基于单个高
斯模型的背景构建,基于混合高斯模型的背景构建,基于中值滤波器的背景构造,基于卡尔曼滤波器的背景构造,基于核函数密度估计的背景模型构造。
缺点:因为要求背景是静止的,所以背景的变化,场景中有很多干扰,比如场景中
有树枝和叶子在风中晃动、水面的波动等等,还有照明的变化和天气的变化等都可能影响检
测的结果
2 帧间差分法
帧间差分法是一种通过对视频图像序列中相邻两帧作差分运算来获得运动目标轮廓的
方法,它可以很好地适用于存在多个运动目标和摄像机移动的情况。当监控场景中出现异常
物体运动时,帧与帧之间会出现较为明显的差别,两帧相减,得到两帧图像亮度差的绝对值,
判断它是否大于阈值来分析视频或图像序列的运动特性,确定图像序列中有无物体运动。图像序列逐帧的差分,相当于对图像序列进行了时域下的高通滤波。
缺点:不能提取出对象的完整区域,只能提取出边界;同时依赖于选择的帧间时间间隔。
对快速运动的物体,需要选择较小的时间间隔,如果选择不合适,当物体在前后两帧中没有
重叠时,会被检测为两个分开的物体:而对慢速运动的物体,应该选择较大的时间差,如果时间选择不适当,当物体在前后两帧中几乎完全重叠时,则检测不到物体。
3 光流算法
光流,它是一种运动模式,这种运动模式指的是一个物体、表面、边缘在一个视角下由一个观察者(比如眼睛、摄像头等)和背景之间形成的明显移动。光流技术,如运动检测和
图像分割,时间碰撞,运动补偿编码,三维立体视差,都是利用了这种边缘或表面运动的技
术。光流是空间运动物体在观测成像面上的像素运动的瞬时速度,光流的研究是利用图像序
列中的像素强度的时域变化和相关性来确定各自像素位置的运动,即研究图像灰度在时间上
的变化与场景中物体结构及其运动的关系。
图1 运动场与光流场对应关系图
光流算法评估了两幅图像的之间的变形,它的基本假设是体素和图像像素守恒。它假设一个物体的颜色在前后两帧没有巨大而明显的变化。基于这个思路,我们可以得到图像约束
方程。不同的光流算法解决了假定了不同附加条件的光流问题。
二Lucas –Kanade 算法
在计算机视觉中,Lucas –Kanade 光流算法是一种两帧差分的光流估计算法。这个算
法是最常见,最流行的。它由Bruce D. Lucas 和Takeo Kanade 提出。它假定在所考虑的
像素的局部邻域内,本质上光流是恒定的,由此利用最小二乘法原则对邻域内所有像素求解
基本光流方程。
Lucas –Kanade 光流法是一种基于梯度的局部参数化光流估计方法,该算法假定在一个
空间尺寸的邻域 E 中光流矢量是恒定的,然后使用加权最小二乘法(weighted least squares)
估计光流。它计算两帧在时间t 到t + δ之t间每个像素点位置的移动。由于它是基于图像
信号的泰勒级数,这种方法称为差分,这就是对于空间和时间坐标使用偏导数。
LK 算法基于以下三个假设:
1)亮度恒定。
2)时间连续或者是运动是“小运动”。
3)空间一致,临近点有相似运动,保持相邻。
假设1 亮度恒定的假设即为了保证其等号成立不受亮度的影响,假设 2 是为了保证KLT 能够找到点,假设 3 则为以下原因假设,即对于同一个窗口中,所有的点的偏移量都相等。
图像约束方程可以写为:
I (x ,y ,t ) = I (x + δx ,y + δy,t + δ(t1))
其中,(x, y, t) 为在(x,y )位置的像素。
我们假设移动足够的小,那么对图像约束方程使用泰勒公式,我们可以得到:
I I I
I (x dx, y dy, t dt) I (x, y, t) dx dy dt
x y t
(2)
因为移动足够小所以忽略二阶和更高阶的项。从这个方程中我们可以得到:
(3)
对t 求导,令
dx dy
u ,v
dt dt 分别表示水平方向、垂直方向的光流速度,表示某方向
的梯度,用一阶差分代替一阶微分,于是光流基本计算公式有一般形式:
I u I v I
X y t (4)
u, v 分别是I(x,y,t) 的光流向量中x,y 的组成。和则是图像在(x ,y ,t ) 这一点相应方向的差分。
方程④有两个未知量,尚不能被解决,这也就是所谓光流算法的光圈问题。那么要找到光流向量则需要另一套解决的方案。而Lucas-Kanade 算法是一个非迭代的算法。
将上式写为矩阵相乘形式:
(5)
u
I I I
x y t
v
LK光流:假设像素流在一个大小为m*m(m>1) 的小窗中是一致的,那么从像素 1...n , n = m^2 中可以得到下列一组方程:
(6)
图2 LK 光流算法示意图
将⑥写成矩阵的形式,则有:
(7)
式⑦两个个未知数但是有多于两个的方程,这个方程组自然是个超定方程,也就是说方程组内有冗余
为了解决这个超定问题,我们采用最小二乘法解Au b 的向量u:
(8)得到:
T 1 T
u ( A A ) A b (9)考虑矩阵的可逆性: