莊培桎,林文樹
(東北林業大學 機電工程學院,哈爾濱 150040)
隨著雙目立體視覺系統在各領域的廣泛運用[1],不同的林業機械和林業裝備也逐步應用雙目立體視覺系統以提高其智能化程度,適應森林復雜的作業環境[2]。如王怡萱[3]設計了一種林業機器人立木測距系統,系統采用DSP (Digital Signal Processor)負責圖像處理、ARM (Advanced RISC Machine)負責機器人整體系統控制的雙核處理器,在0.2 m到2 m的戶外實地測試中,該系統的測距精度達到90%,滿足了系統設計要求。李亞東等[4]進行了通過USB攝像頭雙目立體視覺進行立木胸徑測量的研究,通過Open CV實現雙目圖像轉換視差圖和通過三維點云信息,完成對立木胸徑的提取和計算,胸徑測量結果精度較高,滿足實際要求。Zhang等[5]對森林火源的雙目定位及測距系統進行了研究,系統采用了SGBM(Semi-Global Block Matching)算法進行雙目立體匹配和視差圖的三維坐標變換,可實現火源自動感應識別和自動測距,具有較高的自動化程度。張真維等[6]提出了一種基于雙目視覺完成樹木高度測量的研究方法,通過SGBM(Semi-Global Block Matching)算法和BM (Block Matching)算法對雙目樹木圖像進行立體匹配,而后對樹木關鍵點的三維坐標轉換得到樹木高度,實現了無接觸測量樹高。
同CPU相比,基于FPGA應用雙目視覺的最大優勢有:FPGA的運算方式是通過并行流水線的方式進行運算的,對圖像處理運算的速率具有較大的提升[7-10]。陳明明等[11]提出了一種基于FPGA的雙目實時測距算法,使用Linebuffer實現興趣點的檢測,并通過WTA電路和三角測量法實現匹配和距離轉換,算法在FPGA上的處理速度相較于軟件具有極大的提升。
針對當前雙目視覺在進行樹木和障礙物測距時存在的雙目圖像采集和處理速度較慢、CPU負載較大和采集圖像分辨率較低等問題,本研究設計了一種基于雙目視覺的林間目標測距系統,通過FPGA完成雙目圖像的采集和預處理,結合千兆以太網將圖像傳輸至PC端,PC端完成距離測量,實現對樹木和障礙物等林間目標的高速率采集、預處理和距離的測量,滿足測距的精度需要。
相比于單目視覺系統,雙目立體視覺系統可以得到圖像的三維坐標信息,進而計算出目標物體的距離信息,且雙目立體視覺系統的測量精度較高、效率較快,因而具有無可取代的優勢[12-14]。
雙目立體視覺為減少像素匹配點的立體匹配運算過程,一般多借助平行于同一水平線的左右2個攝像頭,從2個不同視角對同一時間、同一場景拍下一組圖像,然后對左右圖像中的特征匹配點進行匹配,計算出圖像的深度信息,建立圖像的視差圖,得到圖像的三維坐標信息[15-17],最終根據公式轉換得到實際距離,完成雙目測距功能。雙目立體視覺的基本原理如圖1所示。

圖1 雙目立體視覺基本原理Fig.1 Basic principles of binocular stereo vision
圖1中,P(x,z)表示目標樹種的位置坐標;P1(x1,f)表示左目圖像中的目標樹種投影點的位置坐標;P2(x2,f)表示右目圖像中的目標樹種投影點的位置坐標;f表示焦距;c1、c2分別表示左右兩攝像頭的光心;b表示兩攝像頭光心之間的距離,即基線,則三角關系式如式(1)所示。
(1)
對三角關系式進行轉換,即可得到所求距離z,如式(2)所示。
(2)
主流的立體匹配有SGBM算法和BM算法,其中,SGBM算法,屬于一種半全局立體匹配算法,其與全局立體匹配算法類似,主要原理是通過將每個像素點的視差拼接成1個視差圖,然后通過設置一個和此圖有關的全局能量函數式,使這個能量函數式最小化,從而得到每個像素點的最優視差[18-19]。能量函數的定義如式(3)所示。
E(D)=Edata(D)+λEsmooth(D) 。
(3)
式中:E(D)為能量函數;D為視差圖;Edata(D)為數據約束項,表示所有像素的匹配代價總和;Esmooth(D)為平滑約束項,用于判斷相鄰像素的連續性;λ為參數因子,用于保證數據約束項和平滑約束項之間的平衡。
本系統所采用的SGBM算法的具體能量函數表達式如式(4)所示。
(4)

系統通過將E(D)最小化,求出左視圖中該像素點與右視圖中最佳匹配像素點的距離,即最優視差,對所有像素點重復上述函數式,可生成以左視圖坐標為基準的視差圖,從而得到深度距離信息。
而BM算法是一種精確字符串算法,其主要原理是模式串相對于主串向右移動,從右向左比較2串的數據,同時應用壞字符和好后綴2種規則進行匹配,最終匹配到左視圖該像素點在右視圖中的相對位置,以此建立視差圖。BM算法其視差處理速度大于SGBM算法,但視差處理效果小于SGBM算法,且只能處理8位灰度圖像數據,需根據具體實際環境選擇BM算法或者SGBM算法。
系統的各模塊由FPGA和PC端CPU分別完成,雙目圖像采集模塊、雙目圖像存儲模塊、雙目圖像預處理模塊和雙目圖像傳輸模塊4個模塊使用Verilog語言通過FPGA實現,雙目攝像頭標定模塊、雙目圖像校正模塊和立體匹配模塊3個模塊通過CPU實現,其中雙目攝像頭標定模塊通過MATLAB實現、雙目圖像校正模塊和立體匹配模塊則通過VS2022和OpenCV實現,系統總體結構框圖如圖2所示。

圖2 系統總體結構框圖Fig.2 Overall structure diagram of the system
選用Intel的EP4CE10F17C8N作為FPGA核心,可滿足本研究雙目立體視覺系統的設計需要。雙目攝像頭使用的是2個CMOS型OV5640圖像傳感器,500 萬像素,滿足本研究視頻圖像的高速采集的需要。SDRAM采用W9825G6KH-6型SDRAM,具有256 Mbit的存儲器資源,最高運行速度可達166 MHz,FPGA硬件總體框圖如圖3所示。

圖3 FPGA硬件總體框圖Fig.3 Overall block diagram of FPGA hardware
為了減輕PC端圖像處理的壓力,提高系統的圖像處理速度,通過FPGA完成雙目圖像采集,綜合FPGA的資源和系統處理速度,采集左右目圖像分辨率均設置為640×720。系統雙目圖像采集模塊RTL框圖如圖4所示,模塊目的是設置camera_init1和camera_init2對左右目攝像頭分別進行初始化,通過狀態機循環讀取寄存器參數的camera_init_table 中的數據值,配合I2C 控制器將各數據值寫入到OV5640圖像傳感器的各個寄存器中。

圖4 雙目圖像采集模塊RTL框圖Fig.4 RTL block diagram of the binocular image acquisition module
為了使雙目圖像數據能夠正常地通過圖像傳輸模塊傳輸至PC端,需要將采集到的[7∶0]位雙目圖像數據以行為單位進行編號,并進行圖像緩存和拼接使其在PC端能準確接收到一幀圖像。設置cache1模塊對左攝像頭的[7∶0]位圖像數據進行緩存,cache2模塊對右攝像頭的[7∶0]位圖像數據進行緩存,controller模塊對cache1模塊和cache2模塊的圖像數據拼接,controller模塊設置SIDEA和SIDEB2個區域,SIDEA和SIDEB圖像寬度均為640,將輸入的cache1模塊[7∶0]位數據放入SIDEA區域,將輸入的cache2模塊[7∶0]位數據放入SIDEB區域,SIDEA和SIDEB2個區域進行拼接,使其傳輸至在PC端后顯示成一幀1 280×720圖像。
雙目圖像預處理模塊主要是對采集的圖像進行灰度化處理,減少后續PC端數據處理的計算量。模塊的主要思路是通過三級流水線將圖像數據格式由RGB轉換成YCbCr,然后單獨選取Y分量輸出,得到灰度圖像數據。圖5為圖像預處理前后對比結果。

圖5 雙目圖像預處理Fig.5 Binocular image preprocessing
在本系統中,圖像傳輸模塊的主要功能是將雙目圖像數據由FPGA發送至PC端進行雙目視覺立體匹配處理[20]。系統選用基于FPGA的千兆以太網傳輸作為圖像傳輸模塊,將FPGA采集到的左右目分辨率均為640×720的圖像拼接成分辨率為1 280×720的圖像傳輸至PC端。系統雙目圖像傳輸模塊RTL框圖如圖6所示,UDP_Send為圖像傳輸模塊的核心,其將需要發送的雙目圖像數據進行打包,通過RGMII接口將數據送至PHY芯片后再通過網線送至PC端。而由于傳輸接口為RGMII,只能傳輸4 bit數據,而UDP_Send在一個時鐘周期的上升沿輸出的為8 bit數據,須設置gmii_to_rgmii,使rgmii_txd在1個時鐘周期的上升沿和下降沿均輸出4 bit數據。FPGA通過千兆以太網傳輸至PC端的圖像如圖7所示。
標定過程選取為黑白格子數為10×7的張正友棋盤格標定板,通過FPGA雙目圖像采集系統采集15組不同角度的標定板圖像,將雙目圖像傳輸至PC端通過MATLAB進行圖像分割拆分。
通過MATLAB的標定工具箱進行雙目圖像的標定,通過 “calibrate”功能得到重投影誤差、“Pattern-centricx”可視化窗口和“Camera-centric”可視化窗口,將平均誤差大于0.2的雙目圖像移除重新進行校準后導出雙目攝像頭的內參和外參,完成雙目標定,以消除徑向畸變和切向畸變[21]。最終雙目攝像頭標定結果:左目攝像頭畸變矩陣為[-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], 旋轉矩陣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]。
雙目圖像校正過程主要根據前文攝像頭的內參和外參,通過立體校正stereoRectify()函數、映射變換計算initUndistortRectifyMap()函數和幾何變換remap()函數等完成對左右目圖像的畸變校正,然后給左右目圖像分別畫上對應的線條方便顯示,檢驗算法的運行情況,其中,stereoRectify()函數的作用是根據雙目攝像頭的內參和外參計算得到雙目攝像機的修正變換矩陣,initUndistortRectifyMap()函數的作用是根據雙目攝像頭內參和前述得到的修正變換矩陣計算未失真和修正變換映射,得到雙目x方向和y方向的remap表格,remap()函數根據remap表格和雙目圖像計算得到實現共面且行對準的雙目圖像。雙目圖像校正結果如圖8所示,雙目圖像校正效果較好,實現行對準。

圖8 樹木和障礙物校正圖像Fig.8 Stereo rectified images of trees and obstacles
立體匹配作為雙目視覺系統中核心的部分,其主要目的是獲取雙目圖像左右2幅圖像的樹木關鍵匹配點從而構建深度圖,得到深度信息,實現雙目視覺系統的測距功能[21]。在立體匹配這個過程中,SGBM算法按照預處理、代價計算、動態規劃和視差后處理4個步驟處理,最終得到所需的深度圖像,完成距離的測量;BM算法通過主串與模式串進行匹配,并通過壞字符和好后綴2種啟發式規則進行處理,最終得到所需的深度圖像,完成距離的測量。待處理圖像如圖9所示,SGBM算法立體匹配結果如圖10所示,BM算法立體匹配結果如圖11所示,SGBM算法處理結果優于BM算法,環境噪點較少,立體匹配效果較好。

圖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
本研究所設計的FPGA電路在以EP4CE10F17C8N為核心的控制系統上實現,并配以雙目OV5640完成圖像采集[23],雙目圖像分辨率設置為1 280×720,其中左目圖像分辨率640×720,右目圖像分辨率640×720,圖像經千兆以太網傳輸至PC端進行雙目圖像的標定、校正和立體匹配,得到待測樹木和障礙物的距離結果。實驗地點選在黑龍江省哈爾濱城市林業示范基地中進行,林間目標選取2棵水曲柳作為待測樹木,選取包裝盒模擬林間常見的石塊或伐根等障礙物,為了驗證SGBM算法和BM算法的測距精度,選取0.800 ~1.400 m范圍內進行多次測距實驗,并將測量距離與實際距離進行對比,2種算法對樹木和障礙物的測距結果分別見表1和表2。

表1 SGBM算法測距結果Tab.1 Ranging results of SGBM algorithm

表2 BM算法測距結果Tab.2 Ranging results of BM algorithm
由表1和表2可知,基于雙目視覺的林間目標測距系統測量樹木和障礙物距離,在0.800 ~1.400 m范圍內,SGBM算法樹木和障礙物距離測量結果的最低相對誤差為0.62%,最高相對誤差為1.79%,BM算法樹木和障礙物距離測量結果的最低相對誤差為0.62%,最高相對誤差為1.88%,2種算法均滿足實際測距的精度需要。此外,造成樹木和障礙物距離測量結果的誤差原因可能有:樹木不規則,測量存在偏差;距離雙目相機的標定結果存在誤差;雙目相機的基線長度較短;算法對特征匹配點的提取較差而造成視差圖不明顯等問題。
系統處理速度對比見表3。通過表中對比結果顯示,本研究所用SGBM算法和BM算法誤差率與單CPU平臺或單FPGA平臺相比較有極大的降低,處理速度相比較單CPU平臺有大幅提升;通過2種算法相比較可以看出BM算法處理速度優于SGBM算法。

表3 系統處理速度對比Tab.3 Comparison of system processing speeds
以上結果表明,隨著測量距離的增加,SGBM算法和BM算法的誤差也逐漸變大,同一測量距離進行比較,SGBM算法的視差圖中環境噪點和空洞更少,視差圖成像效果更加清晰明顯,測距精度更高,誤差更小,適合運用在對測距精度要求較高的領域;而BM算法的圖像處理速度則更快,圖像立體匹配的運算效率更高,適合運用在對圖像處理速度要求較高的領域。
本研究基于FPGA和雙目視覺理論設計了一種基于雙目視覺的林間目標測距系統,通過FPGA完成雙目圖像的采集,借助千兆以太網將雙目圖像傳輸至PC端,通過BM算法和SGBM算法完成雙目測距。開發的雙目視覺系統優勢在于借助 FPGA 并行處理、圖像數據處理速度快的特點,完成對雙目圖像的采集、處理和傳輸,在保持采集圖像分辨率較高的同時降低了PC端CPU圖像處理的壓力,實現對樹木和障礙物等林間目標的高速率采集、預處理和距離的測量,在實驗誤差方面,2種算法的樹木和障礙物距離測量結果相對誤差范圍都在2%以內,圖像處理速度均實現較大的提升。
本研究目前存在的問題是系統較遠距離時測距相對誤差較大、深度圖像輕微失真和未實現無線傳輸雙目圖像等,后續通過改進SGBM算法和BM算法,提高測距的精度,可以加入Wi-Fi模塊以及實現無線遠程圖像傳輸等方向進行研究,以實現將開發的系統搭載運用于森林資源監測裝置中。