一种基于图像处理的危化车辆识别方法
2014-11-17陈松林皮旭东
陈松林,皮旭东
(江西方兴科技有限公司,江西 南昌 330044)
0 引言
危险化学品车辆(简称危化车辆)是指运输具有爆炸、易燃、毒害、腐蚀、放射性等危险性质的化学物品的车辆。危化车辆是一个移动的危险源,在运输过程中若发生事故,将对人们的生命财产安全及生态环境的安全构成极大威胁。因此在高速公路上有必要对危化车辆采取一定的监管措施,例如在收费站入口车道对危化车发放带GPS模块的通行卡,对车辆进行实时跟踪。若入口车道为人工车道,收费员可肉眼识别危化车辆,若为自动发卡车道,则需采用车辆识别技术。
车辆识别技术是智能交通系统的重要组成部分,随着电子技术的发展,车辆识别的手段和方式也越来越多。基于数字图像处理的识别技术在智能交通中的需求越来越大。本文设计了一种基于图像处理的识别方法,针对摄像机抓拍的车辆头部图片,根据危化车辆必须安装危险标志灯这一特征,采用边缘提取、相似三角形检测等算法检测图片中是否存在有标志灯,从而实现对危化车辆的识别。
1 识别原理
1.1 危险标志灯特征
国家标准《道路运输危险货物车辆标志》(GB 13392—2005)规定危化车辆必须安装危险标志灯。标志灯安装于车头顶部,灯体正反面为等腰三角形状,侧面为等腰梯形状。标志灯正、反面边框为黑色等腰三角形,边框内印有“危险”字样,如图1(a)所示。黑色边框外围和内围的背景色为黄色,由于黑色和黄色的灰度变化明显,故可采用边缘检测算法,将黑色边框的外边缘和内边缘分别提取出来,这样可形成2个相似的三角形。补(压缩),可能导致标志灯边框外边缘和车头边缘连接在一起,从而影响后续的三角形检测,故不进行纵向修补。边缘检测及断裂点修补后的图像如图2所示。
图1 危险标志灯及图像预处理
图2 边缘检测及断裂点修补后的图像
1.2 图像预处理
若原始图为24位RGB真彩图像,先将图像转换为灰度图像,转换公式为:
Gray=0.299R+0.587G+0.114B
式中:Gray为变换后像素点的灰度值;R、G、B分别为变换前像素点的红色分量、绿色分量、蓝色分量值。
图像灰度化以后采用3×3矩阵进行中值滤波,去除图像中的噪声点,尽可能减少噪声点对边缘检测精度的影响。图1(a)经灰度变换及中值滤波后如图1(b)所示。
1.3 边缘检测及边缘断裂点修补
对图1(b)的灰度图采用Sobelb算子做边缘检测,再使用最大类间反差法变换成二值图,此时图中边缘点像素值为255(白点),背景点像素值为0(黑点)。之后进行形态学上的细化处理及消除孤立点。细化是将边缘线条细化为单像素宽的线条,孤立点消除则是消除孤立的边缘点。此外,还需进行断裂点修补使边缘更完整,设修补前的图像为M,尺寸为P×Q(行×列),新建尺寸为P×(Q/2)的图像M1,将M1所有像素点置为0,用1×2矩阵逐行扫描M,矩阵中2点只要有一个点像素为255,则M1中对应点像素置为255。此方法通过横向压缩图像的尺寸来修补断裂点,最大可修补2个像素的断裂点。若修补横、纵两个方向的断裂点,则M1的尺寸设为(P/2)×(Q/2),使用2×2矩阵隔行扫描M,矩阵中只要任一点像素值为255,则M1对应的点置为255。考虑到标志灯紧挨车顶安装,在图像像素不高的情况下纵向修
1.4 连通边缘的提取
假设断裂点修补后的二值图像为M1,尺寸为M×N。将M1中的连通边缘逐条提取出来,具体步骤如下:
(1)新建一个M×N的图像M2,M2所有点像素值置为0;
(2)从左至右逐行扫描M1,当遇到第一个像素值为255(白点)的点时,将M2上相同位置的点像素置为255;
(3)对M2做3×3矩阵的形态学膨胀运算,再与M1相交,得到新的M2;
(4)循环执行步骤3,直到M2不再发生变化,运算结束,这样就得到包含连通边缘的M2,然后计算M1=M1-M2,生成新的M1;
(5)对M2做三角形检测,判断是否为三角形(详见1.5);
(6)循环执行步骤1至5,将M1中的连通边缘逐条提取出来做三角形检测,直到M1中没有边缘点为止(全为黑点),算法结束。
对图2(b)中的图像M1提取边框外边缘、内边缘,如图3所示。
图3 连通边缘提取
1.5 相似三角形检测
上节步骤(4)中,得到包含连通边缘的二值图像M2后,使用Hough变换对其做三角形检测。Hough变换能检测图像中是否存在直线段,并获取线段的两个端点坐标。若M2中存在有3条直线段,分别设为a,b,c。设a的端点坐标为(Xa1,Ya1)、(Xa2,Ya2),b的端点坐标为(Xb1,Yb1)、(Xb2,Yb2),c的端点坐标为(Xc1,Yc1),(Xc2,Yc2)。可按下列公式计算3条线段的长度,设长度分别为A、B、C,则:
若以上3条线段首尾相接,即6个端点中每个端点与其他端点有且只有一个在坐标位置上重合,则判断该形状为三角形。由于图像中三角形经Hough变换提取的线段相连的端点不能精确满足坐标位置完全重合的要求,故需设置阈值T=5,即6个端点中每个端点在其他端点中有且只有一个与其距离≤T,则可判断其为三角形。若为三角形则保存三条边的长度,新建向量In,n为该三角形的序号,向量赋值为[A,B,C]。
所有的连通边缘检测完后,若有n个三角形,则可得到n个向量(I0,I1,…,In-1)。在所有的三角形中,判断是否有两个三角形相似。假设两个三角形对应的向量分别为I1,I2,若满足以下条件则可判断为相似三角形:
2 实验结果与分析
采用Matlab验证本文的算法,截取抓拍的车头图片中的标志灯部分作为原始图,使用M=imread(filepath)函数将图片数据读入到矩阵M,参数filepath为图片的路径。使用Gray=rgb2gray(M)将图像M变换为灰度图Gray。使用Mid=medfilt2(Gray,[3,3])对图像Gray进行中值滤波,生成新的图像Mid,效果如图4(a)所示。采用Sobel=edge(Mid,‘sobel’)函数实现边缘检测,采用Sobel=bwmorph(Sobel,‘thin’,inf)、Sobel=bw⁃morph(Sobel,‘clean’,inf)进行细化和孤立点消除。之后再进行断裂点修补,效果如图4(b)所示。
图4 相似三角形检测之前的图像处理
从图4(b)中抽取连通边缘,将标志灯黑色边框的外边缘和内边缘分别提取出来,效果如图5所示:
图5 边框内、外边缘提取图像
对提取的外边缘I1和内边缘I2采用Hough变换做三角形检测,使用[H,theta,rho]=hough(Im⁃age,‘RhoResolution’, 1)、peak=houghpeaks(H,5)、lines=houghlines(Image,theta,rho,peak)三个函数可提取图像中的3条线段,分别设为a、b、c,并将各线段的端点坐标保存在变量lines内。根据端点坐标计算各线段的长度,三条线段的长度分别设为A、B、C,得到的数据如表1所示。
表1 I1和I2经Hough变换后的结果
从表1中可知,I1中线段a的端点(116,33)与线段c的端点(119,33)之间的距离小于T,a的另一端点(30,176)与线段b的端点(30,176)之间的距离也小于T,同理I1中线段b、c的两个端点在其他端点中有且只有一个端点与其距离小于T。故认为I1为三角形,同理,I2也为三角形。新建向量I1和I2,依据相似三角形的判断条件计算:
由于0.96、1.01、1.05都介于0.9和1.1之间,故可判断三角形I1相似于三角形I2。综上所述,图像中存在有标志灯,符合危化车辆的判断条件,为危化车辆。
3 结语
本文所述的方法与图像质量关系较大,图像越清晰检测精度越高。经测试,图像中标志灯区域像素为200×150左右时可较好地提取内外边缘。算法运算时间和图像的背景有关,背景复杂、边缘数量越多,运算时间越长。在实际应用中,当图片清晰度不高时,标志灯边框的外边缘检测比较困难,可能会和背景或车顶边缘连在一起,只能检测到完整的内边缘。考虑到标志灯一般位于图像上半部分,可简化本方法,只需在图片上半部分检测到有三角形(边框内边缘)存在,即可判断为危化车辆。本算法可通过Matlab编译成Dll动态库的形式供上层应用软件调用,动态库中识别函数输入参数为图像数据,输出参数为布尔型变量,表示是否为危化车辆。
[1]GB 13392—2005,道路运输危险货物车辆标志[S].
[2]何江萍.图像中任意三角形检测方法[J].计算机应用,2009,4(29):1022-1024.
[3]朱双东,张懿,陆晓峰.三角形交通标志的智能检测方法[J].中国图像图形学报,2006,8(11):1127-1131.
[4]黎海兵,易卫东.一种高效检测图像中是否有三角形的算法[J].中国图像图形学报,2008,13(6):456-460.
[5]BALLARD D H.Generalizing the hough transform to detect arbitrary shapes[J].Pattem Recognition,1981,13(2):111-122.
[6]周品,李晓东.MATLAB数字图像处理[M].北京:清华大学出版社,2012.
[7]冈萨雷斯.数字图像处理[M].北京:电子工业出版出版社,2003.