劉海龍,張智棟,楊停停
(鄭州大學 信息工程學院,鄭州 450001)
機器視覺技術,是一門涉及人工智能、計算機科學、圖像處理、模式識別等諸多領域的交叉學科。機器視覺主要采用外部設備來模擬人的視覺功能,從客觀事物的圖像中提取信息,進行處理并加以理解,最終用于實際檢測、測量和控制[1]。傳統(tǒng)的服務型機器人,通常在視覺方面采用傳統(tǒng)的單向攝像,無法做到360°全向信息的收集,在一些特定的情況下存在一定的局限性,并不能很好地完成任務。隨著時代的發(fā)展和進步,機器視覺領域也愈發(fā)成熟,在機器人方向的應用也越來越受到關注[2]。因此,本系統(tǒng)旨在實現(xiàn)將全景圖片作為機器人的實際視覺信息,并由此驅動底盤運動,發(fā)布合適的角速度,從而完成全向尋人功能。
在本系統(tǒng)中,其核心問題是底盤驅動程序的設計。外界的信息來源為雙目攝像頭所拍攝的圖片,系統(tǒng)實際進行實驗時采用簡易版雙目攝像頭,如圖1 所示。
圖1 雙目魚眼攝像頭Fig.1 Binocular fish eyes camera
實現(xiàn)360°全景尋人,首先要獲取雙目攝像頭的圖片信息,并將前后兩張圖片進行展開、校準,并對校準后的圖片做拼接、融合處理。
在得到的全景圖片中,需要進一步確定圖片中目標人體所在的位置。本系統(tǒng)將會采用中科視拓開源的SeetaFace2 算法來進行人臉的定位,其中人臉檢測模塊在FDDB 上的100 個誤檢條件下可達到超過92% 的召回率[3],通??梢酝瓿扇粘P枰囊?。
完成圖片中人體的定位后,根據(jù)人臉中心像素點的橫坐標,從而判斷出人體在全景圖片中的相對位置,并在ROS 操作系統(tǒng)中,與機器人運動底盤進行通信,發(fā)布與之對應的角速度信息,完成轉向,從而實現(xiàn)尋人功能。
2.1.1 展開
由于雙目魚眼攝像頭的張角為220°,實際所獲圖片為球形壓縮圖片,因此要將獲取的圖片進行展開。展開時需用到公式(1)進行經(jīng)度坐標修正。
設原球形壓縮圖片的半徑為R,其中一個像素點的坐標為(x,y),展開后的圖片對應像素坐標為(u,v),圖片中心點坐標為(x0,y0),根據(jù)坐標變換圖像,可得兩者對應的關系為[4]:
圖2 坐標變換圖Fig.2 Coordinate transformation diagram
由此導出x與(u,v) 的函數(shù)關系為:
設圖片中R的值為800,并取x0=y(tǒng)0=R,則當u∈[R,2R]、v∈[R,2R]時,繪制出函數(shù)f的圖像如圖3 所示。
圖3 f 的函數(shù)圖像Fig.3 Function image of f
在實際轉換中,考慮到x0≈y0≈R,并且要保證展開圖有較好的完整性,在本系統(tǒng)中實際采用的變換公式為:
本系統(tǒng)進行測試時參數(shù)a =1.5、b =0.95。a值主要影響邊界的剪裁,b值主要影響徑向展開的曲率。設圖片中R的值為800,當u∈ [0,2R],v∈[0,2R]時,繪制出函數(shù)g的圖像如圖4 所示。
圖4 g 的函數(shù)圖像Fig.4 Function image of g
系統(tǒng)運行效果如下所示。其中圖5、圖7 為未經(jīng)處理的魚眼球型壓縮圖像,圖6、圖8 為其展開后的效果圖。
圖5 魚眼雙目攝像頭原圖像1Fig.5 Fish eyes binocular camera original image 1
圖6 雙目攝像頭展開圖像1Fig.6 Binocular camera deployment image 1
圖7 魚眼雙目攝像頭原圖像2Fig.7 Fish eyes binocular camera original image 2
圖8 雙目攝像頭展開圖像2Fig.8 Binocular camera deployment image 2
2.1.2 融合與拼接
完成球形壓縮圖片的展開后,若直接進行拼接處理,則兩圖片的交界處會出現(xiàn)重影,因此需要進一步對處理后的圖片做融合處理。通常分為3 個步驟:
(1)對每幅圖進行特征點提取;
(2)對特征點進行匹配;
(3)完成圖像的融合與拼接。
此時,使用OpenCV 官方提供的高度集成API函數(shù)Stitcher即可完成對應圖片的拼接。Stitching拼接算法的流程[6]如圖9 所示。應用效果如圖10、圖11 所示。
圖9 Stitching 拼接算法流程圖Fig.9 Flow chart of stitching algorithm
圖10 未進行融合拼接的全景圖片F(xiàn)ig.10 Panoramic image without fusion stitching
圖11 經(jīng)由Stitching 算法拼接后的全景圖片F(xiàn)ig.11 Panoramic image stitched by stitching algorithm
完成全景圖片的合成后,需要在所獲得的目標圖片中準確判定出人體所在位置。在本系統(tǒng)中,采用中科視拓開源Seetaface2 算法中的Detection 模塊。該模塊基于一種結合經(jīng)典級聯(lián)結構和多層神經(jīng)網(wǎng)絡的人臉檢測方法實現(xiàn),其所采用的漏斗型級聯(lián)結構,專門針對多姿態(tài)人臉檢測而設計[5]。而在該算法中,可直接將圖片作為參數(shù)傳入,將得到的全景圖片進一步處理。調用FD 模塊的Detect 方法,在返回的SeetaRect 指針中,存儲著全景圖片中所有人臉的左上角像素點的橫縱坐標以及其所對應的寬度與高度,應用效果如圖12 所示。
圖12 Seetaface2 實際應用圖Fig.12 Seetaface2 practical application diagram
設在全景圖片中,某一人臉信息對應的SeetaRect 指針名為face,全景圖片的列數(shù)為Matcol,底盤轉動角速度為v。取逆時針為正方向,并定義position為人臉中心點在全景圖片中所處位置的比例值。則有:
其中,(i =1,2,3,.....) 。由此引申出底盤角速度v_angel與position 的函數(shù)關系f:
至此,本系統(tǒng)建立了一種由雙目攝像的分離圖片到底盤運動角速度的一種實時映射??紤]到每個人對應的positon都會隨該系統(tǒng)的運動而發(fā)生實時變化,也同樣需要實時地向運動底盤發(fā)送與之對應的v_angel,這使得該系統(tǒng)在面對各種方向的正朝者時,都可以做到發(fā)布正確角速度并轉向正確的方位,并調整positon位于0.2~0.3 之間的位置,即一定范圍內的正朝向,至此完成底盤驅動工作方式的理論設計。
本系統(tǒng)的測試涵蓋正向側面、反向側面以及正反向邊緣交界處3 個方位。由此觀察本系統(tǒng)能否完成正確的方向轉換,并將完整的程序搭載在ros 操作系統(tǒng)環(huán)境下。在實際測試用機器人中進行數(shù)據(jù)的收集,系統(tǒng)設定的轉速v =0.25 rad/s,效果圖如下所示:
(1)正向側面過渡至正朝向,如圖13-15 所示。
圖13 正向側面圖1Fig.13 Front side view 1
可以看出,隨著機器人自身的運動變化,人體所對應的position也在實時變化,而根據(jù)v_angel與position的映射關系,該系統(tǒng)總是能夠向底盤發(fā)布合適的角速度信息,完成正確的轉向。
圖14 正向側面圖2Fig.14 Front side view 2
圖15 正朝向圖1Fig.15 Facing Figure 1
(2)反向側面過渡至正反向邊緣交界處,如圖16、圖17 所示。
圖16 反向側面圖Fig.16 Reverse side view
圖17 正反向交界處Fig.17 Edge junction
(3)正反向邊緣交界處過渡至正朝向,如圖18、圖19 所示。
圖18 正向側面圖3Fig.18 Front side view 3
圖19 正朝向圖2Fig.19 Facing Figure 2
本文提出了一種由全景圖片作為機器人視覺信息的構想,并由此驅動底盤進行全向尋人的模型,對如何由雙目魚眼攝像頭所獲取的圖片進行展開與融合、拼接的方式做了較為詳細的闡述,在全景圖片的基礎上,利用SeetaFace2 算法對圖片進行正向人臉的檢測,從而確定人體位置,并由其返回結果向底盤發(fā)布合適的角速度信息進行轉向。本系統(tǒng)的創(chuàng)新之處在于將全景圖片應用于傳統(tǒng)的服務型機器人,對未來服務型機器人廣闊的應用場景及發(fā)展方向提供了一定的創(chuàng)新價值與實際應用價值。