蔡俊,赵超,沈晓波,朱家兵
(1.淮南师范学院电子工程学院, 安徽 淮南 232038; 2.中国移动通信集团安徽有限公司, 安徽 合肥 230000)
随着智慧城市建设的推进与发展,人们对交通设施信息化和智能化管理也提出新的需求.路标检测与识别技术成为智能交通系统的一个重点研究方向,道路环境中交通标志的识别性能直接关系着道路交通安全,具有重要的现实意义.
近年来,国内外大批科技工作者开始投入到路标识别的研究中,涌现出大量研究成果.张文炽[1]通过构建AlexNet和VGG11特征融合网络模型,提升了系统识别性能;张功国[2]提出将CNN-SVM算法用于道路标识的特征提取和分类,可有效提升系统实时性和识别率;薛之昕[3]基于多尺度卷积神经网络模型,采用ReLu激活函数和Softmax分类器有效降低了系统识别时间;Arpan Jain[4]利用改进遗传算法优化CNN模型参数,提升了系统的鲁棒性;周苏[5]优化了PVANet卷积神经网络模型结构,改善了小目标交通标志的检测效果;张淑芳[6]通过构建残差SSD模型以及多尺度分块检测,提升了系统的检测能力;丁博[7]综合AdaBoost-SVM和CNN算法优势,提出了一种新型的混合预测模型,有效提升了识别准确率,减少收敛时间.
上述系统均能有效识别道路环境中的交通标志,但是识别过程的中间环节缺乏直观性的展示.本研究充分利用GUI界面的交互性和直观性,设计基于SIFT算法和PyQt的停车位标志识别系统.
1.1 系统模型本研究将SIFT算法应用到停车位道路标识牌的识别技术中,系统模型如图1所示,主要由道路环境图像读取、预处理、路标检测、路标识别以及输出结果等部分组成.
图1 系统模型
系统模型中,对输入的道路环境图像进行预处理后,依据停车位交通标志特有的蓝色特征定位路标区域,从而获取路标图像.再基于SIFT算法完成路标图像的特征提取,通过与路标图像标准库特征的匹配,实现路标的分类,并输出识别结果.
1.2 SIFT算法原理SIFT(scale-invariant feature transform),即尺度不变特征变换[8],对图像旋转、尺度缩放、亮度变化等具有不变特征,可以在一定程度上有效降低路标图像因拍摄视角、距离以及光照等因素对识别结果的干扰.
在SIFT算法中,为获取图像中物体的多尺度特征,一般通过构造DoG(difference of Gaussian)尺度空间获取稳定的特征点,采用高斯函数G(x,y,σ)与待处理图像作卷积运算实现尺度变换[9].二维图像I(x,y)的尺度空间L(x,y,σ)通常表示为:
L(x,y,σ)=G(x,y,σ)*I(x,y,σ)
(1)
式中,x,y分别表示二维图像中像素点的行列坐标位置.σ为尺度参数,决定了图像高斯平滑滤波的程度,G(x,y,σ)又称为高斯平滑核函数,定义为:
(2)
SIFT算法常用于特征检测,具体实现流程如图2所示.
图2 SIFT算法实现流程
1.3 PyQt简介PyQt是基于Python语言环境,并融合了Qt库模块功能,而形成的用于开发图形用户界面(Graphical User Interface,简称GUI)交互程序的工具包.PyQt适用于多种主流操作系统,如Windows、Linux、Unix及Mac OS等.
Qt库集成了非常多的模块,通常被分为基础模块和扩展模块两大类.其中,基础模块一般适用在所有平台,包含Qt Core、Qt Gui、Qt Multimedia、Qt Network、Qt Qml及Qt Quick等,具体分类及功能如图3所示.
图3 Qt基础模块构成
2.1 界面设计停车位标志识别系统主要包括道路图像读取、预处理、路标检测、SIFT分类以及输出结果五大部分.通过使用Python PyQt库编写GUI界面,实现停车位类道路标识牌识别系统的处理过程展示,包含预处理、开运算、定位、分割、标准化以及SITF分类等一系列中间环节,最终识别结果会显示在“识别结果”显示栏.
系统界面如图4所示,采用多个PushButton按钮、Lable标签以及textEdit等控件设计而成.当分别点击“读取”、“预处理”、“开运算”以及“定位”等功能按钮后,处理结果会自动显示到相应窗口区域.
标准化是PLM系统实施和应用的基础,在PLM实施过程中,企业通过两套典型设备的技术资料上线准备工作,规范了术语,制定了企业编码体系及图样和技术文件模板,建立了企业标准件和通用件数据库,将标准化体系和质量管理体系相融合,构建涵盖各种技术标准的知识库,规范了产品开发和签审流程等。
图4 道路标识牌识别系统显示界面
2.2 功能分析与介绍
1)道路图像读取.
点击“读取”按钮,windows系统会弹出文件选择对话框,从中选择待处理的道路环境图像.图像选择对话框效果如图5所示.
图5 文件选择对话框
2)预处理.
停车位标志一般具有特定的颜色和形状,文中以蓝底白色图识为样例,如图6所示.道路环境图像多基于RGB模型,颜色值受光照强度影响显著,不利于基于颜色特征的定位和识别.实践中,一般将RGB图像转换至HSV颜色空间,再依据蓝色分量的阈值范围进行二值化分割进而实现标志区域的定位.其中,RGB至HSV空间的转换公式[10]为:
图6 停车位标志(部分)
V=max(R,G,B)
(3)
(4)
(5)
式(4)中,当H<0时,H=H+360.HSV空间颜色分量范围如表1所示:
表1 HSV颜色空间颜色分量范围
系统设计中,图像预处理包含色调阈值二值化和滤波处理两个操作.考虑到阈值分割后的二值图像中可能存在噪点,需要进一步通过高斯低通滤波器进行滤波处理,以消除噪点对后期处理的干扰.预处理效果如图7所示.
图7 “预处理”过程
3)路标检测.
“路标检测”环节包含开运算、定位以及分割三个步骤.为方便检测路标的具体位置,获取路标区域的轮廓,需要对预处理后的二值图像进行开运算操作.开运算是一种形态学处理方法,通过先腐蚀后膨胀达到分离物体、消除小区域的目的,从而得到封闭的目标区域.
经开运算处理得到的二值图像中,颜色值为白色的目标区域即为路标位置,通过调用cv2.findContours()函数进行二值图像边界拓扑分析,确定目标区域边界位置.点击“定位”按钮,在原始图像的定位区域中加入红线标记轮廓.
经定位处理后可获取矩形目标区域的行列坐标值,据此可从道路环境图像中较准确地裁剪出路标区域图像,从而实现路标的分割.“路标检测”过程效果如图8所示.
图8 “路标检测”过程
4)路标识别.
“路标识别”环节包含标准化和SIFT分类两个步骤.考虑到上一环节中分割后的图像为矩形,且实际道路图像中,往往因图像分辨率、拍摄距离远近、角度等原因,分割后的停车位标志图像尺寸大小不一,甚至产生形变.为方便后续SIFT特征提取与匹配,需要进一步标准化处理.由于标准的停车位标志牌多为正方形,可采用resize()函数将分割后的标志图像统一调整为固定大小(文中取经验值36×36像素)的正方形.
SIFT分类,即采用SITF算法,对标准化后的目标图像进行特征检测,获得待识别图像特征点集.再与停车位标准特征库进行特征点匹配和统计,获取最佳匹配结果,将特征点在图像中进行标记,并画出映射辅助线段.“路标识别”过程效果如图9所示.
图9 “路标识别”过程
5)识别结果输出.
点击“输出结果”按钮,通过查询上一步骤SITF分类中特征数据文件,获取对应标准库图像的文件名称,并在textEdit中显示.“输出结果”效果如图10所示.
图10 “输出结果”效果图
为验证文中停车位标志识别系统的可靠性和有效性,选取大量不同拍摄视角、距离以及光照等条件下的道路环境图像进行实验,部分识别样例如图11所示.
图11 检测与识别过程样例
图11中分别展示了停车位标志在检测与识别过程中的效果示意图.实验结果表明,本文中设计的停车位标志识别系统识别准确率高,具有较好的鲁棒性.经过大量实验验证,系统识别准确率基本能达到95%左右.
为了更加形象、直观地展示道路停车位标识牌的识别过程和处理效果,本研究以SIFT算法及PyQt工具包为基础,设计停车位标志识别系统.首先构建系统模型,分析SIFT算法的实现原理,并基于PyQt库编写GUI应用程序.系统可以实现对道路原始图像的读取、预处理、路标位置定位功能,并通过SIFT特征匹配识别当前停车位标志,进而以文本的形式输出分类结果.实践证明,对现有自然场景下的道路环境图像,停车位交通标志的识别准确率基本能达到95%左右,且系统界面功能明确,简单易用,交互性强,能够为读者提供较好的实际体验.文中也存在不足之处:第一,文中主要研究了单个停车位标志的识别技术,暂未考虑多个路标同时出现的情形;第二,关于某些恶劣天气、低照明、形变严重以及障碍物遮挡等复杂情形下的停车位标志图像识别暂未涉及,后续还需进一步深入学习和研究.