胡亞楠,潘焜,王鐵錚,喻曉
(國網北京市電力公司物資分公司,北京100053)
現代社會倉儲管理更加集中和繁重,通過人工篩檢的方法管理倉儲物品需要較大的人力成本,立體視覺技術的實現提供了倉儲自動化[1]的可能性。作為倉儲自動化的一個基礎環節,物體尺寸識別和體積測量具有提供物體物理信息和幫助管理系統決策的功能,亟需準確高效的解決方案。
侯躍遷等人提出提取部件邊緣點反求世界坐標求解異面直線距的方法來測量尺寸[2],毛佳紅等人通過線結構光法和雙目視覺原理實現三維重建進而完成積分式的體積測量[3],邵寶峰結合雙目立體視覺技術和點激光測距對物體三維尺寸進行測量[4],王玉偉等人采用RCF 邊緣檢測及其他預處理完成對雙目圖像中物體輪廓和頂點的識別[5],周麒等建立結構光雙目測量系統得到物體表面的三維點坐標[6],潘樂昊等人通過邊緣檢測和針孔成像原理得到類球物體的球徑繼而估測體積[7],胡錦波等人著重研究雙目技術中標定校正和立體匹配的內容[8],伍濟鋼等人采用光流法進行特征跟蹤、利用雙目視覺測量原理獲得特征點三維信息來測量振動[9],羅宇等人通過邊緣檢測的方法對地圖上建筑物進行特征識別實現三維重建[10]。以上部分研究[3,4,6,9]利用激光或結構光的技術加強物體表面的模式識別并結合雙目視覺原理來完成物體尺寸的測量,部分研究[2,5]采用和本文處理方式不同的邊緣檢測的方法識別物體的特征點。
標定是雙目攝像頭應用到生產實踐的一個難關。標定用于找出攝像頭描述像素點坐標到物理世界點坐標轉換關系的參數值,獲得準確的參數是實現良好體積估測的保證。
采用張正友提出的棋盤格標定法[11]對雙目攝像頭進行標定,采集完雙目攝像頭拍攝的棋盤格圖像對后,篩選出能找到所有棋格角點的圖片,根據實際測量的棋盤格尺寸得出找到的所有角點的世界坐標,按照公式(1)~(6)利用圖片中角點像素坐標(u,v)[12]和世界坐標(X,Y,Z)的對應信息使用最小二乘法計算出雙目攝像頭的內外參:兩只攝像頭的內參矩陣left_intrinsic、right_intrinsic,畸變參數矩陣left_coeffs、right_coeffs以及轉換關系中的旋轉矩陣r、平移矩陣t。公式(6)中fx、fy分別表示在圖像兩軸方向上焦距長度對應的像素個數,(u0,v0)表示光心在像素坐標系中的坐標,s 表示坐標軸傾斜程度。


繼而得到兩只攝像頭的校正旋轉矩陣rl、rr和投影矩陣pl、pr用于圖片的校正,以及重投影矩陣q用于將圖片像素換算到三維空間中。投影矩陣p的原理如公式(7)所示,R、T分別表示相機坐標系與世界坐標系轉換關系的旋轉矩陣和平移矩陣。

圖1 描述了模型的工作流程。

圖1 模型活動圖
接下來詳細說明模型使用攝像頭參數對圖片進行校正后的三個模塊。
模型對校正后的圖像設置了裁剪率,取值范圍為0~0.5,用于剪去圖片的邊緣區域得到感興趣區域(Region of Interest,ROI)。感興趣區域排除了無關因素對估測結果的干擾,是模型的處理對象。
對感興趣區域進行高斯濾波和Canny 邊緣檢測[13,14],找到圖片中的輪廓,計算每組輪廓點的凸包面積。設定面積閾值為感興趣區域像素面積的0.05,對凸包面積大于該閾值的輪廓進行擬合得到更少的特征點,特征點的個數不好控制,對這些特征點進行如下規范化:
步驟(1):消除近距離特征點:針對擬合后特征點不少于四個的輪廓。計算某個點與其他點之間的距離,取這些距離中第三大的值的十分之一作為閾值,依次遍歷計算某一點與其他點的距離,拋棄掉距離小于該閾值的兩點中的一點。該操作保證了檢測到的輪廓特征點的唯一性,避免了特征點附近噪聲的干擾。
步驟(2):規范化輸出四點:將上一步得到的特征點處理成適合體積估測的四個有序特征點模式,將這些特征點加入輪廓特征點集中。若經過上一步處理得到的特征點個數是:
①3 個。需要計算出第四點坐標補全三角形為平行四邊形。設三點分別為 A(xA,yA),B(xB,yB),C(xC,yC),由 y=cosx 在(0,π)上單調遞減知,在△ABC 中,cos值最小的角角度最大,該角可作為平行四邊形中的一個完整的角。假設 A 角最大,則按 A(xA,yA),B(xB,yB),第四點 D(xB+xA-xC,yB+yA-yC),C(xC,yC)的順序放入輪廓特征點集的一組中。
②4 個。需要將四個點按矩形頂點的時鐘順序進行排序。取其中一點,計算它到其他三點的距離,假設得到結果AD>AB>AC,根據矩形中四個頂點的距離關系,可知AB,AC 是矩形的邊,AD 是對角線,則按點A,B,D,C 的順序將坐標放入輪廓特征點集的一組中。
③5 個或更多。從多個點中選出4 個不同的點模擬物體的特征。建立像素坐標系斜率數組k 和點至像素坐標系原點距離數組d,對點坐標(x,y),將值放入k 中,值放入d 中,按在k 中有最大值的點、在d 中有最大值的點、在k 中有最小值的點、在d中有最小值的點的順序放入輪廓特征點集的一組中。
④其他情況。舍棄所有點。
通過以上步驟完成了圖像中物體輪廓特征點的檢測,輪廓特征點集中的每一組特征點描述了一個物體的空間特征。
將雙目攝像頭采集的左右兩張圖像的感興趣區域進行直方圖均衡化和拉普拉斯算子銳化[14],用SGBM算法[15]進行立體匹配,計算出左視差圖和右視差圖,對左視差圖、右視差圖和銳化后的感興趣區域進行加權最小二乘濾波[16]得到最后的視差圖。通過視差d 可以得到點的深度Z,數學原理如圖2 所示,由相似三角形性質得:


圖2 雙目視覺深度計算原理圖
f、B 的值已經在標定中測出來,f、B、d 的準確性共同作用著Z 的準確性,繼而影響體積估測結果的好壞。
已知視差圖 D 上坐標(x,y)處的視差值為 D(x,y)和重投影矩陣q,可計算:

齊次逆變換得到像素點(x,y)對應的三維世界點坐標(X’,Y’,Z’):

將Z’值處于合理范圍內的點坐標存儲在點云陣圖中。
如圖3 所示,在該模型工作之前,測得雙目攝像頭至物體底面距離h,經過輪廓特征點檢測找到了A、B、C、D 點,同時三維重建得出 A、B、C、D 四點世界坐標分別為(xA,yA,zA)、(xB,yB,zB)、(xC,yC,zC)、(xD,yD,zD),鑒于特征點的順序是規范的,那么物體底面兩鄰邊邊長 a、b 以及高 c 可由公式(11)~(13)算出:


圖3 雙目攝像頭工作圖
則估測物體體積為:

本文設計的模型由于采用雙目立體成像技術,對標定的攝像頭參數的精確性要求高;Canny 邊緣檢測算法的兩個閾值影響圖片中找到的輪廓數量;根據凸包面積篩選輪廓時設置的閾值以及感興趣區域的大小影響檢測到的輪廓特征和數量;SGBM 和視差加權最小二乘濾波算法選擇的參數影響視差圖的計算。適合生產環境的參數需要在模型的使用中不斷試驗以保證體積估測的精度,本文不再多言這些參數的配置。
下面使用固件型號為2.3 的MYNTEYE-S1030 雙目攝像頭在搭有OpenCV 4.1.1、PCL 1.9.1 庫環境、CPU為AMD A10-9600P、內存為8G 的主機上對模型進行評估驗證,單只攝像頭采集的圖像大小是752×480。
雙目攝像頭距物體支撐平面54.11cm 時對若干物體體積進行測量的實驗記錄如表1~3 所示。

表1 實驗物體基本信息

表2 實驗物體的實際尺寸
從實驗過程看,絕緣子由于圓柱體的幾何特征使得檢測到的特征點位置不準確,體積估測結果偏小。測試模型對規則的四棱柱物體的體積估測比實際值偏大。實驗中模型估測的物體體積與實際的誤差率為20.24%,一方面是因為模型參數不是最優的,另一方面是因為檢測到的部分輪廓特征點不準確。
模型對提取的輪廓特征點進行處理,沒有對檢測到的邊緣或輪廓特征進行細化和分類[5,10],導致模型精度對物體所處環境敏感度高,要求環境中物體的輪廓明顯、沒有被遮蓋。
不過,該模型對物體形狀的規則程度要求不高,輪廓特征點的檢測過程將物體邊緣平整化,并過濾掉了物體表面的弱紋理噪聲。對物體體積估測的靈活度高。
使用攝像頭采集圖像,統計模型估測體積總時長和花費在立體匹配和視差圖運算中的時間,得出16 組實驗數據如圖4 所示。發現這兩段時間的差趨近于一個常量,受模型識別的輪廓數量影響有所波動。圖4說明,在運行模型沒有使用GPU 加速時,立體匹配和視差圖運算模塊平均占用體積估測的74%時間,立體匹配算法的效率有待提高。未來考慮直接計算左右圖像輪廓特征點的視差和三維點坐標來求取物體尺寸,可能會取得速度和準確度的更佳平衡。
實驗顯示,在標定參數和視差圖運算參數不變的情況下,雙目攝像頭距離物體支撐平面過遠或過近,體積估測的誤差較大。
保持3.1 小節中實驗環境不變,以規則形狀的同一物體進行實驗,發現雙目攝像頭在距物體支撐平面45-70cm 范圍內,能夠得到與物體實際體積偏差不大的結果。后固定雙目攝像頭在棋盤格平面高度38cm 處進行標定,替換3.1 小節中的標定參數,發現攝像頭高度在45-70cm 處有良好的估測結果。該實驗表明在標定參數準確的前提下,每只攝像頭都有估測物體體積的工作范圍,且這個工作距離與攝像頭標定時的位置無關。當物體離攝像頭過遠時,由于視差較小的緣故視差的計算誤差變大,導致估測結果準確度降低。在使用本文模型進行體積估測時,還需要考慮攝像頭到物體支撐平面距離這一參數。
本文設計的體積估測模型通過檢測物體輪廓的特征點,根據三維重建中這些特征點對應的三維坐標完成體積估測,經過實驗表明是合理的,能夠應用于生產實踐。
本模型中的標定參數會因攝像頭的變化而變化,準確的標定參數是模型得出良好估測結果的基礎。其他參數要根據具體的模型應用場景進行調整輔以得到更好的體積估測結果。