莊培桎,林文樹
(東北林業(yè)大學(xué) 機(jī)電工程學(xué)院,哈爾濱 150040)
隨著雙目立體視覺系統(tǒng)在各領(lǐng)域的廣泛運(yùn)用[1],不同的林業(yè)機(jī)械和林業(yè)裝備也逐步應(yīng)用雙目立體視覺系統(tǒng)以提高其智能化程度,適應(yīng)森林復(fù)雜的作業(yè)環(huán)境[2]。如王怡萱[3]設(shè)計(jì)了一種林業(yè)機(jī)器人立木測距系統(tǒng),系統(tǒng)采用DSP (Digital Signal Processor)負(fù)責(zé)圖像處理、ARM (Advanced RISC Machine)負(fù)責(zé)機(jī)器人整體系統(tǒng)控制的雙核處理器,在0.2 m到2 m的戶外實(shí)地測試中,該系統(tǒng)的測距精度達(dá)到90%,滿足了系統(tǒng)設(shè)計(jì)要求。李亞東等[4]進(jìn)行了通過USB攝像頭雙目立體視覺進(jìn)行立木胸徑測量的研究,通過Open CV實(shí)現(xiàn)雙目圖像轉(zhuǎn)換視差圖和通過三維點(diǎn)云信息,完成對(duì)立木胸徑的提取和計(jì)算,胸徑測量結(jié)果精度較高,滿足實(shí)際要求。Zhang等[5]對(duì)森林火源的雙目定位及測距系統(tǒng)進(jìn)行了研究,系統(tǒng)采用了SGBM(Semi-Global Block Matching)算法進(jìn)行雙目立體匹配和視差圖的三維坐標(biāo)變換,可實(shí)現(xiàn)火源自動(dòng)感應(yīng)識(shí)別和自動(dòng)測距,具有較高的自動(dòng)化程度。張真維等[6]提出了一種基于雙目視覺完成樹木高度測量的研究方法,通過SGBM(Semi-Global Block Matching)算法和BM (Block Matching)算法對(duì)雙目樹木圖像進(jìn)行立體匹配,而后對(duì)樹木關(guān)鍵點(diǎn)的三維坐標(biāo)轉(zhuǎn)換得到樹木高度,實(shí)現(xiàn)了無接觸測量樹高。
同CPU相比,基于FPGA應(yīng)用雙目視覺的最大優(yōu)勢有:FPGA的運(yùn)算方式是通過并行流水線的方式進(jìn)行運(yùn)算的,對(duì)圖像處理運(yùn)算的速率具有較大的提升[7-10]。陳明明等[11]提出了一種基于FPGA的雙目實(shí)時(shí)測距算法,使用Linebuffer實(shí)現(xiàn)興趣點(diǎn)的檢測,并通過WTA電路和三角測量法實(shí)現(xiàn)匹配和距離轉(zhuǎn)換,算法在FPGA上的處理速度相較于軟件具有極大的提升。
針對(duì)當(dāng)前雙目視覺在進(jìn)行樹木和障礙物測距時(shí)存在的雙目圖像采集和處理速度較慢、CPU負(fù)載較大和采集圖像分辨率較低等問題,本研究設(shè)計(jì)了一種基于雙目視覺的林間目標(biāo)測距系統(tǒng),通過FPGA完成雙目圖像的采集和預(yù)處理,結(jié)合千兆以太網(wǎng)將圖像傳輸至PC端,PC端完成距離測量,實(shí)現(xiàn)對(duì)樹木和障礙物等林間目標(biāo)的高速率采集、預(yù)處理和距離的測量,滿足測距的精度需要。
相比于單目視覺系統(tǒng),雙目立體視覺系統(tǒng)可以得到圖像的三維坐標(biāo)信息,進(jìn)而計(jì)算出目標(biāo)物體的距離信息,且雙目立體視覺系統(tǒng)的測量精度較高、效率較快,因而具有無可取代的優(yōu)勢[12-14]。
雙目立體視覺為減少像素匹配點(diǎn)的立體匹配運(yùn)算過程,一般多借助平行于同一水平線的左右2個(gè)攝像頭,從2個(gè)不同視角對(duì)同一時(shí)間、同一場景拍下一組圖像,然后對(duì)左右圖像中的特征匹配點(diǎn)進(jìn)行匹配,計(jì)算出圖像的深度信息,建立圖像的視差圖,得到圖像的三維坐標(biāo)信息[15-17],最終根據(jù)公式轉(zhuǎn)換得到實(shí)際距離,完成雙目測距功能。雙目立體視覺的基本原理如圖1所示。
圖1 雙目立體視覺基本原理Fig.1 Basic principles of binocular stereo vision
圖1中,P(x,z)表示目標(biāo)樹種的位置坐標(biāo);P1(x1,f)表示左目圖像中的目標(biāo)樹種投影點(diǎn)的位置坐標(biāo);P2(x2,f)表示右目圖像中的目標(biāo)樹種投影點(diǎn)的位置坐標(biāo);f表示焦距;c1、c2分別表示左右兩攝像頭的光心;b表示兩攝像頭光心之間的距離,即基線,則三角關(guān)系式如式(1)所示。
(1)
對(duì)三角關(guān)系式進(jìn)行轉(zhuǎn)換,即可得到所求距離z,如式(2)所示。
(2)
主流的立體匹配有SGBM算法和BM算法,其中,SGBM算法,屬于一種半全局立體匹配算法,其與全局立體匹配算法類似,主要原理是通過將每個(gè)像素點(diǎn)的視差拼接成1個(gè)視差圖,然后通過設(shè)置一個(gè)和此圖有關(guān)的全局能量函數(shù)式,使這個(gè)能量函數(shù)式最小化,從而得到每個(gè)像素點(diǎn)的最優(yōu)視差[18-19]。能量函數(shù)的定義如式(3)所示。
E(D)=Edata(D)+λEsmooth(D) 。
(3)
式中:E(D)為能量函數(shù);D為視差圖;Edata(D)為數(shù)據(jù)約束項(xiàng),表示所有像素的匹配代價(jià)總和;Esmooth(D)為平滑約束項(xiàng),用于判斷相鄰像素的連續(xù)性;λ為參數(shù)因子,用于保證數(shù)據(jù)約束項(xiàng)和平滑約束項(xiàng)之間的平衡。
本系統(tǒng)所采用的SGBM算法的具體能量函數(shù)表達(dá)式如式(4)所示。
(4)
系統(tǒng)通過將E(D)最小化,求出左視圖中該像素點(diǎn)與右視圖中最佳匹配像素點(diǎn)的距離,即最優(yōu)視差,對(duì)所有像素點(diǎn)重復(fù)上述函數(shù)式,可生成以左視圖坐標(biāo)為基準(zhǔn)的視差圖,從而得到深度距離信息。
而BM算法是一種精確字符串算法,其主要原理是模式串相對(duì)于主串向右移動(dòng),從右向左比較2串的數(shù)據(jù),同時(shí)應(yīng)用壞字符和好后綴2種規(guī)則進(jìn)行匹配,最終匹配到左視圖該像素點(diǎn)在右視圖中的相對(duì)位置,以此建立視差圖。BM算法其視差處理速度大于SGBM算法,但視差處理效果小于SGBM算法,且只能處理8位灰度圖像數(shù)據(jù),需根據(jù)具體實(shí)際環(huán)境選擇BM算法或者SGBM算法。
系統(tǒng)的各模塊由FPGA和PC端CPU分別完成,雙目圖像采集模塊、雙目圖像存儲(chǔ)模塊、雙目圖像預(yù)處理模塊和雙目圖像傳輸模塊4個(gè)模塊使用Verilog語言通過FPGA實(shí)現(xiàn),雙目攝像頭標(biāo)定模塊、雙目圖像校正模塊和立體匹配模塊3個(gè)模塊通過CPU實(shí)現(xiàn),其中雙目攝像頭標(biāo)定模塊通過MATLAB實(shí)現(xiàn)、雙目圖像校正模塊和立體匹配模塊則通過VS2022和OpenCV實(shí)現(xiàn),系統(tǒng)總體結(jié)構(gòu)框圖如圖2所示。
圖2 系統(tǒng)總體結(jié)構(gòu)框圖Fig.2 Overall structure diagram of the system
選用Intel的EP4CE10F17C8N作為FPGA核心,可滿足本研究雙目立體視覺系統(tǒng)的設(shè)計(jì)需要。雙目攝像頭使用的是2個(gè)CMOS型OV5640圖像傳感器,500 萬像素,滿足本研究視頻圖像的高速采集的需要。SDRAM采用W9825G6KH-6型SDRAM,具有256 Mbit的存儲(chǔ)器資源,最高運(yùn)行速度可達(dá)166 MHz,FPGA硬件總體框圖如圖3所示。
圖3 FPGA硬件總體框圖Fig.3 Overall block diagram of FPGA hardware
為了減輕PC端圖像處理的壓力,提高系統(tǒng)的圖像處理速度,通過FPGA完成雙目圖像采集,綜合FPGA的資源和系統(tǒng)處理速度,采集左右目圖像分辨率均設(shè)置為640×720。系統(tǒng)雙目圖像采集模塊RTL框圖如圖4所示,模塊目的是設(shè)置camera_init1和camera_init2對(duì)左右目攝像頭分別進(jìn)行初始化,通過狀態(tài)機(jī)循環(huán)讀取寄存器參數(shù)的camera_init_table 中的數(shù)據(jù)值,配合I2C 控制器將各數(shù)據(jù)值寫入到OV5640圖像傳感器的各個(gè)寄存器中。
圖4 雙目圖像采集模塊RTL框圖Fig.4 RTL block diagram of the binocular image acquisition module
為了使雙目圖像數(shù)據(jù)能夠正常地通過圖像傳輸模塊傳輸至PC端,需要將采集到的[7∶0]位雙目圖像數(shù)據(jù)以行為單位進(jìn)行編號(hào),并進(jìn)行圖像緩存和拼接使其在PC端能準(zhǔn)確接收到一幀圖像。設(shè)置cache1模塊對(duì)左攝像頭的[7∶0]位圖像數(shù)據(jù)進(jìn)行緩存,cache2模塊對(duì)右攝像頭的[7∶0]位圖像數(shù)據(jù)進(jìn)行緩存,controller模塊對(duì)cache1模塊和cache2模塊的圖像數(shù)據(jù)拼接,controller模塊設(shè)置SIDEA和SIDEB2個(gè)區(qū)域,SIDEA和SIDEB圖像寬度均為640,將輸入的cache1模塊[7∶0]位數(shù)據(jù)放入SIDEA區(qū)域,將輸入的cache2模塊[7∶0]位數(shù)據(jù)放入SIDEB區(qū)域,SIDEA和SIDEB2個(gè)區(qū)域進(jìn)行拼接,使其傳輸至在PC端后顯示成一幀1 280×720圖像。
雙目圖像預(yù)處理模塊主要是對(duì)采集的圖像進(jìn)行灰度化處理,減少后續(xù)PC端數(shù)據(jù)處理的計(jì)算量。模塊的主要思路是通過三級(jí)流水線將圖像數(shù)據(jù)格式由RGB轉(zhuǎn)換成YCbCr,然后單獨(dú)選取Y分量輸出,得到灰度圖像數(shù)據(jù)。圖5為圖像預(yù)處理前后對(duì)比結(jié)果。
圖5 雙目圖像預(yù)處理Fig.5 Binocular image preprocessing
在本系統(tǒng)中,圖像傳輸模塊的主要功能是將雙目圖像數(shù)據(jù)由FPGA發(fā)送至PC端進(jìn)行雙目視覺立體匹配處理[20]。系統(tǒng)選用基于FPGA的千兆以太網(wǎng)傳輸作為圖像傳輸模塊,將FPGA采集到的左右目分辨率均為640×720的圖像拼接成分辨率為1 280×720的圖像傳輸至PC端。系統(tǒng)雙目圖像傳輸模塊RTL框圖如圖6所示,UDP_Send為圖像傳輸模塊的核心,其將需要發(fā)送的雙目圖像數(shù)據(jù)進(jìn)行打包,通過RGMII接口將數(shù)據(jù)送至PHY芯片后再通過網(wǎng)線送至PC端。而由于傳輸接口為RGMII,只能傳輸4 bit數(shù)據(jù),而UDP_Send在一個(gè)時(shí)鐘周期的上升沿輸出的為8 bit數(shù)據(jù),須設(shè)置gmii_to_rgmii,使rgmii_txd在1個(gè)時(shí)鐘周期的上升沿和下降沿均輸出4 bit數(shù)據(jù)。FPGA通過千兆以太網(wǎng)傳輸至PC端的圖像如圖7所示。
標(biāo)定過程選取為黑白格子數(shù)為10×7的張正友棋盤格標(biāo)定板,通過FPGA雙目圖像采集系統(tǒng)采集15組不同角度的標(biāo)定板圖像,將雙目圖像傳輸至PC端通過MATLAB進(jìn)行圖像分割拆分。
通過MATLAB的標(biāo)定工具箱進(jìn)行雙目圖像的標(biāo)定,通過 “calibrate”功能得到重投影誤差、“Pattern-centricx”可視化窗口和“Camera-centric”可視化窗口,將平均誤差大于0.2的雙目圖像移除重新進(jìn)行校準(zhǔn)后導(dǎo)出雙目攝像頭的內(nèi)參和外參,完成雙目標(biāo)定,以消除徑向畸變和切向畸變[21]。最終雙目攝像頭標(biāo)定結(jié)果:左目攝像頭畸變矩陣為[-0.278 4, 0.032 9, -0.003 1, -0.019 5, 0.325 2],右目攝像頭畸變矩陣為[-0.270 8, -0.159 2, -0.002 3, -0.016 6, 1.310 6],平移矩陣T為[-39.487 8, 0.127 2, 0.803 0], 旋轉(zhuǎn)矩陣R為[1.000 0, 0.005 4, -0.002 9, -0.005 4, 0.999 9, -0.008 4, 0.002 9, 0.008 5, 1.000 0]。
雙目圖像校正過程主要根據(jù)前文攝像頭的內(nèi)參和外參,通過立體校正stereoRectify()函數(shù)、映射變換計(jì)算initUndistortRectifyMap()函數(shù)和幾何變換remap()函數(shù)等完成對(duì)左右目圖像的畸變校正,然后給左右目圖像分別畫上對(duì)應(yīng)的線條方便顯示,檢驗(yàn)算法的運(yùn)行情況,其中,stereoRectify()函數(shù)的作用是根據(jù)雙目攝像頭的內(nèi)參和外參計(jì)算得到雙目攝像機(jī)的修正變換矩陣,initUndistortRectifyMap()函數(shù)的作用是根據(jù)雙目攝像頭內(nèi)參和前述得到的修正變換矩陣計(jì)算未失真和修正變換映射,得到雙目x方向和y方向的remap表格,remap()函數(shù)根據(jù)remap表格和雙目圖像計(jì)算得到實(shí)現(xiàn)共面且行對(duì)準(zhǔn)的雙目圖像。雙目圖像校正結(jié)果如圖8所示,雙目圖像校正效果較好,實(shí)現(xiàn)行對(duì)準(zhǔn)。
圖8 樹木和障礙物校正圖像Fig.8 Stereo rectified images of trees and obstacles
立體匹配作為雙目視覺系統(tǒng)中核心的部分,其主要目的是獲取雙目圖像左右2幅圖像的樹木關(guān)鍵匹配點(diǎn)從而構(gòu)建深度圖,得到深度信息,實(shí)現(xiàn)雙目視覺系統(tǒng)的測距功能[21]。在立體匹配這個(gè)過程中,SGBM算法按照預(yù)處理、代價(jià)計(jì)算、動(dòng)態(tài)規(guī)劃和視差后處理4個(gè)步驟處理,最終得到所需的深度圖像,完成距離的測量;BM算法通過主串與模式串進(jìn)行匹配,并通過壞字符和好后綴2種啟發(fā)式規(guī)則進(jìn)行處理,最終得到所需的深度圖像,完成距離的測量。待處理圖像如圖9所示,SGBM算法立體匹配結(jié)果如圖10所示,BM算法立體匹配結(jié)果如圖11所示,SGBM算法處理結(jié)果優(yōu)于BM算法,環(huán)境噪點(diǎn)較少,立體匹配效果較好。
圖9 待處理圖像Fig.9 Image to be processed
圖10 SGBM算法立體匹配圖像Fig.10 SGBM algorithm stereo matching image
圖11 BM算法立體匹配圖像Fig.11 BM algorithm stereo matching image
本研究所設(shè)計(jì)的FPGA電路在以EP4CE10F17C8N為核心的控制系統(tǒng)上實(shí)現(xiàn),并配以雙目OV5640完成圖像采集[23],雙目圖像分辨率設(shè)置為1 280×720,其中左目圖像分辨率640×720,右目圖像分辨率640×720,圖像經(jīng)千兆以太網(wǎng)傳輸至PC端進(jìn)行雙目圖像的標(biāo)定、校正和立體匹配,得到待測樹木和障礙物的距離結(jié)果。實(shí)驗(yàn)地點(diǎn)選在黑龍江省哈爾濱城市林業(yè)示范基地中進(jìn)行,林間目標(biāo)選取2棵水曲柳作為待測樹木,選取包裝盒模擬林間常見的石塊或伐根等障礙物,為了驗(yàn)證SGBM算法和BM算法的測距精度,選取0.800 ~1.400 m范圍內(nèi)進(jìn)行多次測距實(shí)驗(yàn),并將測量距離與實(shí)際距離進(jìn)行對(duì)比,2種算法對(duì)樹木和障礙物的測距結(jié)果分別見表1和表2。
表1 SGBM算法測距結(jié)果Tab.1 Ranging results of SGBM algorithm
表2 BM算法測距結(jié)果Tab.2 Ranging results of BM algorithm
由表1和表2可知,基于雙目視覺的林間目標(biāo)測距系統(tǒng)測量樹木和障礙物距離,在0.800 ~1.400 m范圍內(nèi),SGBM算法樹木和障礙物距離測量結(jié)果的最低相對(duì)誤差為0.62%,最高相對(duì)誤差為1.79%,BM算法樹木和障礙物距離測量結(jié)果的最低相對(duì)誤差為0.62%,最高相對(duì)誤差為1.88%,2種算法均滿足實(shí)際測距的精度需要。此外,造成樹木和障礙物距離測量結(jié)果的誤差原因可能有:樹木不規(guī)則,測量存在偏差;距離雙目相機(jī)的標(biāo)定結(jié)果存在誤差;雙目相機(jī)的基線長度較短;算法對(duì)特征匹配點(diǎn)的提取較差而造成視差圖不明顯等問題。
系統(tǒng)處理速度對(duì)比見表3。通過表中對(duì)比結(jié)果顯示,本研究所用SGBM算法和BM算法誤差率與單CPU平臺(tái)或單FPGA平臺(tái)相比較有極大的降低,處理速度相比較單CPU平臺(tái)有大幅提升;通過2種算法相比較可以看出BM算法處理速度優(yōu)于SGBM算法。
表3 系統(tǒng)處理速度對(duì)比Tab.3 Comparison of system processing speeds
以上結(jié)果表明,隨著測量距離的增加,SGBM算法和BM算法的誤差也逐漸變大,同一測量距離進(jìn)行比較,SGBM算法的視差圖中環(huán)境噪點(diǎn)和空洞更少,視差圖成像效果更加清晰明顯,測距精度更高,誤差更小,適合運(yùn)用在對(duì)測距精度要求較高的領(lǐng)域;而BM算法的圖像處理速度則更快,圖像立體匹配的運(yùn)算效率更高,適合運(yùn)用在對(duì)圖像處理速度要求較高的領(lǐng)域。
本研究基于FPGA和雙目視覺理論設(shè)計(jì)了一種基于雙目視覺的林間目標(biāo)測距系統(tǒng),通過FPGA完成雙目圖像的采集,借助千兆以太網(wǎng)將雙目圖像傳輸至PC端,通過BM算法和SGBM算法完成雙目測距。開發(fā)的雙目視覺系統(tǒng)優(yōu)勢在于借助 FPGA 并行處理、圖像數(shù)據(jù)處理速度快的特點(diǎn),完成對(duì)雙目圖像的采集、處理和傳輸,在保持采集圖像分辨率較高的同時(shí)降低了PC端CPU圖像處理的壓力,實(shí)現(xiàn)對(duì)樹木和障礙物等林間目標(biāo)的高速率采集、預(yù)處理和距離的測量,在實(shí)驗(yàn)誤差方面,2種算法的樹木和障礙物距離測量結(jié)果相對(duì)誤差范圍都在2%以內(nèi),圖像處理速度均實(shí)現(xiàn)較大的提升。
本研究目前存在的問題是系統(tǒng)較遠(yuǎn)距離時(shí)測距相對(duì)誤差較大、深度圖像輕微失真和未實(shí)現(xiàn)無線傳輸雙目圖像等,后續(xù)通過改進(jìn)SGBM算法和BM算法,提高測距的精度,可以加入Wi-Fi模塊以及實(shí)現(xiàn)無線遠(yuǎn)程圖像傳輸?shù)确较蜻M(jìn)行研究,以實(shí)現(xiàn)將開發(fā)的系統(tǒng)搭載運(yùn)用于森林資源監(jiān)測裝置中。