李 丹,汪元禮
(安徽工業(yè)大學(xué)電氣與信息工程學(xué)院,安徽馬鞍山 243032)
隨著科學(xué)計算的發(fā)展,服務(wù)機器人正在進入人們的生活。在常見人機交互,如人臉立體識別、手勢識別和眼動追蹤等應(yīng)用場景中,與服務(wù)機器人的人機交互體驗會因人距離機器人遠近的不同,直接影響機器人響應(yīng)的準確性,進而對人機交互體驗產(chǎn)生不良影響。隨著Android 的發(fā)展,越來越多的消費級市場服務(wù)機器人逐漸使用Android 平臺進行人機交互。雙目視覺因具有低成本、高精度和強魯棒性等特點,被廣泛用于測距領(lǐng)域。在基于Android 的人機交互平臺上實現(xiàn)雙目測距,根據(jù)設(shè)定的多段距離閾值給用戶不同的提示,對優(yōu)化人機交互體驗具有重要的應(yīng)用價值。
國內(nèi)外學(xué)者對雙目視覺測距已有一定的研究,2015 年,英特爾推出了一款基于主動發(fā)射紅外線與雙目測距相結(jié)合的景深獲取攝像頭RealSense3D,用其可完成距離測算,但價格昂貴,對于已部署的普通雙目攝像頭需重新購置;Ma等在個人電腦上,使用歸一化互相關(guān)(normalized cross correlation,NCC)算法模板匹配尋找匹配點,通過中心匹配點的二維坐標計算目標與相機的距離來進行雙目測距,減少了光照不均勻帶來的影響,但對匹配模板的選取要求較高、運算量較大、移植困難;瑚琦等在ARM(advanced RISC machine)平臺上使用區(qū)域生長的廣度優(yōu)先標記算法實現(xiàn)了雙目視覺測距,運算量雖有降低,但測量精度在300~800 mm 范圍內(nèi)誤差率較高,達10%;黃青丹等基于半全局匹配(semi-global block matching,SGBM)算法實現(xiàn)電力儀表空間坐標的計算,測距精度在380~460 mm 范圍平均相對誤差不超過1.84%,但SGBM 算法時間在8 s 左右,耗時長,很難用于服務(wù)機器人中對時間較敏感的場景。為解決上述問題,提出使用運算量較小的塊匹配(block matching,BM)算法,結(jié)合左右一致性檢測和快速均值濾波,在保證算法快速的同時提高測距精度,以期實現(xiàn)Android人機交互平臺準確快速測距的目的,提升用戶人機交互體驗。
圖1 系統(tǒng)處理流程Fig.1 System processing flow
1.2.1 相機標定
雙目相機標定的目的是建立相機成像幾何模型,獲取各項參數(shù)矩陣,尋找目標物體在圖像與現(xiàn)實世界間轉(zhuǎn)換的定量數(shù)學(xué)描述。通過相機標定需獲取相機的內(nèi)參和外參。
1.2.2 直方圖均衡和雙目圖像矯正
為適應(yīng)Android端圖像處理的計算復(fù)雜度要求,使用插值加速方法降低變換函數(shù)的計算次數(shù)。通過限制對比度的自適應(yīng)直方圖均衡化,改進圖像的局部對比度,獲取更多的圖像細節(jié)。
使用相機標定結(jié)果中左右相機各自的內(nèi)參矩陣和畸變系數(shù)分別對左右相機的圖像進行畸變校正;采用Bouguet 方法對圖像進行立體矯正,通過極點約束將后續(xù)的立體匹配由二維匹配降至一維匹配,大大減少Android端的計算量;對矯正過的圖片進行剪裁,獲取最大有效匹配區(qū)域。
1.2.3 BM算法
使用灰度絕對誤差累計窗口(sum of absolute differences,SAD)尋找左右兩幅圖像之間的最優(yōu)匹配點,主要有歸一化過濾、塊代價聚集和視差圖計算等過程。歸一化處理可減少弱匹配點的誤匹配,另在減少亮度差異的同時增加局部的紋理強度。通過尋找左右兩幅圖像在極線上滑動的窗口匹配代價最小值,獲取最佳匹配點。使用的匹配代價計算公式為
E
為左匹配窗口的灰度均值;E
為右匹配窗口的灰度均值;D
為匹配窗口;d
為視差;C
(x
,y
,d
)為匹配代價。對于給定的(x
,y
),尋找使C
(x
,y
,d
)最小的d
,此時d
被認為是該點的視差。式(1)代表窗口匹配的代價,代價越小,匹配程度越高,效果越好。通過視差d
可獲取深度信息Z
,計算公式為③YANG R.,“Chinese ways of thinking in the transformation of China’s higher education system”,J.Ryan(ed.),China’s Higher Education Reform and Internationalization,London and New York:Routledge,2011,pp.34 ~47.
f
為歸一化焦距,即相機標定后得到內(nèi)參中的f
;b
為兩個相機光心之間的距離,即相機標定外參中的平移矩陣中的第一個參數(shù)。1.2.4 改進的BM算法
BM 算法在圖像灰度和深度不連續(xù)的區(qū)域表現(xiàn)不足,特別是在物體邊界處和遮擋處易造成視差圖空洞。通過式(2)可知,視差圖空洞處的深度信息無窮大,嚴重影響測距性能。故采用左右一致性檢測(left-right consistency check,LRC Check)和快速均值濾波對BM 立體匹配算法的后處理部分進行改進。左右一致性檢測即通過遮擋檢測得到相應(yīng)的遮擋圖像,根據(jù)遮擋點鄰域內(nèi)有效點的值為遮擋點重新賦值。
如圖2 所示,I
為左圖像對應(yīng)的視差圖,I
為右圖像對應(yīng)的視差圖,點p
為I
視差圖中某投影點。該投影點的視差值為d
,記為I
(p
),該投影點在右圖像中對應(yīng)的匹配點為投影點p
,視差值記為I
(p
)。設(shè)置視差閾值為T
,則LRC遮擋檢測的表達式為圖2 左右一致性檢測示意圖Fig.2 Schematic diagram of left-right consistency check
其中O
(p
)為p
點是否遮擋的標志,即某點具體的視差值。當(dāng)左右兩邊視差值之差大于設(shè)定的閾值時,該點被檢測為遮擋點,對其重新賦值,完成遮擋填充。左右一致性檢測可處理因遮擋而產(chǎn)生的空洞,但對于其他未匹配的點或誤匹配最后被剔除的點造成的空洞卻沒有填充。傳統(tǒng)的解決方案是使用較大的卷積核對圖像進行均值濾波,但這種方法計算量大,不適用于Android平臺。使用快速均值濾波對已處理過的視差圖進行均值濾波,采用鄰域內(nèi)累加值維持交集內(nèi)像素累加和,即
雙目視覺硬件實驗平臺如圖3。使用USB OV9732 雙目同步攝像頭采集圖像,搭載Android8.1系統(tǒng)的Cortex-A72 雙核處理器ARM 板對采集到的雙目圖像進行分析處理。在正常環(huán)境下測試雙目測距方案,通過點擊事件發(fā)生處像素坐標系下的像素點坐標獲取世界坐標系下的三維坐標。
圖3 雙目視覺硬件實驗平臺Fig.3 Experimental platform of binocular vision hardware
使用間距為25 mm的7×9棋盤格,利用MATLAB標定工具箱進行雙目標定。內(nèi)參標定結(jié)果如表1,外參標定結(jié)果如表2。
表1 雙目相機內(nèi)參數(shù)標定結(jié)果Tab.1 Calibration result of internal parameter of binocular camera
表2 雙目相機外參數(shù)標定結(jié)果Tab.2 Calibration result of external parameter of binocular camera
正常環(huán)境下使用雙目相機進行拍攝,獲取的原圖如圖4。由圖4 可知,受光照影響,圖像局部對比度小,左右圖像亮度分布不均勻,且存在極線不共線的情況。使用限制對比度的自適應(yīng)直方圖均衡的方式進行預(yù)處理,預(yù)處理后的圖像如圖5。由圖5可看出:處理后的圖像局部對比度有所提高,圖像噪聲有所減弱;圖像仍存在圖像極線不共線和畸變的情況。對圖像進行畸變和Bouguet 立體校正,校正后的結(jié)果如圖6。對比圖5,6可發(fā)現(xiàn):畸變校正和立體校正后,理想的平行雙目圖像,圖像極線對齊;對預(yù)處理后的圖像進行剪裁,只保留有效區(qū)域,使感興趣區(qū)域最大化,為后續(xù)的目標立體匹配做準備。
圖4 原圖像Fig.4 Original image
圖5 預(yù)處理后的圖像Fig.5 Preprocessed image
圖6 校正和有效區(qū)域裁剪后的圖像Fig.6 Image after correction and effective region clipping
為驗證校正和有效區(qū)域裁剪對生成視差圖的影響,對原圖、校正和有效區(qū)域裁剪后的圖像使用BM 算法進行立體匹配并生成視差圖,統(tǒng)計當(dāng)前條件下兩份圖片生成各自視差圖的時間,對比分析生成視差圖的效果。原圖及校正和裁剪后生成的左視差圖如圖7。由圖7 可看出,相較于原圖,校正和裁剪后的圖像生成的左視差圖整塊空洞變少,匹配準確性更高。原圖生成的左視差圖耗時167 ms,校正和裁剪后圖像生成的左視差圖耗時153 ms。由此可見,校正和有效區(qū)域裁剪能減少匹配時間、提升匹配效果。
圖7 左視差圖Fig.7 Left parallax map
從圖7 還可看出,校正和有效區(qū)域裁剪后圖像生成的視差圖中仍存在未匹配或誤匹配被剔除的點,這些點對應(yīng)的視差值為0,即深度信息無限大??紤]到距離測算的要求,為保證測算準確,對這些空洞進行填充,并由積分圖濾波窗口內(nèi)其他有效深度信息的加權(quán)為其深度信息重新賦值,效果如圖8。由圖8可見,空洞填充后,視差圖中深度信息無限大的錯誤點顯著減少,深度信息更準確。
圖8 空洞填充后的視差圖Fig.8 Parallax map after hole filling
通過調(diào)整標定板與攝像頭的距離,測試給定閾值下系統(tǒng)對不同距離的響應(yīng),結(jié)果如圖9。圖9 顯示:在距離小于400 mm 時,提示距離攝像頭太近;距離在400~900 mm之間,顯示距離合適;距離大于900 mm時,提示距離攝像頭太遠。由此看出,設(shè)計的雙目視覺系統(tǒng)能夠?qū)?種閾值距離進行正確識別,并在提示框給出文字提示。
圖9 不同閾值下實際測試結(jié)果Fig.9 Actual test results under different thresholds
為排除偶然性誤差。測量攝像頭和被測標定板在多組不同距離下BM 算法的系統(tǒng)測量值、誤差率和不同檢測距離的提示文字,結(jié)果見表3。由表3可知,BM 算法的誤差率隨距離的增加而增大,900 mm內(nèi)的誤差率在1.05%以內(nèi),滿足人機交互時測距精度要求。
表3 多距離測量結(jié)果對比Tab.3 Comparison of multi-distance measurement results
相同測試環(huán)境下,BM 算法和SGBM 兩種算法的測試時間和誤差率如表4。由表4可見:SGBM 算法測距精度比BM 算法稍好,但響應(yīng)的測試時間長,較長的時間意味著用戶等待時間增加,使用體驗下降;BM 算法在900 mm 內(nèi)的誤差率在1.05%以內(nèi),大于SGBM 算法的誤差率(0.80%),但耗時卻遠低于SGBM 的秒級耗時,僅維持在156 ms 內(nèi),滿足人機交互時測距精度和時延的要求。
表4 兩種常見算法的測距結(jié)果Tab.4 Ranging results of two common algorithms
設(shè)計基于Android 嵌入式平臺的小型雙目測距系統(tǒng),在Android 嵌入式人機交互平臺上使用BM 算法進行立體匹配,結(jié)合限制對比度的自適應(yīng)直方圖均衡化對圖像進行預(yù)處理,加入左右一致性檢測和快速均值濾波獲取最終視差圖。使用標定板測距模擬人機交互場景下距離的檢測,針對不同的檢測距離給用戶不同的交互提示。實驗結(jié)果表明,對于設(shè)計的雙目視覺測距系統(tǒng),其測距誤差率隨雙目相機和標定板間距離的增大而增加;在900 mm以內(nèi)時,測距誤差率在1.05%以內(nèi),檢測時間低于156 ms,基本滿足Android平臺人機交互體驗的測距精度和時間要求。