胡亞楠,潘焜,王鐵錚,喻曉
(國(guó)網(wǎng)北京市電力公司物資分公司,北京100053)
現(xiàn)代社會(huì)倉(cāng)儲(chǔ)管理更加集中和繁重,通過(guò)人工篩檢的方法管理倉(cāng)儲(chǔ)物品需要較大的人力成本,立體視覺(jué)技術(shù)的實(shí)現(xiàn)提供了倉(cāng)儲(chǔ)自動(dòng)化[1]的可能性。作為倉(cāng)儲(chǔ)自動(dòng)化的一個(gè)基礎(chǔ)環(huán)節(jié),物體尺寸識(shí)別和體積測(cè)量具有提供物體物理信息和幫助管理系統(tǒng)決策的功能,亟需準(zhǔn)確高效的解決方案。
侯躍遷等人提出提取部件邊緣點(diǎn)反求世界坐標(biāo)求解異面直線距的方法來(lái)測(cè)量尺寸[2],毛佳紅等人通過(guò)線結(jié)構(gòu)光法和雙目視覺(jué)原理實(shí)現(xiàn)三維重建進(jìn)而完成積分式的體積測(cè)量[3],邵寶峰結(jié)合雙目立體視覺(jué)技術(shù)和點(diǎn)激光測(cè)距對(duì)物體三維尺寸進(jìn)行測(cè)量[4],王玉偉等人采用RCF 邊緣檢測(cè)及其他預(yù)處理完成對(duì)雙目圖像中物體輪廓和頂點(diǎn)的識(shí)別[5],周麒等建立結(jié)構(gòu)光雙目測(cè)量系統(tǒng)得到物體表面的三維點(diǎn)坐標(biāo)[6],潘樂(lè)昊等人通過(guò)邊緣檢測(cè)和針孔成像原理得到類球物體的球徑繼而估測(cè)體積[7],胡錦波等人著重研究雙目技術(shù)中標(biāo)定校正和立體匹配的內(nèi)容[8],伍濟(jì)鋼等人采用光流法進(jìn)行特征跟蹤、利用雙目視覺(jué)測(cè)量原理獲得特征點(diǎn)三維信息來(lái)測(cè)量振動(dòng)[9],羅宇等人通過(guò)邊緣檢測(cè)的方法對(duì)地圖上建筑物進(jìn)行特征識(shí)別實(shí)現(xiàn)三維重建[10]。以上部分研究[3,4,6,9]利用激光或結(jié)構(gòu)光的技術(shù)加強(qiáng)物體表面的模式識(shí)別并結(jié)合雙目視覺(jué)原理來(lái)完成物體尺寸的測(cè)量,部分研究[2,5]采用和本文處理方式不同的邊緣檢測(cè)的方法識(shí)別物體的特征點(diǎn)。
標(biāo)定是雙目攝像頭應(yīng)用到生產(chǎn)實(shí)踐的一個(gè)難關(guān)。標(biāo)定用于找出攝像頭描述像素點(diǎn)坐標(biāo)到物理世界點(diǎn)坐標(biāo)轉(zhuǎn)換關(guān)系的參數(shù)值,獲得準(zhǔn)確的參數(shù)是實(shí)現(xiàn)良好體積估測(cè)的保證。
采用張正友提出的棋盤格標(biāo)定法[11]對(duì)雙目攝像頭進(jìn)行標(biāo)定,采集完雙目攝像頭拍攝的棋盤格圖像對(duì)后,篩選出能找到所有棋格角點(diǎn)的圖片,根據(jù)實(shí)際測(cè)量的棋盤格尺寸得出找到的所有角點(diǎn)的世界坐標(biāo),按照公式(1)~(6)利用圖片中角點(diǎn)像素坐標(biāo)(u,v)[12]和世界坐標(biāo)(X,Y,Z)的對(duì)應(yīng)信息使用最小二乘法計(jì)算出雙目攝像頭的內(nèi)外參:兩只攝像頭的內(nèi)參矩陣left_intrinsic、right_intrinsic,畸變參數(shù)矩陣left_coeffs、right_coeffs以及轉(zhuǎn)換關(guān)系中的旋轉(zhuǎn)矩陣r、平移矩陣t。公式(6)中fx、fy分別表示在圖像兩軸方向上焦距長(zhǎng)度對(duì)應(yīng)的像素個(gè)數(shù),(u0,v0)表示光心在像素坐標(biāo)系中的坐標(biāo),s 表示坐標(biāo)軸傾斜程度。
繼而得到兩只攝像頭的校正旋轉(zhuǎn)矩陣rl、rr和投影矩陣pl、pr用于圖片的校正,以及重投影矩陣q用于將圖片像素?fù)Q算到三維空間中。投影矩陣p的原理如公式(7)所示,R、T分別表示相機(jī)坐標(biāo)系與世界坐標(biāo)系轉(zhuǎn)換關(guān)系的旋轉(zhuǎn)矩陣和平移矩陣。
圖1 描述了模型的工作流程。
圖1 模型活動(dòng)圖
接下來(lái)詳細(xì)說(shuō)明模型使用攝像頭參數(shù)對(duì)圖片進(jìn)行校正后的三個(gè)模塊。
模型對(duì)校正后的圖像設(shè)置了裁剪率,取值范圍為0~0.5,用于剪去圖片的邊緣區(qū)域得到感興趣區(qū)域(Region of Interest,ROI)。感興趣區(qū)域排除了無(wú)關(guān)因素對(duì)估測(cè)結(jié)果的干擾,是模型的處理對(duì)象。
對(duì)感興趣區(qū)域進(jìn)行高斯濾波和Canny 邊緣檢測(cè)[13,14],找到圖片中的輪廓,計(jì)算每組輪廓點(diǎn)的凸包面積。設(shè)定面積閾值為感興趣區(qū)域像素面積的0.05,對(duì)凸包面積大于該閾值的輪廓進(jìn)行擬合得到更少的特征點(diǎn),特征點(diǎn)的個(gè)數(shù)不好控制,對(duì)這些特征點(diǎn)進(jìn)行如下規(guī)范化:
步驟(1):消除近距離特征點(diǎn):針對(duì)擬合后特征點(diǎn)不少于四個(gè)的輪廓。計(jì)算某個(gè)點(diǎn)與其他點(diǎn)之間的距離,取這些距離中第三大的值的十分之一作為閾值,依次遍歷計(jì)算某一點(diǎn)與其他點(diǎn)的距離,拋棄掉距離小于該閾值的兩點(diǎn)中的一點(diǎn)。該操作保證了檢測(cè)到的輪廓特征點(diǎn)的唯一性,避免了特征點(diǎn)附近噪聲的干擾。
步驟(2):規(guī)范化輸出四點(diǎn):將上一步得到的特征點(diǎn)處理成適合體積估測(cè)的四個(gè)有序特征點(diǎn)模式,將這些特征點(diǎn)加入輪廓特征點(diǎn)集中。若經(jīng)過(guò)上一步處理得到的特征點(diǎn)個(gè)數(shù)是:
①3 個(gè)。需要計(jì)算出第四點(diǎn)坐標(biāo)補(bǔ)全三角形為平行四邊形。設(shè)三點(diǎn)分別為 A(xA,yA),B(xB,yB),C(xC,yC),由 y=cosx 在(0,π)上單調(diào)遞減知,在△ABC 中,cos值最小的角角度最大,該角可作為平行四邊形中的一個(gè)完整的角。假設(shè) A 角最大,則按 A(xA,yA),B(xB,yB),第四點(diǎn) D(xB+xA-xC,yB+yA-yC),C(xC,yC)的順序放入輪廓特征點(diǎn)集的一組中。
②4 個(gè)。需要將四個(gè)點(diǎn)按矩形頂點(diǎn)的時(shí)鐘順序進(jìn)行排序。取其中一點(diǎn),計(jì)算它到其他三點(diǎn)的距離,假設(shè)得到結(jié)果AD>AB>AC,根據(jù)矩形中四個(gè)頂點(diǎn)的距離關(guān)系,可知AB,AC 是矩形的邊,AD 是對(duì)角線,則按點(diǎn)A,B,D,C 的順序?qū)⒆鴺?biāo)放入輪廓特征點(diǎn)集的一組中。
③5 個(gè)或更多。從多個(gè)點(diǎn)中選出4 個(gè)不同的點(diǎn)模擬物體的特征。建立像素坐標(biāo)系斜率數(shù)組k 和點(diǎn)至像素坐標(biāo)系原點(diǎn)距離數(shù)組d,對(duì)點(diǎn)坐標(biāo)(x,y),將值放入k 中,值放入d 中,按在k 中有最大值的點(diǎn)、在d 中有最大值的點(diǎn)、在k 中有最小值的點(diǎn)、在d中有最小值的點(diǎn)的順序放入輪廓特征點(diǎn)集的一組中。
④其他情況。舍棄所有點(diǎn)。
通過(guò)以上步驟完成了圖像中物體輪廓特征點(diǎn)的檢測(cè),輪廓特征點(diǎn)集中的每一組特征點(diǎn)描述了一個(gè)物體的空間特征。
將雙目攝像頭采集的左右兩張圖像的感興趣區(qū)域進(jìn)行直方圖均衡化和拉普拉斯算子銳化[14],用SGBM算法[15]進(jìn)行立體匹配,計(jì)算出左視差圖和右視差圖,對(duì)左視差圖、右視差圖和銳化后的感興趣區(qū)域進(jìn)行加權(quán)最小二乘濾波[16]得到最后的視差圖。通過(guò)視差d 可以得到點(diǎn)的深度Z,數(shù)學(xué)原理如圖2 所示,由相似三角形性質(zhì)得:
圖2 雙目視覺(jué)深度計(jì)算原理圖
f、B 的值已經(jīng)在標(biāo)定中測(cè)出來(lái),f、B、d 的準(zhǔn)確性共同作用著Z 的準(zhǔn)確性,繼而影響體積估測(cè)結(jié)果的好壞。
已知視差圖 D 上坐標(biāo)(x,y)處的視差值為 D(x,y)和重投影矩陣q,可計(jì)算:
齊次逆變換得到像素點(diǎn)(x,y)對(duì)應(yīng)的三維世界點(diǎn)坐標(biāo)(X’,Y’,Z’):
將Z’值處于合理范圍內(nèi)的點(diǎn)坐標(biāo)存儲(chǔ)在點(diǎn)云陣圖中。
如圖3 所示,在該模型工作之前,測(cè)得雙目攝像頭至物體底面距離h,經(jīng)過(guò)輪廓特征點(diǎn)檢測(cè)找到了A、B、C、D 點(diǎn),同時(shí)三維重建得出 A、B、C、D 四點(diǎn)世界坐標(biāo)分別為(xA,yA,zA)、(xB,yB,zB)、(xC,yC,zC)、(xD,yD,zD),鑒于特征點(diǎn)的順序是規(guī)范的,那么物體底面兩鄰邊邊長(zhǎng) a、b 以及高 c 可由公式(11)~(13)算出:
圖3 雙目攝像頭工作圖
則估測(cè)物體體積為:
本文設(shè)計(jì)的模型由于采用雙目立體成像技術(shù),對(duì)標(biāo)定的攝像頭參數(shù)的精確性要求高;Canny 邊緣檢測(cè)算法的兩個(gè)閾值影響圖片中找到的輪廓數(shù)量;根據(jù)凸包面積篩選輪廓時(shí)設(shè)置的閾值以及感興趣區(qū)域的大小影響檢測(cè)到的輪廓特征和數(shù)量;SGBM 和視差加權(quán)最小二乘濾波算法選擇的參數(shù)影響視差圖的計(jì)算。適合生產(chǎn)環(huán)境的參數(shù)需要在模型的使用中不斷試驗(yàn)以保證體積估測(cè)的精度,本文不再多言這些參數(shù)的配置。
下面使用固件型號(hào)為2.3 的MYNTEYE-S1030 雙目攝像頭在搭有OpenCV 4.1.1、PCL 1.9.1 庫(kù)環(huán)境、CPU為AMD A10-9600P、內(nèi)存為8G 的主機(jī)上對(duì)模型進(jìn)行評(píng)估驗(yàn)證,單只攝像頭采集的圖像大小是752×480。
雙目攝像頭距物體支撐平面54.11cm 時(shí)對(duì)若干物體體積進(jìn)行測(cè)量的實(shí)驗(yàn)記錄如表1~3 所示。
表1 實(shí)驗(yàn)物體基本信息
表2 實(shí)驗(yàn)物體的實(shí)際尺寸
從實(shí)驗(yàn)過(guò)程看,絕緣子由于圓柱體的幾何特征使得檢測(cè)到的特征點(diǎn)位置不準(zhǔn)確,體積估測(cè)結(jié)果偏小。測(cè)試模型對(duì)規(guī)則的四棱柱物體的體積估測(cè)比實(shí)際值偏大。實(shí)驗(yàn)中模型估測(cè)的物體體積與實(shí)際的誤差率為20.24%,一方面是因?yàn)槟P蛥?shù)不是最優(yōu)的,另一方面是因?yàn)闄z測(cè)到的部分輪廓特征點(diǎn)不準(zhǔn)確。
模型對(duì)提取的輪廓特征點(diǎn)進(jìn)行處理,沒(méi)有對(duì)檢測(cè)到的邊緣或輪廓特征進(jìn)行細(xì)化和分類[5,10],導(dǎo)致模型精度對(duì)物體所處環(huán)境敏感度高,要求環(huán)境中物體的輪廓明顯、沒(méi)有被遮蓋。
不過(guò),該模型對(duì)物體形狀的規(guī)則程度要求不高,輪廓特征點(diǎn)的檢測(cè)過(guò)程將物體邊緣平整化,并過(guò)濾掉了物體表面的弱紋理噪聲。對(duì)物體體積估測(cè)的靈活度高。
使用攝像頭采集圖像,統(tǒng)計(jì)模型估測(cè)體積總時(shí)長(zhǎng)和花費(fèi)在立體匹配和視差圖運(yùn)算中的時(shí)間,得出16 組實(shí)驗(yàn)數(shù)據(jù)如圖4 所示。發(fā)現(xiàn)這兩段時(shí)間的差趨近于一個(gè)常量,受模型識(shí)別的輪廓數(shù)量影響有所波動(dòng)。圖4說(shuō)明,在運(yùn)行模型沒(méi)有使用GPU 加速時(shí),立體匹配和視差圖運(yùn)算模塊平均占用體積估測(cè)的74%時(shí)間,立體匹配算法的效率有待提高。未來(lái)考慮直接計(jì)算左右圖像輪廓特征點(diǎn)的視差和三維點(diǎn)坐標(biāo)來(lái)求取物體尺寸,可能會(huì)取得速度和準(zhǔn)確度的更佳平衡。
實(shí)驗(yàn)顯示,在標(biāo)定參數(shù)和視差圖運(yùn)算參數(shù)不變的情況下,雙目攝像頭距離物體支撐平面過(guò)遠(yuǎn)或過(guò)近,體積估測(cè)的誤差較大。
保持3.1 小節(jié)中實(shí)驗(yàn)環(huán)境不變,以規(guī)則形狀的同一物體進(jìn)行實(shí)驗(yàn),發(fā)現(xiàn)雙目攝像頭在距物體支撐平面45-70cm 范圍內(nèi),能夠得到與物體實(shí)際體積偏差不大的結(jié)果。后固定雙目攝像頭在棋盤格平面高度38cm 處進(jìn)行標(biāo)定,替換3.1 小節(jié)中的標(biāo)定參數(shù),發(fā)現(xiàn)攝像頭高度在45-70cm 處有良好的估測(cè)結(jié)果。該實(shí)驗(yàn)表明在標(biāo)定參數(shù)準(zhǔn)確的前提下,每只攝像頭都有估測(cè)物體體積的工作范圍,且這個(gè)工作距離與攝像頭標(biāo)定時(shí)的位置無(wú)關(guān)。當(dāng)物體離攝像頭過(guò)遠(yuǎn)時(shí),由于視差較小的緣故視差的計(jì)算誤差變大,導(dǎo)致估測(cè)結(jié)果準(zhǔn)確度降低。在使用本文模型進(jìn)行體積估測(cè)時(shí),還需要考慮攝像頭到物體支撐平面距離這一參數(shù)。
本文設(shè)計(jì)的體積估測(cè)模型通過(guò)檢測(cè)物體輪廓的特征點(diǎn),根據(jù)三維重建中這些特征點(diǎn)對(duì)應(yīng)的三維坐標(biāo)完成體積估測(cè),經(jīng)過(guò)實(shí)驗(yàn)表明是合理的,能夠應(yīng)用于生產(chǎn)實(shí)踐。
本模型中的標(biāo)定參數(shù)會(huì)因攝像頭的變化而變化,準(zhǔn)確的標(biāo)定參數(shù)是模型得出良好估測(cè)結(jié)果的基礎(chǔ)。其他參數(shù)要根據(jù)具體的模型應(yīng)用場(chǎng)景進(jìn)行調(diào)整輔以得到更好的體積估測(cè)結(jié)果。