基于双目视觉的林间目标测距系统研究

2023-10-12 07:12庄培桎林文树
森林工程 2023年5期
关键词:立体匹配双目测距

庄培桎,林文树

(东北林业大学 机电工程学院,哈尔滨 150040)

0 引言

随着双目立体视觉系统在各领域的广泛运用[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端完成距离测量,实现对树木和障碍物等林间目标的高速率采集、预处理和距离的测量,满足测距的精度需要。

1 双目立体视觉

1.1 基本原理

相比于单目视觉系统,双目立体视觉系统可以得到图像的三维坐标信息,进而计算出目标物体的距离信息,且双目立体视觉系统的测量精度较高、效率较快,因而具有无可取代的优势[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)

1.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算法。

2 系统总体结构与硬件平台

2.1 总体结构

系统的各模块由FPGA和PC端CPU分别完成,双目图像采集模块、双目图像存储模块、双目图像预处理模块和双目图像传输模块4个模块使用Verilog语言通过FPGA实现,双目摄像头标定模块、双目图像校正模块和立体匹配模块3个模块通过CPU实现,其中双目摄像头标定模块通过MATLAB实现、双目图像校正模块和立体匹配模块则通过VS2022和OpenCV实现,系统总体结构框图如图2所示。

图2 系统总体结构框图Fig.2 Overall structure diagram of the system

2.2 硬件平台

选用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

3 系统实现

3.1 双目图像采集

为了减轻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

3.2 双目图像存储

为了使双目图像数据能够正常地通过图像传输模块传输至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图像。

3.3 双目图像预处理

双目图像预处理模块主要是对采集的图像进行灰度化处理,减少后续PC端数据处理的计算量。模块的主要思路是通过三级流水线将图像数据格式由RGB转换成YCbCr,然后单独选取Y分量输出,得到灰度图像数据。图5为图像预处理前后对比结果。

图5 双目图像预处理Fig.5 Binocular image preprocessing

3.4 双目图像传输

在本系统中,图像传输模块的主要功能是将双目图像数据由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所示。

3.5 双目摄像头标定

标定过程选取为黑白格子数为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]。

3.6 双目图像校正

双目图像校正过程主要根据前文摄像头的内参和外参,通过立体校正stereoRectify()函数、映射变换计算initUndistortRectifyMap()函数和几何变换remap()函数等完成对左右目图像的畸变校正,然后给左右目图像分别画上对应的线条方便显示,检验算法的运行情况,其中,stereoRectify()函数的作用是根据双目摄像头的内参和外参计算得到双目摄像机的修正变换矩阵,initUndistortRectifyMap()函数的作用是根据双目摄像头内参和前述得到的修正变换矩阵计算未失真和修正变换映射,得到双目x方向和y方向的remap表格,remap()函数根据remap表格和双目图像计算得到实现共面且行对准的双目图像。双目图像校正结果如图8所示,双目图像校正效果较好,实现行对准。

图8 树木和障碍物校正图像Fig.8 Stereo rectified images of trees and obstacles

3.7 立体匹配

立体匹配作为双目视觉系统中核心的部分,其主要目的是获取双目图像左右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

4 结果与分析

本研究所设计的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算法的图像处理速度则更快,图像立体匹配的运算效率更高,适合运用在对图像处理速度要求较高的领域。

5 结论

本研究基于FPGA和双目视觉理论设计了一种基于双目视觉的林间目标测距系统,通过FPGA完成双目图像的采集,借助千兆以太网将双目图像传输至PC端,通过BM算法和SGBM算法完成双目测距。开发的双目视觉系统优势在于借助 FPGA 并行处理、图像数据处理速度快的特点,完成对双目图像的采集、处理和传输,在保持采集图像分辨率较高的同时降低了PC端CPU图像处理的压力,实现对树木和障碍物等林间目标的高速率采集、预处理和距离的测量,在实验误差方面,2种算法的树木和障碍物距离测量结果相对误差范围都在2%以内,图像处理速度均实现较大的提升。

本研究目前存在的问题是系统较远距离时测距相对误差较大、深度图像轻微失真和未实现无线传输双目图像等,后续通过改进SGBM算法和BM算法,提高测距的精度,可以加入Wi-Fi模块以及实现无线远程图像传输等方向进行研究,以实现将开发的系统搭载运用于森林资源监测装置中。

猜你喜欢
立体匹配双目测距
类星体的精准测距
基于双目测距的卡尔曼滤波船舶轨迹跟踪
影像立体匹配中的凸优化理论研究
浅谈超声波测距
基于互补不变特征的倾斜影像高精度立体匹配
改进导向滤波器立体匹配算法
基于双目视觉图像的长度测量方法
基于PSOC超声测距系统设计
相对差分单项测距△DOR
一种基于图像分割的立体匹配算法