關靜 樓飛
(南京師范大學中北學院 南京 210046)
定位是移動機器人自主導航的基礎,移動機器人根據機載傳感器獲取的信息進行定位,其中視覺傳感器具有獲取信息量大、性價比高、通用性好等特點,已成為自主定位的主要方式之一[1]。根據視覺傳感器個數可將視覺定位分為單目和雙(多)目視覺定位,其中單目視覺定位僅利用一個視覺傳感器實現定位,無需像雙(多)目視覺定位中需要解決立體視覺中視差和匹配難的問題,已成為當前視覺定位的主要方式[2~3]。
單目視覺定位方法可分為兩類:一類是先對視覺傳感器進行定標,利用定過標的傳感器獲取圖像進行測距、測角以獲得視覺傳感器的空間坐標,從而實現定位功能[4~5];另一類是先建立圖像與位置信息之間的對應關系,通過對獲取的圖像進行識別,利用預存的圖像與位置間關系獲取位置信息[6]。一般將用于定位的圖像稱為路標,路標分為人工路標和自然路標兩種,自然路標即為一般交通場景,由于自然路標復雜多變,處理復雜且難度大,特征提取的精度難以滿足識別的需求[7]。而設計合理的人工路標則能很好地解決路標的特征化,易形成穩定的數據關聯[8~9]。
本文采用彩色幾何圖塊組合作為人工路標,單目攝像頭采集到的彩色人工路標圖像經過預處理后進行灰度化,在對應的灰度圖上提取圖塊的角點和輪廓坐標,由角點和輪廓確定其形狀,并由角點或輪廓數據計算圖塊的質心坐標。根據質心坐標和原始彩色圖像確定圖塊的顏色,同時由圖塊的質心確定人工路標的組成。利用圖塊間拓撲關系、形狀及顏色組成人工路標模式,通過對人工路標的模式進行識別以達到定位之目的。人工路標的選擇與定位精度、定位算法密切相關,一般來說人工路標越復雜其唯一性越好,但是復雜路標的處理與識別也就越困難。根據實際需求,本文設計了一種簡單而又不失一般性的人工路標,每個人工路標由4個彩色圖塊組成,每個彩色圖塊有紅、黃、綠和藍4種顏色,以及圓形、正方形、正三角形、正五邊形、正六邊形和五角星形6種幾何形狀。其中,人工路標圖像的屬性計算是單目視覺定位的基礎和關鍵,包括幾何圖形的顏色、形狀和質心等。
實際應用中由于視覺傳感器位姿變化,極易造成所獲人工路標圖像發生旋轉和輕微傾斜變形,從而對人工路標的屬性計算產生較大影響,本文提出屬性提取算法并進行實驗,最終實驗結果表明本文所述方法能夠滿足室內移動機器人平面定位要求。
為了對圖像進行研究和分析,有必要對圖像進行增強,使需要的信息突出,增強感興趣的區域同時削弱有干擾的區域。圖像增強的方法可以分為兩大類:空間域增強和頻域增強。頻域增強是將圖像從空間域轉為頻域,利用頻域濾波器等對圖像進行處理,再將其變化到空間域??臻g域增強則對圖像的灰度值直接處理,通過數學變換、運算等改變灰度值達到增強圖像的目的。常用的空間域增強方法有:直方圖均衡化,中值濾波,均值濾波等。其中,直方圖均衡化增加了圖像的動態范圍,而濾波增強一般是對噪聲進行處理,并不能達到突出人工路標圖像中彩色圖塊的目的。
本文提出一種新的圖像增強算法,使彩色圖像的RGB值標準化,有利于后面的顏色計算和輪廓提取。圖1(a)為單目攝像頭獲取的人工路標圖像,從圖中可以看出,幾何圖形與圖像背景的區分并不明顯,尤其是淺灰塊與背景的區分度很小,極易造成圖塊屬性提取遺漏。為了避免上述問題的出現,本文對彩色人工路標圖像在RGB三個通道分別進行增強和閾值化處理,處理后R通道圖像保留的是綠色和藍色圖塊,G通道圖像上保留的是紅色圖塊,B通道圖像上保留的是黑色、淺灰色和灰色圖塊,最后再將處理后的三個通道圖像合并,結果如圖1(b)所示,從圖中可以看出,增強后的圖像背景為白色,前景色塊邊緣和顏色清晰,具有很強的區分度。另外,由于背景可能有裂縫或斑點,從而形成偽路標,如圖1(c)、1(e)所示。用上述方法進行處理后的圖像如圖1(d)、1(f),從圖中可以看出,裂縫、斑點完全去掉,組成人工路標的彩色圖塊的形狀、顏色等屬性保留完好,這是因為裂縫、斑點的灰度值與背景相近而在處理中被去除。處理結果表明本文所給出的人工路標圖像預處理方法效果較好,能夠滿足后續圖塊屬性提取的要求,有利于模式構建和識別的進行。
圖像分割一般根據其一、二階導數進行,常用的算子有Sobel、Roberts等一階算子和Laplace、Canny等二階微分算子。對于灰度變化均勻的圖像,只利用其一階算子可能找不到邊界,但圖像的二階算子對噪聲敏感,需先進行圖像平滑去噪然后再進行計算[10]。針對人工路標邊緣特點及計算精度和代價要求,本文選用Canny邊緣檢測算子[11],為了減少噪聲影響,先對圖像進行高斯平滑,然后用一階偏導計算像素灰度值的梯度幅值和方向,并根據梯度方向對梯度幅值進行非極大值抑制。最后為了減少偽邊緣點,利用滯后閾值算法對邊緣進行濾除,設定閾值th1和th2(th1 人工路標中每個完整圖塊的輪廓都應該是一個封閉的曲線,但在實際獲取的人工路標圖像邊緣常有殘缺色塊,殘缺的色塊輪廓對于人工路標特征提取、模式生成帶來不利影響,所以需在Canny提取圖塊輪廓線的基礎上剔除位于所獲圖像邊緣的殘缺圖塊的不閉合輪廓線。 觀察邊緣圖像可知,如圖3,殘缺輪廓通常分布在圖像的邊緣,并且其端點在最靠近圖像邊界的地方,且兩個端點間坐標有一定的距離。根據殘缺輪廓這個分布特點,將圖像分為四個部分,從上、下、左、右四個邊界方向對圖像分別進行處理,下面以上邊界為例介紹具體算法。 圖2 邊緣殘缺輪廓濾除 圖3 偽輪廓的分布 為計算方便,復制邊緣圖像并記為臨時圖像,在臨時圖像的上邊界三行像素范圍內尋找白點(灰度值為255)并記為P1,保存P1坐標點,則P1為某輪廓的一個端點,然后追蹤該條輪廓:以P1為中心,在其8鄰域內尋找白點,如圖3,若8鄰域內沒有白點,擴大范圍在16鄰域內尋找,找到白點,然后記錄所有白點坐標,選取任一非P1的白點記為P2,同時將P1和其8鄰域或16鄰域內所有的像素值均設為0,防止在進行下一條輪廓追蹤時仍然以上條輪廓的某像素點為端點;繼續以P2為中心,按照上述步驟追蹤輪廓,直到某點的8鄰域和16鄰域內均不存在白點,則該點為該條輪廓的另一個端點,即為Pn,追蹤結束,同時記錄所有的像素點個數,即為該條輪廓的像素點個數。若P1與Pn間的距離大于某個閾值,該條輪廓則為殘缺輪廓,應該濾除。在原始邊緣圖像中,將存儲的殘缺輪廓的所有像素坐標對應的灰度值設為0,重新得到的圖像則為殘缺輪廓濾除后的圖像。圖3中(c)為(b)剔除邊緣殘缺輪廓的結果。 殘缺輪廓濾除結束后,人工路標邊緣圖像中只有完整圖塊的輪廓線,幾何圖塊的形狀計算在其輪廓線基礎上進行,因此需要存儲每條輪廓線的坐標。在存儲結構中,所有的數據包括每條輪廓上像素點的坐標及像素點總個數,同時還應將各輪廓分別存儲。 利用鏈表結構存儲輪廓信息,先建立輪廓節點,節點中包括每條輪廓中所有像素點的坐標值,像素點總個數和指向下一條輪廓的指針;然后創建鏈表,在邊緣圖像中從第一個像素點開始尋找,找到輪廓的端點,追蹤該條輪廓,算法與殘缺輪廓的濾除所用算法相同,完成所有輪廓數據的存儲。鏈 人工路標中彩色圖塊的形狀通過角點數判斷。角點檢測算法可以分為兩類:一類是利用圖像的灰度變化直接進行計算,如Moravec算法、Harris算法等,其中Moravec算法認為角點具有低“自相關性”,將每個像素點及其鄰域與其周圍像素點及其鄰域平方差之和的最小值作為強度值,局部強度最大的點為角點[12]。另一類是提取圖像的邊緣通過分析邊緣曲線的幾何性質來提取角點,如曲率尺度空間算法(CCS)[13]。 當R為大數值正數時對應的窗口中心點為角點。Harris算法具有圖像旋轉不變性以及圖像灰度的仿射部分不變性,但對圖像幾何尺度變化不具有不變性[14]。Shi-Tomasi算法[15]是Harris算法的改進,它認為若M兩個特征值中較小的一個大于最小閾值,則會得到強角點,可在閾值比較時通過尋找最小特征值的最大值來確定角點。本文則在圖像輪廓基礎上,通過輪廓像素點的灰度值,利用Shi-Tomasi算法進行圖塊角點坐標提取。 人工路標圖像質量及其預處理結果對圖塊輪廓、角點提取都有影響,由人工路標中圖塊形狀可知,圖塊閉合輪廓線中含有角點個數分別是0、3、4、5、6、10個,出現其他角點個數說明計算有誤差,需進行偽角點去除處理。偽角點的濾除主要有以下幾種方法:鄰近點剔除方法,即選用合適的模板對整幅圖像進行處理,若在該模板下存在不止一個的角點,則只保留其R值最大的角點。該方法需要選取合適的模板大小,并且對于角點分散程度較大的情況并不適用。另一種方法則是根據本文中幾何圖塊的特點,因為每個幾何圖塊均為正多邊形,因此在同一圖形中,角點間的距離應該是一定的,然而由于偽角點的存在,圖形的邊長并不能準確的計算,也給角點濾除帶來一定影響。本文則根據角點間的幾何分布進行偽角點的濾除。 由角點的幾何特性可知,將角點依次兩兩相連,相鄰連線相交且夾角較大,若其夾角小于某一閾值,可認定中間角點為偽角點。為此本文在每個圖塊的輪廓像素坐標鏈表中,依次計算相鄰角點間連線的斜率及其傾斜角,且認為若連續三個角點兩兩連線的傾斜角之差小于35°,則認為這三個角點位于一條直線上,中間的角點則為偽角點。遍歷完整個輪廓上的所有角點,完成幾何圖形上偽角點的去除,對于輪廓上檢測到的角點數不足3個的,認為該輪廓為圓形。如圖4所示,(a)為人工路標原始圖像,(b)為其圖像輪廓檢測圖,(c)為在輪廓圖上的角點計算結果,從圖中可以看到兩個四邊形出現多個偽角點,(d)為偽角點濾除后的結果,四邊形上的偽角點全部濾除。 圖4 人工路標圖塊角點提取及偽角點濾除 理想情況下視覺傳感器與人工路標所在平面間的垂直距離不變,且其主光軸應與該平面垂直。然而在機器人的移動過程中,由于旋轉等原因使視覺傳感器采集到的人工路標圖像會發生旋轉,如圖5(a)所示。另外由于地面凹凸不平,易使視覺傳感器主光軸與人工路標圖像平面不垂直,采集到的人工路標圖像發生形變,如圖5(c)所示,所采集到的人工路標圖像明顯的扭曲變形。使用本文所給出的人工路標輪廓和角點檢測方法對圖5(a)和圖5(c)進行處理,得到的處理結果分別如圖5(b)和圖5(d)所示,兩種情況下所得人工路標圖塊輪廓和角點個數都正確。此外,本文還對多幅旋轉人工路標圖像和由于視覺傳感器主光軸不垂直人工路標平面而造成變形人工路標圖像進行處理,都能得到正確的圖塊輪廓和角點結果,這表明本文所給出的人工路標預處理和圖塊輪廓、角點拾取方法對上述情況下的人工路標圖像具有一定有效性、可靠性和魯棒性。 圖5 圖塊旋轉和變形的圖像及其角點提取 根據圖塊輪廓線鏈表及其所含角點個數判斷其形狀,本文人工路標中有圓形、正三角形、正方形、正五邊形、正六邊形和五角星形6種圖形,其中圓形角點個數為0,其他圖形的角點個數依次為3、4、5、6、10個。圖塊質心由其角點坐標計算出來,將每個圖形角點坐標平均值作為質心坐標。對于沒有角點的圓形來說,則根據其輪廓線所含各點坐標計算其質心坐標。圖6為圖塊質心計算結果。 圖6 圖塊質心提取 由于本文中人工路標的圖塊只有紅、黃、綠和藍色4種顏色,種類少且區別明顯,所以直接根據圖塊質心及其8鄰域顏色的R、G、B分量判定色塊的顏色。具體算法為:在彩色圖像中,每個圖塊質心的8鄰域內,分別計算9個像素點的RGB分量,然后求其平均值,得到RGB三個值,根據下式判斷顏色: 為了驗證本文給出的基于人工路標的屬性提取算法的有效性和可靠性,在3m*3m平面上按20cm*20cm的間隔布置了共196個人工路標共784個彩色圖塊,每個人工路標由4個彩色圖塊組成,其中彩色圖塊有圓形、正三角形、正方形、正五邊形、正六邊形和五角星形6種形狀和紅、黃、綠和藍色4種顏色,根據前文的分析和攝像頭參數,設定圖塊的最小外接圓直徑為5cm。獲取圖像時,將攝像頭的光軸垂直于人工路標所在平面,并保持垂直距離不變。 基于VC++編程實現圖像預處理、圖塊的邊緣檢測、輪廓存儲,圖塊輪廓角點提取及偽輪廓角點濾除和顏色判定。圖2(a)為攝像頭采集到的512*384原始圖像,圖中各色塊屬性的計算結果如表1所示,計算結果完全正確,這表明文中給出的圖塊形狀、顏色提取方法能夠滿足后續模式構建的要求。 為了進一步驗證圖塊屬性計算方法的可靠性,本文隨機獲取100幅人工路標圖像,經預處理后含有效圖塊998個,利用本文方法進行形狀和顏色提取,經統計,圖塊形狀和顏色正確有997個,錯誤判斷1個為形狀判讀錯誤,無由于圖像亮度造成的漏檢和顏色判斷錯誤,總的來說能夠滿足應用需求。 表1 人工路標圖塊屬性計算結果 人工路標圖像中屬性提取結束后,則根據其屬性構建人工路標模式并進行識別,通過預先存儲的模式與位置的對應關系可實現定位。本文提出的人工路標屬性提取算法能夠正確計算人工路標的屬性,有利于后面人工路標模式的構建與識別。 本文在基于人工路標的單目視覺定位中,對人工路標的屬性提取進行討論,通過移動機器人單目視覺傳感器獲取圖像,對所獲得的圖像進行預處理、圖塊形狀和顏色計算,從而實現人工路標的屬性提取。基于VC++編程實現文中所給的圖塊屬性計算算法,并在3m*3m室內按20cm*20cm的間隔布置了人工路標進行實驗,本文所提出的圖像增強方法使圖像受光照等客觀因素較小,突出彩色圖塊,對人工路標圖像的輪廓進行處理和存儲,使角點檢測在輪廓線的基礎上進行,提高算法速率和準確性,并且所計算的人工路標屬性正確,同時對于人工路標圖像發生旋轉或輕微變形的情況也能正確計算其屬性??偟膶嶒灲Y果表明本文所述方法可用于室內定位,方法可行、可靠。為了進一步提高基于人工路標的室內單目視覺定位的可靠性,需要進一步對強干擾背景下彩色圖塊形狀、顏色計算,角點檢測的算法也需要改進,使其滿足各種情況下的角點提取,同時滿足不同環境背景下的室內單目視覺定位需求。


4 人工路標彩色圖像的屬性計算






5 實驗分析

6 結語