基于光流法与水平集方法的运动对象分割
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2 Chan-Vese 模型
传统的水平集方法是利用梯度使演化曲线停在梯度模值比较大的目标边界上,因为涉及 到差分计算,所以受噪声影响大,且易越过模糊的边缘,为保证在高噪声和边缘模糊的情况下 曲线演化的正确性,本文采用基于全局信息的图像分割模型--Chan-Vese 模型[6]。C-V 模型水 平集选取的思想为分割 n 相区域需要 m = log2 (n) 个水平集函数,此方法可以在水平集演化的 过程中避免出现真空或者重叠现象。
本文提出了一种基于帧间的运动对象分割算法,将经典的Horn-Schunck光流模型与水平 集方法及Chan-Vese分割模型相结合,根据光流模型计算的光流场表现出的不同运动对象信 息分割图像序列中的运动对象,该模型不仅能够分割光流场为分段常值的情况,而且由于 H-S光流模型得到的光流场为稠密光滑的,还可以分割光流场为分段光滑的情况。
更多的依赖于对光滑性的约束, α 可以取较大的值,反之可以取较小的值。
3.水平集方法及Chan-Vese模型
3.1 水平集方法
水平集方法中,平面闭合曲线被隐含的表达为三维连续函数曲面 φ(x, y) 的一个具有相同 函数值的同值曲线,通常是{φ = 0} ,称为零水平集,而 φ(x, y) 称为水平集函数。
将光流模型与 C-V 分割模型相结合的运动对象分割,采用基于连续能量函数最小值的 变分方法求解,其通用能量函数为:
∑ ∫∫ ( ) n
E(φi , ui , vi ) = αi
i =1
Ω ( fxui + f yvi + ft )2 + λi ( ∇ui + ∇vi ) χi (Φ ) dxdy
∑ ∫∫ ∑ ∫∫ ∑ ∫∫ ( ) m
E(φ, u1, v1, u2 , v2 )
=
∫∫ α1 ΩQ1H(φ)dxdy
+α2
∫∫Ω Q2 (1−H(φ))dxdy
+ β ∫∫Ω
H(φ)dxdy +γ
∫∫Ωδ
(φ)
∇φ
dxdy
+
µ 2
(
∇φ
−1 )2
(7)
其中, α1,α2 > 0 , β ,γ ≥ 0 为各能量项的权重系数,
Q1 = ( fxu1 + f yv1 + ft )2 + λ1 ( ∇u1 + ∇v1 )
+ βj
j =1
m
Ω H (φ j )dxdy+
γj
j =1
δ
Ω
(φ
j
)
∇φ
j
dxdy +
m µj j=1 2
2
Ω ∇φ j −1 dxdy
(6)
其中,αi > 0 ,β j ≥ 0 ,γ j ≥ 0 为可调分割尺度,m 为水平集个数,m 个水平集可以分割 n = 2m
相区域, χi 表示区域 Ri 的标记函数,根据水平集划分的不同选定。式(6)中,第一项保证分
2.Horn-Schunck光流计算模型
1981年,Horn和Schunck提出了经典的光流计算能量模型[4]。设 Ω ⊂ 2 为矩形图像区域,
f ( x, y,t ) : Ω × → 为灰度值图像序列。其中,( x, y) 为矩形图像中像素点的位置,t ∈[0,T ]
表示时间, f (x, y,t) 即为在 t 时刻图像序列上 (x, y) 处的图像灰度值。
则式(1)可以简化为:
fxu1 + f yu2 + ft = 0
(2)
式(2)即为光流约束(OFC)方程。由于该方程有两个变量 u1,u2 ,无法确定其唯一解,同时,为
使该模型能得到稠密的光流场,根据Tikhonov对病态问题求解的规整项的设计思想[5],引入
光滑项,使原有问题变成可解问题。假定计算得到的光流场是光滑的,即假设 u1,u2 随位置
本文结构为:第2部分介绍经典的Horn-Schunck光流基本模型。第3部分介绍水平集方法 与Chan-Vese分割模型基础以及本文采用的水平集函数重新初始化方法。第4部分结合2,3 部分提出了一种运动对象分割的方法,并分别给出两相与多相运动对象分割计算过程;第5 部分给出模型的实验结果;第6部分总结全文。
a)计算光流场的速度矢量 本文根据光流场进行运动对象的分割,则水平集函数演化的依据为光流模型计算出来的
光流场,即速度矢量 u1, v1,u2 , v2 。在固定水平集函数 φ 的情况下,最小化能量泛函可以求得 光流场的速度矢量 u1, v1, u2 , v2 为:
Ω
Ω
Ω
Ω
式中,α1,α2 > 0, β ,γ ≥ 0 为各能量项的权重系数。B 为整幅图像上各点的灰度值,C1 , C2 分别
为演化轮廓线内部和外部的平均灰度值,在轮廓线演化的每一时刻都是保持相对恒定的。(5)
-2-
http://www.paper.edu.cn
式前两项使轮廓线演化靠近分割边界,第三、四项为面积项和长度项,这两项分割轮廓线的
函数模型,再根据这一模型进一步扩展到多相运动分割的能量函数模型。
4.1 两相运动对象分割
在这一小节,限定了运动分割为两相运动分割,也就是分割具有两种运动信息的图像序
列,例如背景静止的运动图像序列,即在静止背景的图像序列中分割出运动的物体。
根据运动分割通用能量函数式(6)可以推出基于光流法与水平集方法相结合的两相运 动对象分割模型的能量函数为:
Q2 = ( fxu2 + f yv2 + ft )2 + λ2 ( ∇u2 + ∇v2 ) , λ1, λ2 > 0
前两项保证分割轮廓线贴近光流模型计算出来的运动物体边缘,第三、四项分别为面积
项和长度项,第五项为惩罚项,保证轮廓线的收敛性,。
本文采用连续能量函数最小值的变分方法求解,则运动分割能量函数的计算过程为以下
割轮廓线贴近分割对象边缘,由于本文根据图像光流场分割运动对象,此项引入 2 节介绍的
H-S 光流计算模型;第二、三项分别为面积项和长度项,保证轮廓线的收敛性,第四项为惩
罚项,避免水平集函数在演化过程中的重新初始化。
H (φ) 和 δ (φ) 函数定义如下:
由于 δε (φ) = H ' (φ) ,可以推出:
1.引言
图像序列中的运动对象分割是计算机视觉和高层次图像分析的基础,许多与图像处理、 视频压缩、模式识别等相关的应用都依赖于运动对象分割。运动对象分割的主要目标是把图 像序列或视频,按照一定的标准分割出具有意义的运动对象实体,在视频监控、视频压缩编 码、交通管理、军事技术、航空航天等领域都有着广泛的应用。
运动对象分割算法一般分为基于帧内分割算法和基于帧间分割算法两大类[1]。基于帧内 的分割算法一般采用传统的图像分割算法,按照一定的信息分割图像中的一致性区域,但它 们的计算量比较大。基于帧间的分割算法一般根据时域信息分割运动对象,如背景差法可以 对一个场景中的运动对象进行分割[2],但它只适用于背景已知的情况;贝叶斯概率统计算法 是另一种常用的运动分割算法,例如Cremers基于贝叶斯概率统计计算的光流场进行运动对 象分割[3],但它分割的光流场为分段常值光流场。
http://www.paper.edu.cn
基于光流法与水平集方法的运动对象分割
郑春艳,潘振宽,魏伟波
青岛大学信息工程学院,山东青岛(266071)
E-mail:yanzi602@yahoo.cn
摘 要: 分析了经典的 Horn-Schunck 光流计算模型、水平集方法与 Chan-Vese 分割模型的原 理,提出了一种基于光流法与水平集方法相结合的运动对象分割算法,目的在于根据图像序 列或视频图像中两帧图片信息分割出具有不同运动信息的运动对象。该算法将 Horn-Schunck 光流模型结合到 Chan-Vese 分割模型中,从而使水平集根据不同对象的不同光流场进行演 化,最终分割出不同的运动对象。本文详细介绍了两相运动分割与两个水平集的多相运动对 象分割能量函数及其计算方法,并进行了相关实验。实验结果表明:该算法能较好地实现图 像序列的运动对象分割。 关键词 光流,Chan-Vese 模型,水平集方法,运动对象分割 中图分类号:TP391.41
假定物体在运动过程中,亮度始终保持不变,即图像序列中运动对象在每一像素点的灰
度值在运动过程中保持不变。根据在 t 时刻与 t +1 时刻两帧之间的亮度常值假设可以表示为:
f (x + u1, y + u2 ,t +1) − f (x, y,t) = 0
(1)
-1-
http://www.paper.edu.cn
Cபைடு நூலகம்V 模型的思想是把图像近似为分段常值的图像 u(x) ,那么 u(x) 定义为:
其中
u(x) = C1H (φ ) + C 2(1 − H (φ)) C1 = average(B φ ≥ 0)
C2 = average(B φ < 0) 基于一个水平集的 C-V 模型的能量函数做如下定义:
E(φ) = α1 ∫∫ B − C1 2 H (φ)dxdy + α2 ∫∫ B − C2 2 (1− H (φ))dxdy + β ∫∫ H (φ)dx + γ ∫∫ δ (φ ) ∇φ dx (5)
但是,对水平集函数进行重新初始化又是相当复杂的。李纯明等[7]在深入研究符号距离 函数性质的基础上,提出了一种新的能量函数项。该能量函数的表达式为:
E
=
∫∫
Ω
1 2
(
∇φ
−1)2
dxdy
(9)
受到上面方法的启发,本文在运动对象分割模型中加上该能量项,从而避免在演化过程
中重新初始化水平集函数的过程,这样便可以大大节省算法的迭代时间,从而使得该模型计
这样对于 u1 和 u2 的约束是非线性且隐式显示。假定位移很小且光流场随时间变化平滑, f (x + u1, y + u2 , t +1) 在点 xp = (x, y,t)T 处一阶泰勒公式展开:
f (x + u1, y + u2 , t +1) ≈ f (x, y, t) + fxu1 + f yu2 + ft
水平集方法处理平面曲线的演化问题不是试图去跟踪演化后的曲线位置,而是遵循一定 的规律,在二维固定坐标系中不断更新水平集函数,从而达到演化隐含在水平集函数中的闭 合曲线的目的。这种演化曲线方式的最大特点是:即使隐含在水平集函数中的闭合曲线发生 了拓扑结构变化(合并或分裂),水平集函数仍保持为一个有效的函数。水平集方法最大的 优势就在于其稳定性和拓扑无关性。
两步:1)由于分割项需要根据不同对象的光流场进行分割,因此首先要计算光流场,而光流 场又需要两个坐标轴方向的运动矢量值,则第一步要计算不同区域的速度矢量;2)本文为水 平集方法与 C-V 模型相结合的多相运动对象分割,则水平集函数在迭代过程中逐渐贴近分 割对象边缘,因此需要计算水平集函数 φ 的演化方程。则,求解式(7)的计算过程为:
的变化为小量。该变化用它们的梯度来度量,即 ∇u1,∇u2 。
本文采用基于连续能量函数最小值的变分方法求解,因此计算光流场的能量泛函为
∫∫ E(u) = (( fxu1 + f yu2 + ft )2 + α ( ∇u1 2 + ∇u2 2 ))dxdy
(4)
Ω
式中的 α 反映数据及约束的信度。当数据本身含有较多噪声时,原始数据的可信度较低,
位置。
对于 δ 和 H 函数做如下的定义:
H
(x)
=
⎧1 ⎩⎨0
if x ≥ 0 if x < 0
δ (x) = d H (x) dx
3.3 水平集函数的重新初始化
在使用水平集方法时,通常把水平集函数初始化成符号距离函数,但是水平集函数在迭 代过程中有可能发生变化,不再保持为符号距离函数了。如果水平集函数变的太平滑或者太 陡峭的话,当进行数字计算时就会出现错误。因此在对水平集函数进行数字计算时,必须要 重新初始化。重新初始化作为一种修正方案是为了保证水平集函数接近符号距离函数,从而 保证数值算法的稳定性。
算速度更快。
4.运动对象分割
通过研究以上内容,本文提出一种运动对象分割算法,目的在于能够分割图像序列或视
频图像中的运动对象。
根据 2 节中的光流计算模型可以得到图像光流场,并且在 3.2 节中提到 Chan-Vese 分割 模型根据演化轮廓线内部和外部的平均灰度值分割图像,本文将光流模型结合到 Chan-Vese 分割模型中,根据不同区域的不同光流信息进行运动对象分割。
Hε
(φ
)=
1 2
⎛ ⎜1 ⎝
+
2 π
arctan
⎛ ⎜⎝
φ ε
⎞ ⎟⎠
⎞ ⎟ ⎠
-3-
http://www.paper.edu.cn
δε
(φ
)
=
1 π
⎛ ⎜⎝
ε
2
ε +
φ
2
⎞ ⎟⎠
当 ε → 0 时, δε → δ , Hε → H 。 基于 Chan 和 Vese 的工作,本文首先表达仅包含一个水平集函数 φ 的两相运动分割能量