改进CV模型的单帧图片阴影边缘检测

2020-05-12 12:02王淳
现代计算机 2020年10期
关键词:锚点轮廓阴影

王淳

(四川大学计算机学院,成都610065)

0 引言

阴影是大多数室外场景中常见的现象,在实际的图像处理中会带来许多问题。在图像分割中,阴影边界可能与真实物体边界混淆。在运动估计中,光流的计算容易受到阴影引起的光照变化的影响。在监控中,由于阴影的影响,可能会跟踪错误的目标。因此,在计算机视觉领域,阴影检测是一项非常重要且有意义的工作。

目前,单帧图片的阴影检测已经有许多成熟的方法。从技术角度出发,这些方法大体上可以分为两类:基于物理模型的阴影检测和基于阴影特征的阴影检测。基于物理模型的阴影检测方法是指通过先验信息,如光照、场景信息、运动目标等,建立阴影模型,从而实现对阴影的检测。Xiong等人[1]使用Retinex增强算法分别处理图像中的阴影区域和非阴影区域,通过在阴影边缘强制添加平滑光和引入阴影边缘遮罩,降低了阴影去除过程中阴影边缘的影响。Tian等人[2]基于图像形成理论,推导了描述阴影与其非阴影背景之间衰减关系的三色衰减模型(TAM)。根据普朗克黑体辐照度定律,利用太阳光和天光的光谱功率分布(SPD)确定TAM的参数,提出了一种基于TAM的多步阴影检测算法。基于阴影特征的阴影检测是根据阴影区域和非阴影区域的特征,如亮度差、梯度、纹理等,训练分类器,从而识别出阴影与非阴影。

近年来,结合阴影特征,通过机器学习等方式来检测阴影与非阴影的方法得到了越来越多的关注。2010年,Zhu等人[3]讨论了从单色自然图像中识别阴影的问题。从光照、纹理和梯度特征出发,训练分类器从而提升决策树,并集成到一个条件随机场中,增强像素标签的局部一致性。2010年,Lalonde等人[4]假设室外场景中构成地面的材料类型相对有限,建立了一个由三层过程组成的检测器,包括在一组围绕每个图像边缘计算的阴影敏感特征上训练决策树分类器、基于条件随机场的优化以对检测到的阴影边缘进行分组从而生成相应的阴影轮廓以及合并任何特定训练的分类器来检测图像中的地面。2013年,Guo等人[5]提出了一种基于区域的方法,预测分割出来的不同区域之间的相对光照条件,并按对进行分类。2016年,Tian等人[6]通过验证Canny边两边的像素值是否满足由阴影特性导出的三个阴影验证准则,将边缘分为阴影边缘和非阴影边缘。

除去传统的阴影检测方法,水平集方法在医学图像分割、边缘检测等方面有很大的应用,是目前非常受关注的研究方向,而活动轮廓模型是此方法中典型的模型之一。活动轮廓模型是一条能量递减曲线,分为基于边界和基于区域两类,总体的目的都是通过演化轮廓使得内部能量和外部能量之和最小,从而让演化轮廓最终停止于目标边缘附近。1989年,Mumford等人提出了Mumford-Shah模型(即MS模型)[7],这是一种基于区域的模型。2001年,Chan等人简化了MS模型,提出Chan-Vese模型(即CV模型)[8]。

但是,水平集方法多用于医学图像等灰度图的分割。王斌等人[9]提出了一种基于图像边缘和区域信息的先验水平集图像分割方法,有效地分割出图像中的目标。朱晓舒等人[10]提出了一种新的基于凸优化的自适应CV模型,有效地提高了分割效率。薛维琴等人[11]提出一种耦合了血管影像的几何信息、边缘信息和区域信息的水平集分割方法,在分割严重灰度不均匀的血管造影影像上能够准确提取血管,并精确定位血管边缘。

本文基于传统的Chan-Vese模型,引入了形状模板和锚点,将水平集方法应用于单帧彩色图片的阴影检测,克服了传统CV模型仅仅依赖灰度进行演化并且容易陷入局部最优的问题,得到了较为准确的阴影边缘。

1 传统CV模型

2001年,Chan和Vese简化了MS模型,对演化过程中的曲线进行了平滑约束,提出了CV模型。该模型在原来的能量函数的基础上,添加了长度项和面积项,CV模型的能量函数如下:

其中:λ1,λ2>0,ν≥0(一般取λ1=λ2=1,ν=0);边界C将图像划分为outside(C)和inside(C)两块区域;c1和c2分别是演化曲线C内部和外部的灰度均值。通过计算内部区域图像灰度值与常数c1的平方误差以及外部区域图像灰度值与常数c2的平方误差,驱使曲线向目标边缘演化。能量函数的第一项和第二项为拟合项,负责使曲线C向目标轮廓演化;第三项是长度项,使获得的能量曲线足够短和光滑。

构建好能量泛函之后,通常采用水平集方法来使得能量函数最小化。将曲线C用水平集函数ϕ(x,y)代替,当点(x,y)在曲线 C 内部时,ϕ(x,y)>0;当点(x,y)在曲线 C外部时,ϕ(x,y)<0;当点(x,y)恰好在曲线 C上时,ϕ(x,y)=0。于是:

其中:H(ϕ)是海氏(Heaviside)函数。演化曲线C内部和外部的灰度均值c1和c2的计算公式如下:

通过求解公式(2)对应的欧拉-拉格朗日方程,得到如下的演化方程:

2 改进CV模型

2.1 形状模板

在传统的活动轮廓模型常应用于的场景中,由于往往是对医学图像等灰度图进行图像分割或者边缘检测,因此CV模型可以得到较好的结果。但在单帧彩色图片的阴影检测中,由于场景的复杂性,阴影往往会落于多种不同材质上面,从而使得待检测的阴影被分为亮度差异较大的几部分,在这种情况下,传统的CV模型的效果会变差甚至失效,因此,本文加入了形状模板约束,使得演化轮廓的过程受到该因素的影响。

形状模板约束的能量函数的定义方法有许多种,最常见的分为单目标和多目标两种。对于单目标的形状先验模型,可表示为,但计算复杂度较高,需要针对每一个像素点,分别去计算它们到形状模板轮廓的最小值,不适用于在很多场景中都要求计算效率的阴影检测工作。文献[12]提出了一种新的表示形式,给每个像素分配一个该像素位于形状内部的概率,一定程度上解决了上述方法的问题。形状概率的表示形式如下:

该方法计算复杂度较低、表示形式简单,因此,文章采用该方法来设定形状模板。形状约束的能量函数如下:

求导后得到添加形状先验模板的CV模型:

图1是添加形状模板前后的效果对比。

图1

2.2 锚点

锚点限制项是由Ukwatta等人[13]提出的,文章采用此项能量,在细节方面进一步提升阴影检测的准确率。添加锚点项后的效果如图2所示。

图2

从图2中可以看出,增加了锚点项后,结果会在细节上更加准确。实际上,锚点项的作用就是在锚点附近产生一个吸引力,使得演化轮廓的过程中一定会经过预先设定的锚点。锚点项的定义为:其中NA是锚点的个数,Ai(x)是一个以锚点xi A为中心,rA为半径的圆形区域:

从(8)、(9)两式可以看出,由于活动轮廓模型的最终目的是使得内外能量之和最小,因此若要使得锚点项的能量最小,当演化轮廓在一个锚点半径rA的范围内时,就会受到锚点的吸引力,使得演化轮廓经过锚点。当演化轮廓经过所有的锚点时,锚点项的能量便达到最小值。

3 更多例子的效果

首先是一组草地上的例子,见图3。

图3

由图3可以看出,在形状模板结果已经很准确的情况下,便没有必要添加锚点。

如图4,形状模板有效地控制了演化轮廓,而添加锚点项后,细节部分更为精确。

图4

如图5所示,当阴影位于不同材质的区域使得同一个目标的阴影分为亮度差异较大的几部分时,形状模板的作用便会减弱,此时添加锚点有助于吸引演化轮廓经过锚点,从而得到较好的结果。

图5

4 结语

本文提出了一种改进的CV模型,通过添加形状模板约束和锚点约束,实现了单帧彩色图片的阴影检测,特别是解决了当阴影由于材质原因分为亮度差异较大的几部分时的问题。单帧图片的阴影检测已经有许多成熟的方法,本文舍弃传统的阴影检测方法,从水平集这个角度切入,得到了较好的结果。

该方法的不足之处在于,形状模板和锚点的特殊性使得该方法处理视频中的阴影检测问题时需耗费大量的人力以及时间,因此不适用于对视频的阴影检测。在后续的工作中,将重点解决形状模板的初始化以及锚点设置的问题,从而使得该方法可以进一步应用于视频中的阴影检测。

猜你喜欢
锚点轮廓阴影
基于自注意力机制与无锚点的仔猪姿态识别
艺术史研究的锚点与视角
——《艺术史导论》评介
基于启发式候选区域推荐的目标孪生跟踪
你来了,草就没有了阴影
5G NSA组网下锚点站的选择策略优化
跟踪导练(三)
阴影魔怪
儿童筒笔画
姚明受伤让08奥运蒙上阴影