融合时域和分水岭信息的车辆检测算法

2021-12-21 13:56马庆禄唐小垚
计算机工程与应用 2021年24期
关键词:分水岭时域边缘

马庆禄,唐小垚

重庆交通大学 交通运输学院,重庆400074

随着视频处理技术与运用在交通场景中的不断发展与成熟,通过机器精准识别交通场景中的交通流信息能够为交通优化提供数据支撑。目前的研究成果主要聚集在某些特定场景的分割算法和检测算法[1-4],在复杂的交通环境中具有不适应性。因此,需要在现有研究基础上进一步提高交通量检测的准确率。

现有的分割算法主要有基于帧差法、Canny边缘检测法的图像边缘分割,通过帧差法和全局阈值[5]、局部阈值[6]的图像阈值分割,基于分水岭变换的区域分割算法。Gangodkar等提出利用全搜索绝对差和算法动态自适应阈值检测和分割运动车辆的方法[7],该方法会因动态场景中运动物体而受到干扰,相机的振动和光照条件的变化也会对检测造成影响。Lou等提出利用卡尔曼滤波器和贝叶斯概率准则实现运动车辆的检测与跟踪[8],该算法具有高效性和实时性,但受阴影和光线等影响。Zhang等提出将贝叶斯框架来分类背景和车辆的高斯运动模型,提高了模型的鲁棒性,利用EM算法对模型的参数进行估计[9]。Mech等提出了一种将阈值处理后得到的帧差图像进行光滑滤波降噪的变化区域检测法[10],但是由于只利用了两帧的帧差信息,得到的图像噪声干扰比较明显,时域分割的常用方法有光流场和矢量场估计法等。Rashmi等研究了Prewitt、Robert、Sobel、Marr Hildrith和Canny算子等多种边缘检测技术[11]。通过比较可以看出,Canny边缘检测器在自适应、噪声图像处理、边缘锐化、检测假边缘概率等方面都优于其他所有边缘检测器。空域分割就是根据图像的颜色等特征将图像分割成若干相似区域,然后通过空间聚类形成语义对象[12]。由于分水岭算法具有位置精确、闭合边缘连续、单像素宽度大等优点,已成为人们关注的焦点,但存在着对图像中目标的过度分割问题。时/空域联合算法首先通过时域分割确定图像中的运动区域,最后结合空域分割得到更精确的边界语义信息,得到更精确的边缘分割对象。牛武泽等提出了将运动目标与时空信息融合的检测算法,能够较准确地提取运动目标[13]。李建等提出将多帧灰度差异检测结合高斯聚类再通过小波变换后进行分水岭分割,很好地克服了过分割现象[14]。朱仲杰等提出一种基于时空信息的运动目标提取法,将变化检测信息和形态学分水岭信息进行投影运算得到较为精确目标边缘信息,但不能克服复杂背景运动的情况[15]。

综上,现有的图像分割与检测算法在灵活多变的交通环境运用中不够完善,具有一定的片面性,且计算效率不够高。本文提出一种融合时域和边缘信息的内外标记分水岭的车辆检测算法,首先根据视频流相邻三帧时域变化信息再结合Canny边缘算子得到时域掩模图像,然后运用分水岭空域算法对图像进行分割,最后将空域结果和时域掩膜图像进行融合,以获取图像中的车辆信息。

1 算法思想

算法的原理如图1所示。首先进行时域分割,将相邻视频帧进行差分运算,得到多帧的灰度值差异,运用Canny算法得到当前帧的边缘信息,以消除非运动区域的影响,利用帧差结果融合边缘信息对结果进行形态学优化处理,获取噪声被抑制的时域分割掩膜图像;然后进行空域分割,对当前帧进行二次重构处理和内外区域标记,通过梯度修正和分水岭变换,得到空域掩膜图像;最后将时域分割结果和空域掩膜图像有效的融合,得到最终的车辆检测图像。

图1 算法原理图Fig.1 Algorithm principle diagram

2 算法实现过程描述

2.1 融合边缘信息的时间域运算

2.1.1 时域变化目标检测

运动目标在相邻视频帧中存在位置差异,两帧间差分运算适用于当车辆速度较慢的场景,过快的车速就会导致相邻两帧位置差异过大。当车辆速度较快时,车辆运动轮廓提取不漏缺。因此,本文运用的时域分割就是三帧差分运算,通过图像中当前帧和前后帧的信息进行分割。

设I(x,y,t)为t时刻当前帧,其前后相邻的两帧分别为I(x,y,t-1)和I(x,y,t+1),t时刻相邻两帧作差分运算:

为了后续的运动分析与理解,将Dt,t-1(x,y,t)和Dt,t+1(x,y,t)时域变化融合在一起,从而得到更精准的运动目标D3(x,y,t)。即:

接下来采用均值滤波法对其进行优化处理,以便能清晰地获取目标边缘信息。在计算过程中,阈值T过大会导致消除一些目标边缘信息,过小由会导致降噪较弱,而且场景的光线会不断变化,固定的阈值T无法适应。那么为了能够实时的计算和更新阈值T,本文采用自适应阈值选取法。该方法通常需迭代4至10次,其计算过程为:

(1)求出差分图像Dt,t-1(x,y,t)的最大灰度值Hmax和最小灰度值Hmin,然后求取初始分割阈值T0=(Hmax+Hmin)/2。

(2)将差分图像根据求得的阈值T0进行分割,得到前景图像D1=Dt,t-1(x,y,t)≥T0和背景图像D2=Dt,t-1(x,y,t)<T0。

(3)分别在D1和D2图像范围内计算求得像素灰度平均值,μ1=mean(D1)及μ2=mean(D2),在此基础上,求得新域值T=(μ1+μ1)/2。

2.1.2 边缘信息提取

本文在时域运算中加入Canny边缘检测法以防止亮度和阴影对检测目标的影响,消除不是运动的区域。其操作步骤为:

(1)平滑降噪:本文采用固定滤波器(δ=1)的二维高斯函数对当前帧进行平滑噪声消除。

(2)梯度幅值G(x,y)和梯度方向θ(x,y):将上述降噪处理后得到的I(x,y)用一阶微分算子进行计算,计算公式为:

式中,Gx为x方向的梯度幅值;Gy为y方向的梯度幅值。

(3)非极大值抑制:沿梯度方向θ(x,y),以3×3在梯度幅值图像中点(x,y)邻域内进行插值,将梯度幅值G(x,y)小于θ(x,y)方向上与其相邻的两个插值的点(x,y)记为非边缘点,大于的点(x,y)标记为候选边缘点。

(4)双阈值分割:为了提取图像的边缘信息E(x,y,t),将边缘图像的强边弱边相连。以设定的高阈值Th来和低阈值Ts扫描图像。

(5)优化处理:利用形态学细化Endpoints函数和Bwmorph(E(x,y,t),′thin′)将提取的边缘进行处理,使图像达到高信噪比和低均方差。

2.1.3 融合边缘信息的时域变化

将时域检测得到的图像D3(x,y,t)和Canny边缘检测得到的图像E(x,y,t)相结合,得到剔除了背景影响的初始掩膜检测图像M(x,y,t)。

2.2 基于分水岭的空间域运算

为了精准地提取目标边界,本文引入空域运算。由于常规的空域分割算法分水岭变换经常由于梯度噪声等因素的影响,导致分割效果不理想,计算效率低。因此,本文在原来的分水岭变换之前,先对图像采用灰度级形态学二次重构和内外标记技术进行预处理,然后进行梯度修正,最后再分水岭变换。

2.2.1 二次重构运算

本文采用常用的形态学重构技术[16],通过开、闭运算重构处理图像。

其中:

式中,f为图像f(x,y);g为参考图像g(x,y);b为结构元素;代表重构膨胀运算;⊕代表形态学膨胀运算;代表腐蚀重构运算;Θ表示形态学腐蚀运算;紧接着采用不同尺寸的结构元素b=ones(r)(选用的结构元素是半径为r的“disk”圆盘,r=1,3,5,7,9)进行预处理,采用形态学开、闭混合重构运算处理当前帧I(x,y,t),称为多尺度形态学二次重构运算,计算公式为:

2.2.2 区域标记提取运算

一般的分水岭算法最常见的问题就是会出现过分割问题,而区域标记就是将与检测目标和背景分开标记,避免出现分割与目标不相关的区域,本文采用内外区域标记。

(1)内部区域标记

通过分析前景与背景较大的灰度值差异,计算其局部极大值[17],然后进行内部标记。本文通过计算重构图像的局部极大值并标记,得到局部极大值图像

由于图像背景复杂,标记了很多无关区域,前景标记不准确,噪声影响大。所以本文统计局部极大区域的灰度值与邻域灰度值的差高于高度阈值的极大值区域,消除不相关区域,从而精确地提取前景目标。计算公式如式(11)所示:

为了提取的准确性,对上述形态学操作后得到的图像分别进行内部标记,然后按式(12)计算得到最终的前景标记图。

用像素值1标记该输出图像的前景像素深局部最大区域的位置,用像素值0标记无关区域,标记结果如图2(a)所示并用浅绿色标记前景区域叠加在原图中,如图2(b)所示。由图可知,前景标记清晰。

(2)外部区域标记提取

在获得内部标记Imark(x,y,t)后,必须寻找外部标记符(属于背景的像素)。因此,本文采用通过分水岭变换来标记外部区域。具体计算过程如下:

①二值化阈值变换[18],计算公式为:

②优化处理:对二值化阈值变换后的图像进行腐蚀imerode()操作,然后剔除背景噪声bwareaopen(),最后对图像进行填充imfill()。

③距离变换:计算“骨架影响范围”来“细化”背景,本文采用“准欧式”距离来做变换,其边界像素(a,b)和区域像素(m,n)之间的最小邻域距离公式为:

④最后进行分水岭变换,背景标记IBmark(x,y,t)结果为:

(3)梯度修正

对梯度图像采用内外区域标记,消除过分割问题。其计算过程为:

①计算原梯度:通过对X方向和Y方向通过一阶微分求取振幅,实现图像梯度效果,微分算子一般有Prewitt与Sobel。本文采用Sobel算子计算当前帧梯度图像Igradmag(x,y,t)得到了图3(b)和图3(c)。

②梯度修正:对灰度级梯度图像运用ImposeMin函数进行修改,删除局部最大的区域,保留局部最小区域。整个计算过程如式(16)所示:

式中,Ix为横向梯度图;Iy为纵向梯度图;为修改后的梯度图像,如图3(d)。

(4)分水岭图像变换

为了体现本文改进的分水岭算法的优点,本文通过对不同阶段的图像进行分水岭分割作为对比。首先将重建后的图片直接分水岭变换得到图4(a),其次分割前景标记后的图像得到图4(b)。

可以看出图4(a)分割了一些与目标无关的区域,效果差,且目标区域分割不明显;而图4(b)可以看出背景影响较大,但目标区域比较明显。

图4 图像分割Fig.4 Image segmentation

为结合前景将场景区域分割,将背景标记进行分水岭变换,并进行内外标记得到图5。

图5 背景标记分割Fig.5 Background tag segmentation

图5 (a)为背景标记分割结果,图5(b)为内外标记结果,可以明显地看出目标区域。

2.3 时空结合提取运动目标

空域运算得到的图像目标区域还受背景影响,无法从图中单独提取出来,因此需要融入车辆运动信息。时域运算获得的图像车辆运动信息完整。因此本文将空域和时域分割相结合,弥补两者运算的不足。时空融合过程为:

(1)将时域分割得到的初始运动掩膜图像M(x,y,t)与空域分割后的图像L(x,y,t)进行投影运算[19],得到最终的掩膜图像F(x,y,t),如式(18)所示:

式中,Li为空域分割产生的任一区域,NLi为Li的大小,th为经验阈值,通常取0.6~0.7。

(2)边缘信息修正:对图像F(x,y,t)利用形态学修正,将图像的边缘细化处理,填充目标区域,去除一些孤立点,得到最终车辆检测图像Z(x,y,t),先对图像F(x,y,t)进行膨胀处理得到W(x,y,t),然后融合边缘检测得到的图像E(x,y,t),具体过程如下所示:

3 实验结果

实验采用重庆市学府大道某路口监控视频来验证本文算法的检测效果。相关实验的软硬件平台:Intel Core i5处理器,2.50 GHz,8 GB内存的计算机,操作系统为Windows 7,Python3.6.5,OpenCV3.4.2,PyCharm2017.1,MATLAB。首先将本文提出的算法与目前的常规运算方法做了对比实验。然后将本文提出的分割算法运用到平面区域的单向车辆进行检测。结果如下所示。

3.1 分割算法比较

(1)时域分割算法:采集视频中的第83、84、85帧,84帧记为当前帧,用Canny算子运算得到图6(g),然后对83、84、85帧图像用帧差法进行运算并融合图6(g)得到图6(h),最后是融合边缘信息的帧差法如图6(i)。

图6 时域分割算法对比实验Fig.6 Contrast experiment of frame difference

可以看出本文方法有效地抑制了大部分帧差法和边缘检测法中的明显的背景噪声和重影,目标区域信息完整,只是还受微弱的噪声影响。

(2)空域分割算法:实验中采用了几种不同的分割算法,算法效果对比图如图7。

本文采用的分水岭分割算法能够抑制传统的分水岭算法和平滑梯度分水岭算法两种算法的过分割现象,目标区域分割明显,车辆边缘相互独立,只是丢了一些内部轮廓,本文算法明显优于其他两种。

(3)融合算法:将时域分割算法得到的图6(i)和空域运算得到的图7(c)相融合,得到图8(a)。

图7 分水岭法的对比实验Fig.7 Contrast experiment of watershed

从图8可以看出,对当前帧采用时空融合运算比单独的对图片进行时域分割算法和空域运算效果要好,车辆外部边缘清晰、独立,内部轮廓比较完整。图8(d)是为了得到更好的效果,对得到的融合图像进行了优化处理后,最终得到的当前帧车辆检测图。

图8 本文算法的实验结果Fig.8 Experimental results of proposed algorithm

3.2 实验结果分析

为了评估本文算法的效率与实时性,引用tic/toc函数记录每一帧图像的处理时间,tic表示计时的开始,toc表示计时的结束。经过统计,最长时间、最短时间、平均检测时间分别为0.57 s、0.38 s、0.43 s。通过合理的间隔取样,本文的检测算法效率较高,并且能够保证实时性。

由第84帧图像的检测结果,单帧图像识别车辆为4,实际车辆为4,可以得到该帧图像中的车辆全部被检测到,但为了避免单帧图像检测具有的偶然性,用本文算法将获取的7 km监控视频按15 min为一个时间段进行了视频取样,在此基础上分别采用机器、人工对道路上的车辆进行计数,图像检测返回结果如图9。

图9 车辆检测计数Fig.9 Vehicle detection count

通过统计4个时间段交通的流量,得到机器预测与实际情况的偏差,以得到机器检测交通流的真实效果。统计结果如表1。

表1 7 km视频车流量统计Table 1 Statistics of seven-kilometer video traffic flow

由表1可以看出本文提出的车辆检测算法的平均漏检率仅为4.90%,有效地降低了由于背景噪声和阴影带来的车辆检测误差。

4 结论

本文提出了一种融合时域和空域的车辆检测算法,在保证高效、实时的同时,能够准确地提取快速运动的车辆。通过时域检测中三帧差法与边缘检测法相结合,提取车辆的边缘信息,抑制了背景噪声和阴影对目标区域的分割影响。再结合空域运算提取的独立的车辆外部轮廓,解决了过分割问题。

本文方法的局限性在于:当车辆密度大时,视觉上出现车与车之间信息重叠,尤其是大型货车与公交车,导致检测误差,下一步研究将解决运动车辆信息重叠,在本文算法的基础上继续改进,将运动物体分开,提高算法的检测精准度。

猜你喜欢
分水岭时域边缘
2019,一定是个分水岭!
基于时域信号的三电平逆变器复合故障诊断
一张图看懂边缘计算
基于极大似然准则与滚动时域估计的自适应UKF算法
基于时域逆滤波的宽带脉冲声生成技术
基于时域波形特征的输电线雷击识别
“华北第一隧”——张涿高速分水岭隧道贯通
分水岭
不同类型脑分水岭梗死与脑动脉狭窄或闭塞的相关性研究
在边缘寻找自我