彭 博,蔡晓禹,周 涛,李少博,张有节,段连飞
(1. 山地城市交通系统与安全重庆市重点实验室,重庆 400074; 2. 重庆交通大学 交通运输学院,重庆 400074;3. 城市交通管理集成与优化技术公安部重点实验室,安徽 合肥 230088; 4. 重庆市交通规划研究院,重庆 401147;5. 安徽科力信息产业有限责任公司,安徽 合肥 230088)
城市智能交通系统建设的基础和关键在于交通信息获取。目前,传统交通信息的检测方式有感应线圈、地磁设备、超声波、视频卡口和浮动车等,这些检测方式可有效提取占有率、流量、速度等交通信息,在城市交通系统中得到了广泛应用。但是,这些方式却难以从广域视角直观地提供路网连续交通流信息。
2002年,美国运输署和国家航空航天局开展了专项研究,结果显示无人机在交通监控管理领域具有较好的可行性[1]。由于小型无人机具有检测区域广、经济成本低、不干扰地面交通、可检测多种交通参数等优势,受到了美国[1]、德国、俄罗斯[2]、韩国及中国[3]等国家管理部门和研究院所的重视,并开展了一系列研究,包括无人机路径规划[3]、交叉口监测[4]、交通参数提取[5]和交通事件检测[2,6]等。研究结果表明:利用无人机采集交通视频,在交通信息采集、城市交通监测等方面具有很大潜力,但同时也面临车辆识别难、计算量大等挑战。
无人机交通监控与信息采集关键在于无人机视频车辆检测,目前学界对航拍视频/图像的车辆识别已有一定研究积累,例如:K.KOZEMPEL等[7]利用多个形态边缘滤波器来快速识别航拍图像的车辆;CHENG Penggen等[8]通过背景消除和背景配准技术来识别无人机视频车辆;刘慧等[9]针对背景像素移动提出了SURF特征稳像和光流法向量相结合的方法来解决低空视频车辆检测;C.L.AZEVEDO等[10]采用中值背景差分法来识别无人机视频车辆;张新[11]利用背景差分法来识别无人机视频车辆,并在此基础上提取交通信息、标定城市道路车辆跟踪模型;YU Xinran等[12]根据显著性信息和Haar-like局部外形特征,建立了遥感图像车辆检测方法。这些方法均是基于背景差分和Haar-like、Harris角点、HoG、SURF、SIFT等图像特征来进行车辆识别。
总而言之,专门针对无人机视频的车辆检测研究还处于起步发展阶段,相应的定量评价分析研究也较少。此外,无人机视频场景广而复杂,现有的车辆检测算法适用性也有所不足,检测准确率和全面性有待于提高。故笔者提出了一种新的基于形态分析的无人机视频车辆自动识别方法,并基于548帧图像进行了系统的测试与分析。
笔者以边缘检测图像为基础,基于候选目标图像的骨架形态特征和区域形态特征进行车辆识别。所采用的视频数据由无人机悬停于道路正上方100~200 m处、摄像机镜头垂直向下拍摄,视频分辨率为3 840 px × 2 160 px(宽×高)。算法基本流程如图1。其步骤如下:
1)图像预处理。人工勾勒出感兴趣区域(ROI, region of interest),并对图像进行灰度化处理可获得ROI灰度图像;
2)图像骨架分析与处理。检测ROI灰度图像边缘并据此生成图像骨架,然后将骨架图像分解为直线和曲线单元,最后根据邻近性原则进行重连接。该步骤生成重构骨架图像,可增强候选目标图像结构的封闭性、连续性和完整性。
3)基于区域形态分析的车辆识别。填充重构骨架图像的封闭区域,利用膨胀和腐蚀操作、基于矩形度、面积、外接椭圆轴长等阈值规则识别车辆。
图1 算法流程Fig. 1 Algorithm flowchart
随着无人机云台和减震技术不断发展,经主/被动减震处理,悬停拍摄的无人机视频能较好地避免抖动现象,因此悬停无人机视频的广域场景相对稳定。由于车辆识别时仅需针对一定道路范围进行处理,因此有必要通过人工勾画出ROI,后续检测工作只需对该区域展开运算,进而降低减少运算量、节省运行时间,也可改善检测效果,如图2。
图2 ROI勾画Fig. 2 ROI sketching
根据既有视频和图像识别研究的常见做法,笔者将彩色图像转化为灰度图像,后续步骤针对灰度图像ROI展开边缘检测、骨架重构和区域形态分析处理。灰度图像如图3,其中的矩形线框范围为ROI。
图3 灰度图像Fig. 3 Grayscale image
对于视频图像目标检测而言,边缘信息提取可大幅度地减少数据量,剔除大部分无关或弱相关信息,保留图像结构属性,因此许多研究均以边缘特征进行目标识别。文中算法以Canny边缘检测图像为基础,提取、分解和重构图像骨架,为车辆识别奠定基础。
3.1.1 Canny边缘检测
Canny边缘检测算法是一种广泛应用的经典边缘检测算法。该算法主要思想和步骤为:① 应用高斯滤波消除图像噪声;② 通过Sobel算子卷积获得图像梯度强度与方向;③ 应用非极大抑制技术(non-maximum suppression)保留每个像素点上梯度强度的极大值,而删掉其他的值;④通过双阈值技术界定弱边界和强边界,并进行边缘连接处理、形成边缘图像。
以图3灰度图像为例,对ROI进行Canny边缘检测,获得边缘强度图像;然后利用简单阈值分割法或OTSU分割法,得到二值边缘图像,如图4。
图4 边缘强度和二值化边缘Fig. 4 Edge amplitude and binary edges
3.1.2 生成亚像素级骨架图像
为对ROI边缘图像的骨架图进行分解和重构,需生成亚像素级骨架图像。亚像素(sub-pixel)的概念如图5,每个物理像素可以分为m×m个亚像素,用数学插值算法可计算每个亚像素值,通过亚像素图像处理可更大限度利用图像信息。
图5 亚像素Fig. 5 Sub-pixel
ROI边缘图像中的线条宽度为1px。图5中:每个像素的中心亚像素相连即可构成亚像素骨架。以图4中ROI边缘图像左上角第1个候选车辆区域为例,其亚像素骨架生成如图6。
图6 亚像素骨架生成Fig. 6 Generation of sub-pixel skeleton
利用Ramer多边形逼近算法[13]将亚像素骨架分解为直线段或弧线段,其主要步骤为:① 沿边界分配若干点作为初始点,按顺序连接初始点形成初始多边形;② 在任意两相邻断点之间,沿着骨架曲线段找到距离两断点连线的垂直距离最大的点,若该距离d>d1,那么把这一点作为新的断点继续分割;③ 不断进骨架分解,直到全部满足阈值条件d≤d1;④ 设定阈值d2(d2 图7 骨架分解Fig. 7 Skeleton decomposition 步骤①~③骨架分解算法伪代码如下,第④步与之类似,此处不再赘述。 算法1:图像骨架分解算法(“←”表示赋值) ①:int SkeletonNum←骨架图像的曲线数量; ②:intd1←距离阈值; ③:For inti=1 to SkeletonNum; ④:Curve[i]←第i个骨架曲线; ⑤:InitPt[ ]←Curve[i]的初始断点集; ⑥:Line[ ]←任意初始断点形成的线段集; ⑦:maxDist←Curve[i]与∀ Line最大垂直距离; ⑧:pTemp←Curve[i]上产生maxDist的点; ⑨:If maxDist>d1; ⑩:从断点pTemp分割Curve[i]; 根据骨架分解结果,对于任意相邻骨架曲线,若其端点距离小于阈值d3,则连接这两个端点,处理结果如图8。由图8可看出:通过骨架连接处理,能有效增强候选目标图像结构的封闭性、连续性和完整性,有助于车辆识别。 图8 骨架重构过程Fig. 8 Skeleton reconstruction process 由于骨架连接结果仍为亚像素级图像,为便于开展后续车辆识别工作并降低运算成本,还需将其还原为像素级图像(图8)。根据图4中的 ROI边缘图像,处理后得到的像素级骨架图像如图9。 图9 骨架重构图像Fig. 9 Reconstructed skeleton image 主要利用膨胀、腐蚀、填充、闭运算这4种形态学算子对骨架重构图像进行处理,同时结合连通域的面积、矩形度、等效椭圆长短轴等多种形态特征提取车辆目标。 膨胀利用t×t的结构元素使目标区域边界向外部扩张,可用来填补图像区域的部分空隙。腐蚀与膨胀相反,是利用t×t结构元素使目标区域边界向内部收缩,从而消除尺寸较小且无意义的物体。先膨胀后腐蚀的过程称为闭运算,可用来填补物体内细小空洞、连接邻近物体、平滑边界。填充则是将轮廓包围的区域全部充实,以消除物体内部的空洞和间隙,如图10。左图为中图的腐蚀效果,反之,中图为左图的膨胀效果,而右图为中图的填充效果。闭运算效果如图11。 图10 腐蚀、膨胀和填充Fig. 10 Erosion, dilation and filling 图11 闭运算Fig. 11 Closed operations 在图像中,像素是最小单位,每个像素周围有8个邻接像素,常见的邻接关系有2种:4邻接与8邻接。4邻接有上下左右4个邻接点;8邻接有8个邻接点,包括了上下左右及对角线位置的点,如图12。 图12 4邻接和8邻接Fig. 12 4-neighbourhood and 8-neighbourhood 根据4邻接或8邻接关系,彼此连通的像素点形成区域称为连通域。在图像处理中,常常对连通域展开计算分析,以达到图像分割、噪声去除和目标识别等目的。笔者基于8邻接关系建立连通域,并展开面积、矩形度和等效椭圆长短轴等形态特征计算分析。 1)面积S:连通域所含像素总数; 2)矩形度R:连通域面积S与最小外接矩形面积W比值,反映区域对其外接矩形的充满度(图13); 图13 矩形度Fig. 13 Rectangularity 3)等效椭圆[14]长短轴:每个连通域可求得一个对应的椭圆,其方程与连通域转动惯量形式一致。假定某椭圆区域是均质的且与连通域的转动惯量相同,那么该椭圆参数就能反映前述连通域的特性,这个椭圆就称为等效椭圆。据此可求得等效椭圆长轴ra和短轴rb(图14)。 图14 等效椭圆Fig. 14 Equivalent ellipse 车辆识别过程主要包括4个步骤:① 对骨架重构图像进行膨胀[15]、填充操作,获得连通域图像,结果如图15(a);② 基于连通域矩形度、面积和等效椭圆短轴阈值,初步提取满足条件的连通域,结果如图15(b)。由图15(b)可看出:此步骤剔除了一些面积较小的区域和狭长的车道标线;③ 基于面积和等效椭圆长轴阈值,选择较大的连通域,对其进行闭运算、膨胀和腐蚀操作,结果如图15(c)。由图15(c)可看出:该步骤有效分割了大型连通域,进一步消除了狭长的车道标线和道路边缘;④ 基于面积和等效椭圆短轴阈值筛选满足要求的连通域,将其作为最终的车辆目标,结果如图16。 综上所述,算法主要利用形态学运算[16]对骨架结构图像进行线-面转换,进而计算和分析连通域形态特征,最终识别车辆。步骤①~④的车辆识别算法伪代码如下。 算法2:基于形态分析的车辆识别算法(“←”表示赋值) ①:Skeleton←骨架重构图像; ②:Image0←对Skeleton进行膨胀、填充处理; ③:R[i]、A[i]←第i个连通域的矩形度、面积; ④:ra[i]、rb[i]←第i个连通域等效椭圆的长轴长度、短轴长度; ⑤:For inti= 1 toM//M为Image0的连通域个数; 图15 连通域图像Fig. 15 Connected component image 图16 车辆识别结果Fig. 16 Vehicle detection result ⑥:IfR[i]∈[r1,r2] orA[i]>s1orrb[i]∈[b1,b2]; ⑦:保留Image0第i个连通域//r1、r2、s1、b1、b2为阈值参数; ⑧:End For // 令为Image1; ⑨:For intj=1 toN//N为Image1连通域个数; ⑩:IfA[j]>s2orra[j]>a2//s2、a2为阈值参数; 车辆识别结果存在着准确检测、漏检等多种可能情况,可细分为如下4类:① 准确检测车辆,即单个辆车被准确识别为一辆车;② 车辆重检,即一辆车被检测成两个或多个车;③ 车辆漏检;④ 其他物体被识别为车辆。为此,可对如下4个指标性能进行评估,如式(1)~(4)。 PT=NT/NS (1) PR=NR/NS (2) PM=NM/NS (3) PW=(NR+NE)/NS (4) 式中:PT为正检率;PR为重检率;PM为漏检率;PW为错检率;NT为检测区内准确检测的车辆数;NR为检测区内被重复检测的车辆数;NM为检测区内被漏检的车辆数;NE为检测区内被检测成车辆的非车辆物体个数;NS为实际车辆数,NS=NT+NM+NR。 由此可见:正检率越高,重检率、漏检率和错检率越低,算法越优。 在VS2013+Halcon11.0+OpenCV2.4.9环境下编制文中算法程序,识别无人机视频车辆。对于每一帧检测结果图像,可分别由人工判读出NT、NR、NM、NE和NS,进而计算出一组正检率、重检率、漏检率和错检率。对548帧检测结果图像的评价指标值进行统计分析,结果如表1。 由表1可看出:算法正检率均值95.02%;重检率均值为2.20%,表明算法很少将一辆车识别为多辆车;漏检率均值2.77%、错检率均值为8.24%,即很少出现漏检情况,也较少将其他物体误认为是车辆。4个评价指标的均值和中值都显示算法具有较优的检测效果。从标准差来看,正检率、重检率、漏检率和错检率标准差分别为2.09%,1.67%,1.67%和2.56%,说明评价指标值大都集中于均值附近、离散程度较小,检测算法稳定性较高。 表1 算法指标 Table 1 Algorithm indexes % 图17是算法评价指标值分布。由图17可看出:① 只有7个样本(占样本总量的1.28%)的正检率低于90%,分布于85.42%~ 89.89%;其余541个样本(占样本总量的98.72%)正检率均高于90%,表明对于绝大部分图像,正检率都能达到较高水平② 有2个样本重检率为8.99%和8.33%,其余546个样本重检率均在6.52%以下,97.26%的样本重检率分布于0~5%,表明算法对车辆目标分割效果较好,可保证车辆完整性;③ 漏检率分布范围为0~10.11%,其中只有1个样本漏检率为10.11%,其余样本重检率均在8.14%以下,表明车辆漏检几率较低;④ 错检率分布范围为0~ 16.84%,其中有5个样本错检率为15.12%、15.22%、15.79%、16.09%和16.84%,其余样本的错检率均在15%以下,绝大部分集中于4%~12%,表明算法很少将其他物体误判为车辆。 图17 算法评价指标值分布Fig. 17 Distribution of algorithm evaluation indexes 上述分析表明:该算法在正检率、重检率、漏检率和错检率方面表现良好,对交通拥挤状态下的车辆识别也比较准确全面(图16)。相对而言,算法错检率还不甚满意,有待进一步改善。从测试结果来看:错检主要原因在于车道标线或路面指路文字的形状与车辆形状较为相似,算法可能会将其误识为车辆。如何有效区分车辆与路面非车辆物体,将是笔者下一步着重研究的课题。此外需说明的是,文中算法人工勾勒感兴趣区域,适用于悬停拍摄的稳定视频。 笔者针对无人机视频,提出了一种基于形态分析的车辆自动识别方法。该方法基于边缘检测生成亚像素级图像骨架,然后对骨架图像进行分解和重构,最后通过连通域形态学运算和形态分析识别车辆目标。通过对548帧视频图像测试分析表明:算法具有较高的正检率,而重检率、错检率和漏检率均较低。 文中方法可准确有效地实现车辆识别,为基于无人机视频的广域交通信息(例如:车辆密度、车辆轨迹、车辆速度和加速度等)实时采集奠定基础,有望作为传统交通信息采集技术(感应线圈、定点摄像机、超声波和浮动车等)的补充,为推动广域中微观交通流建模分析等相关研究,具有较大应用价值和理论意义。由于交通场景复杂多样,准确无误地识别低空视频的车辆目标仍充满挑战,需要进行更全面测试和长期深入研究。3.3 图像骨架重构
4 基于形态分析的车辆识别
4.1 形态学算子简介
4.2 连通域形态特征
4.3 基于形态分析的车辆识别算法
5 算法性能评价与分析
5.1 评价方法
5.2 评价结果分析
6 结 论