楊 戈 ,王震堯
(1.北京師范大學(xué)珠海分校 智能多媒體技術(shù)重點(diǎn)實(shí)驗(yàn)室,廣東 珠海 519087;2.北京師范大學(xué) 智能工程與教育應(yīng)用研究中心,廣東 珠海 519087)
本文對(duì)水下雙目攝像機(jī)獲取的圖像進(jìn)行了預(yù)處理,為了在具備各種復(fù)雜條件的水體中獲取目標(biāo)物體的精確深度信息,著重研究對(duì)目標(biāo)物體圖像的校準(zhǔn)、圖像匹配以及深度信息轉(zhuǎn)換的關(guān)鍵算法。
文獻(xiàn)[1]針對(duì)水下圖像的處理方法將其主要分為水下圖像增強(qiáng)與水下圖像復(fù)原兩大類(lèi),并對(duì)兩類(lèi)方法的研究現(xiàn)狀進(jìn)行分析與歸納,對(duì)各類(lèi)增強(qiáng)和復(fù)原算法進(jìn)行各個(gè)維度的深入比較。
在攝像機(jī)標(biāo)定技術(shù)中,以張氏標(biāo)定為代表的傳統(tǒng)標(biāo)定方法中,需要使用特定的、已知大小的標(biāo)定物。此結(jié)合水下場(chǎng)景要求精度高、實(shí)時(shí)性強(qiáng)的條件需要,本文選擇采用傳統(tǒng)標(biāo)定方法中的張氏標(biāo)定法進(jìn)行實(shí)驗(yàn)。
文獻(xiàn)[2]在張正友標(biāo)定算法的基礎(chǔ)上,添加了切向畸變參數(shù),豐富了校準(zhǔn)模型,提出了一種非線(xiàn)性代價(jià)的函數(shù)方法,通過(guò)使用全局優(yōu)化學(xué)習(xí)算法來(lái)求解攝像機(jī)的三維模型參數(shù),有效解決了由于水體環(huán)境惡劣而造成的線(xiàn)性誤差和誤差累計(jì)的問(wèn)題。最后采用OpenCV 的“rePojectImageTo3D”對(duì)矩陣視差圖像進(jìn)行計(jì)算,得到目標(biāo)物的三維坐標(biāo),實(shí)驗(yàn)表明測(cè)量精度誤差也在5%以下。
雙目視覺(jué)中的立體匹配算法在基于深度學(xué)習(xí)匹配算法中,深度學(xué)習(xí)技術(shù)可以獲取更多的圖像特征用于計(jì)算,通過(guò)訓(xùn)練大量的數(shù)據(jù)集可以得到更高精度的立體匹配視差圖。本文選擇了改進(jìn)的SGBM 算法進(jìn)行雙目圖像立體匹配。
在雙目視覺(jué)測(cè)距系統(tǒng)中,基本分為5 個(gè)步驟[3-4],分別為圖像獲取、相機(jī)標(biāo)定、特征提取、立體匹配和測(cè)距[5]。本文將特征提取技術(shù)與立體匹配進(jìn)行融合,為了更好地展示目標(biāo)物體的三維信息,增加了點(diǎn)云可視化技術(shù)模塊。
其中,X1-X2是由立體匹配過(guò)程得到的;B、f 由標(biāo)定過(guò)程確定。因此,將上述值帶入到表達(dá)式中可以得出被測(cè)物體的深度信息。
雙目視覺(jué)測(cè)距檢測(cè)方法如圖1 所示,具體如下:
圖1 雙目測(cè)距流程
(1)首先是水下被測(cè)物體圖像的增強(qiáng)技術(shù),水中獲取的圖像質(zhì)量比陸上圖像質(zhì)量低、對(duì)比度差,難以進(jìn)行后續(xù)實(shí)驗(yàn),因此需要對(duì)獲取的左、右目圖像進(jìn)行圖像增強(qiáng)操作。
(2)通過(guò)使用兩個(gè)二維圖像獲得三維參數(shù)進(jìn)行相機(jī)的標(biāo)定和校準(zhǔn)。由于在水中環(huán)境復(fù)雜,且在擺放相機(jī)時(shí)可能出現(xiàn)徑向畸變和切向畸變誤差,導(dǎo)致左右目相機(jī)難以精確地共面和行對(duì)準(zhǔn),因此需要對(duì)左右圖像進(jìn)行校正實(shí)驗(yàn)。
(3)立體匹配。通過(guò)兩個(gè)相機(jī)同時(shí)獲取同一場(chǎng)景的立體圖像,尋找左右目圖像的對(duì)應(yīng)關(guān)系,匹配對(duì)應(yīng)的點(diǎn)。在圖像立體匹配前,進(jìn)行特征提取操作,目的是確定具有強(qiáng)魯棒性的特征點(diǎn),增強(qiáng)圖像對(duì)比度,加強(qiáng)特征效果。
(4)目標(biāo)測(cè)距。通過(guò)已經(jīng)求得的視差,根據(jù)雙目立體視覺(jué)測(cè)距原理可計(jì)算出目標(biāo)物體的深度信息值。
(5)三維點(diǎn)云可視化,將獲取的含有三維信息的目標(biāo)物體坐標(biāo)點(diǎn)根據(jù)視差圖映射為三維點(diǎn)云圖,實(shí)現(xiàn)對(duì)目標(biāo)物體的三維構(gòu)建。
本文在獲取左、右目圖像的基礎(chǔ)上進(jìn)行了CLAHE算法操作,大大提高了圖像的對(duì)比度。通過(guò)設(shè)置對(duì)比度閾值,對(duì)圖像塊的直方圖可以進(jìn)行切割和重分布,然后采取直方圖均衡化處理如圖2、圖3 所示,與原始圖像相比,陰影區(qū)域2 的色彩信息明顯增強(qiáng)。
圖2 海底景物原圖
圖3 海底景物增強(qiáng)圖
在攝像機(jī)標(biāo)定技術(shù)中,現(xiàn)有標(biāo)定算法大致分為4 類(lèi)[2]:傳統(tǒng)標(biāo)定方法[6-8]、自標(biāo)定方法[9]、基于主動(dòng)視覺(jué)的標(biāo)定方法[10]和基于神經(jīng)網(wǎng)絡(luò)的標(biāo)定方法[11-12]。本文采用了張正友標(biāo)定法,通過(guò)MATLAB2018b 標(biāo)定工具箱計(jì)算出水下相機(jī)的內(nèi)外相關(guān)矩陣模型參數(shù),標(biāo)定的棋盤(pán)規(guī)格為9×9,單個(gè)格子為18 cm 定長(zhǎng),如圖4 所示。該算法不同于攝影標(biāo)定法和自標(biāo)定法,既克服了攝影標(biāo)定法需要的高精度三維標(biāo)定物體成像的缺點(diǎn),而且優(yōu)化了自標(biāo)定法魯棒性差的問(wèn)題,精度高,魯棒性好。
圖4 棋盤(pán)標(biāo)定板
SGBM 算法[13]作為半全局算法的典型,既保留了速度快的優(yōu)點(diǎn),又克服了魯棒性較差的缺點(diǎn),具有廣泛的應(yīng)用性。SGBM 算法分為預(yù)處理、代價(jià)計(jì)算、動(dòng)態(tài)規(guī)劃和后處理4 個(gè)步驟。本文在原有SGBM 算法的基礎(chǔ)上改進(jìn)了塊匹配block 的大小,增強(qiáng)了圖像邊緣的平滑度。
將立體匹配和相機(jī)標(biāo)定得到的參數(shù)代入到雙目視覺(jué)測(cè)距原理公式中可以得到目標(biāo)物體的具體深度信息值,通過(guò)基于Python 的OpenCV 函數(shù)庫(kù)中的cv2.reprojectImageTo3D 函數(shù)可以求解出目標(biāo)物體的三維坐標(biāo)信息,其中Z 坐標(biāo)的數(shù)值即為目標(biāo)物體的深度信息。
點(diǎn)云作為3D 物體的表現(xiàn)形式之一,一直被用于目標(biāo)三維重建[2]。本文將立體匹配得到的視差圖基于PCL庫(kù)和python-pcl 庫(kù)轉(zhuǎn)換為點(diǎn)云,其過(guò)程分為個(gè)3 個(gè)步驟:壓縮視差圖、轉(zhuǎn)換信息點(diǎn)和優(yōu)化局部信息。
(1)壓縮視差圖,將得到的像素點(diǎn)的三維坐標(biāo)以及h×w×3 的三維數(shù)組視差圖依次轉(zhuǎn)換為N×3 的二維數(shù)組;
(2)將立體匹配獲取并壓縮后的三維坐標(biāo)信息與壓縮后的RGB 平面圖進(jìn)行融合,轉(zhuǎn)化為帶顏色的點(diǎn)云數(shù)據(jù);
(3)優(yōu)化局部信息,考慮到該實(shí)驗(yàn)環(huán)境為一個(gè)1.8 m×1.1 m×0.63 m 的水池,因此設(shè)計(jì)一個(gè)范圍為Z≤0,Z>1 800,X>1 100,X<-1 100,Y>630,Y<-630(單位:mm)的有效區(qū)域,將不滿(mǎn)足上述區(qū)域的坐標(biāo)點(diǎn)刪除,最終得到含有三維信息坐標(biāo)點(diǎn)的彩色點(diǎn)云模型。
3.1.1 數(shù)據(jù)集
本文使用型號(hào)為C203 的威海至帆品牌的水下雙目攝像機(jī)作為拍攝設(shè)備。在55 cm 水深的渾濁、能見(jiàn)度差的水體中以32.5 cm 為一組,針對(duì)正方形鐵盒、圓形鐵桶和不規(guī)則塑料盒3 種不同的水下物體分別拍攝了不同組別的、分辨率為2 560×960 的左右目圖像共200 張,作為實(shí)驗(yàn)數(shù)據(jù)集。其中部分圖像樣例如圖5 所示。
圖5 左右目圖像數(shù)據(jù)集
3.1.2 軟硬件環(huán)境
軟件環(huán)境:Python3.6,python-pcl0.3,open3d0.9,open3dpython0.7,opencv-python4.1.0.25,pcl-1.9.1,cython0.25.2,Windows 10,Spyder4.2.1。
硬件環(huán)境:Intel?CoreTMi7-7500U CPU@2.70 GHz 2.90 GHz,8 GB RAM,NVIDIA GeForce940MX。
3.2.1 CLAHE 圖像增強(qiáng)技術(shù)
采用CLAHE 圖像增強(qiáng)技術(shù)分別對(duì)32.5 cm 和60.0 cm距離的3 種物體進(jìn)行圖像增強(qiáng),實(shí)驗(yàn)結(jié)果如圖6、圖7所示。結(jié)果表明,增強(qiáng)后的水下雙目圖片色彩明顯增強(qiáng)、對(duì)比度提高,可以有效地表現(xiàn)出目標(biāo)物體的特征。
圖6 32.5 cm 處圖像增強(qiáng)結(jié)果對(duì)比
圖7 60.0 cm 處圖像增強(qiáng)結(jié)果對(duì)比
3.2.2 校準(zhǔn)與標(biāo)定
采用MATLAB 標(biāo)定工具箱對(duì)12 幅雙目圖像進(jìn)行標(biāo)定,對(duì)誤差較大的雙目圖像進(jìn)行二次標(biāo)定,直到誤差接近平均水平。誤差結(jié)果如圖8 所示。
圖8 左右目標(biāo)定像素誤差
通過(guò)張正友標(biāo)定法獲取了相機(jī)的內(nèi)外參數(shù)信息(見(jiàn)表1),輸出左右目校正圖像,如圖9 和圖10 所示。實(shí)驗(yàn)表明,左右目圖像的校正圖結(jié)果顯示正常,對(duì)應(yīng)點(diǎn)在同一水平線(xiàn)上;相機(jī)標(biāo)定結(jié)果比較精確,誤差控制在合理的范圍內(nèi)。
表1 標(biāo)定參數(shù)結(jié)果
圖9 32.5 cm 左右目校正圖像
圖10 60.0 cm 左右目校正圖像
3.2.3 立體匹配與測(cè)距
采用改進(jìn)的SGBM 算法,實(shí)驗(yàn)結(jié)果如圖11 和圖12 所示。實(shí)驗(yàn)表明,32.5 cm 的組別中立體匹配的結(jié)果較好,可以很好地表達(dá)出目標(biāo)物體的輪廓信息,特征點(diǎn)明顯;在60.0 cm 組別中,隨著距離的增大,目標(biāo)物體呈現(xiàn)面積減少,立體匹配效果會(huì)變差,無(wú)法準(zhǔn)確地表達(dá)目標(biāo)物體的輪廓信息,同時(shí)也會(huì)對(duì)周?chē)w環(huán)境進(jìn)行誤匹配,增大了后續(xù)實(shí)驗(yàn)的誤差。
圖11 32.5 cm 處雙目圖片及對(duì)應(yīng)的視差圖
圖12 60.0 cm 處雙目圖片及對(duì)應(yīng)的視差圖
根據(jù)式(2),將視差圖中每個(gè)視差值進(jìn)行矩陣運(yùn)算,得到每個(gè)元素中含有深度信息值的深度圖,計(jì)算出目標(biāo)物體距離攝像機(jī)的深度值,如表2 所示。其中,以32.5 cm為一個(gè)距離單位,在相同距離內(nèi)針對(duì)不同物體進(jìn)行多次測(cè)距實(shí)驗(yàn)。
表2 測(cè)距結(jié)果
其中組別1、2、3 的測(cè)試對(duì)象分別為正方形鐵盒、圓形鐵桶和不規(guī)則塑料盒,每組分別在距離水下雙目相機(jī)32.5 cm 處測(cè)距3 次,取3 次平均值為每組的實(shí)驗(yàn)結(jié)果,保留5 位小數(shù)。組別4、5、6 的測(cè)試對(duì)象分別為正方形鐵盒、圓形鐵桶和不規(guī)則塑料盒,每組分別在距離水下雙目相機(jī)60.0 cm 處測(cè)距3 次,取3 次平均值為每組的實(shí)驗(yàn)結(jié)果,保留5 位小數(shù)。
在深度信息測(cè)量實(shí)驗(yàn)中,距離為32.5 cm 組別針對(duì)上述3 種不同目標(biāo)物體的測(cè)距精度差別較小,平均精度為96.29%,效果比較理想;在60.0 cm 組別中,平均精度為81.2%,不同物體的測(cè)距精度存在差距,原因?yàn)楫?dāng)距離變大時(shí),更多的水體環(huán)境會(huì)進(jìn)入水下相機(jī)的拍攝范圍內(nèi),當(dāng)水體渾濁時(shí),會(huì)影響到立體匹配的視差圖效果,造成一定程度上的測(cè)距誤差。
3.2.4 點(diǎn)云可視化
基于python-pcl 第三方庫(kù),把立體匹配得到的視差圖求解出目標(biāo)物體的三維信息,并將每個(gè)包含深度信息值的三維坐標(biāo)點(diǎn)生成點(diǎn)云,如圖13 所示。
圖13 三維點(diǎn)云圖
本文給出了雙目視覺(jué)技術(shù)在水下場(chǎng)景中的測(cè)距任務(wù)的設(shè)計(jì)與具體的實(shí)現(xiàn)方法,并提出了一種根據(jù)視差圖生成三維點(diǎn)云的方法,可以有效表示出目標(biāo)物體的三維結(jié)構(gòu)信息。同時(shí)針對(duì)立體匹配部分,采用改進(jìn)的SGBM算法,既保證了魯棒性好的優(yōu)點(diǎn),又優(yōu)化了算法執(zhí)行速度。實(shí)驗(yàn)結(jié)果表明,該算法優(yōu)化了處理時(shí)間、魯棒性好。測(cè)距實(shí)驗(yàn)表明:在渾濁水體環(huán)境中的0~50 cm 的距離內(nèi),測(cè)距平均精度為96.29%,達(dá)到了較高的精度水平,由于近距離拍攝會(huì)產(chǎn)生不可逆的畸變誤差,因此該實(shí)驗(yàn)結(jié)果達(dá)到了近距離水下測(cè)距的要求。目前國(guó)內(nèi)外的水下測(cè)距實(shí)驗(yàn)距離多在1~2 m 區(qū)間內(nèi),且水體清澈,因此產(chǎn)生的誤差較低??紤]到上述原因,在相同水體環(huán)境中,本文在0~50 cm 的測(cè)距精度較為先進(jìn)。
雖然本文較為成功地實(shí)現(xiàn)了針對(duì)水下渾濁環(huán)境下的針對(duì)目標(biāo)物體的近距離測(cè)距任務(wù)以及構(gòu)建出目標(biāo)物體的三維模型,但仍有許多不足的地方:在水下場(chǎng)景中,拍攝的圖像對(duì)比度低、圖像質(zhì)量差,導(dǎo)致視差圖的效果沒(méi)有陸上實(shí)驗(yàn)效果理想,影響到了后續(xù)實(shí)驗(yàn)的準(zhǔn)確性。接下來(lái)將對(duì)此進(jìn)一步研究和完善。