仝 光,李 解,徐 飞,周汉杰
(1.上海电机学院机械学院,上海 201306;2.上海海关机电产品检测中心,上海 200120)
环卫行业越来越重要,现有环卫专用车不能适应城市建设要求。近年来,随着我国城市建设进程不断加快,城市生活垃圾以及道路机械化作业面积逐渐扩大,给环卫车辆驾驶员带来了更重的工作负担。作为特定环境下的低速扫路车,国内部分学者已经进行了无人驾驶技术的研究[1-4],大多聚焦于基于数字地图的路径导航,这种导航方法导航精准度高,但对系统的处理能力要求较严格且成本偏高。本文针对扫路车的特定运行环境,提出了基于机器视觉与云端服务相结合的路径导航方法。
图像处理作为机器视觉的关键,借助微处理器对图像进行分析。本试验中的图像处理包括图像灰度化、图像去噪、图像边缘提取和导航线提取[5]。
1.1.1 图像灰度化
一般彩色图像又称RGB 图像,每一个像素点都由R(RED)、G(GREEN)、B(BLUE)3 个通道组成。在RGB 模型中,如果R、G、B 3 个通道值相等,则为单通道的灰度图像。灰度化之后的图像处理运算量明显小于RGB 图像。考虑到路径规划对实时性的要求,需要对RGB 图像进行灰度化处理,提高运算速度减少处理时间[6]。
目前,有常用的3 种灰度处理的办法。第1 种为平均值法[7]:
第2种为最大值法,取R、G、B颜色通道的像素最大值作为灰度值:
第3 种为加权平均法。根据人眼敏感度,将3个分量进行加权。经过研究最符合人类视觉的R、G、B分量的系数分别为0.299、0.587、0.114[8]。图像灰度值的公式为
车道线灰度化结果如图1所示。
图1 车道线灰度化处理Fig.1 Graying processing results of lane lines
1.1.2 图像去噪
图像噪声是指存在于图像数据中干扰信息[9],一般滤波消除噪声的方法有均值滤波和中值滤波[10]。均值滤波就是将临近的若干个像素点的值加起来取均值,赋给中心像素点的滤波方法,公式如下:
中值滤波就是对指定的一个像素点周围的像素点进行排序,将中值赋给中间的像素点[11],其公式如下:
滤波处理效果也与模板有很大关系,为了验证两个算法的有效性,对灰度图像采用5×5 和 9×9 的模板分别进行均值滤波和中值滤波,结果如图2所示。
图2 灰度图均值滤波和中值滤波处理结果Fig.2 Processing results of mean filtering and median filtering of grayscale images
从结果可以看出:均值滤波后的图像不清楚,车道线边缘变模糊,噪声也没有完全去除;中值滤波既抑制了噪声,又保留了图片的道路边缘的细节。因此,选取中值滤波作为导航线图像滤波的处理算法。
1.1.3 图像的边缘提取
边缘就是像素值发生跃迁的地方,如图3所示。
图3 图像像素点分布函数Fig.3 Image pixel distribution function
在图3的标记处f(t)变化较大,即像素值发生跃迁的地方。对f(t)求导数,导数图像如图4所示。
从图4 中可以看出,在导函数取最大值时,灰度值变化最明显。所以对于图像来说,可以用微分表示图像灰度的变化率基本定义如下:
图4 图像像素点分布函数导数图像Fig.4 Image pixel distribution function derivative image
图像是一个离散的二维函数,η不能无限小。图像是按照像素离散,最小η就是1像素。因此,上面的图像微分又变成了如下的形式(η=1):
式(7)是图像在(x,y)点处x方向的梯度,式(8)是图像在(x,y)点处y方向的梯度,图像的梯度相当于2 个相邻像素之间的差值。Sobel 算子是边缘检测中最重要的算子之一[13]。如果以I代表原始图像,Gx、Gy分别代表水平梯度和垂直梯度:
图像每一个像素总梯度为
设置一组高低阈值来输出二值图像,T1、T2为阈值,凡是高于T2的都保留,凡是小于T1都丢弃,从高于T2的像素出发,凡是大于T1而且相互连接的都保留。最终得到一个输出二值图像,如图5所示。
图5 边缘提取后的图像Fig.5 Image after edge extraction
1.1.4 导航线提取
提取车道线的中点,将提取出来的中点连接起来形成小车前进的导航线。然后测量出车道线实际的中心位置,计算提取出的导航线M与实际的中心位置的偏移量Δ:
采用两个直流电机控制扫路车的行进,采用差速转向的控制原理控制小车的转向。给两个电机不同的脉冲宽度调制(Pulse Width Malulation,PWM)占空比来控制它们的转速,Δ值主要用来确定给的PMW占空比大小。
二维码在一维码的基础上加上了另一维的码,用黑白矩形表示二进制数据[14]。二维码有纠错码,在二维码破损一定程度的情况下也能读出其内容。无人扫路车的工作环境大多是在户外,传统地标易磨损,采用二维码地标可以在一定程度上减少地标受损带来的意外情况。
1.2.1 二维码的制作原理
制作一个二维码首先要进行数据分析,确定编码的字符类型,选择纠错等级,进行数据编码。根据模式指示表,如表1所示将数据字符转换为位流。
表1 二维码数据编码模式指示表Tab.1 QR code data encoding mode indication table
二维码容错主要由纠错编码来实现,将码字序列分块,并根据纠错等级和分块的码字,产生纠错码字[15]。将每一个纠错码放到序列码的后面以用来纠错。如:D1,D12,D23,D35,D2,D13,D24,D36,…,E24,E46,E68,…[16]最后一步就是构造矩阵。一个普通二维码的基本结构如图6所示。
图6 二维码基本结构Fig.6 QR code basic structure diagram
把上面的完整序列填充到相应规格的二维码矩阵的区域中,最后形成的二维码,如图7所示。
图7 填充信息之后的二维码Fig.7 The QR code after filling in the information
为了可靠性,使用掩码图形让矩阵中的黑白色块比例接近1∶1 分布,最后将生成格式和版本信息放入相应区域内。数据位前2 位是纠错等级,纠错等级表如表2所示。
表2 纠错等级表Tab.2 Error correction scale
第3 到第5 位是掩码标识,然后根据纠错算法算出10位纠错码,加在5位数据位后面。
1.2.2 二维码的解码原理
二维码的解码其实就是二维码编码的逆向过程:第1步定位图形,根据黑白色块转成0、1组成的数组,确定一个阈值,用该值将图像转化为一系列深色和浅色像素;第2 步识别格式和版本信息;第3步去掉掩码;第4 步恢复数据码字和纠错码字,使用纠错码字进行错误检查并纠错;最后解码数据码[17]。流程图如图8所示。
图8 二维码解码流程图Fig.8 Two-dimensional code decoding flow chart
摄像头识别到直线时,扫路车沿直线行驶。当识别到导航线偏右时,右电机转速降低,左电机转速增加,扫路车右转。当识别到导航线偏左时,左电机转速降低,右电机转速增加,扫路车左转。当摄像头检测到不同的二维码地标时,扫路车分别执行前进后退、左拐和右拐。
在5G 时代,物联网领域将会得到极大的促进和发展[18]。在这样的背景下,提出在二维码中写入车辆的位置信息,在摄像头读取到二维码信息的时候,不仅能实现转向还可以将读取到的位置信息发送至物联网云平台,以便我们远程监测无人扫路车是否正常工作。
物联网使物与物之间能够进行信息交换和通信。要想实现万物互联,物联网云平台就是关键[19]。一般情况下,一个物体无法和非同一个局域网下的其他硬件设备直接点对点通信,这种情况下就需要一个云平台作为“中转站”来实现两个或者多个远程的设备相连接。
要将识别的扫路车位置信息上传至物联网云平台,首先要在物联网平台创建产品,在每个产品下可添加多个设备,每个设备有独立的三元组信息,如表3所示。
表3 产品的三元组信息表Tab.3 Triple information table for the product
通过程序编写对服务器进行配置,并通过协议将无人扫路车和云连接起来。为了以后程序可以移植到多辆扫路车上,本文最终将程序封装成一个动态链接库。程序采用C#语言来编写,连接协议采用http协议。物联网平台的配置主要包括:配置三元组信息,配置服务器,设置订阅和发布的Topic,对指定格式的数据进行编码,最后物联网平台才能接收到信息。
物联网平台中,服务端和设备端通过Topic 来实现消息通信,如图9 所示,Topic 就是无人扫路车信息传输的关键。
图9 Topic的功能示意图Fig.9 Functional schematic of Topic
将消息原文转换成二进制数据,并进行Base64编码,从而生成消息主体。经过这样处理的数据才可以被Topic所接收,并成功存储到云上。
在地标二维码中写入无人扫路车的位置信息,在识别到二维码的转向信息同时接收到其中的位置信息并发送到云端,试验结果如图10所示。
图10 物联网平台显示小车位置Fig.10 The Internet of Things platform shows the car position
从试验结果可以看出,位置信息已经发送到了云端,远程访问云端可以查询无人扫路车的工作状态,实际运行状态如图11所示。
图11 无人扫路车实际运行状态Fig.11 Actual running state of unmanned road sweeper
本文在扫路车上搭建了一个机器视觉系统,通过摄像头检测并识别车道线和二维码地标,实现扫路车的自动行驶,并且将二维码中的位置信息上传到云平台,用户可以通过远程访问云物联网平台实时监测无人扫路车是否工作正常。