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