LK光流算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在VC++6.0环境下对自已采集的视频做了Lucas Kanade光流法跟踪实验,该视频
是校园的一角,图像大小为320×240、帧率为15帧/秒、RGB24真彩色图像。实验中采
用的参数是:积分窗口为11×11(即公式(4-3-5)中的ωx、ωx均采用5个像素),金字塔层
数L为3,迭代次数K为20次。
关于金字塔图像定义的描述,则向量uL的计算公式如下:
uL=
u
2L
(L=0,1,...,Lm)(4-3-6)
式(4-3-6)中的除法是对两个坐标分别进行的。
基于金字塔图像Lucas Kanade光流法跟踪的处理过程如下:首先在最深的一个层
Lm计算光流,然后,这个计算结果传递到Lm?1层;根据最初的假定,在Lm?1层
dL=[dL
x
,dL
y
]T就足够小,因此能够通过标准的光流法来求出这个运动矢量。
计算残余光流的细节将在下一节介绍。假定这个向量已经计算出来(为了说明算
的完整性)。然后,这个计算过程的结果就传送到第L-1层,传递的向量是:
gL?1=2(gL+dL)(4-3-9)
下一层次的残余光流dL?1,也可以通过同样的步骤计算出来。这个通过光流法计
像表示是以一种回归形式而建立的:根据I0计算I1,I1计算I2,I2计算I3,以此类推;
令L=1,2,…表示一系列金字塔图像层次,图像IL的大小为:(nx/2L)×(ny/2L),图像IL通
过对图像IL?1隔行隔列采样得到。
采用金字塔图像表示方法的主要目的是处理大矢量的运动问题(处理大于积分窗
的目标运动的问题)。因此应当用图像中最大期望的光流来恰当的确定金字塔图像的
(4-3-19)
矩阵[?B
?x
?B
?y
]仅仅是一个梯度向量,令:
I=
Ix
Iy
=[?
B
?x
?B
?y
]T(4-3-20)
注意到图像的梯度Ix和Iy可以不必考虑第二幅图像B,而只需根据图像在点P的
域(2ωx+1)×(2ωy+1)的信息求得(在迭代法求光流的过程中,这一点很重要)。使用
分近似微分算子,这两幅图像的导数的形式如下所示:
高度。在大多数的情况下,超过4的金字塔图像层次没有太大的意义。
二、基于金字塔的图像跟踪
回到前面说的跟踪问题:对于图像I中的一个给定的点u,找到它在图像J中对应的
位置v=u+d,或者找到目标运动的矢量d。
–27–桂林电子科技大学学位论文
对于L=0,1,...,Lm,定义uL=[uL
x
,uL
y
]是点u在金字塔图像IL中的映射。根据前
已被广泛的应用于运动车辆跟踪和人脸特征点跟踪[47,48];下面介绍文献[27],并对其
进行相关实验。
§4.3.1问题提出
用I和J来代表两个灰度图像。那么I(x)=I(x,y)和J(x)=J(x,y)代表了这两个灰度图
像在点X=[x,y]T的灰度值,x和y是图像的点X坐标。称图像I为第一幅图像,称J为
值:
ε(υ)=ε(υx,υy)=
px+ωx
x=px?ωx
py+ωy
y=py?ωy
(A(x,y)?B(x+υx,y+υy))
2
(4-3-15)
对这个式子采用标准的光流法处理。为了优化这个问题,ε对υ的一阶导数为零:
?ε(υ)

=[0,0](4-3-16)
将这个式子展开以后得到:
?ε(υ)

=?2
px+ωx
算出新的光流并把它转到Lm?2层,这样一直操作直到回到第0层(原始图像)。
用数学公式详细的介绍一下从第L+1层到第L层的递归过程。假定在第L层有对被
踪目标的位置有个大致估计,而从最高层Lm到第L+1层传递过来的运动矢量是gL=
,gL
y
]T。这样,为了计算出在第L层的光流,需要找到一个使得下面的残差函数:
这个偏移量也可以用下列的式子来表示:
d=
Lm
L=0
2LdL(4-3-12)
–28–第四章目标跟踪
使用金字塔图像计算光流的一个明显的好处是,对于一个有着较大的像素偏移的
矢量d,可以通过计算几个比较小的残余光流来得到。注意到每个层次基本的光流法可
以搜索得到的运动矢量达到dmax,这样运用金字塔图像的方法最多能够处理的运动矢
通过大量实验发现,Lucas Kanade光流法要求图像质量比较高、图像纹理丰富,对质
量较差的图像跟踪效果并不理想,主要表现在以下几点:
(1)不容易选定一个固定的邻域大小,使其适合不同的视频段和不同的特征点;
(2)容易出现特征点跟踪不稳定的情况;
(3)某些点处的矩阵G病态或者不可逆,此时方程的解不可靠从而发生跟踪漂移
出来的向量,使得下列残差函数εL?1(dL?1)达到最小值。将此计算过程一直继续,直
最底层(L=0)。此算法的初始化过程是通过设定最高层(Lm)的初始运动估计为零开
的:
gLm=[0,0]T(4-3-10)
最终的光流d通过对最底层(原始图像)作光流法计算得到偏移量,此偏移量为:
d=g0+d0(4-3-11)
窗口。实际上,仅仅考虑等式(4-3-5),理想的情况是dx<ωx,dy<ωy。这样我们就必
须兼顾准确度和鲁棒性来来自百度文库择积分窗口。为了更好的解决这个问题,采用了基于金字
塔图像的光流跟踪方法。这个方法对局部跟踪的准确性提出了一个很好的解决方案。
一、金字塔图像表示
描述一个nx×ny的图像I,令I0=I表示第0层图像(原始图像),那么金字塔图
x=px?ωx
py+ωy
y=py?ωy
(A(x,y)?B(x+υx,y+υy))?[
?B
?x
?B
?y]
(4-3-17)
用B(x+υx,y+υy)在点υ=[0,0]T的一阶泰勒展开式来代替上式可得(因为采用
了金字塔图像的方法,每层的运动偏移量比较小,因而采用一阶泰勒展开是一个很好
–29–桂林电子科技大学学位论文
第二幅图像。从实际的图像来说,I和J是两个离散的函数,并且左上角的像素点坐标
是[0,0]T。用nx和ny表示图像的宽度和高度,右下端图像的坐标是[nx?1,ny?1]T。
考虑第一幅图像I(X)=I(x,y)上的一点,跟踪的目的就是在第二幅图像J(X)=
J(x,y)上找到与之相对应的一点,d=[d
x
,d
(2ωx+3)×(2ωy+3)的范围内定义,而不是(2ωx+1)×(2ωy+1)。在后面运用中心差分算子
计算A(x,y)的导数时,这个差异将变得更加明显。为了说明的清晰起见,改变运动向量
的表示方法,新的表示方式为υ=[υx,υy]T,而图像位置新的表示方式为p=[px,py]T。
依据新的表达方式,找到一个偏移向量υ=[υx,υy]T,它使得下面的残差函数取得最小
~=
px+ωx
x=px?ωx
py+ωy
y=py?ωy
δI Ix
δI Iy
(4-3-25)
这样,计算公式可以简写为:
1
2
?ε(υ)

T
~=Gυ?b(4-3-26)
简化后得到所求的光流向量为:
υ
opt
=G?1 b(4-3-27)
–30–第四章目标跟踪
§4.3.4实验结果与分析
实验过程分三个模块:视频读入、目标检测模块和Lucas Kanade光流法跟踪。
y=py?ωy
(ITυ?δI)IT(4-3-22)
1
2
?ε(υ)

T

px+ωx
x=px?ωx
py+ωy
y=py?ωy
I2
x
IxIy
IxIy I2
y
υ?
δI Ix
δI Iy
(4-3-23)
其中:
G~=
px+ωx
x=px?ωx
py+ωy
y=py?ωy
I2
x
IxIy
IxIy I2
y
(4-3-24)
?
b
量范围达到dmaxfinal=(2Lm+1?1)。例如,金字塔图像的层次Lm=3,这意味着像素
的偏移量可以达到15层。这就是能够使用较小的积分窗口来计算较大的像素运动矢量
的原因。
§4.3.3迭代的光流法计算过程
在金字塔图像的每个层次L,找到偏移向量dL实际上就是找到使得残差函数εL最
小的d。因为这个计算步骤对各个层次都是一样的,丢掉上标L,且定义新图像A、B如
光流的概念是Gibson于1950年首先提出的。所谓光流是指图像中模式运动的速
。1981年,Horn等人在相邻图像间的时间间隔很小,并且图像灰度变化也很小的
提下,推导出灰度图像光流场计算的基本等式,这是经典光流方法[18,24]。
光流的算法多种多样,其用于目标跟踪常用的算法有:检测和跟踪特征点[25]、跟
(a)第11帧(b)第43帧(c)第68帧
(d)第78帧(e)第93帧(f)第107帧
图4.3 Lucas Kanade光流法跟踪结果
图4.3为Lucas Kanade光流法跟踪结果。图中绿色的“1”和蓝色的“2”为目标的ID,
同一个目标标注了同一ID,红色的方框为跟踪框,红色“+”为Lucas Kanade光流法预
解决方案):
?ε(υ)

=?2
px+ωx
x=px?ωx
py+ωy
y=py?ωy
(A(x,y)?B(x,y)?[?
B
?x
?B
?y
]υ)?[
?B
?x
?B
?y]
(4-3-18)
注意到A(x,y)?B(x,y)可以看作是在点[x,y]T的一个导数,所以:
δI(x,y)~=A(x,y)?B(x,y)
?(x,y)∈[px?ωx,px+ωx]×[py?ωy,py+ωy]
测的目标质心。由图可知:目标1和目标2在第68帧之前,跟踪效果比较理想;目标1的
跟踪框在第78帧之后开始偏离目标,到达第93帧时,由于目标模糊不清且与背景较为
相似,所以跟踪框偏离加大,并停止跟踪;但由于目标2比较清晰,故始终能稳定跟踪。
Lucas Kanade方法是一种Newton梯度下降法,通过多次迭代可以得到较好的解。
现象;
(4)光流跟踪依靠的是特征点的局部信息,每个点都是独立跟踪的结果,其跟踪
结果并不稳定。
通过计算稀疏特征点处的光流即可跟踪目标,Lucas Kanade光流法用于目标跟踪
已基本解决了计算速度慢的缺点,而且对图像质量比较高、图像纹理丰富的慢速运动
目标跟踪的效果还是不错。但仍然存在跟踪目标容易丢失且鲁棒性不高的缺点。
下所示:
A(x,y)~=IL(x,y)
?(x,y)∈[px?ωx?1,px+ωx+1]×[py?ωy?1,py+ωy+1]
(4-3-13)
B(x,y)~=JL(x+gL
x
,y+gL
y
)
?(x,y)∈[px?ωx,px+ωx]×[py?ωy,py+ωy]
(4-3-14)
注意到A(x,y)和B(x,y)的定义域稍微有些差异。实际上,A(x,y)是在窗口大小为
y
]
T
是在点X处图像的速度,即点X处图像的
光流。令ωx和ωy表示两个整数,假定图像速度d是使得下面的残差函数ε最小的函数:
ε(d)=ε(dx,dy)=
ux+ωx
x=ux?ωx
uy+ωy
y=uy?ωy
(I(x,y)?J(x+dx,y+dy))
2
(4-3-5)
根据上面的定义,相似度的函数被在(2ωx+1,2ωy+1)的区域内定义。这个区域也
称之为积分窗口。典型的ωx、ωy是2、3、4、5、6、7个像素。
§4.3.2跟踪算法描述
基于特征点的跟踪的两个关键问题是准确度和鲁棒性。准确度是从直觉上来说,
为了不抹去图像中的细节,需要小的积分窗口。鲁棒性因素需要考虑光照变化,图像
运动时对尺寸变化的敏感性。特别的,为了了解大矢量运动的问题需要一个大的积分
εL(dL)=
uL
x
+ωx
x=uL
x
?ωx
uL
y
+ωy
y=uL
y
?ωy
(IL(x,y)?JL(x+gL
x
+dL
x
,y+gL
y
+dL
y
))2
(4-3-7)
达到最小的偏移向量:
dL=[dL
x
,dL
y
]T(4-3-8)
注意到,在第L层的积分窗口的大小是保持恒定的尺寸,即:(2ωx+1)×(2ωy+1)。
在第二幅图像中,用这里得到的最初估计gL作预平移。这样,求得的残余光流向
好的特征点[26]、金字塔图像的Lucas Kanade特征点跟踪算法(因为其跟踪过程是迭
的光流法计算过程,因此,为了更好的体现光流的作用,本文将其简称为:Lucas
nad光流法)[27]。在这三种光流跟踪方法中,跟踪性能最优的是Lucas Kanade光流
–26–第四章目标跟踪
法,由于该算法仅跟踪少量的特征点、迭代法收敛速度也很快而且算法的计算量不大,
Ix(x,y)=
?A(x,y)
?x
=
A(x+1,y)?A(x?1,y)
2
Iy(x,y)=
?A(x,y)
?y
=
A(x,y+1)?A(x,y?1)
2
?(x,y)∈[px?ωx,px+ωx]×[py?ωy,py+ωy]
(4-3-21)
根据上面的记号方式可得:
1
2
?ε(υ)


px+ωx
x=px?ωx
py+ωy
相关文档
最新文档