梁磊,林浩冬,杨泳,王雨,徐开俊
(中国民用航空飞行学院,广汉618300)
小型无人驾驶飞行器作为低成本工具被应用在各种场景中,例如交通监控、边境巡逻、搜索和救援以及监视。近年来,随着微型惯性传感器和航空电子设备新技术的发展,提高了无人机的各项功能。随着自动化和无人驾驶系统的应用不断增长,对精确性和鲁棒性的制导和导航系统的需求也不断增加。然而,在无人机自主着陆、障碍检测等领域的限制仍然阻止许多应用成为现实。由于激光雷达和微型雷达目前的局限性,微型相机的尺寸和低功耗限制使得计算机视觉成为小型无人机的合理选择,并且具有成本低廉的优点。计算机视觉系统旨在接管操作员的控制,起到了眼睛和大脑角色的作用。
在对于上述问题的研究过程当中,天空地面之间水平线的检测对无人机障碍物检测、自主着陆和导航系统都非常有利。对天地线检测的研究可以分为两大类,一是使用机器学习对天空和非天空区域建模的方法。二是依赖于边缘检测的方法,在天地线的检测方法上,机器学习方法,特别是深度学习[1],已经带来了最先进的性能。但是,在图像包含未学习的特征或模式的情况下,达不到理想的效果。沃克曼等人[2],采用深度卷积神经网络计算天地线。它采用实时特征推理的替代概率方法,在存在不规则特征的情况下有较高的鲁棒性,但是显著增加了执行时间。在文献[3]中,Orei⁃fej等人基于多个候选水平线的最大后验估计来检测天地线。对于第二类检测天地线的方法中,图像处理方法如霍夫变换已经被广泛使用。文献[4]中的作者是第一批提出基于鲁棒边缘检测的方案来识别天地线的人。通过HT计算,提取突出的线,最强的线被声明为天地线。在文献[5]中,Ettinger等人通过评估鸟的飞行说明了基于视觉的方法在地平线检测中的效率。为了探测地平线,他们通过计算三个颜色通道中图像的协方差来关注地面和天空之间的变化。Lie等人[6]计算图像边缘图,该图像边缘图随后被转换成多阶段图,然后利用动态规划将天地线检测为图中的最短路径。
还有一些研究集中在基于各种描述符(例如纹理、颜色、SIFT和梯度直方图)提取天空和非天空图像区域之间的边界。McGee等人在文献[7]中对小型无人机使用SVM平台进行天空分割。图像中的像素根据其在YCrCb颜色空间中的颜色被分类为天空/地面组。对分割后的图像应用霍夫变换,他们找到了地平线的几个候选对象。水平线被定义为成本函数的最小值。在另一种方法中,Bao等人[8]利用方向投影进行鲁棒的层位检测。他们的方法也适用于在恶劣条件下拍摄的图像。在实时应用的情况下,算法优化被用于减少计算时间。他们也用他们的结果来计算小型无人机的导航参数。袁等人[9]提出了一种检测雾天图像中地平线的方法。在他们的方法中,暗通道空间中的能量函数被用于探测地平线。结果表明了该方法在雾天条件下的有效性。在文献[10]中,图多洛维奇等人利用颜色和纹理特征来模拟图像中的天空和地面部分。然后使用这些先验模型来训练检测系统。为了表示纹理和颜色信息,使用了复小波变换以及色调和强度。最后使用隐马尔可夫模型树(HMT)进行建模。
本文研究了天地线的检测问题,提出了一种新的方法,在观察天地线的图像中,天空和非天空区域有明显的颜色纹理差别,采用快速天空颜色分割将图像分为天空组和非天空组,对分割后的图像应用边缘检测和HT计算来进行直线的识别。
在天地线的图像中包含了很多噪声且像素强度变化剧烈,以及包括许多虚假和无效线段的影响,为了检测图像中精确天地线的位置,需要先将图像进行快速分割。HSV相比于RGB颜色模型更为直观,应用也相对较为广泛,模型参数主要是:色调(H,Hue)、饱和度(S,Saturation)、明度(V,Value)。HSV模型处理的原理是,H表示的色调基本上可以确定颜色,结合饱和度和亮度信息判断大于某一个阈值。而RGB由三个分量构成,需要判断每种分量的贡献比例。在对图像进行快速天空分割时,首先转换成HSV颜色空间,RGB转换为HSV颜色模型的公式为:
色调H计算公式如下:
饱和度S计算公式如下:
明度V计算公式如下:
在对于图像预处理方面,还要进行相应的形态学闭运算平滑图像,使图像比原始图像更加平滑,在对于天空分割方面,天空和地面具有明显的颜色分界,虽然图像中的颜色或亮度信息可能看起来很简单,但事实上,它们非常有价值,而且数据丰富。只需确定基本色调,再调节饱和度和明度的阈值,便可准确对天空和非天空区域分割。这是对于后续边缘检测和霍夫变换所进行的预处理工作,图1显示了在所示的三幅图像上执行天空分割算法的输出。
图1 经过天空分割算法后的输出
实例表明,该方法对于不同的天空颜色类型执行起来都很稳健,并且最终结果清楚地表明,天空区域被鲁棒地提取,并且该方法所需运算量较少,计算速度较快。
目前,有许多种算法被用于边缘检测,但各种算法仍存在一定的局限性:Roberts算子仅适用于边缘陡峭、噪声低的图像;使用Sobel算子时,会出现边缘定位精度不够高的情况;使用Prewitt算子易出现伪边缘的情况;数学形态学边缘检测会出现平滑边缘、减弱图像方向敏感性的问题。而Canny算子由于其在抑制噪声和检测边缘之间能够取得较好的平衡,因而被广泛应用。为了提高后续霍夫变换的准确性,决定采用Canny算子对分割图像进行边缘检测。
“Canny边缘检测算法”是边缘检测算法中的最优算法之一。Canny边缘检测的三个主要标准如下:
(1)错误率低:重要的是图像中出现的边缘不应被遗漏,对于非边缘不应有响应。
(2)良好定位:检测器发现的边缘像素和实际边缘之间的距离最小。
(3)单一响应:对单一边有一个响应。
算法主要有五个步骤。它们是:
第一步:计算图像中每个像素的水平(Gx)和垂直(Gy)梯度。
第二步:利用上述信息计算图像中每个像素的大小和方向。
第三步:在这一步中,所有的非最大值都被设置为零,即抑制非最大值,因此这一步被称为非最大抑制。
第四步:使用图像梯度大小的直方图来测量高阈值和低阈值。
第五步:为了获得合适的边缘图,使用滞后阈值。如果像素的值高于高阈值,则将其视为边缘。如果像素值小于低阈值,则视为非边缘。如果像素值介于高阈值和低阈值之间,则它是弱边缘。因此,为了检测图像中的边缘,它将两个阈值视为高和低。然后,最后应用滞后阈值,这可以决定检测到的弱边缘是被考虑还是留下。该算子边缘检测的流程如图2所示。
图2 Canny边缘检测流程图
对分割后的图像分别采用Canny边缘检测,图3为检测结果。
从三幅图像的边缘检测效果来看,本文所使用的Canny算法表现较好,边缘检测质量也较为理想,能基本识别确定天地线所在位置。
通过边缘检测找到天空和非天空区域的之间的边界,然后在边界图像上使用霍夫变换,用OpenCV来实现天地线最终检测。这种方法的原理是一条线可以由以下等式来表示:
其中(x,y)是直线上各点的坐标,θ是直线的旋转,ρ是直线到原点的垂直距离。因此,(x,y)空间中的每一条线都可以用(ρ,θ)空间中的一个点来表示。相反,(x,y)空间中的每个点代表(ρ,θ)空间中的一条曲线,它对应于穿过该点的所有可能的线。因此,对于(x,y)空间中的每个点,在离散化(ρ,θ)空间的每个仓中放置一个投票,该空间对应于穿过该点的所有可能的线。(ρ,θ)空间中获得大量投票的箱对应于可能的线。
图3 Canny边缘检测结果
图4 霍夫变换直线检测结果
霍夫变换直线检测结果如图4。
实例表明,该方法在不同场景下均有着较好的体现,在识别处于水平的天地线时,都可以被鲁棒的提取,此外在三幅图像中,除了主水平线之外,还存在着其他边缘和颜色变化,但本方法对于主水平线有着较好的识别,在后续天地线处理时,完全可将最长水平直线默认为候选天地线。
本文提出了一种基于天空分割的天地线识别算法,通过将图像分为天空区域和非天空区域来进行天地线的识别。该算法在航拍图片上进行了测试。该算法的缺点是该算法基于天空颜色来进行分割,地面出现有颜色与天空颜色相近的水平直线时,易产生干扰,出现误判断,导致生成多条水平直线的情况。虽然这一缺点使天空分割进行天地线的识别无法成为一种通用的天地线识别算法,但在有些地方,例如无人机在机场跑道实施进近时,机场跑道周围环境并没有很大的颜色差异,通过此算法可以来进行天地线的检测,从而来进行姿态和障碍物的判断,来达到准确和安全着陆的目的。