梁磊,林浩冬,楊泳,王雨,徐開俊
(中國民用航空飛行學院,廣漢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。
實例表明,該方法在不同場景下均有著較好的體現,在識別處于水平的天地線時,都可以被魯棒的提取,此外在三幅圖像中,除了主水平線之外,還存在著其他邊緣和顏色變化,但本方法對于主水平線有著較好的識別,在后續天地線處理時,完全可將最長水平直線默認為候選天地線。
本文提出了一種基于天空分割的天地線識別算法,通過將圖像分為天空區域和非天空區域來進行天地線的識別。該算法在航拍圖片上進行了測試。該算法的缺點是該算法基于天空顏色來進行分割,地面出現有顏色與天空顏色相近的水平直線時,易產生干擾,出現誤判斷,導致生成多條水平直線的情況。雖然這一缺點使天空分割進行天地線的識別無法成為一種通用的天地線識別算法,但在有些地方,例如無人機在機場跑道實施進近時,機場跑道周圍環境并沒有很大的顏色差異,通過此算法可以來進行天地線的檢測,從而來進行姿態和障礙物的判斷,來達到準確和安全著陸的目的。