劉學君 常夢潔 孔祥旻 晏 涌 李柏燦 龔泓博
(北京石油化工學院信息工程學院 北京 102617)
危險化學品生產和使用數量的不斷增加對危化品倉儲安全的監管提出了更高的要求[1-2]。對危化品倉庫進行三維重建,能夠實時、準確地獲取危化品周圍的環境信息,實現危化品倉庫環境的可視化,確保監測預警的實時性和安全性[3]。雙目視覺技術基于視差原理對目標進行三維重建[4],與TOF相機、結構光、激光雷達等獲取場景深度信息的方式相比,雙目視覺技術不受限于物體表面的材質,可獲取均勻密集的場景三維信息,對硬件和成本的要求較低,在危化品庫內安全監測方面一定的具有應用前景。
三維重建的效果和精度由匹配算法直接決定[5],其關鍵步驟是尋找兩幅圖像中的同名點,即進行立體匹配。絕對誤差和(Sum of Absolute Differences,SAD)算法是一種經典的塊匹配算法,作為實時系統的典型算法,該算法的復雜度低、速度快、實時性好,得到的稠密視差圖可以用于密集型的三維重建[6-7]。但在較為復雜的場景應用傳統SAD算法,直接將兩個像素塊對應數值之差的絕對值求和會產生一定的誤差,得到的結果精確度不足,且因匹配窗口內視差發生變化而導致視差圖出現空洞,影響重建后的三維模型[8-10]。本文對傳統SAD算法進行改進,經過計算得到初始視差圖,然后對初始視差圖進行優化,得到最終視差圖。利用標準數據集及倉庫模型進行實驗驗證,證明本文算法的有效性。
雙目立體視覺成像模型一般為兩個平行放置的相機,如圖1所示,兩相機光心Ol和Or之間的距離為基線距離b,空間中一點p在左右相機的坐標分別為pl(xl,yl)和pr(xr,yr),視差d定義為某一點在兩成像平面中相應點的位置差:d=xl-xr[11-14]。

圖1 雙目視覺模型
由雙目視覺模型可知,△pOlOr∽△pplpr,根據三角相似原理可得:
式中:Zc表示p點的深度,f表示相機的焦距。由式(1)可知視差值d與深度值Zc成反比,當視差值d越小,深度值Zc越大,表示該點距離相機越遠;反之,表示該點距離相機越近。實際情況下兩相機無法做到嚴格并排放置,需要通過外極線校正使得yl=yr,這樣搜索維度會從二維降為一維,降低匹配的復雜程度,提高匹配效率[15-16]。
SAD是圖像立體匹配中基于灰度的塊匹配算法[17]。其原理求取模板圖像塊與搜索圖像塊內像素值差的絕對值的和,進而度量兩個圖像塊是否匹配,其定義表示如下[18]:
PR(i+h,j+k+d)|
(2)
式中:d為視差值,PL(i,j)表示模板圖像塊內像素的灰度值,PR(i,j)表示搜索圖像塊內像素的灰度值。利用式(2)計算得到的SAD矩陣值越小,兩個圖像塊越相似。
對于復雜場景來說,利用兩個像素塊中像素點差值的相似程度來匹配圖像塊,一旦場景內連續圖像塊的像素點出現相似像素值,匹配必然產生誤差。為提高兩個圖像塊的匹配精度,針對SAD目標函數,引入均值為零的二維高斯分布的加權系數ω(i,j)[19]:
式中:σ2為方差,取σ2=0.5n,n為塊半徑。
二維高斯分布是一維正態分布向二維的推廣。如圖2所示,均值為零的二維高斯分布在XOZ面和YOZ面上的投影都是一個標準正態分布,在XOY面上的投影是一個橢圓。

圖2 二維高斯分布圖
將式(3)和式(2)結合,可得改進的SAD算法如式(5)所示。
|PL(i+h,j+k)-PR(i+h,j+k+d)|
(5)
引入高斯分布后的改進SAD更偏重于圖像塊中心像素的匹配精度,符合客觀實際,可以有效提高整體匹配精度。
利用加權后的SAD算法得到初始視差圖后,發現當匹配塊內像素點的視差變化時,會導致視差圖出現空洞。為了對空洞進行填充,引入灰度共生矩陣(Gray-level Co-occurrence Matrix,GLCM)對空洞周圍紋理區域進行度量,然后選用合適的窗口大小求取視差均值進行空洞填充。
GLCM通過研究灰度的空間相關特性來描述圖像的紋理。GLCM用G(i,j)(i,j=0,1,2,…,L-1)表示,其中L表示圖像的灰度級,i和j表示像素的灰度,d表示兩個像素的間距,n表示窗口大小。θ為GLCM的生成方向,通常取0°、45°、90°和135°[20-21]。
圖3為θ=0°,d=1的灰度矩陣的生成過程。

圖3 生成灰度共生矩陣
在基于GLCM的14個紋理特征中,選用角二階矩(Angular Second Moment,ASM)、熵(Entropy,ENT)、對比度(Contrast,CON)和相關性(Correlation,COR)組成一個四維特征向量綜合描述圖像中區域的紋理屬性[22]。
如式(6)所示,利用歐氏距離(Euclidean distance,ED)來描述兩個相鄰紋理區域特征向量(ASM1、ENT1、CON1、COR1)和(ASM2、ENT2、CON2、COR2)的相似度[24]:
兩個相鄰區域紋理特征向量的ED越大,說明兩個區域的紋理屬性差別越大,那么這兩個區域不屬于同一物體的概率越大,不能直接求取視差均值賦給空洞位置;若兩個相鄰區域紋理特征向量的ED越接近于0,說明兩個區域屬于同一物體的概率越大,其平均視差可以賦值給空洞位置。根據圖像紋理信息進行視差填充窗口的自適應調節,可以正確、有效地進行視差填充,獲取良好的視差圖。
本文算法的總體流程如圖4所示。利用改進的加權SAD算法求出初始視差圖,然后對視差圖中因視差發生變化造成的空洞進行篩選,確定空洞位置后,以空洞為中心,通過變化窗口的半徑,分別求取ASM、ENT、CON、COR值,進而求得ED。在得到的所有ED值中找到最小值,得到其對應的最小窗口,將窗口內視差求均值賦給空洞位置,重復操作直到所有空洞填充為止。

圖4 本文算法流程
Middlebury和KITTI提供了立體匹配算法的評估測試數據集。Middlebury大學立體視覺網站是計算機視覺行業公認的評估和數據集存儲庫,在最新的V3數據集中,提供了更加復雜的場景和更加精確的視差估計。KITTI數據集填充了Middlebury數據集僅對室內場景進行采集的不足,由行駛中的車輛對室外環境進行拍攝采集。
本文采用Middlebury V3數據集和KITTI 2015數據集對匹配算法進行測試。測試實驗以MATLAB R2020a為算法仿真軟件,在Intel(R) Xeon(R) CPU E5-2650 v4 @2.20 GHz、128 GB內參的電腦上運行。Middlebury V3數據集測試結果
4.2.1MiddleburyV3數據集測試結果
將本文算法與傳統SAD算法及差值平方和(Sum of Squared Differences,SSD)算法[24]、半全局匹配(Semi-Global Matching,SGM)算法[25]做比較,設置匹配塊半徑n=7,Middlebury V3訓練集視差最值分別為(290,256,640,280,280,260,260,300,330,290,290,260,240,256,760),視差圖空洞填充窗口半徑ng=1,2,3。
四種算法在Middlebury V3數據集中Adirondack場景下的視差圖如圖5所示,可以看到,通過本文算法得到的視差圖邊界清晰,能較好地保留原圖中的細節特點,有利于后期三維重建對場景的完整恢復。

(a) 原始左圖 (b) 標準視差圖
表1給出了四種算法在Middlebury V3數據集的測試結果,主要從視差誤匹配百分比、運行時間、視差空值個數等3方面進行實驗數據評估分析。結果顯示,本文算法的誤差百分比較傳統SAD算法和SSD算法降低了21.31%和21.32%,較SGM算法增加了0.12%;算法運行時間較SAD算法和SSD算法增加38.36%和38.98%,較SGM算法降低了77.81%;視差空洞個數較SAD算法和SSD算法降低了83.18%和96.83%,較SGM算法增加了13.69%。

表1 四種算法在Middlebury v.3數據集上測試結果對比
4.2.2KITTI2015數據集測試結果
設置KITTI 2015數據集視差范圍為(0,228),其余參數與MiddleburyV3數據集參數保持一致。四種算法在KITTI 2015數據集中000000_10場景下的視差圖如圖6所示,可以看出本文算法在室外場景下得到的視差圖整體分布較為均勻,仍具有較好的適用性。

(a) 原圖左圖 (b) 標準視差圖
從表2可以看出,隨著KITTI 2015數據集中圖片分辨率的增大,四種算法的運行時間均有所增加,且室外環境較為復雜,導致平均誤匹配百分比都處于較高的結果,但本文算法的平均誤匹配百分比較SAD算法和SSD算法降低了11.07%和11.00%,較SGM算法增加了0.38%;平均運行時間較SAD算法和SSD算法增加292.15%和200.81%,較SGM算法降低了18.24%;平均視差空值個數較SAD算法和SSD算法降低了24.40%和22.88%,較SGM算法降低了38.20%。

表2 四種算法在KITTI 2015數據集上測試結果對比
為驗證本文算法在真實危化品倉庫中的效果,在實驗室內搭建了危化品倉庫模型,利用木塊及鐵桶模擬實際倉庫堆垛碼放狀態,在倉庫頂部的頂角位置放置雙目相機,圖7(a)、(b)分別為雙目相機采集到的左右視角圖片,已經過極線校正處理。

(a) 左視角 (b) 右視角圖7 危化品倉庫模型內雙目相機采集到的圖片
圖8至圖12分別為當匹配塊半徑n等于1、5、10、15、20時SAD算法及本文算法對倉庫圖片的處理效果對比。分析圖8至圖12可得,受倉庫內光照不均、地面反光、堆垛、地面、墻面紋理較少影響,本文算法和SAD算法均出現不同面積的空洞問題,反映到視差圖中為黑色區域。隨著匹配塊半徑的增大,相較于SAD算法,本文算法引入的高斯權重能在視差平滑化過程中保持較好的匹配結果,且本文算法利用紋理信息對空洞進行填補,能較好地將空洞區域縮小,結果優于傳統SAD算法,具有較好的實用性。

(a) SAD算法處理結果(b) 本文算法處理結果圖8 匹配塊半徑n=1

(a) SAD算法處理結果(b) 本文算法處理結果圖9 匹配塊半徑n=5

(a) SAD算法處理結果(b) 本文算法處理結果圖11 匹配塊半徑n=15

(a) SAD算法處理結果(b) 本文算法處理結果圖12 匹配塊半徑n=20
本文通過引進二維高斯分布系數對SAD匹配算法進行加權,得到初始視差圖后,針對視差圖中存在空洞的像素點,利用GLCM度量的紋理信息選定窗口進行空洞填充。相較于SAD算法,本文算法得到的視差圖更精確,能夠為后期場景的三維重建做準備。在今后的研究中,將針對本算法應用于復雜場景的圖像匹配做進一步的優化,完成危化品倉庫三維重建的監測預警工作。