徐少飞 刘政怡
(安徽大学计算机科学与技术学院 安徽 合肥 230601)
基于颜色属性的车辆阴影去除方法
徐少飞刘政怡
(安徽大学计算机科学与技术学院安徽 合肥 230601)
颜色属性,即语言颜色标签,可以表示世界中的所有颜色。视频帧图像中的阴影的颜色属性为黑色,因此提出一种基于颜色属性的车辆阴影去除方法。利用概率潜在语义模型学习颜色属性,建立颜色名概率字典,并实现对视频帧图像的颜色名映射,将表征阴影的黑色区域二值化为背景,而非阴影区域二值化为前景。同时,将二值化图与背景差分图进行“与”操作,去除阴影,再去除阴影外边缘的噪声。最后,对其进行先膨胀再连通域填充处理,以得到去除阴影后的车辆目标。实验证明,该方法在一定场景下可以很好地去除阴影,获得相对完整的运动车辆目标。
颜色属性概率潜在语义分析模型阴影颜色名映射
近年来,智能交通系统[1]在人们的生活中扮演着越来越重要的角色,为交通系统的管理提供了更为直观方便的分析手段[2]。运动目标检测是智能交通的一个重要内容,而阴影去除则是精确检测出运动车辆目标的前提。
目前,阴影去除方法主要分为基于模型和基于阴影特征两类。基于模型的方法需要利用光照、运动车辆目标和固定场景等先验知识建立阴影模型。多数情况下,先验知识较难获得,因此该方法具有较大的局限性。基于阴影特征的方法根据阴影的边缘、几何特征及纹理等特征来分离目标和阴影。利用运动前景与对应背景区域的梯度纹理相似性进行阴影检测,相似性越高,阴影的可能性越大,但对纹理相近或物体表面纹理不明显区域得不到有效的检测结果[3,4]。对不同的阴影进行几何分析,以实现阴影去除,需要知道光照的方向和相关辅助线,适应性较差[5,6]。基于边缘信息检测阴影的方法,会留下多个阴影块,难以消除[7]。基于模型的方法虽然可以准确地计算出阴影的形状和位置,但计算复杂,在实际应用中难以实现[8,9]。本文提出一种基于颜色属性的阴影去除方法,该方法通过将颜色属性与背景差分方法相结合以实现去除车辆阴影。该方法主要应用了阴影的颜色属性为黑色的特征,利用颜色属性将阴影映射成背景,并与背景差分方法相结合,将两者进行“与”操作以去除阴影。同时,颜色属性映射只对背景差分检测到的前景区域进行映射,可以大大减少计算代价。本方法在去除较大块的和较深的阴影具有比较突出的效果。
1.1颜色名概率字典
人们通常使用语言颜色标签去表示世界中的颜色,这些语言颜色标签,即颜色属性,也称为颜色名。为了从现实世界中学习各种语言中的颜色名,使用Google图像搜索技术建立数据集,这样可以为每种颜色名检索一定量的图像,从而避免手动为每张图像贴标签。但是,Google检索到的图像有很多错误的正样本,因此采用PLSA[10]模型从这个具有噪声的图像数据集中学习颜色名,以得到每个空间单元属于各个颜色名的概率,形成颜色名概率字典。
假设,用一组给定的图片集D={d1,d2,…,dN}表示文档,一个确定的空间单元集合W={w1,w2,…,wM}表示词集合,词集合用于描述文档,颜色名Z={z1,z2,…,zk}表示潜在语义的集合。在PLSA中,文档d中的一个空间单元w的条件概率可表示为:
(1)
其中,每个空间单元属于颜色名的概率p(w|z)可通过最大期望(EM)算法[10]来估计。
(2)
其中,n(d,w)是文档d中每个空间单元w出现的频度。将式(1)代入式(2)可得:
(3)
通过使用Google检索的数据集训练式(3)以得到每个空间单元属于各个颜色名的概率p(w|z),形成一个颜色名概率字典,其大小为M×k。
1.2颜色名RGB值字典
Berlin等[11]对语言中的基本颜色词进行了研究,发现使用英国语言中的11种颜色名(black、blue、brown、green、grey、orange、pink、purple、red、white、yellow)能够很好地表示现实世界中的各种颜色。
Weijer等[12]为了减小建立颜色名概率字典的代价和保证颜色概率名字典的有效性,为11种颜色名建立了一个32 768(32×32×32)×11的颜色名概率字典。同时,为了减少计算的复杂度,记下每个字典单元属于各个颜色名的概率值最大的那个颜色名的RGB值,形成一个1×32 768的颜色名RGB值字典。其构造方法如下:
rgb[j]=RGBCNj;
for(i=1:32768)
{
max=0;
index=0;
for(j=1:11)
{
if(A[i,j]>max)
{
max=A[i,j];
index=j;
colorname[i]=rgb[index];
}
}
}
其中,RGBCNj表示11种颜色中第j个颜色名所对应的RGB值,并存放在rgb数组中。colorname为颜色名RGB值字典,A为颜色名概率字典,colorname[i]为第i行的A[i,j]最大时,第j列对应的颜色名的RGB值。
1.3映射方程
根据三次样条插值的方法建立映射方程,将每个像素值RGB映射到P字典中。将原图像素值映射成对应的颜色名RGB值。其三次样条插值方程为:
index_im=1+R1/8+32×G1/8+32×32×B1/8
(4)
其中,index_im为颜色名RGB值字典P的列数,R1、G1和B1分别对应原图像像素点的R、G和B的值。
其映射效果如图1所示。
图1 颜色名映射
实验中,通过原图和映射图可以发现,车辆的阴影和车窗颜色较暗的部位全被映射成了黑色,而其他部分则全部映射成了其他颜色名对应的颜色。因此,可以根据颜色名RGB值字典和映射方程找到阴影区域和疑似阴影区域。
2.1基于颜色属性的车辆阴影去除算法流程
首先,采用背景差分法对视频图像进行前景检测,得到前景区域。在原图上,对与背景差分检测到的前景区域的对应区域进行颜色名映射,并对其进行二值化。将二值化图与背景差分图再进行“与”操作,并进行腐蚀、膨胀处理,对大于一定阈值的前景区域设置矩形闭包,去除噪声区域。在“与”图上,设置对应的矩形闭包,并对其进行先膨胀再连通域填充处理,得到去除阴影后相对较完整的运动车辆目标。流程如图2所示。
图2 基于颜色属性的车辆阴影去除方法
2.2背景差分
为了减少要处理的区域范围,寻找感兴趣的区域,实验采用基于混合高斯模型的背景差分方法[13],检测出前景区域。并对其进行二值化,将前景与背景分开。同时,用a×a大小的单元对前景区域进行腐蚀操作,a相对较小。去除车辆边缘及外部较小的噪声,同时必须保证车辆的完整性。其实验流程如图3所示。
图3 前景检测流程图
其对应的核心代码如下:
BackgroundSubtractorMOD2 bg_model;
//建立混合高斯背景模型
for(;;)
{//运动目标检测,更新背景,img为逐帧图像
bg_model(img,foreground,-1);
//腐蚀,element为结构单元
erode(foreground,foreground,element);
}
其中,BackgroundSubtractorMOD2为来自OpenCV开放视觉库的混合高斯函数类模型。
2.3映射二值化
对目标检测的前景区域设置矩形闭包,在视频帧图像上设置对应的矩形闭包区域;对该区域进行颜色名映射,并且对映射后的图进行二值化操作。由于阴影部分被映射成黑色,所以二值化的阈值取0。同时对其用b×b大小的单元进行腐蚀,以孤立减少噪声的影响,b相对较小,避免对车辆区域造成过多腐蚀。其实验流程如图4所示。
图4 映射二值化流程图
其对应核心代码如下:
findContours(foreground,contours,hierarchy,CV_RXTERNAL,
CV_CHAIN_APPROX_SIMPLE);
//寻找轮廓
for( i=0;i //分别对每个轮廓区域进行处理 {rect=boundingRect(contours[i]); //设置矩形闭包 for(i=0;i //roi为原图上与rect相对应的区域 for(j=0;j { index=1+roi.at(i,j)[0]/8+32*(roi.at(i,j)[1]/8) +32*32*(roi.at(i,j)[2]/8); //映射方程 //colorname为颜色名RGB值字典 colorR=colorname.at(0,index)[0]; //寻找对应颜色 colorG=colorname.at(0,index)[1]; //名的R、G、 colorB=colorname.at(0,index)[2]; // B值 roi1.at(i,j)[0]=colorR; roi1.at(i,j)[1]=colorG; roi1.at(i,j)[1]=colorB; } threshold(roi1,roi1,0,255,CV_THRESH_BINARY); //二值化 } 2.4去除阴影 将映射二值化图和背景差分图进行“与”操作,去除阴影。但是,在阴影外边缘会存在较多的噪声未去除,所以用c×c的结构单元对“与”图进行腐蚀操作,进一步减少边缘噪声;再用d×d大小的结构单元进行膨胀,以避免车辆区域因腐蚀而变得过小,c大于d。然而,腐蚀、膨胀处理后,可能还会有一些噪声未去除。手动设置阈值,根据各个前景区域块的面积,保留相对较大的区域,而去除一些剩下的较小噪声,并对大于阈值的区域设置矩形闭包,以去除剩下的噪声。但阈值不宜过大,若过大,可能会导致目标有部分区域丢失,一般在100~200。然后,在“与”图上设置对应的矩形闭包,并对其先用e×e的结构膨胀,其e大于d,以尽可能减少不连通区域的数量;再进行连通域填充,得到相对较完整的运动车辆目标。实验流程如图5所示。 图5 去除阴影流程图 其对应核心代码如下: //“与”操作,roi2为背景差分图上与roi1对应区域 roi1=roi1&roi2; roi1.copyTo(roi3); //保存“与”图 //腐蚀、膨胀,element1和element2为结构单元 erode(roi1,roi1,element1);dilate(roi1,roi1,element2); //寻找轮廓 findContours(roi1,contours1,hierarchy1,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE); if(fabs(contourArea(Mat(contours1[i])))>threshod) //去除噪声 { rect1=boundingRect(contours1[i]); //在roi1区域上设置闭包区域 Mat roi5(roi3,rect1); //在“与”图上设置闭包区域 //在结果图上的闭包区域内设置对应闭包区域,roi4为与原图一样大小的黑色图上与rect1对应的区域 Mat roi6(roi4,rect1); roi5.copyTo(roi6); //保存结果 } 2.5膨胀和腐蚀 定义A和B为二维平面Z2上的集合,集合B平移z后得Bz,若Bz与A相交不为空,所有满足上述条件的z点组成的集合称作B对A的膨胀。被表示为: A⊕B={z|Bz∩A≠φ} (5) 定义A和B为二维平面Z2上的集合,集合B平移z后得Bz,若A包含Bz,所有满足上述条件的z点组成的集合称作B对A的腐蚀。被表示为: AΘB={z|Bz⊆A} (6) 实验采用在Intel(R) Core(TM) i5-2320的CPU,4 GB的内存,系统为Win 7的计算机上进行。开发软件为VS 2010,并结合OpenCV 2.4.6开放视觉函数库。实验图像数据来自实际的公安网,大小为447 MB,分辨率为1280×720,色彩为RGB颜色,光照和噪声为一般情况下的具有较强车辆阴影的一段视频。首先,为了说明基于颜色属性的方法能够将车辆的阴影去除,分析了4辆不同颜色的车辆去除阴影的过程。其实验效果如6所示。 图6 去除阴影的过程 从图6可以看出,(a1)、(a2)、(a3)、(a4)是视频帧图像中出现的不同车辆,在车辆的尾部均具有较大的阴影;(b1)、(b2)、(b3)、(b4)是不同车辆的背景差分图,阴影部分均检测成了前景;(c1)、(c2)、(c3)、(c4)在背景差分的前景区上设置矩形闭包,在原图上设置相应的矩形闭包区域,进行颜色名映射,得到映射图。其中,只对矩形闭包区域进行颜色名映射是为了减少不必要的计算量。(d1)、(d2)、(d3)、(d4)将映射图进行二值化处理,使阴影部分被二值化为背景。(e1)、(e2)、(e3)、(e4)将映射二值化图与背景差分图进行“与”操作,去除阴影,但留下较多的噪声;(f1)、(f2)、(f3)、(f4)对“与”图进行腐蚀操作,以减少噪声,同时对其进行膨胀,以减少目标的腐蚀程度;(g1)、(g2)、(g3)、(g4)为在“与”图上设置分别与(f1)、(f2)、(f3)、(f4)前景区域对应且大于一定阈值的区域,设置阈值是为了去除噪声区域;(h1)、(h2)、(h3)、(h4)是分别对(g1)、(g2)、(g3)、(g4)图进行连通域填充得到的车辆目标;(i1)、(i2)、(i3)、(i4)是分别对(g1)、(g2)、(g3)、(g4)图进行先膨胀再连通域填充所得到的车辆目标,先膨胀是为了减少不连通区域的数目,以保证车辆目标的完整性。 同时,为了证明该方法在视频中同样具有有效性,实验截取视频中的两辆车的逐帧视频和对应的去除阴影后的结果。其效果如图7所示。 图7 实验结果 通过图7中两组车辆的若干帧视频图像车辆去除阴影的结果可以看出,车辆的阴影基本上都已经被去除,且运动车辆都相对较完整。在实验结果(1)中,分别对应第791、792、793、795、799帧,车辆的后轮部分没有完全被处理成前景,主要是因为车轮与背景颜色过于接近,有较大部分被检测成了背景,但通过膨胀操作,车轮的很大部分已经被处理成前景。在实验结果(2)中,分别对应第6167、6169、6178、6180、6183帧,由去阴影的结果图可以看出该组结果相对较好。实验证明,该方法在一定场景下,可以很好地去除视频中车辆的阴影。 由于该方法是基于颜色属性的,所以对实验的主要影响因素是光照和噪声。当光照条件过低时,车身某些部位颜色会变得过暗,颜色名映射将其映射成黑色,从而被视为背景,使得目标的完整性损失较严重。当光照条件较弱时,阴影外边缘出现的颜色较浅的区域过大时,颜色名映射会将其映射成其他颜色,而非黑色,从而产生较大的噪声。当噪声过大时,无法在保证目标完整性的前提下,通过阈值的方法,去除噪声。当光照条件较好时,去除阴影的效果也会较好。 本文针对视频车辆的阴影去除问题,提出了一种基于颜色属性的阴影去除方法。该方法通过将颜色属性与背景差分相结合,利用颜色属性可以将阴影很好地映射成背景和背景差分法可以将阴影检测成前景的不同特点,实现将车辆阴影去除的目标。在视频车辆的阴影去除实验中证明,该方法在一定的环境下能够有效去除阴影,并且保留了车辆的较完整信息。 其在智能交通系统中具有重大的研究意义,主要应用于道路上车速测量,去除阴影后可以通过监控摄像头更加精确地测出车辆的速度,以判断车辆是否超速行驶;通过监控摄像头得到图像,计算在某一时段通过的车辆,去除阴影可以使多辆车因阴影而粘连在一起的现象消除,使车辆计数更加精确;去除阴影后可以更精确地计算出道路上前后车辆之间的距离,以防止车辆过近,导致车辆追尾事故发生。 当然,该方法也存在一定的局限性,由于颜色属性是利用阴影部分接近于黑色,故而颜色名映射将其映射成了背景。所以,当车辆为黑色车辆时,阴影被映射成背景,车辆也会有很大程度被映射成背景,从而无法保证车辆的完整性;另一方面是,实验中车辆的车轮部分有一定程度的损失。这两个方面有待下一步研究。 [1] 王圣男,郁梅,蒋刚毅.智能交通系统中基于视频图像处理的车辆检测与跟踪方法综述[J].计算机应用研究,2005,22(9):9-14. [2] 李斌,史忠科.基于计算机视觉的行人检测技术的发展[J].计算机工程与设计,2005,26(10):2565-2568. [3] 冯文刚,高隽,Buckles B,等.多颜色空间中目标约束的车辆阴影分割研究[J].中国图象图形学报,2011,16(9):1599-1606. [4] 任建强.一种自适应的运动目标阴影消除新算法[J].计算机工程及应用,2010,46(36):188-191. [5] Zhao T,Nevatia R.Tracking multiple humans in complex situations[J].Pattern Analysis and Machine Intelligence,IEEE Transactions on,2004,26(9):1208-1221. [6] Hsieh J W,Yu S H,Chen Y S,et al.Automatic traffic surveillance system for vehicle tracking and classification[J].Intelligent Transportation Systems,IEEE Transactions on,2006,7(2):175-187. [7] 黄英杰,卢湖川.一种改进的运动目标检测和阴影消除算法[J].计算机工程,2008,34(6):207-209. [8] 杨志邦,徐成,周旭,等.一种基于统计模型的前景阴影消除算法[J].小型微型计算机系统,2013,34(2):423-428. [9] Koller D,Daniilidis K,Nagel H H.Model-based object tracking in monocular image sequences of road traffic scenes[J].International Journal of Computer Vision,1993,10(3):257-281. [10] Hofmann T.Probabilistic latent semantic indexing[C]//Proceedings of the 22nd annual international ACM SIGIR conference on Research and development in information retrieval.ACM,1999:50-57. [11] Berlin B,Kay P.Basic color terms:Their universality and evolution[M].University of California Press,1991. [12] Weijer J V D,Schmid C,Verbeek J,et al.Learning color names for real-world applications[J].Image Processing,IEEE Transactions on,2009,18(7):1512-1523. [13] 韩剑辉,崔猛强,袁耀辉.基于混合高斯模型的背景差分法的 FPGA 实现[J].哈尔滨理工大学学报,2013,18(4):89-93. VEHICLE SHADOW REMOVAL METHOD BASED ON COLOUR ATTRIBUTE Xu ShaofeiLiu Zhengyi (College of Computer Science and Technology,Anhui University,Hefei 230601,Anhui,China) Colour attributes,i.e.,the language colour labels,can be used to represent all the colours in the world.The colour attribute of shadow in video frames is the black,therefore we propose a colour attribute-based vehicle shadow removal method.We study the colour attributes using probabilistic latent semantics model,establish colour names probability dictionary,and realise colour names mapping on video frames image.After binarisation operation,the black regions representing the shadows are set as the background,and the non-shaded regions are set as the foreground.At the same time,we process “AND” operation on the binarisation graph and background difference graph to remove shadows and then remove the noises on edges outside the shadows.Finally,we deal with the AND graph in operations of dilation first followed by connected domains filling to get the target vehicle without shadows.Experiments show that the method can remove shadows well under certain scenarios,and can get a relatively intact moving vehicle target. Colour attributesProbabilistic latent semantics analysis modelShadowColour name mapping 2015-04-27。安徽省科技攻关计划科技强警专项资金项目(1301b042020);高等学校博士学科点专项科研基金联合课题(20133401110009)。徐少飞,硕士生,主研领域:图像处理。刘政怡,副教授。 TP317.4 A 10.3969/j.issn.1000-386x.2016.09.0483 实验结果及分析
4 结 语