1. 引言
图像是客观对象的一种相似性描述,边缘是图像中的重要特征,边缘检测是基于灰度突变来分割图像的最常用的方法,包含着许多重要信息 [1] 。本文介绍的算法主要应用于智能割草机器人,现在常见的割草机器人,一般都采用铺设线轨的方法,但是铺设线轨成本很高。目前关于草地图像边缘检测的算法偏于实验,硬件成本和算法移植是核心问题,因此,研究改进草地图像边缘检测算法对提高割草机器人智能化水平和计算机图形交互领域的发展有着重要意义。本文针对草坪的环境特点 [2] ,选取合适的边缘检测算法并进行了优化,能够快速准确的识别出草地边缘。
针对不同的图像,采取的边缘检测方法也不同 [3] 。要对草坪与背景进行分离以及针对草坪上障碍物的识别,就必须明白草坪环境的特点:范围大,边缘轮廓多种多样且曲折可变,图片像素值相对集中。
根据对草地图像的边缘进行提取,判断合理的路线,然后再反馈给机器人,基于此,对草地边缘的检测和提取在一定的准确性上还需要一定的实时性。有些算法虽然能准确的识别出草地边缘,但是需要花费较长的时间,并不能满足工业标准 [4] 。
2. 草地边缘提取
对一张草坪图像的边缘进行提取,应该选定绿色为目标色,非绿色的部分就是背景,整体设计思路如图1所示。
首先,将彩色图像置于lab色彩空间中,lab色彩空间是基于人体感知所创造的一种色彩空间体系,L轴表示亮度,A轴代表红绿色,B轴代表黄蓝色,相比于RGB等传统的色彩空间,lab色彩空间分布非常均匀 [5] ,比如,在RGB空间中蓝色到绿色的过渡色较多,但是绿色到红色又缺少黄色等色彩。正是因为lab色彩空间的丰富色彩,使得对于图像中绿色的提取准确率相比其他色彩空间要准确的多。
接下来是对lab色彩空间进行颜色划分,以便于后面把绿色作为目标色进行提取,这里采用k-means算法对lab色彩空间的颜色进行分类 [6] ,k-means算法是一种硬聚类算法,是通过迭代的方法求得数据点到中心距离最优的一种优化算法,原理是:计算各点的坐标平均值求得一个中心点,根据每个点到中心点的欧式距离进行分类,发现分区,使得每个集群中的对象尽可能彼此接近,并且尽可能远离其他集群中的对象。然后根据分好的颜色区间,对目标色进行抓取,并二值化处理,原图及处理结果分别如图2,图3和图4所示,图5是在lab色彩空间里的颜色分布:
二值化以后的图像,可以看到,其边缘并不连续,而且草地区域有非常多的噪音,这对后续的边缘

Figure 1. The overall algorithm flow chart
图1. 整体算法流程图
识别是非常不利的,为了解决这个问题,我们采用数学形态学中的膨胀和腐蚀 [7] 操作进行处理。在实际生产中,需要机器人实时的做出反应,所以对图像的处理速度有了一定的要求,为了满足这种要求,我们在结构元素和处理时的像素遍历上做了优化。
结构元素是形态学中一个十分重要的概念,它直接影响了对图像处理的结果 [8] 。如果结构元素选取的过小,会造成图像噪声过多;如果结构元素选取过大,又会造成边缘比较粗糙。因此要根据实际情况,针对不同的目标图像选择不同的结构元素。草地的边缘检测难点在于草地中杂质很多,容易对边缘的提取造成影响,所以首要任务应该是对于草坪空隙的模糊处理,在实验中发现,一般进行三次膨胀操作便可满足大多数草坪图像的“填充”工作。经过多次尝试,发现一种“菱形”结构元素针对草坪图像的处理有较好的结果,我们用B1来代表三次膨胀时所用的结构元素,b为每次膨胀的结构元素。其中
,
,
膨胀和腐蚀运算程序一般过程是:结构元素在目标图像上平移,每次平移都需要逐个像素进行比较,然后再根据比较的结果判断是否需要该点取反。本文中提出的算法需要膨胀3次,又由于结构元素的逐渐减小,膨胀力度也在逐渐减小,因此如果每次膨胀运算都要进行逐行比较的话,就实际进行了大量的浪费计算操作。
基于本算法的特殊性而设计了一种优化策略,优化策略核心如下:
每个像素特别设置一个标记开关
,初值设为0,第一遍用b(7)进行膨胀,
当某个点的值发生变化时,
值变成1。
第二遍用b(5)进行膨胀时,只需去对那些周围8个点
值为1的数量是3~5个的点进行膨胀操作,然后标记他们的
值,那些没有去膨胀的点
值则改为0。
第三遍用b(3)进行膨胀时,只需去对那些周围8个点
值为1的数量是3~5个的点进行膨胀操作。
例如下面A,B的
值:A点为
,B点为
。A点周围
值为1的数量是4,则A
在下一次膨胀操作时就是需要运算的点,B点周围
值为1的数量是0,在下一次膨胀操作时就不需要再运算了。这个优化策略的实质就是在下一次膨胀操作时只对发生改变点处在边缘的点进行比较,那些相对在“中间”的点由于结构元素的变小就没有进行运算的必要了。
3. 实验结果与分析
本文所做的实验都是在win7 64位操作系统下,在MATLAB环境里进行测试,对同一幅草地图像,与传统的canny边缘检测算法进行对比。对比结果如图5和图6所示。
图6是本文的组合算法所处理的最终结果,图7是传统的canny边缘检测算法所处理的最终结果。从两幅图对比可以看出,两者对于草坪边缘的检测都能识别出,但是图6的边缘相对来说更加连续,图7的边缘保留了过多的细节,使得边缘有几处断点。由于光照等因素的影响,在实际中彩色转二值图像时会产生很多噪声,如果不能处理掉这些噪声,割草机器人将不能正常工作。传统的canny算法不能很好的处理掉这些噪声,而采用本文结构元素进行膨胀腐蚀运算过后,基本可以处理掉90%以上的噪声。通过多次实验,本文优化的算法在时间性能上相比于传统的算法可以节约30%。
4. 结论
本文设计的算法策略,在针对草坪图像的处理上,有很好的效果,置入lab色彩空间,用k-means聚类法进行分类,再以草的颜色为特征进行提取,最后再用数学形态学对所得的二值图像进行处理,得

Figure 7. Canny algorithm renderings
图7. Canny算法效果图
到最终的草地边缘。本文算法原理清晰,易于编程实现,在能达到识别提取草地边缘的基础上,缩短了程序运行时间,基本满足了割草机器人对于草地边缘识别并提取的要求。
基金项目
本文得到国家自然科学基金项目支持, No.U1404606,基于概率图模型的图像分割方法研究;本文得到河南省科技攻关项目支持No.152102210360,深度学习在视觉目标检测中的关键技术研究;No.172102210070,基于机器视觉和无线定位技术的割草机器人模型研究。