摘 要: 提出了一种在无人机进场着陆段中根据机器视觉所得的数字图像获取无人机滚转角的方法。首先对摄像机所获得图像进行一系列预处理(中值滤波、边缘检测等),然后利用Hough变换获取图像中的直线,并根据其他的约束条件从这些直线中获得地平线,最后通过最小二乘法获得无人机滚转角。
关键词: 滚转角; 边缘检测; Hough变换; 最小二乘法
在无人机进场着陆段的机器视觉导航中,当获得一幅图像时,需要对图像数据进行处理,然后对图像的内容进行分析、理解并从中抽取对无人机着陆有用的信息。通过对某型无人机实际着陆录像分析,可以看出地平线在图像中是一个很明显的特征。根据地平线在图像中的位置、角度可以解算出无人机的滚转角,所以,地平线检测是用图像处理的方法获取无人机滚转角的重要途径。
地平线的检测方法很多,参考文献[1]提出了一种基于模式识别的地平线检测算法,但其处理的图像是彩色图像,对于灰度图不适用。参考文献[2]提出了一种基于图像纹理的地平线检测算法。本文提出一种基于边缘检测和Hough变换的地平线检测算法,并在此算法的基础上求解出无人机滚转角。
数字图像的滤波主要采用两大类方法:一类方法是在空间域中处理,即在图像空间中对图像进行各种处理;另一类方法是对空间图像进行变化(如经过傅里叶变换),使之在频率域内进行各种处理,然后再转换到图像的空间形成处理后的图像[3]。第二种方法使用的计算机内存和计算时间的开销很大,不适于实时系统,因此,本文采用空间域中的中值滤波处理方法。
中值滤波是一种非线性信号处理方法,它在一定的条件下,可以克服线性滤波器如最小均方滤波、平均值滤波等带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效[3]。本文采用3×3的模板窗口,把二维窗口中的数据一维化,并采用冒泡法进行排序。之后计算M=median{x11,x12,x13,x21,x22,x23,x31,x32,x33,},并赋值给原来的灰度x22,如图1所示。
1 图像的边缘检测
图2所示为摄像机获得的原始图像。可以看出地平线是地面与天空的分界线,因此地平线一定是图像中的一条边缘线。在图像处理中,边缘检测[4,5]的方法很多,为了消除噪声信号对边缘检测的影响,选用高斯-拉普拉斯边缘检测算子Guass-Laplacian,获得了较好的效果。
本文使用高斯-拉普拉斯算子卷积核,如图3所示的5×5大小的模板。
图2中的图像经过预处理、边缘算子卷积和二值化处理,得到如图4所示的二值图。通过边缘检测可以看到图像中的主要边缘(地平线、跑道边缘)已经提取出来。
2 清除边线
从图4可以看到,图像的4个边上存在4条很明显的直线,这是边缘检测算子与图像卷积产生的必然结果。如果这些直线不清除,在Hough变换检测直线时这些直线就一定会被检测出来,而这些直线会对下一步工作产生很大干扰。因此,这些直线必须被清除。清除方法很简单,可以将图像的4个边上的元素都置为255。
3 利用Hough变换提取直线
Hough变换是一种在图像中检测直线和曲线的有效方法,直线方程可写为:ρ=xcosθ+ysinθ,其中?籽表示原点到直线的垂直距离,?兹表示该垂线与X轴的夹角。这样在X-Y坐标系中的一条直线与ρ-θ坐标系中的一个点(ρ,θ)一一对应。而X-Y坐标系中的一个点(x,y)和?籽-?兹坐标系中的一条正弦曲线一一对应。e-θ坐标系中的多条正弦曲线的交点(?籽,?兹)在X-Y坐标系中是一条直线。下面建立一个计数数组:
longDist=(long)(sqrt(lWidth*lWidth+lHeight*lHeight));
long* m_Ipline;
m_Ipline=new long [Dist*180];
其中lWidth、lHeight分别为图像的宽度和高度。
将X-Y坐标系中的点映射到ρ-θ坐标系中。从图5可以看到图像中不仅仅是地平线,还包括跑道的边缘线和地面上的一些边缘线。因此,如果仅从m_Ipline数组中找出最大的元素是不可能找出地平线的。实验证明,至少从数组中找出10个最大元素才能保证得到的直线完全包括地平线,如图6所示。
4 获取地平线
从图6可以看到通过Hough变换得到的直线包括地平线和主、副跑道的边缘线等。现在的问题是如何从这些众多的直线中提取出地平线。在无人机进场着陆段,无人机的滚转角Φ∈[-10°,10°],因此可以将上述直线中ρ∈[80°,100°]标识出来。从图6可以看到,除了地平线,ρ∈[80°,100°]的直线还包括其他一些杂乱的点和线。
为了清除这些杂乱的点和线,根据图像在内存中的存储特点,从图6可以得到:像素数组每列中最后一行被标识像素一定是地平线上的像素。算法表示为:
for (i = 0; i < lWidth; i++)
{ for (j = lHeight; j > 0; j--)
{ if(*(lpDIB Bits+j*lLineBytes+3*i)==111)
{ m_temp [j*lLineBytes+i*3]=0;
break;}}}
处理后得到的图如图7所示。
对图7再次使用Hough变换,这样可以完整地检测出地平线,如图8所示。
5 用最小二乘法获得地平线参数
一般来说,认为地平线H与图像坐标系中X轴之间的夹角Φ和无人机的滚转角Φ是相等的,如图9所示,具体的证明过程请参照参考文献[2]。利用Hough变换可以直接读出无人机的滚转角,分别为3°、1°和-4°。但是由于在编写程序时为了运算的快速性,使用的是长整型,因此,所得到的滚转角误差较大。所以,可以使用最小二乘法[6,7]来拟合地平线方程,拟合后算得无人机的滚转角分别为2.645 8°、0.892 4°和-3.254 1°。
地平线检测算法是本文的关键所在。本文先后两次运用了改进Hough变换提取直线,实验证明在不过于复杂的着陆场环境下,该算法可以有效地检测出地平线,同时利用最小二乘法可以得到满足无人机着陆要求的飞机滚转角。
参考文献
[1] ETTINGER S M. Towards flight autonomy vision-based horizon detection for micro air vehicles.Proceeding of IEEE International Conference on Robotics and Automation[DB/OL].
Washington, D.C., 2002.
[2] 刘新华.基于视觉的无人机着陆姿态检测和跑道识别[D].南京:南京航空航天大学,2004.
[3] 王荣本,游峰,崔高健,等.基于计算机视觉高速智能车辆的道路识别[J].计算机工程与应用,2004(26):18-21.
[4] DJEKOUNE A O. Visual guidance control based on the hough transgorm. Proceedings of the IEEE International Vehicles Symposium 2000. Dearborn(MI)[DB/OL]. USA, 2000.
[5] 张会章,张利霞,郭雷.用霍夫变换来提取目标边界[J]. 计算机应用,2003,6(23):117-119.
[6] 郎锐.数字图像处理学Visual C++实现[M]. 北京:希望电子出版社,2002.
[7] 曾接贤,张桂梅,储珺,等.霍夫变换与最小二乘法相结合的直线拟合[J].南昌航空工业学院学报(自然科学版), 2003,17(4):9-12.