新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于Mumford-Shah模型的运动目标检测

基于Mumford-Shah模型的运动目标检测

作者:时间:2007-03-09来源:网络收藏
摘要:使用Mumford-Shah模型进行运行目标检测以克服常规算法的缺点。利用改进的水平集算法,使算法能够快速收敛。为达到实时性的要求,利用多分辨方法进一步提高算法的速度。使用改进的区域生长算法进一步准确地检测出运动目标。关键词:Mumford-Shah模型 运动目标 水平集 区域生长 鲁棒性 运动目标检测在目标跟踪、视频监控和精确制导等领域有重要的应用。传统的运动目标检测算法存在阈值确定困难、对噪声较敏感等缺点。活动轮廓模型是解决静止与运动图像分割和目标检测问题的一种有效方法,其主要缺点在于拓扑适应性较弱,即在演化过程中不能自适应地裂开或合并。由Osher和Sethian提出的水平集方法解决了此问题,将二维的闭合曲线嵌入一个三维的曲面,借助曲面的演化实现曲线的演化。基于几何主动轮廓线模型的水平集算法仅利用图像的边缘信息,对边缘模糊或存在离散状边缘的目标标难以得到理想的分割效果,而Chan-Vese提供的Mumford-Shah模型利用图像的同质区域的全局信息,可较好地分割出边界模糊或离散边界的目标。 本文对含有多个运动目标的图像序列相邻帧图像差建立Mumford-Shah模型,利用水平集算法求解此模型,利用改进的偏微分方程和其数值解,使方程能够快速收敛。为达到实时性的要求,利用多尺度方法提高算法的速度。采用改进的区域生长算法进一步提高分割的准确性。本文图像的背景相对固定,即摄像机相对固定。 1 水平集(Level set)方法 水平集方法主要是从界面传播领域逐步发展起来的,是处理封闭运动界面随时间演化过程中几何拓扑变化的有效计算工具。以水平集合函数φ所表达的曲线演化的最大特点是:即使隐含在φ中的零水平集曲线C发生了拓扑结构的变化,φ仍然保持一有效函数。 要使φ的演化与闭合曲线C的演化相关,φ的演化要满足如下的Hamilton-Jacobi偏微分方程: аφ/аt=F|△φ| (1) 水平集方法中不需要显式地求水平集函数φ,而是用图像域初始闭合曲线C0生成的符号距离函数(signed distance function)代替,简记了SDF,即: φ(x,t=0)=%26;#177;d (2) x∈R2,d为图像平面上的点x到曲线C的距离,若x在曲线的内部取正,则在曲线的外部取负。 2 运动目标检测算法 2.1 帧差法 定义灰度差分图像D={d(x,y)}如下: d(x,y)=g(|I(x,y;t+1)-I(x,y;t)|) (3) I(x,y;t+1)和I(x,y;t)为图像序列中相邻帧图像。函数g(x)定义为: 函数g的作用是调整图像的对比度和均衡化图像,ψ为调整系数。对分辨率较低场景中存在多个运动目标,且其运动速度和方向不相同的条件下,采用简单的阈值法分割效果较差。 2.2 基于Mumford-Shah模型的运动区域检测及水平集解 运动区域检测需要将灰度差分图像D中的灰度一致域分离出来,即分割出运动区域和静止背景区域。传统的几何轮廓线模型侵害图像的方法多采用活动轮廓线所在位置的图像局部信息,难于综合图像区域的全局信息,仅仅依靠进化曲线C所在位置边缘信息控制C的进化。这种方法对边缘模糊或离散边缘的图像分割效果不好。目前大多数视频监控图像的分辨率不高,采用传统的几何轮廓线的方法不能正确分割出图像中的同质区域。 Chan-Vese提出了一种简化Mumford-Shah的图像分割模型,图像I的定义域为Ω,C为Ω上的一闭合曲线,C将图像I分割为目标和背景两个同质区域,定义如下的能量函数: 式(5)中c0、cb分别为图像I在闭合曲线C内部和外部的灰度平均值。μ%26;#183;Length(C)、v%26;#183;Area(inside(C))为正则项,控制曲线的进化。因此,最优化图像分割问题转化为求能量函数F(c0,cb,C)的最小值问题。可以看出,只有C进化到目标的边界C0时,F(c1,c2,C)取最小值。 Chan-Vese以欧拉-拉格郎日法推导出水平集函数φ表达并满足式(5)的偏微分方程: 式(6)的Ω为图像函数和水平集函数的定义域。H(z)是Heaviside函数,δ(x)是Direc函数。此偏微分方程所涉及的图像函数I的定义域为全图数据,且方程中C0(φ)、cb(φ)也定义在全图范围内,Mumford-Shah的图像分割模型的最大特点就是全局优化。另外闭合曲线可以放置在图像上任何位置。最后一个显著特点就是不依靠图像的边缘信息,即使图像的边缘模糊或离散,仍能得到较好的分割效果。 实验表明,由于Dirac函数狭窄的定义范围,限制了模型检测图像的全局性。Chan-Vese方法将此进行了改进,采用了正则化的Heaviside函数和Direc函数,定义为: 该函数保证了在图像定义域范围内,所有点的δε(z)值都是趋于零的正值。但当检测曲线远离检测目标时,则δε(z)函数严重限制了对远离进化曲线C的目标的检测,不能稳定地检测出目标。 2.3 对Chan-Vese分割方法的改进 为消除方程(6)中Dirac函数对检测远离进化曲线C边缘的抑制,将δ(φ)替换为|△φ|,使偏方程变为: 而co(φ)、cb(φ)按照方程(6)计算。Heaviside函数按照式(7)计算。由于|△φ|≈1,消除了Dirac函数对非零水平集的抑制,因此方程(8)比方程(6)有更好的全局优化性能。 为保证式(8)解的稳定性,不采用Chan-Vese中的Jacobi方法,而采用有限差分方法: 改进后的偏微分方程的求解过程如下: %26;#183;由φ0初始化φ0,n=0; %26;#183;由式(6)计算c0(φ)、cb(φ); %26;#183;由式(10)计算曲率K; %26;#183;由式(9)计算φn+1; %26;#183;检查解是否稳定,如不稳定,n=n+1,重复计算。 由于Mumford-Shah模型要计算整个图像定义域的全局最优解,不能使用常用的窄带法求解水平集,需在整个定义域更新水平集函数,计算量较大,但由于方程(8)为全局优化的偏微分方程,只需很少的几次迭代,就可以得到理想的分割效果。 为减少算法的运行时间,采用多分辨方法,算法在保证检测结果正确的前提下,可大大减少算法的计算时间。具体的计算时间比较见表1。表1 水平集算法改进前后的计算代价 图像序列等级(图像大小)本文算法Chan-Vese算法迭代次数收敛时间(s)迭代次数收敛时间(s) 0(320%26;#215;240)32.3100400129.3100图像序列1(160%26;#215;120)30.6020706.8200 2(80%26;#215;60)30.1200100.43102.4 运动变化分割基础上的区域生长 在图像背景相对静止的条件下,图像变化区域C可表为: C(t,t+1)=O(t)∪O(t)∪O(t+1) (11) C(t-1,t)=O(t-1)∪O(t) 其中O(t)为t时刻属于运动目标的点集。则 C(t-1,t)∩C(t,t+1)=O(t)∪(O(t+1)∩O(t-1)) (12) 这意味着两个连续帧差图像的交集更能代表运动目标的准确位置,因此使用两连续帧差图像的交集作为运动目标的初始位置,在此基础上进行区域生长以更完整地检测出运动目标。 区域增长法的基本思想是将具有相似性质的像素集合起来构成区域。实验中发现,采用检测出的运动区域为种子像素进行区域生长,难以确定相应的阈值,另外运动区域的点可能包括背景像素点,这样很易造成生长错误。 本文采用一种基于图像边缘信息的区域生长算法以克服上面的缺点,以两连续帧差图像的交集作为运动目标的种子像素点集,采用Sobel边缘算子检测种子像素周围的像素点,如果为边缘像素点,则标记为运动目标点,将检测到的边缘像素点与运动检测结果进行融合,能够准确地检测出运动目标。 基于边缘信息的区域生长算法过程如下: (1)选择水平集算法检测出的运动区域的运动点为种子像素; (2)以该像素为中心检测其8邻域,采用Sobel算子进行检测,如为边缘像素,则标记; (3)以新确定的像素为中心,反回步骤(2),检查新像素的邻域,直至遇到水平集算法确定的运动点或超出没定的区域范围,返回(1),直到所有的种子像素都被检查一遍,结束整个生长过程。 在使用Sobel算子时采用各向同性的检测模板,不采用固定阈值确定边缘点,而是采用如下的判断: G(x,y)/V(x,y)>Cof (13) G(x,y)为点(x,y)计算的边缘强度,V(x,y)为点(xmy)图像的灰度值。为检测边缘像素点较多,Cof取较小值。测试中Cof取0.1~0.3。图13 实验结果分析 采用实际的图像序列进行测试,检测结果如图1所示。利用方程(8)和方程(6)分别进行计算,参数取值如下:λ0=λb=1,μ=0.2%26;#215;255,v=0,△t=0.1,Cof=0.2,μ取较大值以保证检测较大目标。为加快SDF函数的初始化计算速度,初始化曲线选为圆,以图像矩形中心为圆心,矩形的短边的一半为半径。编制程序列用不同等级分辨率的图像进行计算。计算机配置为:CPU为1.50GHz主频率,内存为256MB,操作系统为Windows2000。 由表1和图1的检测结果可以看出,使用本文的算法对不同等级分辨率的图像迭代三次均能正确地检测图像中的运动车辆和行人。改进后的算法与Chan-Vese算法相比大大减少了收敛的次数。由于改进后的算法与Chan-Vese算法每次迭代的耗时基本相同,但改进后的算法迭代数少,因此提高了算法的速度。改进的算法对不同等级分辨率的图像均能正确地检测出运动目标,这一点也验证了算法的全局性能,图像序列等级2的计算时间为0.1200s。Chan-Vese算法由于Dirac函数的影响,对初始化曲线的位置和曲线的长度十分敏感,在实验中也验证了这一点。当初始化曲线远离目标时,收敛次数大大增加,而改进后的算法对初始化曲线的位置不敏感,算法可快速收敛。图1(f)与(g)为水平集算法检测结果,图1(g)为两者的交集,图1(i)为采用Sobel边缘检测算子进行区域生长法的生长结果,图1(j)为融合两者的分割结果,较好地检测出运动目标。对检测出来的运动目标的内部空洞可以直接填充以完整地检测出运动目标。 SDF函数的构造比较耗时,可利用当前帧水平集计算迭代收敛时的SDF函数,作为下一帧差图像水平集计算时的SDF函数,避免了SDF函数的构造。由于连续帧间的目标运动变化不大,因此在下一帧差图像水平集计算的迭代次数更少,进一步提高了算法的速度。在连续帧的测试中,迭代一到两次均能检测出运动目标。 采用基于能量极小化的框架对含有多个运动目标的图像序列相邻帧图像差建立Mumford-Shah模型,为求解此模型,提出利用改进的偏微分方程和水平集数值解法,使算法能够快速收敛。为达到实时性的要求,利用多尺度方法进一步提高算法的速度。使用改进的区域生长算法进一步准确检测出运动目标。试验结果表明,本文的算法能从较复杂的图像序列中有效地检测和提取出运动目标并有较强的鲁棒性。进一步提高算法的鲁棒性是今后的研究重点。

评论


相关推荐

技术专区

关闭