趙恩銘,姚志強,楊 松,劉光宇,楊燕婷,王 辰,邢傳璽
(1.大理大學(xué)工程學(xué)院,云南大理 671003;2.云南民族大學(xué)電氣信息工程學(xué)院,昆明 650500)
科技的飛速發(fā)展使得人工智能技術(shù)在多個領(lǐng)域得到廣泛應(yīng)用,基于機器視覺的目標(biāo)追蹤技術(shù)近年來一直是軍事、工業(yè)等領(lǐng)域的研究重點,基于視覺檢測目標(biāo)的關(guān)鍵在于區(qū)分目標(biāo)與環(huán)境,在實時追蹤目標(biāo)時由于目標(biāo)形態(tài)和周圍環(huán)境始終在變化,難以精確區(qū)分,因此一直是追蹤領(lǐng)域的難點,同時隨著目標(biāo)追蹤技術(shù)的應(yīng)用場景不斷增加,單一的算法很難覆蓋所有應(yīng)用場景,因此研究人員針對不同的應(yīng)用場景開發(fā)出了多種算法,如背景差分法〔1〕、幀間差分法〔2〕、特征點檢測算法〔3〕、連續(xù)自適應(yīng)均值漂移(Cam Shift)算法〔4〕、April Tag 算法〔5〕和光流法〔6〕等,它們的優(yōu)缺點見表1。
表1 目標(biāo)識別與跟蹤算法的優(yōu)缺點
上述算法均存在某些方面不適合用于移動目標(biāo)跟隨,無法滿足任務(wù)需求,因此本文針對目標(biāo)跟隨的任務(wù)需求對April Tag 算法進行改進,實驗結(jié)果證明,改進后的April Tag 算法進一步提升了算法的準(zhǔn)確性和檢測效率,能夠滿足目標(biāo)跟隨的任務(wù)需求。
1.1 April Tag 視覺標(biāo)簽的結(jié)構(gòu)為保證標(biāo)記識別的準(zhǔn)確性與可靠性,April Tag 算法的標(biāo)簽采用二進制編碼的方式。April Tag 視覺標(biāo)簽由黑色邊框和編碼區(qū)兩部分組成,黑色邊框用于定位,便于算法在進行四邊檢測時發(fā)現(xiàn)標(biāo)簽的位置,編碼區(qū)為一個6×6 的矩陣,其中不同的編碼矩陣代表不同的標(biāo)簽ID〔7〕,為避免不同ID 的標(biāo)簽在旋轉(zhuǎn)和遮擋時相互混淆,所有的標(biāo)簽之間要有足夠的漢明距離〔8〕,任意兩個標(biāo)簽之間至少要有11 位的信息編碼差,漢明距離越大,代表標(biāo)簽之間的差別越大。見圖1。
圖1 視覺標(biāo)簽ID1 與ID2 的編碼矩陣
1.2 改進的April Tag 檢測算法April Tag 算法檢測分為標(biāo)記檢測和ID 識別兩部分。標(biāo)記檢測首先根據(jù)梯度變化進行邊緣提取,獲取標(biāo)簽的輪廓,然后對權(quán)值相似的像素進行聚類,再擬合畫面中的四邊形,從而得到畫面中標(biāo)簽的位置。ID 識別通過分析四邊形內(nèi)的黑白色塊組成編碼矩陣,將編碼矩陣與內(nèi)部數(shù)據(jù)比較,從而判斷標(biāo)簽的ID。
如表2〔9〕所示,April Tag 視覺標(biāo)簽通過添加冗余的方式獲得一定的容錯性,當(dāng)標(biāo)簽被部分遮擋時依然能夠被識別。
表2 不同種類的April Tag 視覺標(biāo)簽容錯性
April Tag 算法檢測流程見圖2,攝像頭采集到圖像后,將圖像二值化,根據(jù)灰度變化檢測畫面中存在的邊緣,對邊界權(quán)值相似的像素進行聚類,最后進行四邊檢測,確定April Tag 的ID 和位置并舍棄無法識別的標(biāo)簽。檢測過程示意見圖3〔10〕。
圖2 April Tag 算法檢測流程圖
圖3 檢測過程示意圖
在邊緣提取時使用Canny 算法〔11〕對畫面進行輪廓檢測。首先將彩色圖像加權(quán)轉(zhuǎn)化為灰度圖,轉(zhuǎn)化公式為:
將灰度圖與高斯函數(shù)做卷積以提高算法的抗噪能力,當(dāng)搜索到該圖像的邊緣時,對各像素點及其附近的像素點灰度值進行梯度強度和方向的計算,隨后沿梯度方向進行非極大值抑制,若計算得到的像素梯度值是沿著梯度方向的最大值時,說明該像素點是邊緣像素點,通過多個邊緣像素點提取具有邊界性質(zhì)的區(qū)域,如圖3(b)所示。
在提取到圖像邊緣后,使用聚類算法〔12〕將圖像的邊緣聚集為多個簇,設(shè)數(shù)據(jù)集含有n 個數(shù)據(jù)對象,首先從這n 個數(shù)據(jù)對象中隨機選取k 個對象作為初始聚類中心,對于剩余的對象根據(jù)與聚類中心的相似程度將其分配到最相似的類中,然后對于每一個類,將類中的所有對象的平均值作為新的聚類中心,進行下次迭代。不斷重復(fù)該過程,當(dāng)類中心不再發(fā)生變化,準(zhǔn)則函數(shù)收斂時,聚類完成,準(zhǔn)則函數(shù)如下所示:
其中:E 是數(shù)據(jù)集中所有對象與它所在的聚類中心的平方誤差的總和,E 的大小反映了聚類結(jié)果的好壞;xi是聚類Ci的聚類中心,k 是聚類個數(shù),Ci是第i個聚類,聚類完成后的效果如圖3(c)所示。
使用四邊檢測算法〔13〕檢測圖像中的凸多邊形圖案,利用圖像中的邊緣線條來解析圖中的四邊形結(jié)構(gòu),達到分析圖像中各邊界關(guān)系的目的。任意選取邊緣線條上的一點作為起始點,檢測和起始點屬于同一類的邊緣點,不斷循環(huán)以上步驟,當(dāng)再次檢測到起始點時,說明檢測路線形成閉環(huán),即識別到一個多邊形。本次選取結(jié)束后,系統(tǒng)隨機選擇另一個點作為起始點并重復(fù)以上環(huán)節(jié),最后保留其中的四邊形,被保留的四邊形即為候選視覺標(biāo)簽,如圖3(d)所示。
對候選視覺標(biāo)簽進行判斷,提取候選標(biāo)簽中的黑白色塊形成編碼矩陣,并與內(nèi)置編碼庫進行匹配,若匹配成功,則判定圖像含有April Tag 視覺標(biāo)簽,并輸出該標(biāo)記ID 編號;若匹配失敗,則認(rèn)為該部分不含視覺標(biāo)簽。
當(dāng)畫面中標(biāo)簽足夠大,并能夠準(zhǔn)確識別時,為提升算法識別的實時性,在不影響識別準(zhǔn)確率的前提下,應(yīng)用動態(tài)降采樣算法〔14〕,提高算法實時性。見圖4。該算法會通過減少檢測像素數(shù)的方式提高算法的識別速度,降采樣效果如圖4(b)所示,與左側(cè)原圖相比,由于圖像像素減少,降采樣后的線條邊緣明顯模糊,但不會影響標(biāo)簽生成的編碼矩陣。
圖4 降采樣效果圖
當(dāng)畫面中標(biāo)簽過小,無法準(zhǔn)確識別時,采用升采樣〔15〕技術(shù)提高圖像質(zhì)量,同時為保證識別速度,將畫面全局搜索標(biāo)簽改變?yōu)榫植克阉鳂?biāo)簽,通過縮小檢測范圍的方式減少識別的像素數(shù),提高識別速度。見圖5。
圖5 升采樣局部搜索示意圖
2.1 整體結(jié)構(gòu)設(shè)計本設(shè)計主要分為機器視覺與外設(shè)控制兩部分,機器視覺部分用于追蹤輸入圖像中標(biāo)簽的位置,輸入圖像后機器視覺模塊使用April Tag 算法識別畫面中標(biāo)簽的位置,通過計算得到標(biāo)簽的偏移角度后通過USART 串口將該角度信息發(fā)送到STM32 中,為控制電機轉(zhuǎn)向提供數(shù)據(jù)〔16〕。外設(shè)與控制部分在接收到機器視覺模塊輸出的偏移角度后,改變兩側(cè)直流電機的占空比,同時電機會將轉(zhuǎn)速信息返回到STM32 中,超聲波模塊的作用是檢測前方有無障礙物,避免碰撞,液晶顯示部分用于顯示目標(biāo)的偏移角度、電機的占空比與轉(zhuǎn)速等運行參數(shù),便于觀察系統(tǒng)的運行狀態(tài)。見圖6。
圖6 系統(tǒng)總體設(shè)計圖
2.2 系統(tǒng)結(jié)構(gòu)設(shè)計本文采用的機器視覺模塊為OpenMV,該模塊通過自帶的攝像頭采集圖像,采集到圖像后通過April Tag 算法鎖定標(biāo)簽的位置,并根據(jù)識別目標(biāo)在畫面中的位置確定偏移角度,將畫面中心點設(shè)為零點,當(dāng)目標(biāo)出現(xiàn)在畫面左側(cè)時水平偏移角度為負(fù),目標(biāo)在右側(cè)時水平偏移角度為正,偏移角度檢測公式為:
其中tag_x 表示標(biāo)簽中心的水平像素坐標(biāo)、wide 表示水平像素個數(shù)、HFOV 表示鏡頭的水平視角,偏移角度檢測結(jié)果見圖7。
圖7 偏移角度檢測圖
OpenMV 將偏移角度通過串口輸出到STM32后,STM32 通過改變兩側(cè)電機轉(zhuǎn)速實現(xiàn)差速轉(zhuǎn)向。若算法實時性過低,會降低偏移角度的發(fā)送頻率,導(dǎo)致轉(zhuǎn)向不及時,無法準(zhǔn)確跟隨目標(biāo)。
實驗相關(guān)器件參數(shù)見表3。
表3 實驗器件參數(shù)
為保證實驗的準(zhǔn)確性,使用tag36h11_1 在不同距離張貼無視角變換和不同視角變換的圖像,重復(fù)50 次測試本系統(tǒng)的性能,實驗過程如下所示:
如圖8 所示,分別將標(biāo)簽放置在0.50、0.75、1.00、1.25、1.50、1.75、2.00、2.25、2.50、3.00 m 的 位置,與Tag 視角相差0°、15°、30°、45°、60°的情況下測試本系統(tǒng)的識別準(zhǔn)確率。
圖8 實驗場景圖
圖9 為傳統(tǒng)算法與本文算法在不同視角、不同距離的準(zhǔn)確率對比實驗結(jié)果,通過不同視角、不同距離下準(zhǔn)確率的變化分析算法的性能,實驗結(jié)果如下所示。
圖9 準(zhǔn)確率對比
實驗結(jié)果表明,標(biāo)簽在距離1.5 m 以內(nèi),視角偏差為0°、15°時,由于視角變換產(chǎn)生的透視干擾較小,兩種算法的識別準(zhǔn)確率較高;當(dāng)偏移上升到30°、45°時,兩種算法的識別準(zhǔn)確率皆略有下降;當(dāng)視角偏移為60°時,由于偏移角度過大,使視覺標(biāo)簽在畫面中變形嚴(yán)重,導(dǎo)致兩種算法識別準(zhǔn)確率都發(fā)生較大的下降。
標(biāo)簽在2.0 m 以外時,由于標(biāo)簽極小,傳統(tǒng)April Tag 算法中的標(biāo)簽圖片模糊,無法準(zhǔn)確識別,識別準(zhǔn)確率隨距離的提升下降嚴(yán)重,而改進后的April Tag 算法通過提升圖像質(zhì)量的方法,提高了標(biāo)簽圖片的清晰度,使得識別準(zhǔn)確率與傳統(tǒng)算法相比有顯著提升。
不同改進算法的識別速度以及追蹤效果如表4所示,當(dāng)標(biāo)簽較大時,該算法可自動進行降采樣,提升圖像檢測的實時性,當(dāng)標(biāo)簽較小時,該算法可自動進行升采樣,同時縮小識別范圍,保證圖像檢測的實時性。
表4 算法識別速度與追蹤效果
以上結(jié)果表明,本文改進的視覺標(biāo)簽識別算法能夠顯著提升標(biāo)簽圖像較小時的識別準(zhǔn)確率,能夠完成實時跟隨目標(biāo)移動的任務(wù),算法的處理速度快,識別準(zhǔn)確率高,跟隨效果好。
本文為提高自動跟隨系統(tǒng)的實時性與準(zhǔn)確性,對April Tag 算法進行了改進,當(dāng)與目標(biāo)距離較近,能夠準(zhǔn)確識別目標(biāo)時,采用降采樣算法提升識別的實時性,當(dāng)視覺標(biāo)簽過小導(dǎo)致識別準(zhǔn)確性差時,采用升采樣算法結(jié)合局部搜索策略,提升圖像質(zhì)量并縮小檢測范圍,達到了保證實時性的同時提高遠(yuǎn)距離下的識別準(zhǔn)確率。實驗結(jié)果表示,該運動目標(biāo)跟隨系統(tǒng)準(zhǔn)確率高、實時性強,能夠滿足自動跟隨系統(tǒng)的要求。