冯志斌,刘延飞,杨爱涛
(火箭军工程大学,陕西 西安710025)
基于视觉主导的无人机降落方法由于其不受到复杂电磁信号干扰,近年来被广泛研究[1-2]。但是视觉的准确度容易受到周围环境的影响,其中光照因素是最重要的因素之一[3]。
为解决光照因素对图像识别造成的影响,现有的方法可以分为两类:一是光照归一化的方法,二是提取与光照无关图像的方法。光照归一化的方法对于图像整体受光照影响时效果较好,但对于局部的强光干扰效果一般。而提取与光照无关图像的方法虽然能够有效的减少局部光照的影响。其中如蔡道清等[4]人基于小波变换的方法通过获取图像的多尺度反射模型,成功提取了图像中不随光照变化的特征。常华耀等[5]人使用最小熵值法求得图像光照无关角,使得图像中每个像素都投影到光照无关灰度图上,从而解决光照的影响等。但也存在算法复杂度普遍较高,难以运用到小型无人机为代表的嵌入式系统上的问题。
因此,为在嵌入式系统条件下,同样获得较好的消除局部光照影响的图像提取效果,本文结合光照无关图与阈值分割的思路提出一种新的消除局部光照影响的图像提取算法。基于Sobel算法实现提取光照无关图的效果,并运用阈值分割算法对跑道的特征信息进行区分提取,保证了在低算法复杂度的条件下,能够提取出较好的跑道特征效果。
根据Land[6]等人提出的色彩恒常的色彩计算理论可知,任意图像I(x,y)均是由其反射分量R(x,y)和其光照分量L(x,y)进行乘积而得,如式(1)所示。
I(x,y)=R(x,y)L(x,y)
(1)
因此想要去除光照因素对图像的影响,可以考虑去除图像中亮度分量。对于这一方面的研究,现在已经有了一些较为成熟的方法如单尺度Retinex算法、多尺度Retinex算法等[7]。这些算法的思路是利用对数变换和高斯卷积变换等方法,使得R(x,y)与I(x,y)这两种分量分离,然后去掉其中光照分量I(x,y),然而无论是对数变换还是高斯卷积变换,其复杂度均较高。因此本文从另外一个角度,即利用光照分量变化较慢的特性[8],使用图像锐化的方法对图像纹理特征进行增强,然后将增强后的图像与原图像对应像素相除,这样近似的除去光照分量并一定程度上突出了跑道的边缘特征,取得较好的跑道特征提取效果。
边缘检测算子由于其简单、提取效果稳定,被广泛使用[9]。常见的边缘检测算子[10]有:Roberts 算子[11]、Sobel 算子[12]和Canny算子[13]等。通过对比,Sobel算子具有边缘提取效果较好,且计算量明显小于Canny算子等优点[14],因此本文使用Sobel算子作为图像锐化的方法。
最后从跑道与背景的颜色反差这一特点入手,引入传统阈值分割的方法[15],使得在纹理复杂的条件下,也能够区分跑道与其他的背景纹理。
图1 算法实现过程图
具体实现过程如图1所示。首先是利用Sobel边缘检测算子得到梯度图像,然后将梯度图像与原图像对应像素相除,得到近似消除光照影响的图像,进一步运用阈值分割的方法,对跑道的特征信息进行区分提取,从而得到能够消除局部强光带来不良影响的图像特征信息。
图2 任一像素点的邻近像素点标记与Sobel算子卷积模板
Sobel算子是一种经典的边缘检测算子,其基本方法[15]是首先借助如图2所示的卷积模板,计算图像中每个像素点垂直方向的偏导数Gx,以及垂直方向上的偏导数Gy,然后带入式(2)中,求出每一个像素点的梯度大小G。
(2)
其具体实现过程如下:
首先,如式(3)和式(4)所示求出每一个像素点在垂直和水平两个方向上的偏导数。
Gx(x,y)=f(x-1,y+1)+2f(x,y+1)+f(x+1,y+1)
-f(x-1,y-1)-2f(x,y-1)-f(x+1,y-1)
(3)
Gy(x,y)=f(x-1,y+1)+2f(x,y+1)+f(x+1,y+1)
-f(x-1,y-1)-2f(x,y-1)-f(x+1,y-1)
(4)
在以上的两个式子中,f(x-1,y+1)、f(x,y+1)、f(x+1,y+1)、f(x-1,y-1)、f(x,y-1)、f(x+1,y-1)、f(x+1,y)、f(x-1,y)分别代表以(x,y)点为模板中心像素点时,九宫格内的其它位置像素点的灰度值。Gx(x,y)代表水平方向梯度,Gy(x,y)代表垂直方向梯度。
然后,在计算总梯度的过程中,由于平方和平方根需要大量的计算开销,将计算简化为如式(5)。
G=|Gx|+|Gy|
(5)
式中G为该像素点的总梯度。以此类推求得梯度图像。
将梯度图像与原图像,分别根据色彩计算理论展开,如式(6)和(7)所示。
G(x,y)=R′(x,y)L′(x,y)
(6)
I(x,y)=R(x,y)L(x,y)
(7)
其中,G(x,y)对应于梯度图像的每一个像素点的灰度值,R′(x,y)为梯度图像的反射分量,L′(x,y)为梯度图像的光照分量。I(x,y)对应于原图像的每一个像素点的灰度值,R(x,y)为原图像的反射分量,L(x,y)为原图像的光照分量。
将边缘检测算法处理后的图像与原图像对应像素点相除[16],结果如式(8)所示。
(8)
由于边缘检测算子仅对图像的纹理特征进行一定程度上的增强,而对于图像的光照分量影响不大。因此,如式(9)所示,光照分量在相除的过程中被近似的除掉。
(9)
然而,当局部阳光过于强烈,与其它部分的反差过大时,会产生光影的伪边缘。而在边缘提取的过程中,这一部分的伪边缘也同样也被一定程度上的增强,使得利用除法运算后不能够完全去除。因此,本文结合二值化的方法,通过设定一个较为合适的阈值,对图像进行二值化处理,对产生的伪边缘进行一定程度上的去除。
结合上一部分的Sobel算子,Sobel-除法算法完整步骤为:
步骤一:根据式(3)和式(4)分别求出垂直方向梯度Gx(x,y),垂直方向梯度Gy(x,y)。
步骤二:分别将两个方向的梯度与原图像相除,如式(10)和式(11)所示:
(11)
由上式可得,Gx′ 与Gy′ 为与光照近似无关的方向梯度图像。
步骤三:根据式(5),求得总的梯度图像G′ ,如式(12)所示:
G′=|G′x|+|G′y|
(12)
步骤四:预设阈值TH1,对梯度图像进行二值化处理,如式(13)所示:
(13)
经过Sobel-除法算法处理后的图像,可以在局部强光干扰下,较为稳定的提取出跑道的纹理图像,然而在纹理特征较多的复杂环境下,难以分辨出具体跑道在图像中的范围以及跑道纹理的位置,不利于后续的路径规划算法的展开。
在实际运用中,跑道与背景存在着明显的颜色反差,因此,本文采用传统的阈值分割的方法通过预设阈值的方法,对原始图像进行二值化处理,对原始图像中跑道内部与跑道外部做以大致的划分,然后将由阈值分割算法处理过的图像和由Sobel-除法算法处理过的梯度图像对应像素点叠加。最后,通过调节阈值,得到在不同情况下的最佳的实用效果。
具体步骤为:
步骤一:选定适当阈值TH2,设定原图像为I,阈值分割后的图像为I′ ,如式(14):
(14)
步骤二:将阈值分割后的图像I′ 与梯度图像G′ 叠加,得到最终处理图像I″ ,如式(15)所示:
(15)
本实验搭建如图3所示的半物理仿真模型。由硬件和软件两部分组成。硬件部分负责构建模拟的跑道并采集相应的图像信息,包括模拟跑道、模拟跑道背景,采集用的摄像头,嵌入式系统以及计算机等,软件部分包括IAR Embedded Workbench For ARM IDE集成开发环境、MATLAB 2019a软件以及辅助用的上位机软件。一般的机场跑道宽度60m左右[17],本文按130:1比例缩比搭建模拟跑道,宽度为45cm。降落高度预设在1-50m之间,本文搭建的摄像头高度为20cm,模拟实际在26m处的情况。在现实情况中的跑道往往采用浅色跑道与深色的绿植背景作为搭配,因此在模拟装置中也采用浅色的PVC塑胶板模拟跑道,深色的幕布模拟跑道背景。本文选用的嵌入式系统为恩智浦公司的MK60FX512VLQ15单片机,主频为150M,采集用的摄像头型号为MT9V032,图像分辨率为188*120。
图3 仿真实验装置设计图
实验过程首先将跑道放置于局部被太阳光直射的位置,模拟跑道局部受到强烈太阳光干扰的情况。然后利用摄像头采集图像,在嵌入式系统上运行本文算法。嵌入式系统处理结束后通过蓝牙与电脑通信,将处理前以及处理后的图像传回电脑进行进一步分析。
在不同的光照条件下,利用本文算法对图像进行处理,并且在计算细节中,保证在不影响跑道内部的前提下,尽量的增加阈值的大小,以取得最佳的跑道特征提取效果。结果如图4~图6所示。其中,第一列为原图,第二列为仅利用Sobel-除法算法处理后的图像,第三列为仅利用阈值分割的方法处理的图像,第四列为最终叠加后的图像。
图4 光照条件一下算法的效果图(TH1=2.2,TH2=120)
如图4为在第一种光照条件下,本文算法的效果图,这种光照条件表现为近处受到强烈的局部强光干扰,远段正常。从图(b)中可以看到,Sobel-除法算法对近处的局部强光有着较好的抑制作用,近端的跑道边缘被很好的提取出来,而远端的跑道边缘由于梯度整体较小的原因,没有被很好的提取出来。在图4(c)中,可以发现,在受到局部强光的图像部分,跑道边缘均没有很好的提取出来。最终在如图4(d)的叠加图像中,均弥补了单个算法存在的缺陷,跑道边缘特征被很好的提取出来。
图5 光照条件二下算法的效果图(TH1=1.0,TH2=120)
如图5为远端受到局部强光干扰,近端正常的情况。在该种情况下,Sobel-除法算法基本能够较好的提取出来跑道边缘的信息,然而在远端光照特别强烈的部分还是存在了一些断裂点,如图5(b)所示。而此时的阈值分割的方法对于远端的强光部分完全失去了提取跑道信息的能力,如图5(c)所示。在最后的叠加图像中,也是存在着远端跑道部分断裂的情况。
图6 光照条件三下算法的效果图(TH1=0.5,TH2=120)
如图6为近端和远端均受到局部强光干扰的情况。图6(b)中显示,Sobel-除法算法仍然对于近端的跑道图像有较好的提取作用,而远端存在的某些断裂点。图6(c)中的图像显示出对于强烈局部强光部分难以提取出跑道边缘信息。在最终的叠加图像中也表现出对于整体的跑道边缘信息有着较好的提取效果,然而对于部分远端的跑道边缘信息,存在着某些部分断裂的情况。
经过以上的实验,可以得出,本文算法对于局部强光影响的跑道图像有着较好的特征提取效果,并且在最终的叠加效果图中也往往能够兼顾跑道前景与背景的颜色反差特征,将整个跑道信息完整的体现出来。然而在图5(d)与图6(d)中也存在了部分跑道边缘断裂的情况,造成这样结果可能是由于所采集图像的分辨率较低以及跑道反光,分辨率低导致对于远处的跑道边缘信息采集的像素点过少,关键的边缘信息难以被提取出来,跑道反光的问题使得局部跑道信息完全被反射出的强光遮盖,从而使得在计算图像梯度的过程中梯度变化不大,很难将边缘的信息提取出来。解决上述这种问题可以在硬件的角度做一些调整,如适当提高摄像头的分辨率,调低摄像头的曝光时间或者在镜头上加装偏振片等等。
最后探讨本文算法的复杂度。本文选用同样应用色彩计算理论的单尺度Retinex算法[7]与本文算法做以对比。两种算法均在MATLAB平台上运行,如图7为算法实现结果。
图7 不同算法实现结果对比图
如图7(b)和图7(c)所示,为本文算法与单尺度Retinex算法实现的结果,为直观的验证这两种方法对于跑道特征提取的能力,本文选用了合适的阈值,将图7(c)中图像进行二值化处理,如图7(d)所示。与图7(b)对比,两种算法对于抑制光照影响提取跑道特征上都有着一定的效果。接着在MATALB平台上,对于三种不同光照条件以及图7(a)中的图像运用两种算法进行1000次运算处理,对比它们的总运行时间,如表1所示。
表1 不同算法运行时间对比
从表1中可以看得出本文算法的运行时间上相对于单尺度Retinex提高了40%左右,同时在抑制光照影响的效果上也取得了单尺度Retinex算法类似的效果,因此,相比较而言本文算法的运行效率更高,更加适合应用在实时性要求较高并且处理器算力有限的小型无人机上。
本文针对消除局部强光干扰的图像提取问题进行了研究分析,结合光照无关图与阈值分割的思路提出一种新的消除局部光照影响的图像提取算法。实验结果表明,本文算法可以在一定程度上抑制局部强光对跑道图像的影响,同时算法效率与效果类似的单尺度Retinex算法相比,提高近40%,因此更适合应用在小型嵌入式系统中。本文研究为解决强光影响下的图像提取方法,同时嵌入式系统应用方面提供一定参考价值,具有广阔的应用场景。