张昂 黄立勤
摘 要:为弥补传统导盲仗的不足,设计了一款基于视频机器视觉的导盲杖辅助识别系统,帮助盲人识别盲道并解决盲道使用率低的问题。该设计由单片机、镜头组和输出设备构成,能够识别盲道的位置和不同功能,并进行相应提醒。该设计提出了基于自适应步长和边缘信息提取的NCC加速算法,在保证识别精度的前提下大大降低了运算量。经实验,证明了该设计的效果和实用性。
关键词:导盲杖;机器视觉;NCC;单片机
中图分类号:TP752
文献标识码: A
据统计,中国的盲人数量约为500万,占全世界盲人的18%,每年新增45万盲人,为世界最多。[1]在当今的城市交通设计中,盲道已经成为城市道路交通中必须的组成部分。中华人民共和国交通安全法第三十四条规定“城市主要道路的人行道,应当按照规划设置盲道。”但在实际使用中,国内城市大规模的盲道建设并没有充分地被盲人使用。分析其原因有以下三点:(1)在道路建设或后期维护过程中,存在盲道断开、错位、部分缺失的问题。(2)盲道被障碍物阻断或被其他物质覆盖。(3)尚有大量盲人无法熟练使用导盲杖判断盲道。
目前出现了一些新型智能导盲杖,如日本冈安光博开发的能感受到脸部高度处障碍物的导盲杖[2];俞国华等开发的基于多传感器融合的智能导盲杖[1];孙二杰等开发的超声波智能导盲杖[3]等 。以上设计主要是以超声波、GPS和角度传感器对障碍物和位置进行检测,并加以提醒。但这些设计均以传统传感器为基础设计,不能实现对盲道的识别,提醒盲人偏离了盲道指示的安全路径,亦更无法解决前文分析的三点不足。
因此,本文设计了一种基于视频机器视觉的智能导盲杖,意在通过视觉的方式识别盲道与盲道状态,并用语音提示盲人。
1 系统方案
该设计以嵌入式单片机为核心,以图像视频传感器为主要信息获取源,通过语音和震动提供用户反馈。受限于单片机资源,设计了一种改进型归一化互相关(Normalized Cross Correlation,NCC)模板匹配算法,用以识别盲道状态。
在导盲杖上加装该设计后,可以识别摄像头前方半径0.5至3 m、角度为120°的扇形视场内是否存在盲道,如此便可克服盲道断开、错位等问题,只要在视野内存在盲道便发出相应语音和震动提示:当系统识别到盲道中的直条状突起砖,即直行道时,语音提示“直行”;识别到盲道中的点状突起砖,即停止或拐弯道时,语音提示“停止”;识别到盲道有中断(缺块或被阻挡)提示“绕行”。系统未识别到这两种砖时则不发出语音提示,则意味着前方视场内没有盲道存在。
1.1 系统硬件设计
该设计由导盲杖与安装其上的镜头组、处理器单元板、功放与扬声器、电源、振动电机(选配)、超声波模块(选配)组成。设备固定于导盲杖杖身,可调整设备安装高度以实现不同范围的盲道识别。摄像头视轴与地面呈45°夹角向前,采用电池供电。
系统的硬件核心为STM32F765VI ARM Cortex M7处理器;摄像头组件为2.8 mm焦距镜头通过标准M12镜头底座与OV7725感光传感器连接,通过SPI总线与核心处理器通信;PAM8403功放与3W扬声器组成发声模块,与来自处理器的DAC数模转换输出相连。系统的硬件框图如图1所示。
1.2 系统软件设计
设计的程序运行于开源的 Micro Python系统,该设计将Python3语言的解释器和标准运行库进行精简以在单片机上运行实现。由此,可以调用Python丰富的库资源,便于简化设计、提高开发效率和增加可移植性。系统程序软件流程图如图2所示。
机器视觉部分采用了基于NCC算法的模板匹配识别,优点是抗白噪声干扰能力强,经优化后运算量较小。传感器模块用以调用图像传感器和超声波传感器。设置图像传感器亮度增益为16,对比度为1,帧图像分辨率为QVGA(320*240),颜色格式为灰度。外部输入输出用以调试、震动电机和扩展,设置UART波特率为19200,超时时间1000毫秒。声音解码调用Python的wave库函数实现,声音文件调用chunk库打开。数模转换(DAC)将解码后的声音变换为模拟信号送到功放模块进行播放,通过调用Pyb库实现。定时器使用MicroPython的Time函数实现。
2 NCC算法的优化设计
2.1 NCC算法选择
尽管盲道的建设均按照相应规范制作,但盲道的铺砖存在条块边缘平滑度差异、颜色差异、尺寸细微不同等多种问题。同时,受单片机资源限制,不宜采用如神经网络等算法复杂度过高的图像识别技术。经实际环境测试,盲道在外形差异性上与周边区域有明显不同。通过对比统计识别、模糊识别、贝叶斯分类器等方式,发现采用基于灰度相关的图像匹配算法较为合适。基于灰度相关的图像匹配算法利用图像的灰度信息进行图像模板和图像来源之间的相似性技术,进而寻找最优相似性度量值的位置进行匹配。目前常用的算法有归一化互相关(Normalized Cross Correlation,NCC)算法、序贯相似性检测算法(Similarity Sequential Detection Algorithm,SSDA)等[4]。SSDA算法的优势是可以实现快速高效匹配[5-6],相对于NCC来说更为节省系统资源,但在该设计中存在较为严重的白噪声干扰,且图像纹理较少,因此误匹配率明显较高,不合适使用。NCC匹配算法在相关匹配算法中效果最好,其匹配精度高且抗光照影响[7-8],较为适合该设计使用。但是传统的NCC方法需要把模板逐点在原图像中平移计算,运算量较大,且不能变角度匹配,局限性较大。
NCC算法的缺点在于:运算量大、匹配速度慢,以往常运行于运算能力较强的计算机平台,并运用于对時效性要求不高的场合。但在该设计中,系统的处理核心为单片机,且对时效性提出一定要求。因此必须对传统NCC算法进行减少运算量的优化。许多研究提出改进算法对其进行优化,其目的在于在保证匹配精度的前提上,尽量减少匹配次数。一是对相关性系数算子进行优化,如Bai X[9]的研究;二是通过改进搜索区域来降低计算量,如安凯等[10]的研究;三是针对搜索策略进行优化,如黄真宝[11]的研究。根据本设计特点,采用了针对搜索策略优化的自适应步长算法和针对改进搜索区域的边缘信息提取策略。
2.2 自适应步长的NCC算法设计
本文针对搜索策略采用了一种基于自适应步长选择的 NCC 匹配算法,其算法核心在于:当模板和源图像像素相关性较小时进行大步长计算,当模板和源图像像素相关性较大时进行小步长计算。
NCC算法的核心思路为:通过比较模板图像和源图像在各个位置的归一化互相关系数来计算其相关性,相关性系数在全图中最大且超过阈值时认定为最佳匹配位置。其数学定义为:假设图像S的尺寸为M×M,模板T大小为N×N,其中M>N,M、N的单位为像素。模板T从(0,0)位置开始在图像S上平移,模板覆盖的子图位置为Si,j,其中(i,j)为子图左上角坐标。其归一化相关系数R的计算公式如下:
相关性系数的值在(0,1)之间,当源图像的某个子图与模板完全一致时得到最大值1。
由吴福培[12]和吴松[13]等人的研究知,相邻像素的相关性系数是相关的,其变化相对缓慢,最佳匹配位置与周围像素点的相关性系数会形成一个尖峰,而其他非匹配位置的相关性系数则低很多,如图3所示。
就像素点来说,相关性系数的变化是相对缓慢的。所以可根据不同的相关性系数值选择不同的步长。当相关性系数较低时,选择较长的步长,搜索速度较快,系统计算资源消耗较小,搜索得较为粗糙;当相关性系数较高时,选择较短的步长,搜索速度较慢,系统计算资源消耗较大,搜索得较为精细。因此,可以采用大步长加速搜寻过程,快速逼近匹配区域;采用小步长进行精细匹配,保证匹配精度。本设计选取T1、T2、T3(T1<T2<T3)三个档位阈值进行计算。当相关性系数小于T1时,采用步长D=5计算;当相关性系数大于T1小于T2时,采用步长D=3计算;当相关性系数大于T2小于T3时,采用步长D=1计算。T1、T2、T3取值由实际工作环境确定。
2.3 边缘信息提取NCC加速算法设计
因各路段的盲道规格存在差异,为提升该设计的适应性,需要对不同规格的盲道铺砖创建不同模板。NCC算法以灰度信息作为基础创建模板,针对被匹配图像的每个像素进行计算。因盲道的信息集中于突起的轮廓边缘,为进一步加速算法,采用边缘信息提取的算法对模板提取关键信息,通过减少模板的匹配点计算量来加速运算。
边缘提取信息算法有Sobel算子、Roberts算子、Canny算子等方法。Roberts 算子采用对角线方向的相邻像素之差近似梯度幅值检测边缘[14],适合做线性化图像检测[15]。 Sobel算子的计算量较大[16]且受噪声影响较大。Canny算子[17]受噪声影响较小,但需六个步骤,计算较为繁琐。鉴于本设计仅需要快速获得提取到模板信息的位置,因此采用Laplacian算子进行边缘信息计算[5]。
由于盲道的凸起形状,其边缘信息不易受光照强度变化的影响而消失,即边缘强度较大,使Laplacian算子响应在边缘处有较大的值[18]。为消除噪声,对比了中值滤波、均值滤波等方法,设计中采用了效果最佳的高斯滤波。高斯平滑函数为公式(2)。
H(x,y)=12πσ2exp(-x2+y22σ2),
G(x,y)=f(x,y)*H(x,y)。(2)
为简便计算,使用通用高斯卷积核模板矩阵
R
G如式(3),通用Laplacian算子卷积核矩阵Rlaplacian如式(4),综合后得矩阵RGL式(5)。
RG=1/161/81/161/81/41/81/161/81/16,(3)
Rlaplacian=0101-41010,(4)
RGL=1/169/81/169/8-15/49/81/169/81/16。(5)
将图像模板T与式(5)进行卷积计算后得到新模板P,如式(6)。
Pi,j=TRGL。(6)
由于在灰度变化不大的图像中,相邻像素的灰度值很接近,通过使用新模板对其进行差分运算时,会产生大量的0,1或-1。这些计算耗时很少,从而大幅提高匹配速度。
3 实验与分析
最终设计成品如图4所示,其现场识别画面如图5所示。经过预采集和预处理的模板文件存储在该设计的存储卡中。经测试,在模板尺寸为80*80像素,模板数量为6时,能实现0.2~1 s的循环匹配速率,匹配速率随模板复杂度而变化。
对比同场景单张模板的匹配速度进行测试,可见优化后算法在匹配速度上有较为明显的优势,如表1所示:
为避免过于频繁的提示,根据实际需要,采用2 s一次循环的设计,即一次循环包含2次以上匹配,2次(含)以上确认匹配才进行语音提示。
在阈值的选取上,阈值设置越低则识别率和误识别率越高。因为该测试难以模拟,采用实地测试的方式进行。设定不同阈值后,在现场对设备进行识别率、误识别率的测试。通过调试,确定阈值T1=0.3,T2=0.5,T3=0.7,能够较好进行图像识别,同时拥有较低的误识别率。
为检验系统的可靠性与效果,选取了3个路段进行测试。测试选择200次条状直行砖和200次点状停止砖的识别进行统计。经测试,统计结果如表2所示:
对以上三个情况进行分析:(1)识别率最高为C路段,因为盲道地砖为新近铺设,条形轮廓较为明晰,光照均匀,识别度较好。识别率最低为B路段,因为该路段的盲道地砖为混凝土压铸,条形轮廓不清晰,且较为陈旧,有較多缺损。同时,因该路段树荫较多,阳光下有较多光斑,对识别率造成较大影响。(2)A路段和C路段的误识别率基本一致,主要由地面条状纹理造成。B路段的误识别率明显较高,主要由于路面光斑造成。
4 结论
通过对以上数据的统计,可得出结论:在实际应用环境中,通过机器视觉的方式实现盲道识别的方法是切实可行的,该设计的改进型NCC算法能够在运算资源较少的单片机上良好工作,具有较好的适应性和实用性。
参考文献:
[1]俞国华, 朱广伟, 张珂. 基于多传感器融合的智能导盲杖研制[J]. 测控技术, 2015, 34(4):20-23.
[2]孟湘君.日本发明电子导盲杖可感知脸部高度障碍物[EB/OL].[2010-05-21].http://www.chinanews.com/gj/gj ̄sjkj/news/2010/05-21/2296545.shtml.
[3]孫二杰, 汪东军, 石震, 等. 超声波智能导盲杖的设计[J]. 计算机系统应用, 2015, 24(8):273-276.
[4]李子印, 许斌, 陈立峰. 基于自适应步长选择的NCC图像匹配算法[J]. 光电工程, 2013, 40(10):77-84+89.
[5]Wang Y, Wu D. An improved adaptive SSDA based on wavelet ̄pyramid[C]// American Institute of Physics Conference Series. AIP Publishing LLC, 2017.
[6]张维琪, 樊斐. 自适应SSDA图像匹配并行算法设计与实现[J]. 计算机工程与应用, 2014, 50(20):64-67.
[7]Landzettel K, Preusche C, AlbuSchffer, Alin, et al. Robotic on ̄orbit servicing ̄DLR’s experience and perspective.[C]// IEEE/RSJ International Conference on Intelligent Robots & Systems. IEEE, 2006.
[8]王恩国, 吴树范. NCC边缘信息快速匹配算法[J]. 电子技术, 2017(12):25-27.
[9]Bai X. Morphological center operator based infrared and visible image fusion through correlation coefficient[J]. Infrared Physics & Technology, 2016, 76:546-554.
[10]An K, Ma J G. Solution system of minimum ̄magnitude equation about the screw of a rigid ̄body motion of manipulator[J].Opto ̄Electronic Engineering, 2010, 37(7):8-11.
[11]黄真宝,陈阳.图像匹配中NCC算法的一种快速实现方法[J].信息化研究,2011,37(02):48-52.
[12]吴福培,郭家华,李昇平,等.基于单目视觉的曲面弧度测量方法[J].光子学报,2018,47(11):126-136.
[13]吴松,张敏情,雷雨.基于图像相邻像素相关性的LSB匹配隐写分析[J]. 计算机应用研究, 2014, 31(3):846-849.
[14]殷晓雪. 车道偏离预警系统的研究与实现[D]. 哈尔滨:哈尔滨工业大学, 2014.
[15]唐阳山, 徐忠帅, 黄贤丞, 等. 基于Roberts算子的车道线图像的边缘检测研究[J]. 辽宁工业大学学报(自然科学版), 2017(6):36-39+43.
[16]黄虎,杨丁,雷宇辉,等.基于CORDIC的高速Sobel算法实现[J].电子技术应用,2018,44(9):87-90.
[17]钮圣虓,王盛,杨晶晶,等.完全基于边缘信息的快速图像分割算法[J].计算机辅助设计与图形学学报,2012,24(11):1410-1419.
[18]吕鲤志,强彦.基于Laplacian金字塔和小波变换的医学CT图像增强算法[J].计算机科学,2016,43(11):300-303.
(责任编辑:曾 晶)
Design of Guide Stick Aided Recognition System Based on Machine Vision
ZHANG Ang*,HUANG Liqin
(College of Physics and Information Engineering,Fuzhou University,Fuzhou 350116,China)
Abstract:
To make up for the deficiency of traditional guide,the design based on video machine vision,it helps blind people identify blind paths and solves the problem of low utilization of blind paths.The design consists of a single chip computer, a lens group and an output device.It can identify the location and different functions of blind path and give corresponding reminders.An NCC acceleration algorithm based on adaptive step size and edge information extraction is proposed in this design.On the premise of guaranteeing the recognition accuracy, the computational complexity is greatly reduced.Experiments prove the effectiveness and practicability of the design.
Key words:
guide stick;machine vision;NCC;MCU