APP下载

基于双目视觉的树木高度测量方法研究

2021-11-30张真维赵鹏韩金城

林业工程学报 2021年6期
关键词:视差双目标定

张真维,赵鹏, 韩金城

(东北林业大学信息与计算机工程学院,哈尔滨 150040)

随着现代科学技术的迅速发展,林业管理工作效率需要不断提高,精准林业成为林业领域的发展趋势。树木参数是林业调查的重要指标,其中树高是森林调查的重要指标,对于树木生长具有一定参考价值[1-2]。机器视觉可代替人眼对物体进行检测和识别,较为常见的是利用单目摄像头[3-4]。若要获取物体的深度信息,仅凭单目摄像头是不完善的,通常情况下需选择双目摄像头来获取物体三维信息。目前,智能手机后置镜头数大多不少于2个,已达到双目视觉测量的物理环境,未来将双目视觉技术应用在智能手机上可以达到成本低、操作便捷的效果。同样的,可以将双目视觉技术应用在无人机上,实现对地势复杂、不易拍摄的树木进行树高测量。此外,双目视觉技术对倾斜树木的树高测量具有一定价值和意义。

目前,大多采用传统的望远测树仪来测量树木高度[5]。邱梓轩等[6]利用PDA模块、远程EDM模块、长焦CCD镜头模块和云台组成望远测树仪测量立木高度。有研究人员选择手持智能手机通过内置传感器获取参数,从而计算测得立木高度信息[7-8]。李亚东等[9]以Android智能手机作为测量设备,调用Android中API接口中的三角函数对立木高度进行测量。也有研究人员采用激光雷达点云数据对树高信息进行提取[10]。刘金鹏等[11]基于Skel Tre算法对带有噪声的TLS(terrestrial laser scanning)数据生成骨架模型和图深度优先搜索算法提取单木信息。Maas等[12]对真实世界的植被进行了主动激光扫描,并提出了一种鲁棒地重建树木骨骼结构的自动方法。Wu等[13]提出了一种新的基于体素的标记邻域搜索方法,用于从移动激光扫描(mobile laser scanning,MLS)点云数据中有效地识别行道树并获取其立木形态参数。Chen等[14]针对测量输电线路走廊中的树障,提出了一种双目视觉测距方法,用于测量输电线路与树木之间的距离。倪超等[15]采用了NCC(normalized cross correlation)立体匹配算法对苗木图像进行匹配,提取形态学参数。Ni等[16]用双目视觉的方法对树冠进行三维重建。因此,选择一种具有良好准确率以及鲁棒性,并且较为经济的测量树木高度的方法可以满足精准林业的需求。

笔者采用基于双目立体视觉原理的树木高度测量方法,对相机前方树木提取深度信息,获取树木关键点的空间三维坐标,从而计算树木高度;随机选取行道树进行试验研究,并验证该方法的合理性、有效性。

1 双目视觉与相机标定

1.1 双目立体视觉模型

双目立体视觉原理是根据在同一时间内拍下的双目图片所产生的视差,并对两张图片中的信息进行三维重建。双目立体视觉理论中最重要的是获取物体在图像中的深度信息。将双目立体视觉系统应用在树木高度测量中,获取树木关键点的空间坐标,即可通过算法计算树高结果。

双目立体视觉的实现模型流程为:双目图像采集;摄像机标定;图像校正;特征点立体匹配;树高测量。双目立体视觉架构如图1所示。

图1 双目立体视觉架构Fig. 1 Binocular stereo vision architect

1.2 双目视觉系统测距原理

双目立体视觉利用双目图片的视差而获取深度信息,其测量原理如图2所示。

图2 视差测距原理Fig. 2 Parallax distance schematic

图2中,左、右目相机位置分别对应B、E两点;P点为实际待测点;CC′为P点在双目图像中的成像点距离(d);两个相机之间的固定距离BE为基线距离(m);GE为双目相机的焦距(f);P点的深度为D。因此,只要确定C、C′的位置,就可根据三角关系确定D。由图2可知:

(1)

1.3 相机标定试验设备

选取型号为GP200(每个小方格边长15 mm)和GP400(每个小方格边长30 mm),黑白格子数为12×9的张正友单面棋盘格标定板(图3a)。选取双目相机作为图像采集设备,相机为武汉莱娜机器视觉科技有限公司生产的高帧率可变基线USB3.0双目相机(图3b)。

图3 试验设备Fig. 3 Experimental facilities

1.4 标定方法与步骤

相机的标定基于MATLAB平台,共拍摄了13组标定板图片,将13组双目图片分别拆分为左目和右目图片,并按规律命名。通过标定工具箱对两个.mat 文件进行双目标定,运行工具箱中的“Load left and right calibration files”功能加载两个校准文件;运行“Run stereo calibration”功能来优化左右相机的内在参数,即完成双目标定。左、右目镜头标定再投影误差均以彩色编码的十字形显示,如图4所示。

图4 再投影误差分布 Fig. 4 Distribution of reprojection error

试验中,图片里标定板以世界为中心的相机有效视场见图5,可以显示标定过程中标定板的13种姿态和空间位置等信息。

图5 相机的有效视场Fig. 5 The effective field of view of the camera

2 匹配算法及树高测量方法

2.1 立体匹配

立体匹配是双目视觉系统中的核心部分,可确定多幅图像之间投影点间的一一对应关系,有效的立体匹配可以使关键点更加容易被提取。

2.2 SGBM算法

SGBM算法[17-18]的整个过程如图6所示。

图6 SGBM算法流程Fig. 6 SGBM algorithm flow

1)采用水平Sobel算子提取图像中的边缘,获取图像的梯度信息,保存起来的预处理图像将会进行代价计算。Sobel算子公式为:

Sobel(x,y)=2[P(x+1,y)-P(x-1,y)]+P(x+1,y-1)-P(x-1,y-1)+P(x+1,y+1)-

P(x-1,y+1)

(2)

2)代价计算。对左目图像和右目图像同时有两种处理方式:对输入图像经过SobelX水平算子处理后计算BT代价[19];对输入图像直接进行BT代价计算。前者可以更好地保留图像边缘和细节信息,后者将会更好地保留原图信息。

3)块计算。块计算的方法是根据选定像素点周围8个邻接像素的代价之和进行块匹配,在相对应的右目图片中,逐一对像素点周围8个代价值之和进行计算,当计算周围8个像素点的绝对值之和相差最小时,即认为匹配成功。

4)SGM算法。可达到多路径约束聚合的目的,使当前像素点受到周围多个方向路径的约束。为了优化更新像素点的代价,采用聚合公式来解决这些问题:

E(D)=∑p{C(p,Dp)+
∑q∈NpP1T[(|Dp-Dq|=1)]+
∑q∈NpP2T(|Dp-Dq|>1)}

(3)

式中:E(D)为构建的能量函数;p、q为图中的像素点;Np为像素点p周围8个相邻像素点的集合。式(3)中的第一项表示像素点p视差为Dp时的匹配代价;第2项表示当视差差值为1个像素时,将增加1个惩罚系数P1;Dq为视差,Dp-Dq表示视差差值;第3项表示当视差差值大于1个像素时,将增加1个惩罚系数P2。通常P2>P1,P1是为了适应倾斜或弯曲的表面,P2则是为了保留不连续性。

单一方向上,整张图片的像素通过动态规划公式参与:

Lr(p,d)=C(p,d)+min[Lr(p-r,d),Lr(p-r,d-1)+P1,Lr(p-r,d+1)+P1,miniLr(p-r,i)+

P2]-minkLr(p-r,k)

(4)

式中:C(p,d)表示当前代价;第2项中4个式子分别表示像素p在某方向上的像素在视差值为d时的代价、视差值为d-1时的代价加上P1、视差值为d+1时的代价加上P1、视差值在非d-1和d+1时的代价最小值加上P2;最后一项可起到防止聚合结果过大的作用。

共有16个约束方向,则把16个方向的值加和完成聚合过程,即完成了SGM的代价优化。

5)视差计算和视差后处理。进行后处理操作的目的是处理视差图在前面步骤中可能造成的视差误差、图像鲁棒性较差、图像不连贯等问题。

2.3 BM算法

BM算法对8位的灰度图像进行处理时运行时间较短,可生成灰度视差图像,图像越亮代表距离越近。在用BM算法进行立体匹配时,模式串(用于匹配原灰度图像文本串的灰度模板)的移动方向为从左到右,但模式串与文本串进行比较时的方向为从右到左。匹配过程中引入坏字符算法和好后缀算法,当匹配过程中存在不匹配的情况时,采用这2种算法进行处理,直到完成匹配[20-21]。

2.4 双目视觉与深度学习

通过深度学习的方法可以对树木进行目标检测与识别。林朝剑等[22]利用迁移学习实现林业业务图像识别;刘嘉政等[23]使用改进的CNN模型对树种图像进行识别。双目视觉可以良好地获取树木的深度信息。将深度学习技术与双目视觉技术进行结合,使用双目相机作为图像采集设备,既可以实现树种的识别及检测,又可以对树高、树距等空间深度信息进行计算。在同一时间内实现了二维和三维空间中树木信息的提取,在林业工程的实际工作中具有较好的价值与意义。采用Yolo v4算法,基于Pytorch框架,对樟子松和云杉2种树木在双目相机所拍摄的图像上进行目标检测和识别。选取139张樟子松图片以及278张云杉图片作为数据集,使用Labelme工具制作标签后进行深度学习训练。目标检测与识别在双目图像中的检测结果见图7。

图7 双目图像中的目标检测与识别Fig. 7 Target detection and recognition in binocular images

2.5 提高测量精度的方法分析

在双目视觉技术的基础上,提高测量精度(即深度距离)较为关键。

1)算法角度:在图2中,设基线距离与焦距恒定,视差为d,视差偏差为Δd,深度距离偏差为ΔD,由式(5)可得,视差偏差越小,则深度距离偏差越小。

(5)

2)硬件角度:设Δd恒定,由式(6)可得,基线距离与焦距更大时,深度距离偏差越小。

(6)

3)像素角度:像素越小、物理尺寸恒定时,参与的像素越多,深度距离偏差越小。

4)深度范围角度:深度范围对精度有影响,设基线距离、焦距、视差偏差均恒定,由式(7)可得,测量目标越近,深度偏差越小。

(7)

综上所述,提高测量精度的方法有:选取高精度视差估计算法;在合适的场景下,适当增加双目相机基线距离并酌情采用焦距大的镜头;选取像素尺寸小的高分辨率相机;在合适的情况下,拉近拍摄距离。

在提高测量精度方面,针对算法角度,选取SGBM算法,在SGBM算法后处理的过程中进行置信度检测、亚像素插值、左右一致性检测的步骤,达到了消除错误视差以及优化视差图像的效果,从而提高了视差的准确性,即提高了测量精度。针对硬件角度,选用了高帧率可变基线USB3.0双目相机,以及一对4 mm和一对12 mm的镜头,在合适的场景下进行拍摄试验。针对像素角度,选用了分辨率为1 280×720的双目相机,提高在相同物理尺寸下的像素数量。针对深度范围角度,在拍摄树木图像时,在图像成像合适的情况下拉近拍摄距离。

2.6 树高计算方法

在测树学中,树高是指树干的根颈处至主干稍顶的长度[24],是表示树木高矮的调查因子。

树高示意图如图8所示,P点为树梢顶端点,Q点为地面上根茎与地面的接触点,P和Q的距离L即为树高。若要计算出树木高度L,可将树木置于一个空间直角坐标系下,通过P、Q两点的空间坐标计算L。在双目立体视觉标定过程中已建立了以双目相机左镜头的中心作为原点空间坐标系,此时,在经过SGBM、BM算法之后,获得的视差深度图可以较好地获取树木关键点的深度信息。设P点坐标为(X,Y,Z),Q点坐标为(A,B,C),则:

图8 树高示意图Fig. 8 Tree height diagram

(8)

3 结果与分析

3.1 双目标定结果

随机选择行道树作为数据进行树木高度测量试验, 通过MATLAB分别对双目相机左右目镜头进行标定并分别获取.mat文件,同时将2个.mat文件作为参数进行双目标定。双目标定后的参数提取结果见表1。

表1 双目标定结果Table 1 Binocular calibration results

3.2 图像校正

图像校正的目的是为了使双目相机2个镜头的光轴处于平行状态,同时可以检验双目标定结果是否准确,从而达到像素点在左右目图像上高度一致的效果。即只有当双目标定结果准确时,左右图像才会处于像素点一致的状态。图像校正的方法:获取双目标定结果参数;通过Remap函数实现图像校正。图像校正成功后便可进行图像的立体匹配,深度计算以及生成深度图像。试验图像校正结果见图9,点云深度图图像见图10。图9中,2个左图像为双目相机左镜头拍摄图片,2个右图像为右镜头拍摄图片。图9a、b、c为针叶、有叶树冠形态树(云杉),对应图10a;图9d、e、f为阔叶、无叶树冠形态树(杏树),对应图10b。由此可知在树木图像校正时,校正结果准确,树木类型(针叶和阔叶)和树冠形态(有叶和无叶)对校正结果无较大影响。

图9 待测树木图像校正后的图像Fig. 9 The corrected images of trees to be measured

图10 点云深度图图像Fig. 10 Point cloud depth image

3.3 立体匹配

获取树木有效特征参数较重要[25-27]。立体匹配双目图像最重要的作用是获取树木关键点的深度信息,将图像校正后的2张图像通过SGBM算法与BM算法获得树木的视差深度图。在这个过程中,SGBM算法经过预处理、代价计算、块计算、SGM处理、视差计算和视差后处理,得到彩色视差深度图像;BM算法经过模式串与文本串进行匹配,并通过2种规则进行处理,得到灰度视差深度图像。图10显示了云杉、杏树、榆树、樟子松经立体匹配后得到的深度图像:图10a、b、c的拍摄距离分别约为25,42和6 m;图10d为多棵树木图像。结果显示,在近距离及中距离拍摄时,SGBM算法得到的深度图像表面平滑,轮廓较分明,结果较好,而BM算法轮廓分明,但树的表面有部分失真。在远距离拍摄时,BM算法得到的深度图像轮廓分明,效果良好,但SGBM算法出现失真,如图10b所示。

3.4 树高测量结果

SGBM算法和BM算法试验测得的树高结果分别见表2和3。以双目相机左镜头为原点建立空间直角坐标系,P点(树木最高点)的选择方式为树木轮廓Y轴值最大的点,Q点的选择采取多点取平均值的方式确定,由于存在着很多树根和地面的接触点,采取视野范围内树根左边与地面接触点与树根右边与地面接触点的三维空间坐标,并取平均值作为Q点。P、Q两点的坐标如表2和3所示。树木实际高度采用全站仪10次测量的平均结果得到。由表2和3可知,通过获取树木关键点的空间坐标计算树木高度的方法具有一定的可行性,误差相对较小,与实际数据具有较强的相关性。

表2 SGBM算法试验树高结果Table 2 SGBM experiment tree height results

表3 BM算法试验树高结果Table 3 BM experiment tree height results

3.5 树木重叠

当拍摄过程中出现树木重叠的情况时,可以通过视差图的明亮程度来判断最高点的位置属于哪棵树,出现此类情形时的深度图见图11。图11a为原始图像,红色方框区域为此次拍摄树木所遮挡的2棵其他树的树尖,这2个树尖在图像中高于待测树木高度,对待测树木最高点的判断产生了影响;图11b和c为SGBM算法和BM算法所生成的深度图,红色方框内的部分为重叠树木树尖的位置。因此,当树木重叠时,越靠近相机的树木颜色越明亮,以此可以解决树木重叠覆盖时其他树木对待测树木最高点判断的影响。

图11 树木重叠时的深度图Fig. 11 Depth map of overlapping tree

3.6 误差分析

试验误差分布见表4。由表4可知,基于双目视觉的树木高度测量方法计算树高的结果,SGBM算法相对实际值的最大相对误差为3.93%,最小为0.76%;BM算法相对实际值的最大误差为3.41%,最小为0.29%,根据2.5中提高精度的测量方法,对于拍摄5~6 m以上较高的树木误差可以控制在3%左右,2种算法均满足精准林业的精度需求。此外,造成误差的原因可能有:树木背景距离树木本身太近,造成深度图不明显;相机标定时出现误差;树顶端出现失真等问题。SGBM算法生成的深度图表面平滑、连贯,但在拍摄远距离树木时易造成轮廓不清晰;BM算法轮廓清晰,但深度图表面有轻微失真,在实际应用中要根据实际情况选择算法。

表4 试验误差Table 4 Experimental error

4 结 论

针对能实现树木无接触式的测量方法,以及综合考虑树木生长过程中存在的倾斜、弯曲等不规则形态,提出了基于双目立体视觉的树高测量方法。将深度学习与双目视觉相结合,可以实现树木同时在二维和三维空间的信息提取。双目视觉包括相机标定、图像校正、立体匹配等技术;树木的目标检测技术则基于Yolo v4和Pytorch框架。此外,笔者基于双目视觉理论分析了提高树木测量精度的方法,如从算法角度、硬件角度、像素角度等多方面分析。试验部分阐述了双目视觉方法测量树高的全过程,通过相机标定获取相机镜头参数,结合SGBM算法与BM算法进行匹配,获得待测树木的深度图像,进而对树木关键点的空间坐标进行提取,计算测得树高结果。其次,考虑到测量树木高度过程中可能存在树木遮挡重叠的问题,从而对树木关键点的判断产生影响,因此,在试验部分分别用两种算法的深度图像清晰地描绘了解决该问题的途径。在试验误差方面,SGBM算法树高测量结果的相对误差范围为0.76%~3.93%,BM算法相对误差范围为0.29%~3.41%。总体来看,该方法具有较好的应用价值,可以满足精准林业的需求。

猜你喜欢

视差双目标定
采用双目视觉和自适应Kalman滤波的作物行识别与跟踪
霜 降 苏美玲
基于双目视觉的机器人定位与导航算法
基于归一化互相关的半透明遮挡视差估计
基于自适应窗的立体相机视差图优化方法研究
轻卡前视摄像头的售后标定
一种轻卡前视单目摄像头下线标定方法
视差边缘优化的SGM 密集深度估计算法∗
使用朗仁H6 Pro标定北汽绅宝转向角传感器
机械手的双目视觉定位抓取研究