运动图像的分割是物体基视频编码系统中不可缺少的重要部分。运动图像的分割目的是把图像帧中的对象同背景分割开来。同一物体的各部分往往具有一致的属性:空间属性与时间属性, 这是运动图像分割算法的物理依据。

时间域分割是根据运动信息的均一性来划分区域和估算图像的运动场, 并将具有相似运动的区域聚类, 检测相邻帧间的运动区域。空间域分割是利用视频对象的一些空间特征信息, 如颜色、亮度、边缘、纹理等特征进行分割。将时域分割与空域分割结合能达到满意的结果, 最近提出的视频分割算法基本是时空结合的, 如文献[1]

笔者提出了一种灵活多变的时空结合的运动对象分割方法 (流程见图1) , 分割效果较好, 计算复杂度低, 减少了处理时间, 运用灵活。

《图1》

图1 算法流程图

图1 算法流程图

Fig.1 The algorithm procedure

《图2》

图2 时域分析流程图

图2 时域分析流程图  

Fig.2 The temporal segmentation procedure

《1 运动图像的分割算法》

1 运动图像的分割算法

《1.1 预处理阶段》

1.1 预处理阶段

首先应该对运动图像进行平滑滤波以消除图像中内在噪声的影响。为了消除图像全局运动的影响, 还应进行全局运动的估计与补偿 (略) 。

《1.2 利用时域信息求运动区域》

1.2 利用时域信息求运动区域

算法的基本思想仍然是变化检测 (见图2) 。首先通过三幅二次帧差图像与运算得到某帧的运动信息, 对其阈值化, 得到帧差掩模图像, 然后进行二次扫描得到时空结合所需的运动区域。

1.2.1 二次帧差

帧差图用来反映两帧图像之间的变化, 假设图像的背景是静止的, 则该变化是由于对象的运动产生的, 是对象的运动引起运动区域内部像素点的灰度值变化。

二次帧差是利用相邻的两幅帧差图像的交集检测中间帧的运动信息的方法 [2]。用这种方法检测运动区域, 可以较好地避免由于遮挡与显露关系而将背景区域错判为运动对象区域, 或者将运动对象区域错判为背景区域, 同时有助于抑制随机噪声的影响。实际上, 连续图像帧中的运动区域一般都存在重叠如图3所示, 并不单纯像图3a那样。仅使用一幅二次帧差图是难以得到准确的某帧的运动区域, 因为针对图3b, 实际得到的还有Ⅰ和Ⅲ的交集部分, 因此, 在得到多个二次帧差图后求与, 以减小不必要的重叠部分。多次实验证明, 使用三幅二次帧差图能得到满意结果。

《图3》

图3 二次帧差图

图3 二次帧差图  

Fig.3 Twice frame difference

1.2.2 运动区域

为消去图像中内在噪声产生的帧差图像非零差值, 需要进行阈值化处理:

Ζ(k,k-1)={1if|FD(k,k-1)|>Τ0else(1)

其中Z (k, k-1) 标记场, 即帧差掩模图像;FD为帧差图像;T是二值化所需的阈值, T的选取与拍摄视频设备有关, 对于不同的视频序列, 阈值要进行一定的调整。

在运用到包含运动对象的运动图像中时, 文献[2]中使用LHS方法可以递归, 即时地确定阈值。文献[3]指出, 这种LHS方法利用了鲁棒统计 (robust statistics) 的原理, 并且具有50%的失效点。实际上, 50%的失效点是最佳值, 因为有误部分再多的话, 就难于评价样本的好坏。

为了改善阈值计算的鲁棒性, 用于计算的数据是从图像对的左、右和上边带部分取得的。当摄像机静止时, 这些边带的数据中含有运动对象的可能性很小, 这些区域内的属于运动对象的像素, 在利用LHS方法时被作为离群点滤除。在自适应阈值计算中这种方法保证了计算得到的阈值是从图像对中所能得到的最佳阈值。

对运动区域进行阈值化, 可以得到变化检测掩模 (frame difference mask) 。帧差掩模图像中为1的像素对应图像中的运动部分, 0则对应图像中的背景部分。但由于噪声等因素的影响, 此时的掩模并不是一些完整的区域。对于一些孤立的点, 可以采用形态学的开、闭运算予以去除, 然后再经过扫描填充就可以得到完整的运动区域。

为得到准确的运动区域, 使用二次扫描方法。对掩模图像按行扫描, 得到每行的第一个和最后一个属于运动区域的像素, 两者之间的像素属于运动区域, 用灰度值填充这些区域得到水平方向上的候选分割区域。为了消除按行扫描得到的运动区域的不精确, 再按列扫描, 同样可以得到一个垂直方向上的候选分割区域。将两候选分割区域进行与操作, 即可得到分割的运动区域掩模, 用1表示。这样得到的运动区域是完整准确的。

《1.3 利用空域信息求图像边缘》

1.3 利用空域信息求图像边缘

空域分割是借助于像素点的强度将一帧图像分成多个强度均匀的区域。分水岭算法是最常用的方法之一, 但它对图像强度梯度噪声特别敏感, 容易导致过度分割, 计算耗时较长。为了克服分水岭算法带来的缺陷, 人们在尝试改进或者优化其算法 [4,5]。尽管如此, 要取得满意的结果也并非易事。

笔者采用形态梯度算子

gradf=(fg)-(fg)(2)

来求边缘, 其中f是原始图像, g为结构元素, ♁和⦵分别表示膨胀和腐蚀操作。形态梯度处理后, 图像中的物体边缘附近的像素点的强度得到提升, 非边缘的像素点的强度被压抑, 从而使图像中的边缘能完整、较好地分割出来, 如图4所示。这种方法比用Canny算子得到的边缘更连续、更完整。图4c与图4d为两种方法分割边缘的效果对比。

《图4》

图4 时域分割与空域分割效果图

图4 时域分割与空域分割效果图  

Fig.4 Temporal and spatial segmentation results

《1.4 时空结合》

1.4 时空结合

由时域信息得到的运动区域是完整的, 但其边缘并不精确。由时域分割得到的运动区域是准确的, 将空域分割求得的边缘向时域分割的运动区域上投影, 可以有效去除图像中静止背景部分的边缘并保留较好的运动对象的边缘。由图4e可见, 得到的边缘图像是准确的, 而边缘部分是连续完整的。将此边缘图像利用前面所提到的二次扫描方法填充, 即可得到完整的运动对象掩模。最后对运动对象掩模进行原值填充, 得到最后的分割对象。

《2 算法的灵活应用及仿真实验》

2 算法的灵活应用及仿真实验

《2.1 算法的灵活使用》

2.1 算法的灵活使用

2.1.1 二次帧差法的灵活使用

1) 背景简单

对于背景简单的视频帧, 可用文献[2]中的一幅二次帧差的方法 (见图5) , 不必采用二次帧差图求与的方法, 以减少处理时间, 同时也可以保证分割质量。

《图5》

图5 演讲序列实验结果

图5 演讲序列实验结果  

Fig.5 Results of speech sequence

2) 背景复杂

对大多数背景较复杂的视频序列, 一幅二次帧差方法是不适用的。用二次帧差图求与方法可去除一幅二次帧差方法带来的不准确。

由仿真图6可以看出, 图6g分割结果较好, 在一般情况下, 推荐采用三幅二次帧差图像求与后作为运动区域的最初结果。

《图6》

图6 采访序列实验结果

图6 采访序列实验结果  

Fig.6 Results of interview sequence

2.1.2 时域分割方法的灵活使用

算法中采用了时域信息与空域信息相结合的方法。但是, 在背景较为简单的情况下, 可以利用1.2节中得到的运动区域作为运动对象掩模, 并对该掩模进行原值填充, 得到最后的分割结果, 省去利用空域信息求边界阶段。结果见图7, 分割图像存在着边界不够精确的现象, 但是基本能够满足基于内容的应用需要, 所求运动区域是精确的, 能够将背景有效剔除。

《图7》

图7 Toy Vehicle序列第4帧实验结果

图7 Toy Vehicle序列第4帧实验结果  

Fig.7 Results of the 4th frame of Toy Vehicle

《图8》

图8 Toy Vehicle序列第5, 6, 8帧的分割结果

图8 Toy Vehicle序列第5, 6, 8帧的分割结果  

Fig.8 Results of the 5th, 6th, 8th frame of Toy Vehicle

《2.2 时空结合的分割算法仿真实验》

2.2 时空结合的分割算法仿真实验

使用Matlab 6.1在PⅢ, 500 MHz的平台上对本算法进行测试:利用形态梯度算子求边缘比一般的分水岭算法或Canny算子法速度提高了3~5倍。与文献[6]中仅利用空间信息进行初始分割相比, 在运行速度上提高了约4倍, 可见其运行时间上的优越性;而且分割结果较好。实验中阈值T取3, 考虑到边缘一般为曲线, 采用圆形的形态结构元素, 大小为3×3或5×5。值得一提的是, 当背景较为简单时, 仅使用一幅二次帧差图即可得到满意的运动区域, 而无须采用三幅二次帧差图求交集将会大大减少运行时间。部分实验结果见图8。

《3 结论》

3 结论

所提出的算法可以根据实际情况灵活多变, 快速准确。首先在时域分割中采用二次帧差求交集的方法, 缩减了计算量, 对于运动区域的定位和分割相当准确。其次在空域分割过程中仅采用形态梯度算子求边缘, 克服了分水岭法带来的缺点, 在准确分割边缘的同时为进一步提高运算速度提供了条件。虽然对于背景复杂的视频序列, 算法在时域分割中可能需要对多帧图像存储进行比较, 会造成一定的延时, 但是, 两三帧的延时相对于整个分割过程是微不足道的, 并不影响算法的速度。

从实验中可以看出, 该算法对于头肩型运动图像效果较好, 并且具有一定时间上的优势。