摘要:为实现果园移动机器人导航信息的获取与实时显示, 提出一种道路中心线类型的判别方法, 并设计一种果园路径识别系统。通过对十六色相环在HSV颜色空间下H分量的分析, 确定图像二值化阈值。针对处理完成的二值图, 采用行扫描点检测算法获得道路中心离散点并用直线进行拟合, 以直线和弯曲道路图为样本, 分析离散点至拟合直线距离的均值方差分布, 确定果园道路中心线类型判别条件, 根据判别结果拟合果园道路中心线。为实现系统可视化, 采用Matlab与VB混合编程技术将导航信息实时显示在VB设计的系统界面中。实验结果表明, 与采用垂直投影法的Matlab-GUI视觉导航系统相比, 该系统导航信息更新速度较快, 道路识别成功率较高。
关键词:移动机器人; 路径识别系统; 导航信息; 可视化; 混合编程;
Abstract:In order to obtain the navigation information of orchard mobile robot and display in real time, a method to determine the type of road centerline is proposed and an orchard path recognition system is designed. The image binarization threshold is determined by analyzing the H component of the sixteen hue ring in the HSV color space. For pre-processed binary image, the line dislocation point is obtained by line scanning point detection algorithm and the straight line is fitted. The mean and variance distribution of the discrete point to the fitted straight line distance is analyzed when straight road and curved road are used as samples. The criterion for identifying the type of center line of orchard road is determined and the center line is fitted according to the criterion. In order to realize the visualization of the system, a hybrid programming of Matlab and VB is used to display the navigation information in the system interface of VB design in real time. Experimental results show that compared with the Matlab-GUI visual navigation system using the vertical projection method, the navigation information of the system is faster and the road recognition success rate is higher.
Keyword:mobile robot; planning recognition system; navigation information; visualization; hybrid programming;
路径识别技术是视觉导航系统的重要组成。根据视觉图像信息丰富、目标信息完整的特点[1], 许多学者提出了多种用于果园移动机器人导航的图像处理算法。
文献[2]利用SUSAN (Small Univalue Segment Assimilating Nucleus) 算子对该梯度图像进行分割, 实现了车道标识线边界的提取。文献[3]针对室内环境采用分块进行图像增强和Canny算子边缘检测方法获取了完整的边缘图像。文献[4]提出了应用Radon变换的方法进行参数提取, 但在图像分割时采用固定阈值。文献[5]在Matlab下设计了单目视觉导航系统, 并通过形态学特征区分杂草和作物以喷洒农药, 但从图像获取到图像处理完成所需的时间较长。文献[6]采用基于粒子群算法的导航线检测方法可快速准确地提取出导航路径, 但未分析弯曲道路的情况。文献[7]采用二次多项式拟合曲线道路, 但边界干扰对拟合结果影响很大, 且仅适用于抛物线形状弯道的情况。文献[8]采用Hough变换检测近端道路边线和Catmull-Rom样条曲线确定远端边线, 完成弯曲车道线检测, 但样条曲线控制点处的斜率确定条件复杂, 获得的近端和远端导航线连接处不可导, 使移动机器人沿导航线的跟踪控制变得困难。
本文根据果园道路环境特点, 结合果园内存在直线和弯曲道路的情况, 提出一种自动判别果园道路中心线类型并进行拟合道路中心线的方法, 即采用直线拟合直线道路和多项式拟合弯曲道路得到导航线。并使用可脱离Matlab运行环境的DLL动态链接库技术实现VB/Matlab混合编程, 完成视觉图像的路径识别系统设计。
1、果园路径识别系统设计方案
如图1所示, 视觉图像的路径识别系统主要内容包括图像采集、图像处理、导航信息参数获取和系统实现。
图1 本文系统设计方案
在系统的设计过程中, 首先, 采用MDW-U130RC工业相机在VB中完成图像采集, 将采集完成的图像存储在固定路径供Matlab调用以进行图像处理;其次, 采用图像处理方法将果园环境图像分割为果树区域和道路区域 (如图2所示) ;然后, 根据分割得到的道路边界线获得道路中心离散点, 以直线果园道路和弯曲果园道路为样本, 分析其离散点与拟合直线的均值方差分布, 确定道路中心线类型判别条件, 根据判别结果决定采用直线还是多项式拟合道路中心离散点得到导航线;最后, 采用VB与Matlab混合编程, 在VB设计的道路识别系统界面中实时显示导航信息, 并对系统性能进行测试。
图2 果园环境示意图
2、果园路径导航信息参数获取
2.1、图像采集
系统采用MDW-U130RC工业相机完成图像采集, 图像有效像素为1 280像素×960像素, 图像格式为BMP, 其自带软件开发工具包 (Software Development Kit, SDK) 是标准的C语言接口动态链接库, 可以在VB中载入。使用VB对其进行开发, 可直接定义SDK的接口函数并指明其引用的动态链接库 (Dynamic Link Library, DLL) 文件。图像采集触发方式为软触发, 每次采集的图像在完成导航信息提取后立即触发下一次图像采集。
2.2、果园路径图像处理
2.2.1、阈值分割
RGB颜色空间和HSV颜色空间是彩色图像常用的2种颜色表示方法[9]。RGB颜色空间基于人类视觉的三原色理论建立, 3个分量的相关性很高, 不具备颜色空间的独立性[10]。HSV消除了3个分量的相关性[11], H (色调) 、S (饱和度) 、V (亮度) 更加符合人眼感知物体颜色的特性。根据HSV颜色空间中3个分量具有独立性, 本文将16色相环的H分量分离出来, 统计16种颜色的H分量值如表1所示。
表1 16色相环H分量值
由统计结果可知, 本文所关心的色调为青黄、黄绿、叶绿、绿色、蓝绿的果树区域, 其色调值分布在0.201~0.498之间, 由此可以确定二值化阈值, 论文中取阈值上限Tmax=0.5、取阈值下线Tmin=0.2, (1) 。
其中, I为输出图像, H为输入图像。
为提高图像处理速度, 文中将采集的原图转换为像素大小为320像素×240像素的图片, 根据分析H分量而确定的二值化阈值进行图像分割, 对高光、正常与低光环境下的果园图像的分割结果如表2所示, 该阈值分割方法具有较好的稳定性。
表2 不同光照环境下的图像分割
2.2.2、图像去噪
阈值分割后的二值图中存在较多白色空洞, 文中将采用一次形态学运算和标记连通区域的方法完成道路特征提取。以表2中正常环境下的果园图像分割结果为对象, 首先采用边长为4×4的矩形模版膨胀操作 (图3) , 其次给二值图像中的所有联通区域标号 (图4) , 找到面积最大的连通区域的标号, 最后将其他标号区域置0, 得到最大联通区域。
图3 膨胀后的图像
图4 最大联通区域
2.3、果园路径导航线生成
2.3.1、果园道路中心离散点获取
经图像处理之后, 图像中的道路区域和果树区域被完整地划分开。本文采用行扫描点检测算法[12]获得导航离散点。
以处理完成的图像为对象, 每隔5行进行一次扫描。即分别至左向右对去噪后的最大连通区域图像进行逐行扫描, 记录下所有边界点坐标, 完成道路左边界线上的离散点坐标获取, 记为 (xli, yli) ;用同样的方法获取道路右边界上的离散点坐标, 记为 (xri, yri) ;道路中心离散点将由左右边界上离散点得出, 记为 (xi, yi) 。
2.3.2、道路中心线类型判别
果园道路中心线分为直线型和曲线型, 采用传统的hough直线检测、直线拟合不能适应真实环境的要求, 本文在做导航线拟合之前进行道路中心线类型判别, 通过离散点到拟合直线[13]距离的均值与方差分布图来确定道路中心线类型判别条件, 若为直线道路, 则进行直线拟合, 若为弯曲道路, 则进行多项式曲线拟合, 曲线拟合采用使用广泛的三次多项式。该道路中心线类型判别方法如下:采用最小二乘法对导航离散点进行直线拟合, 计算离散点到拟合直线的均值与方法。设一张图片得到n个离散点, 设拟合的直线为y=kx+b, 离散点到直线的距离为di, 则有:
1) 离散点到直线的距离
2) 离散点至拟合直线距离均值
3) 离散点至拟合直线距离方差
图5 线性拟合图
图6 均值方差分布
为确定道路中心线类型, 需确定一个判别条件, 其能将直线道路样本点和弯曲道路样本点划分。由于所有样本整体分布呈抛物线, 可采用二次多项式拟合所有样本点, 再取纵坐标上直线道路样本均值最大值和曲线样本均值最小值间的中值对应抛物线上一点P (xp, yp) (图6中点标记) , 使一条直线过P点且垂直于抛物线在该点处的切线, 则将这条直线 (本文称之为分类线) 作为判定道路类型的条件。
采用抛物线拟合所有样本点, 拟合抛物线为f (x) =a0+a1x+a2x2, 数据点为P1 (xi, yi) , 根据数据点到拟合曲线的偏差平方和最小原则拟合有:
拟合曲线与数据序列的均方误差为:
由多元函数极值原理, Q (a0, a1, a2) 的极小值满足:
可得到多项式参数值:
求纵坐标上直线道路样本均值最大值和曲线样本均值最小值间的均值:
根据拟合多项式f (x) =a0+a1x+a2x2, 可以得到f (xp) =a0+a1xp+a2xp2, 则可得P点坐标为P (95.889, 7.896) 。
求在P点处抛物线切线的斜率为:
可得分类线斜率:
设分类线为φ (x) =kx+m, m=f (xp) -kxp=2.333×103, 整理得:
图片均值方差满足d—<24.248s2+2.333×103均值方差关系式, 则可确定该图片道路中心线类型为直线道路, 否则为弯曲道路。
2.3.3 道路中心线拟合
根据以上得到的道路中心线类型判别关系式, 判别结果为直线道路采用直线拟合, 若判别结果为弯曲道路, 则采用三次多项式拟合。图7为3种环境下的道路拟合结果。
图7 直线道路和弯曲道路中心线拟合结果
3、路径识别系统搭建及实验
3.1、VB/Matlab混合编程实现
在系统可视化设计中, Matlab计算处理能力强大。而VB具有速度快、界面友好及开发容易等优势。因此, 采用VB与Matlab混合编程可降低编程难度并缩短系统开发周期[14]。
本文采用Matlab的COM-Builder编译器将Matlab编写好的函数m文件编译为DLL文件, 所以, 程序执行速度较快, 可脱离Matlab运行环境, 实现方便且程序封装保密性好[15]。以下为实现步骤:
1) 将M atlab文件编写为函数。
2) 采用Matlab软件内COM组件生成器将Matlab的M文件转换为VB可引用的DLL文件。
3) VB工程中引用DLL文件并声明。
其中, Image_pro为组件名称, Image_proclass为类名称, cc为自定义的类变量名;
4) 使用Call命令调用函数。
其中, 6为返回参数个数, time为图像处理时间 (调用Matlab生成的DLL处理一张图片的运行时间) , type为道路类型 (直线/曲线) , p1、p2、p3、p4为拟合直线/曲线参数。
完成以上步骤, 通过VB调用Matlab的COM组件生成器生成的DLL动态链接库文件对采集的图像进行处理与导航信息提取, 并返回导航线相关参数及图像处理时间。
3.2、系统界面设计
该系统界面如图8所示, 左侧图像框为导航可视化窗口, 显示拟合道路中心线后的果园道路图像。右侧图像框中显示内容为图像处理时间th、导航信息更新周期时长tr、拟合的多项式及相关系数。实验场地布置如图9所示。
图8 本文系统界面
图9 实验场地布置
3.3、系统实时性与路径识别成功率实验
3.3.1、系统实时性实验
将20张320像素×240像素的果园图片在系统中测试, 其中, 用于测试的计算机处理器为Intel (R) Core- (TM) i3、主频为3.3 GHz、内存为4 GB。统计得到图像处理时间th与导航信息更新时间tr如表3所示, 对实验结果求平均值后得出:图像处理周期tk—为118 ms, 导航信息更新周期tr—为135 ms。文献[5]采用垂直投影法获得道路中心线, 并在Matlab-GUI下设计导航系统, 其图像处理周期为340 ms。因此, , 本文设计的视觉导航系统与采用垂直投影法的Matlab-GUI视觉导航系统相比, 图像处理周期更短, 具有较好的实时性。
表3 本文系统图像处理周期与导航信息更新周期ms
3.3.2、道路识别成功率实验
根据研究项目要求, 导航精度需控制在20 cm以内, 因此, 在用于实验的道路上每间隔1 m进行一次道路宽度测量并标记距中点左右20 cm两点, 用黑色细线平滑连接各点以形成距离道路实际中心线左右各20 cm的区域。若导航线完全在该区域内则认为识别成功。将采集的90幅320像素×240像素的图片, 其中包括弯曲道路45幅和直线道路45幅, 用于测试该路径识别系统性能, 实验结果如表4所示。
表4 本文视觉导航系统在正常路径环境下识别实验结果
3.3.3、稳定性测试实验
将干扰物放置道路中间和边缘位置分别采集图像各30张, 如图10所示, 按3.3.2节中的方法处理。当干扰分布于道路中心附近时, 识别的成功率为86.7%, 实验结果如表5所示。当干扰物分布在道路边缘时, 识别成功率为70%, 实验结果如表6所示。
图10 存在干扰时的路径拟合
表5 本文系统在道路中心存在干扰时路径识别结果
表6 本文系统在道路边缘存在干扰时路径识别结果
3.3.4、实验结果分析
从实验结果可看出, 处理1幅果园环境图像的平均耗时为118 ms。导航参数在系统中的更新周期为135 ms, 结合实际农田导航需要, 基本能满足导航实时性要求。正常情况下 (道路中没有较大干扰物) 路径识别成功率为90.0%, 道路类型判别错误概率为6.7%, 其中3.3%的图片不能识别。同时在道路中心线附近存在干扰物的情况下识别的成功率为86.7%, 道路边缘存在干扰物的情况下识别成功率为73.3%。从实验结果看出, 在正常环境和干扰物分布道路中心线附近时, 算法具有较高的准确率和稳定性;但当干扰物分布在道路边缘时, 算法的抗干扰能力减小, 不能正确拟合导航线主要因为道路边缘信息严重缺失, 算法在去噪完成的图像中局部道路变宽, 其最终体现为应当直线拟合的道路采用了小曲率曲线来拟合。
4、结束语
针对果园道路中常存在的直线道路和曲线道路情况, 本文提出一种道路中心线类型判别方法。采用VB与Matlab混合编程技术, 完成路径识别系统设计。实验结果表明, 该方法的导航周期为135 ms, 无干扰存在的路径识别成功率为90%。对道路中心附近的干扰有较强的抑制作用, 当道路边缘存在较大干扰时, 仍具有一定的抗干扰能力。但本文方法不适用于道路边缘没有明显分界线的情况, 后期在对图像分割方法研究时, 应当综合分析图像的颜色特征和图像纹理特征等信息, 以获得更好的实验结果。
参考文献
[1]李景彬, 陈兵旗, 刘阳, 等.采棉机视觉导航路线图像检测方法[J].农业工程学报, 2013, 29 (11) :11-19.
[2]王荣本, 余天洪, 顾柏园, 等.基于边界的车道标识线识别和跟踪方法研究[J].计算机工程, 2006, 32 (18) :195-196, 239.
[3]梁靓, 黄玉清.融合Canny算子和形态学方法的路径识别[J].计算机工程, 2006, 32 (21) :200-202.
[4]于国英, 毛罕平.农业智能车辆视觉导航参数提取的研究[J].农机化研究, 2007, 9 (1) :167-169, 175.
[5]王宝梁.多功能自主农业机器人研制[D].南京:南京农业大学, 2013.
[6]MENG Qingkuan, ZHANG Man, YANG Genghuang, et al.Guidance Line Recognition of Agricultural Machinery Based on Particle Swarm Optimization Under Natural Illumination[J].Transactions of the Chinese Society for Agricultural Machinery, 2016, 47 (6) :1-6.
[7]马雷, 于福莹, 李昊.基于灰度图像的复杂环境下智能车辆道路边界识别[J].汽车工程, 2010, 32 (4) :351-355.
[8]何鹏, 高峰, 魏厚敏.基于Catmull-Rom样条曲线的弯曲车道线检测研究[J].汽车工程学报, 2015, 5 (4) :276-281.
[9]张辰, 杨文柱, 刘召海.基于HSV综合显着性的彩色图像分割方法[J].计算机工程与设计, 2013, 34 (11) :3944-3947.
[10]陈帅, 赵海龙, 衣俊艳.基于HSV空间的创新型车牌定位方法[J].电工技术学报, 2015, 30 (S1) :527-530.
[11]蔡式东, 杨芳.一种基于HSV空间和粗糙集的彩色图像分割方法[J].光电子技术, 2011, 31 (1) :5-9.
[12]何金伊.基于视觉导航的果园机器人控制系统的研究与设计[D].杨凌:西北农林科技大学, 2011.
[13]张韵华, 奚梅成, 陈效群.数值计算方法与算法[M].2版.北京:科学出版社, 2006.
[14]谢楠, 陈汉良.Visual Basic与Matlab的几种接口编程技术[J].仪器仪表学报, 2004, 5 (4) :571-574.
[15]孟力力, 杨其长.VB调用Matlab的COM组件实现二者混合编程[J].电脑开发与应用, 2008, 20 (6) :24-26.