视觉定位中人工路标的属性提取算法研究∗
2020-07-13关静楼飞
关静 楼飞
(南京师范大学中北学院 南京 210046)
1 引言
定位是移动机器人自主导航的基础,移动机器人根据机载传感器获取的信息进行定位,其中视觉传感器具有获取信息量大、性价比高、通用性好等特点,已成为自主定位的主要方式之一[1]。根据视觉传感器个数可将视觉定位分为单目和双(多)目视觉定位,其中单目视觉定位仅利用一个视觉传感器实现定位,无需像双(多)目视觉定位中需要解决立体视觉中视差和匹配难的问题,已成为当前视觉定位的主要方式[2~3]。
单目视觉定位方法可分为两类:一类是先对视觉传感器进行定标,利用定过标的传感器获取图像进行测距、测角以获得视觉传感器的空间坐标,从而实现定位功能[4~5];另一类是先建立图像与位置信息之间的对应关系,通过对获取的图像进行识别,利用预存的图像与位置间关系获取位置信息[6]。一般将用于定位的图像称为路标,路标分为人工路标和自然路标两种,自然路标即为一般交通场景,由于自然路标复杂多变,处理复杂且难度大,特征提取的精度难以满足识别的需求[7]。而设计合理的人工路标则能很好地解决路标的特征化,易形成稳定的数据关联[8~9]。
本文采用彩色几何图块组合作为人工路标,单目摄像头采集到的彩色人工路标图像经过预处理后进行灰度化,在对应的灰度图上提取图块的角点和轮廓坐标,由角点和轮廓确定其形状,并由角点或轮廓数据计算图块的质心坐标。根据质心坐标和原始彩色图像确定图块的颜色,同时由图块的质心确定人工路标的组成。利用图块间拓扑关系、形状及颜色组成人工路标模式,通过对人工路标的模式进行识别以达到定位之目的。人工路标的选择与定位精度、定位算法密切相关,一般来说人工路标越复杂其唯一性越好,但是复杂路标的处理与识别也就越困难。根据实际需求,本文设计了一种简单而又不失一般性的人工路标,每个人工路标由4个彩色图块组成,每个彩色图块有红、黄、绿和蓝4种颜色,以及圆形、正方形、正三角形、正五边形、正六边形和五角星形6种几何形状。其中,人工路标图像的属性计算是单目视觉定位的基础和关键,包括几何图形的颜色、形状和质心等。
实际应用中由于视觉传感器位姿变化,极易造成所获人工路标图像发生旋转和轻微倾斜变形,从而对人工路标的属性计算产生较大影响,本文提出属性提取算法并进行实验,最终实验结果表明本文所述方法能够满足室内移动机器人平面定位要求。
2 人工路标彩色图像的标准化
为了对图像进行研究和分析,有必要对图像进行增强,使需要的信息突出,增强感兴趣的区域同时削弱有干扰的区域。图像增强的方法可以分为两大类:空间域增强和频域增强。频域增强是将图像从空间域转为频域,利用频域滤波器等对图像进行处理,再将其变化到空间域。空间域增强则对图像的灰度值直接处理,通过数学变换、运算等改变灰度值达到增强图像的目的。常用的空间域增强方法有:直方图均衡化,中值滤波,均值滤波等。其中,直方图均衡化增加了图像的动态范围,而滤波增强一般是对噪声进行处理,并不能达到突出人工路标图像中彩色图块的目的。
本文提出一种新的图像增强算法,使彩色图像的RGB值标准化,有利于后面的颜色计算和轮廓提取。图1(a)为单目摄像头获取的人工路标图像,从图中可以看出,几何图形与图像背景的区分并不明显,尤其是浅灰块与背景的区分度很小,极易造成图块属性提取遗漏。为了避免上述问题的出现,本文对彩色人工路标图像在RGB三个通道分别进行增强和阈值化处理,处理后R通道图像保留的是绿色和蓝色图块,G通道图像上保留的是红色图块,B通道图像上保留的是黑色、浅灰色和灰色图块,最后再将处理后的三个通道图像合并,结果如图1(b)所示,从图中可以看出,增强后的图像背景为白色,前景色块边缘和颜色清晰,具有很强的区分度。另外,由于背景可能有裂缝或斑点,从而形成伪路标,如图1(c)、1(e)所示。用上述方法进行处理后的图像如图1(d)、1(f),从图中可以看出,裂缝、斑点完全去掉,组成人工路标的彩色图块的形状、颜色等属性保留完好,这是因为裂缝、斑点的灰度值与背景相近而在处理中被去除。处理结果表明本文所给出的人工路标图像预处理方法效果较好,能够满足后续图块属性提取的要求,有利于模式构建和识别的进行。
3 人工路标彩色图像的轮廓存储
图像分割一般根据其一、二阶导数进行,常用的算子有Sobel、Roberts等一阶算子和Laplace、Canny等二阶微分算子。对于灰度变化均匀的图像,只利用其一阶算子可能找不到边界,但图像的二阶算子对噪声敏感,需先进行图像平滑去噪然后再进行计算[10]。针对人工路标边缘特点及计算精度和代价要求,本文选用Canny边缘检测算子[11],为了减少噪声影响,先对图像进行高斯平滑,然后用一阶偏导计算像素灰度值的梯度幅值和方向,并根据梯度方向对梯度幅值进行非极大值抑制。最后为了减少伪边缘点,利用滞后阈值算法对边缘进行滤除,设定阈值th1和th2(th1 人工路标中每个完整图块的轮廓都应该是一个封闭的曲线,但在实际获取的人工路标图像边缘常有残缺色块,残缺的色块轮廓对于人工路标特征提取、模式生成带来不利影响,所以需在Canny提取图块轮廓线的基础上剔除位于所获图像边缘的残缺图块的不闭合轮廓线。 观察边缘图像可知,如图3,残缺轮廓通常分布在图像的边缘,并且其端点在最靠近图像边界的地方,且两个端点间坐标有一定的距离。根据残缺轮廓这个分布特点,将图像分为四个部分,从上、下、左、右四个边界方向对图像分别进行处理,下面以上边界为例介绍具体算法。 图2 边缘残缺轮廓滤除 图3 伪轮廓的分布 为计算方便,复制边缘图像并记为临时图像,在临时图像的上边界三行像素范围内寻找白点(灰度值为255)并记为P1,保存P1坐标点,则P1为某轮廓的一个端点,然后追踪该条轮廓:以P1为中心,在其8邻域内寻找白点,如图3,若8邻域内没有白点,扩大范围在16邻域内寻找,找到白点,然后记录所有白点坐标,选取任一非P1的白点记为P2,同时将P1和其8邻域或16邻域内所有的像素值均设为0,防止在进行下一条轮廓追踪时仍然以上条轮廓的某像素点为端点;继续以P2为中心,按照上述步骤追踪轮廓,直到某点的8邻域和16邻域内均不存在白点,则该点为该条轮廓的另一个端点,即为Pn,追踪结束,同时记录所有的像素点个数,即为该条轮廓的像素点个数。若P1与Pn间的距离大于某个阈值,该条轮廓则为残缺轮廓,应该滤除。在原始边缘图像中,将存储的残缺轮廓的所有像素坐标对应的灰度值设为0,重新得到的图像则为残缺轮廓滤除后的图像。图3中(c)为(b)剔除边缘残缺轮廓的结果。 残缺轮廓滤除结束后,人工路标边缘图像中只有完整图块的轮廓线,几何图块的形状计算在其轮廓线基础上进行,因此需要存储每条轮廓线的坐标。在存储结构中,所有的数据包括每条轮廓上像素点的坐标及像素点总个数,同时还应将各轮廓分别存储。 利用链表结构存储轮廓信息,先建立轮廓节点,节点中包括每条轮廓中所有像素点的坐标值,像素点总个数和指向下一条轮廓的指针;然后创建链表,在边缘图像中从第一个像素点开始寻找,找到轮廓的端点,追踪该条轮廓,算法与残缺轮廓的滤除所用算法相同,完成所有轮廓数据的存储。链 人工路标中彩色图块的形状通过角点数判断。角点检测算法可以分为两类:一类是利用图像的灰度变化直接进行计算,如Moravec算法、Harris算法等,其中Moravec算法认为角点具有低“自相关性”,将每个像素点及其邻域与其周围像素点及其邻域平方差之和的最小值作为强度值,局部强度最大的点为角点[12]。另一类是提取图像的边缘通过分析边缘曲线的几何性质来提取角点,如曲率尺度空间算法(CCS)[13]。 当R为大数值正数时对应的窗口中心点为角点。Harris算法具有图像旋转不变性以及图像灰度的仿射部分不变性,但对图像几何尺度变化不具有不变性[14]。Shi-Tomasi算法[15]是Harris算法的改进,它认为若M两个特征值中较小的一个大于最小阈值,则会得到强角点,可在阈值比较时通过寻找最小特征值的最大值来确定角点。本文则在图像轮廓基础上,通过轮廓像素点的灰度值,利用Shi-Tomasi算法进行图块角点坐标提取。 人工路标图像质量及其预处理结果对图块轮廓、角点提取都有影响,由人工路标中图块形状可知,图块闭合轮廓线中含有角点个数分别是0、3、4、5、6、10个,出现其他角点个数说明计算有误差,需进行伪角点去除处理。伪角点的滤除主要有以下几种方法:邻近点剔除方法,即选用合适的模板对整幅图像进行处理,若在该模板下存在不止一个的角点,则只保留其R值最大的角点。该方法需要选取合适的模板大小,并且对于角点分散程度较大的情况并不适用。另一种方法则是根据本文中几何图块的特点,因为每个几何图块均为正多边形,因此在同一图形中,角点间的距离应该是一定的,然而由于伪角点的存在,图形的边长并不能准确的计算,也给角点滤除带来一定影响。本文则根据角点间的几何分布进行伪角点的滤除。 由角点的几何特性可知,将角点依次两两相连,相邻连线相交且夹角较大,若其夹角小于某一阈值,可认定中间角点为伪角点。为此本文在每个图块的轮廓像素坐标链表中,依次计算相邻角点间连线的斜率及其倾斜角,且认为若连续三个角点两两连线的倾斜角之差小于35°,则认为这三个角点位于一条直线上,中间的角点则为伪角点。遍历完整个轮廓上的所有角点,完成几何图形上伪角点的去除,对于轮廓上检测到的角点数不足3个的,认为该轮廓为圆形。如图4所示,(a)为人工路标原始图像,(b)为其图像轮廓检测图,(c)为在轮廓图上的角点计算结果,从图中可以看到两个四边形出现多个伪角点,(d)为伪角点滤除后的结果,四边形上的伪角点全部滤除。 图4 人工路标图块角点提取及伪角点滤除 理想情况下视觉传感器与人工路标所在平面间的垂直距离不变,且其主光轴应与该平面垂直。然而在机器人的移动过程中,由于旋转等原因使视觉传感器采集到的人工路标图像会发生旋转,如图5(a)所示。另外由于地面凹凸不平,易使视觉传感器主光轴与人工路标图像平面不垂直,采集到的人工路标图像发生形变,如图5(c)所示,所采集到的人工路标图像明显的扭曲变形。使用本文所给出的人工路标轮廓和角点检测方法对图5(a)和图5(c)进行处理,得到的处理结果分别如图5(b)和图5(d)所示,两种情况下所得人工路标图块轮廓和角点个数都正确。此外,本文还对多幅旋转人工路标图像和由于视觉传感器主光轴不垂直人工路标平面而造成变形人工路标图像进行处理,都能得到正确的图块轮廓和角点结果,这表明本文所给出的人工路标预处理和图块轮廓、角点拾取方法对上述情况下的人工路标图像具有一定有效性、可靠性和鲁棒性。 图5 图块旋转和变形的图像及其角点提取 根据图块轮廓线链表及其所含角点个数判断其形状,本文人工路标中有圆形、正三角形、正方形、正五边形、正六边形和五角星形6种图形,其中圆形角点个数为0,其他图形的角点个数依次为3、4、5、6、10个。图块质心由其角点坐标计算出来,将每个图形角点坐标平均值作为质心坐标。对于没有角点的圆形来说,则根据其轮廓线所含各点坐标计算其质心坐标。图6为图块质心计算结果。 图6 图块质心提取 由于本文中人工路标的图块只有红、黄、绿和蓝色4种颜色,种类少且区别明显,所以直接根据图块质心及其8邻域颜色的R、G、B分量判定色块的颜色。具体算法为:在彩色图像中,每个图块质心的8邻域内,分别计算9个像素点的RGB分量,然后求其平均值,得到RGB三个值,根据下式判断颜色: 为了验证本文给出的基于人工路标的属性提取算法的有效性和可靠性,在3m*3m平面上按20cm*20cm的间隔布置了共196个人工路标共784个彩色图块,每个人工路标由4个彩色图块组成,其中彩色图块有圆形、正三角形、正方形、正五边形、正六边形和五角星形6种形状和红、黄、绿和蓝色4种颜色,根据前文的分析和摄像头参数,设定图块的最小外接圆直径为5cm。获取图像时,将摄像头的光轴垂直于人工路标所在平面,并保持垂直距离不变。 基于VC++编程实现图像预处理、图块的边缘检测、轮廓存储,图块轮廓角点提取及伪轮廓角点滤除和颜色判定。图2(a)为摄像头采集到的512*384原始图像,图中各色块属性的计算结果如表1所示,计算结果完全正确,这表明文中给出的图块形状、颜色提取方法能够满足后续模式构建的要求。 为了进一步验证图块属性计算方法的可靠性,本文随机获取100幅人工路标图像,经预处理后含有效图块998个,利用本文方法进行形状和颜色提取,经统计,图块形状和颜色正确有997个,错误判断1个为形状判读错误,无由于图像亮度造成的漏检和颜色判断错误,总的来说能够满足应用需求。 表1 人工路标图块属性计算结果 人工路标图像中属性提取结束后,则根据其属性构建人工路标模式并进行识别,通过预先存储的模式与位置的对应关系可实现定位。本文提出的人工路标属性提取算法能够正确计算人工路标的属性,有利于后面人工路标模式的构建与识别。 本文在基于人工路标的单目视觉定位中,对人工路标的属性提取进行讨论,通过移动机器人单目视觉传感器获取图像,对所获得的图像进行预处理、图块形状和颜色计算,从而实现人工路标的属性提取。基于VC++编程实现文中所给的图块属性计算算法,并在3m*3m室内按20cm*20cm的间隔布置了人工路标进行实验,本文所提出的图像增强方法使图像受光照等客观因素较小,突出彩色图块,对人工路标图像的轮廓进行处理和存储,使角点检测在轮廓线的基础上进行,提高算法速率和准确性,并且所计算的人工路标属性正确,同时对于人工路标图像发生旋转或轻微变形的情况也能正确计算其属性。总的实验结果表明本文所述方法可用于室内定位,方法可行、可靠。为了进一步提高基于人工路标的室内单目视觉定位的可靠性,需要进一步对强干扰背景下彩色图块形状、颜色计算,角点检测的算法也需要改进,使其满足各种情况下的角点提取,同时满足不同环境背景下的室内单目视觉定位需求。4 人工路标彩色图像的属性计算
5 实验分析
6 结语