李宏偉,崔羊威,張賀磊
(1.漯河職業(yè)技術(shù)學(xué)院,漯河462000;2.鄭州航空工業(yè)管理學(xué)院,鄭州450046)
近年來隨著計算機技術(shù)發(fā)展,更多研究學(xué)者和公司開始著手于人工智能技術(shù)的研究和應(yīng)用。以機器視覺中雙目測距系統(tǒng)為研究對象,搭建一套雙目視覺系統(tǒng)進行測量;利用MATLAB和OpenCV平臺工具,先采集20對棋盤格圖像進行攝像機的標(biāo)定,再利用標(biāo)定結(jié)果進行立體校正,運行BM、SGBM、GC和SIFT四種算法,分別對它們進行測距計算;結(jié)果表明,錯誤率分別是5%、3.6%、2.4%和4.1%,準(zhǔn)確率都很高,都表現(xiàn)出較好的測量性能。
人工智能;機器視覺;測距;OpenCV;錯誤率
近些年來,在世界范圍內(nèi)軟件和硬件技術(shù)都有著很大的發(fā)展和突破,使很多科學(xué)理論研究變?yōu)楝F(xiàn)實為可成。19世紀(jì)50年代的模式識別[1],它是讓計算機使用數(shù)學(xué)的思想方法去解決模式(環(huán)境與客體)的分析處理問題;再到近十年來被人們廣泛談起的人工智能,讓機器具有人類思維去分析處理現(xiàn)實中的問題。很多研究學(xué)者都認(rèn)為模式識別技術(shù)就是早期的人工智能。人工智能有著廣泛的應(yīng)用范圍,其中機器視覺[2]是它很重要的一個分支方向。機器視覺在無人駕駛[3]、電力巡檢[4]、物體尺寸測量[5]、車牌識別[6]、農(nóng)業(yè)果蔬采摘[7]等眾多領(lǐng)域有著廣泛應(yīng)用。等本文選擇一個雙目攝像頭,搭建了雙目測距系統(tǒng)平臺,利用MATLAB與OpenCV工具[8],對實驗過程中的數(shù)據(jù)進行處理分析,最后通過結(jié)論驗證實驗數(shù)據(jù)的準(zhǔn)確性和可靠性。
所謂的雙目測距系統(tǒng)[9],簡單地說就是在自然的真實場景中,采用一個攝像頭在不同的位置采集兩張圖像或者使用雙目攝像頭采集兩張圖像。然后將這兩張圖像通過相應(yīng)的計算機視覺圖像算法處理,便可得到所需的數(shù)據(jù)結(jié)果。雙目測距系統(tǒng)主要是由雙目立體匹配和測距計算兩個部分組成的[10]。其中雙目立體匹配技術(shù)的研究分析一直是研究學(xué)者近些年來探究的熱點[11],它又可以分為基于區(qū)域的和基于全局的。測距的計算部分是在立體匹配算法得到視差圖后,通過測距數(shù)學(xué)模型進行的數(shù)據(jù)計算和分析[12]。
如圖1,在理想情況下,左攝像頭的中心O1與右攝像頭的中心Or位于同一水平線上,O1Or稱為基線b,都位于三維坐標(biāo)系OaXaYaZa中。其中,Zl、Zr分別是左攝像頭與右攝像頭的光軸,二者是相互平行的,且在空間位置上分別垂直于三維坐標(biāo)系中的Xa軸。三維坐標(biāo)系中任意一點P在左右攝像機成像平面上的映射點分別是點Pl、點Pr,點P、點Pl、點Pr、點O1、點Or這5這個是共面的,這個平面與左右兩個攝像機成像平面兩條相交線分別稱為左極線與右極線[13]。
圖1 雙目立體系統(tǒng)
圖2 測距原理
如圖2,假設(shè)我們的攝像機是前向平行排列的[14],也就是左攝像機每一個像素行與右攝像機的每一個像素行相互準(zhǔn)確對齊的。點P是物理世界中任意點,Pl是左圖像上的成像點,橫坐標(biāo)為xl;Pr是右圖像上成像點,橫坐標(biāo)為xr。在這種理想情況下,我們得到視差與深度(距離)成反比,其中視差被簡單定義為d,再利用三角形相似我們可以得到如下式子:
通過以上對測距系統(tǒng)主要內(nèi)容的介紹,我們可以得到本文中算法的流程圖如圖3所示。
圖3 測距系統(tǒng)流程圖
在攝像機的標(biāo)定部分,目前來說主要有MATLAB和OpenCV兩種工具可以選擇。在MATLAB中又有MATLAB標(biāo)定工具箱和手動標(biāo)定TOOLBOX_calib兩種方法,我們選擇使用標(biāo)定精度比較高的TOOL?BOX_calib工具箱進行攝像頭的標(biāo)定[15]。下圖是我們使用雙目攝像頭采集到的20對棋盤格標(biāo)定圖像,盡量使每一對圖像都有不同的姿態(tài),這樣我們的標(biāo)定結(jié)果越準(zhǔn)確。
圖4 20對棋盤格圖像
左攝像機參數(shù)如下:
選擇使用非線性優(yōu)化方法法對投影誤差進行最小化操作,得到優(yōu)化后數(shù)據(jù):
焦距:
fc=[484.81152 483.18178]±[2.32920 2.35419]
圖像中心點:
cc=[307.04251 229.27620]±[2.09426 1.54072]
相機兩坐標(biāo)軸夾角:
alpha_c=[0.00000]±[0.00000]→angles of pixel axes=90.00000±0.00000 degree
畸變:
kc=[0.09218- 0.08036 0.00389- 0.00313 0.00000]±[0.00991 0.02505 0.00122 0.00000 0.00000]
對右攝像機進行同樣的處理,得到其參數(shù)如下:
選擇使用非線性優(yōu)化方法法對投影誤差進行最小化操作,得到優(yōu)化后數(shù)據(jù):
焦距:
fc=[488.64709 487.20682]±[1.78000 1.83256]
圖像中心點:
cc=[297.32973 231.38645]±[1.80916 1.41391]
相機兩坐標(biāo)軸夾角:
alpha_c=[0.00000]±[0.00000]→angles of pixel axes=90.00000±0.00000 degree
畸變:
kc=[0.07817-0.04069 0.00334-0.00168 0.00000]±[0.00932 0.03458 0.00117 0.00000 0.00000]
先分別對兩個相機進行單目標(biāo)定,再使用立體標(biāo)定工具箱(Stereo Camera Calibration Toolbox)進行立體標(biāo)定。選擇使用左相機坐標(biāo)系作為世界坐標(biāo)系,求出相機間的旋轉(zhuǎn)矩陣R和平移向量T:
本文利用雙目攝像頭對真實場景中的圖像進行采集,隨機選擇水杯盒子距離攝像頭300mm的圖像,如圖5所示。
圖5 300mm真實場景圖像
本文分別在水杯盒子距離攝像頭200mm、300mm、400mm、500mm距離處,在每個距離點都采集5張圖像,共采集20張圖像,在每一張圖像中選擇同一平面上距離相等的10個點進行求均值作為最終距離。使用MATLAB中我們標(biāo)定的攝像機參數(shù),利用的BM、SGBM、GC[16]和SIFT[17]這四種算法,對實驗結(jié)果數(shù)據(jù)進行記錄并分析,所得結(jié)果如表1。
圖6 SIFT角點匹配圖
表1 BM、SGBM、GC、SIFT測距數(shù)據(jù)
從表1中的誤差可以看出:BM算法的精度為5.0%,GC算法的誤差為2.4%,SIFT角點匹配算法和SGBM算法表現(xiàn)居中,誤差分別為4.1%和3.6%。
本文在雙目視覺系統(tǒng)的基礎(chǔ)上,介紹了雙目測距的原理,結(jié)合OpenCV和MATLAB工具,對BM、SG?BM、GC、SIFT四種算法的精度進行比較分析。一般來說,雙目立體匹配算法越精確,在最后的測距計算部分越準(zhǔn)確。在今后的研究學(xué)習(xí)過程中,我們可以繼續(xù)研究雙目立體匹配算法優(yōu)化上來,得到更加準(zhǔn)確的視差圖;也可以往實時的雙目立體技術(shù)進行研究,應(yīng)用到具體的工程項目中去。