《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > 一種基于Hough變換求解無人機滾轉角的方法
一種基于Hough變換求解無人機滾轉角的方法
來源:微型機與應用2011年第12期
焦文潭, 段曉明
(洛陽理工學院 電氣工程與自動化系,, 河南 洛陽 471023)
摘要: 提出了一種在無人機進場著陸段中根據機器視覺所得的數字圖像獲取無人機滾轉角的方法,。首先對攝像機所獲得圖像進行一系列預處理(中值濾波,、邊緣檢測等),,然后利用Hough變換獲取圖像中的直線,并根據其他的約束條件從這些直線中獲得地平線,最后通過最小二乘法獲得無人機滾轉角,。
Abstract:
Key words :

摘   要: 提出了一種在無人機進場著陸段中根據機器視覺所得的數字圖像獲取無人機滾轉角的方法。首先對攝像機所獲得圖像進行一系列預處理(中值濾波、邊緣檢測等),,然后利用Hough變換獲取圖像中的直線,并根據其他的約束條件從這些直線中獲得地平線,最后通過最小二乘法獲得無人機滾轉角,。
關鍵詞: 滾轉角,; 邊緣檢測; Hough變換,; 最小二乘法

    在無人機進場著陸段的機器視覺導航中,,當獲得一幅圖像時,需要對圖像數據進行處理,,然后對圖像的內容進行分析,、理解并從中抽取對無人機著陸有用的信息。通過對某型無人機實際著陸錄像分析,,可以看出地平線在圖像中是一個很明顯的特征,。根據地平線在圖像中的位置、角度可以解算出無人機的滾轉角,,所以,,地平線檢測是用圖像處理的方法獲取無人機滾轉角的重要途徑。
    地平線的檢測方法很多,,參考文獻[1]提出了一種基于模式識別的地平線檢測算法,,但其處理的圖像是彩色圖像,對于灰度圖不適用,。參考文獻[2]提出了一種基于圖像紋理的地平線檢測算法,。本文提出一種基于邊緣檢測和Hough變換的地平線檢測算法,并在此算法的基礎上求解出無人機滾轉角,。
    數字圖像的濾波主要采用兩大類方法:一類方法是在空間域中處理,,即在圖像空間中對圖像進行各種處理;另一類方法是對空間圖像進行變化(如經過傅里葉變換),,使之在頻率域內進行各種處理,,然后再轉換到圖像的空間形成處理后的圖像[3]。第二種方法使用的計算機內存和計算時間的開銷很大,,不適于實時系統,,因此,本文采用空間域中的中值濾波處理方法,。
 中值濾波是一種非線性信號處理方法,,它在一定的條件下,,可以克服線性濾波器如最小均方濾波、平均值濾波等帶來的圖像細節(jié)模糊,,而且對濾除脈沖干擾及圖像掃描噪聲最為有效[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];
其中l(wèi)Width、lHeight分別為圖像的寬度和高度,。
 將X-Y坐標系中的點映射到ρ-θ坐標系中,。從圖5可以看到圖像中不僅僅是地平線,還包括跑道的邊緣線和地面上的一些邊緣線,。因此,如果僅從m_Ipline數組中找出最大的元素是不可能找出地平線的,。實驗證明,至少從數組中找出10個最大元素才能保證得到的直線完全包括地平線,如圖6所示,。

4 獲取地平線
    從圖6可以看到通過Hough變換得到的直線包括地平線和主、副跑道的邊緣線等?,F在的問題是如何從這些眾多的直線中提取出地平線,。在無人機進場著陸段,無人機的滾轉角Φ∈[-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變換提取直線,,實驗證明在不過于復雜的著陸場環(huán)境下,,該算法可以有效地檢測出地平線,,同時利用最小二乘法可以得到滿足無人機著陸要求的飛機滾轉角。
參考文獻
[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] 劉新華.基于視覺的無人機著陸姿態(tài)檢測和跑道識別[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].南昌航空工業(yè)學院學報(自然科學版), 2003,17(4):9-12.
 

此內容為AET網站原創(chuàng),未經授權禁止轉載,。