一种基于单目相机的稠密深度图计算方法与流程

专利2022-06-28  88


本发明涉及一种深度图计算方法,特别涉及一种基于单目相机的稠密深度图计算方法。



背景技术:

深度图计算是基于单目相机的三维重建,slam等领域的一项关键技术,深度图计算的精度,速度和稠密度对重建的结果具有重要影响。当前能较为完善的在线深度计算方法有remode,vi-mean,quadtree-mapping,monofusion等。这些算法要么需要较多的图片-位姿对参与滤波器过滤,要么需要采样一系列离散深度值(一般为64个)估计深度图,使用了较大的存储空间,或者串行处理整幅图像,耗时较多。



技术实现要素:

为解决上述技术问题,本发明提供了一种基于单目相机的稠密深度图计算方法,以达到降低存储空间的使用、提高深度传播的并行性、并且有效去除异常点的目的。

为达到上述目的,本发明的技术方案如下:

一种基于单目相机的稠密深度图计算方法,包括如下步骤:

步骤一,提取图像上的特征点进行特征匹配,计算图像位姿,以及图像的最大深度和最小深度;

步骤二,利用图像的最大深度和最小深度计算离散深度值集合;

步骤三,对每个像素测试一定数量的从离散深度值集合内随机获取的深度值,得到初始深度值;

步骤四,四通路传播像素的深度;

步骤五,时序融合优化深度图的深度。

上述方案中,所述步骤一的具体方法如下:

(1)单目相机拍摄的图像在时间上连续,选取时间上相近且具有一定基线长度的两帧图像提取surf特征点,计算两帧图像上的匹配关系,获得一系列匹配点对;

(2)使用ransac算法通过二维点到二维点的匹配关系计算单应矩阵和基础矩阵,选择重投影误差较小的矩阵分解出两帧之间的相对位姿;

(3)对相对位姿转化为相对于世界坐标系的位姿,然后使用集束调整方法进行优化,获得图像位姿和稀疏点云,反投影稀疏点云到图像上计算该图像的最大深度和最小深度。

上述方案中,所述步骤二的具体方法如下:

离散深度值集合d计算方法如下:

d={d0d1…dl…dl},l={0,1,2,…,l}

dl=dmin l×ε1

l为所有可能的深度总数,是一个整数;l为深度索引,dl为第l个深度值,精度阈值ε1为自定义值,dmax为最大深度,dmin为最小深度。

上述方案中,所述步骤三的具体方法如下:

使用并行计算平台cuda并行处理每一个像素,对每个像素测试j个从离散深度值集合内随机获取的深度值,具体方法如下:

选取当前帧之前计算过的一帧为参考帧,将当前帧上的像素i依据测试深度投影到参考帧上,计算匹配损失;

像素i在深度d处的匹配损失cost(i,d)计算公式为:

其中,w为以选定像素为中心的5*5像素块,p为像素块中的某一像素,ic(p)为当前帧上以像素i为中心的像素块中某一像素的灰度值,ir(p)为参考帧上以投影像素ri为中心的像素块中某一像素的灰度值,和σ(ii)分别为以像素i为中心的像素块均值和标准差,和σ(iri)分别为以投影像素ri为中心的像素块均值和标准差;

像素的投影计算过程如下:

trc=trw×t-1cw

j∈j

其中,trw和tcw为参考帧位姿和当前帧位姿,而trc为当前帧变换到参考帧的位姿变换,ui、uri分别为当前帧上任意一个像素i和该像素i投影到参考帧上像素ri的纵坐标,vi、vri分别为当前帧上任意一个像素i和该像素i投影到参考帧上像素ri的横坐标,dj为第j个深度值,k为已知的相机内参矩阵,pri是当前帧上的一个像素i在深度dj时对应的空间点在参考帧坐标系下的坐标值,pri.z为pri的第三维坐标;

保留匹配损失最低的深度测试值和匹配损失,设置匹配损失最低的深度测试值为当前像素的深度初始值。

上述方案中,所述步骤四的具体方法如下:

使用四路径传播方法将好的深度值传播它的相邻像素位置上去,依次执行自左向右,自上向下,自右向左,自下向上传播,传播过程中每个像素的深度更新公式为:

其中,为像素i更新后的深度值,di,df(i-1)分别为像素i更新前的深度和沿深度传播方向的前一个像素的深度值;

深度传播后移除匹配损失大于-0.5的深度值。

上述方案中,所述步骤五的具体方法如下:

根据步骤三中的像素投影计算公式与步骤一中得到的下一帧图像的位姿tnw,可得当前帧图像变换到下一帧图像的位姿tnc,以及当前帧上的任意像素i投影到下一帧上的像素ni的坐标(uni,vni)和深度值dni;

对当前帧图像上的所有像素执行投影计算,对于多个像素投影到一个像素上的情况,被投影像素取深度最小的值作为深度值;此时获得当前帧传递到下一帧图像的深度图,使用二维插值方法填补传递后的深度图上的微小空洞;

将传递后下一帧的深度图与下一帧经深度传播后的深度图进行融合,得到稠密深度图,具体方法如下:

传递后下一帧的参数包括标准差σ'、深度值d'、贝塔分布参数a'、贝塔分布参数b',下一帧计算出的深度值和标准差分别为d,σ,计算高斯融合后的均值m和方差s2

计算权重系数c1,c2:

归一化权重系数:

可得更新后的参数为

其中,a,b为贝塔分布的参数,e,f为中间变量,分别为更新后的深度值、方差、贝塔分布参数a、贝塔分布参数b;

移除融合后的深度值,输出且更新后方差较小的深度值。

通过上述技术方案,本发明提供的基于单目相机的稠密深度图计算方法具有如下有益效果:

1、相对于局部块匹配的方法,本发明采用概率取点 深度传播的方式,降低存储空间的使用,占用较少的存储资源。

2、相对于现有方法串行传播深度,使用四通路并行传播深度的方法,提高了深度传播的可并行性,加快了深度传播的速度。

3、与现有技术相比,不使用直接生成的深度图去生成三维模型,而是使用了帧间传播更新的方法,有效的去除了噪点,提高了深度图的精度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例所公开的一种基于单目相机的稠密深度图计算方法整体流程示意图;

图2为本发明实施例所公开的离散深度集合示意图;

图3为像素投影模型示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

本发明提供了一种基于单目相机的稠密深度图计算方法,如图1所示,具体方法如下:

步骤一,提取图像上的特征点进行特征匹配,计算图像位姿,以及图像的最大深度和最小深度;

(1)单目相机拍摄的图像在时间上连续,选取时间上相近且具有一定基线长度的两帧图像提取surf特征点,计算两帧图像上的匹配关系,获得一系列匹配点对;

(2)使用ransac算法通过二维点到二维点的匹配关系计算单应矩阵和基础矩阵,选择重投影误差较小的矩阵分解出两帧之间的相对位姿;

(3)对相对位姿转化为相对于世界坐标系的位姿,然后使用集束调整方法进行优化,获得图像位姿和稀疏点云,反投影稀疏点云到图像上计算该图像的最大深度和最小深度。

步骤二,利用图像的最大深度和最小深度计算离散深度值集合,如图2所示;

离散深度值集合d计算方法如下:

d={d0d1…dl…dl},l={0,1,2,…,l}

dl=dmin l×ε1

l为所有可能的深度总数,是一个整数;l为深度索引,dl为第l个深度值,精度阈值ε1为自定义值,dmax为最大深度,dmin为最小深度。

步骤三,对每个像素测试一定数量的从离散深度值集合内随机获取的深度值,得到初始深度值;

上述方案中,所述步骤三的具体方法如下:

使用并行计算平台cuda并行处理每一个像素,对每个像素测试j个从离散深度值集合内随机获取的深度值,具体方法如下:

选取当前帧之前计算过的一帧为参考帧,将当前帧上的像素i依据测试深度投影到参考帧上,计算匹配损失;

像素i在深度d处的匹配损失cost(i,d)计算公式为:

其中,w为以选定像素为中心的5*5像素块,p为像素块中的某一像素,ic(p)为当前帧上以像素i为中心的像素块中某一像素的灰度值,ir(p)为参考帧上以投影像素ri为中心的像素块中某一像素的灰度值,和σ(ii)分别为以像素i为中心的像素块均值和标准差,和σ(iri)分别为以投影像素ri为中心的像素块均值和标准差;

如图3所示,像素的投影计算过程如下:

trc=trw×t-1cw

j∈j

其中,trw和tcw为参考帧位姿和当前帧位姿,而trc为当前帧变换到参考帧的位姿变换,ui、uri分别为当前帧上任意一个像素i和该像素i投影到参考帧上像素ri的纵坐标,vi、vri分别为当前帧上任意一个像素i和该像素i投影到参考帧上像素ri的横坐标,dj为第j个深度值,k为已知的相机内参矩阵,pri是当前帧上的一个像素i在深度dj时对应的空间点在参考帧坐标系下的坐标值,pri.z为pri的第三维坐标;

保留匹配损失最低的深度测试值和匹配损失,设置匹配损失最低的深度测试值为当前像素的深度初始值。

步骤四,四通路传播像素的深度;

使用四路径传播方法将好的深度值传播它的相邻像素位置上去,依次执行自左向右,自上向下,自右向左,自下向上传播,传播过程中每个像素的深度更新公式为:

其中,为像素i更新后的深度值,di,df(i-1)分别为像素i更新前的深度和沿深度传播方向的前一个像素的深度值;

深度传播后移除匹配损失大于-0.5的深度值。

步骤五,时序融合优化深度图的深度。

根据步骤三中的像素投影计算公式与步骤一中得到的下一帧图像的位姿tnw,可得当前帧图像变换到下一帧图像的位姿tnc,以及当前帧上的任意像素i投影到下一帧上的像素ni的坐标(uni,vni)和深度值dni;

对当前帧图像上的所有像素执行投影计算,对于多个像素投影到一个像素上的情况,被投影像素取深度最小的值作为深度值;此时获得当前帧传递到下一帧图像的深度图,使用二维插值方法填补传递后的深度图上的微小空洞;

将传递后下一帧的深度图与下一帧经深度传播后的深度图进行融合,得到稠密深度图,具体方法如下:

传递后下一帧的参数包括标准差σ'、深度值d'、贝塔分布参数a'、贝塔分布参数b',下一帧计算出的深度值和标准差分别为d,σ,计算高斯融合后的均值m和方差s2

计算权重系数c1,c2:

归一化权重系数:

可得更新后的参数为

其中,a,b为贝塔分布的参数,e,f为中间变量,分别为更新后的深度值、方差、贝塔分布参数a、贝塔分布参数b;

移除融合后的深度值,输出且更新后方差较小的深度值。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。


技术特征:

1.一种基于单目相机的稠密深度图计算方法,其特征在于,包括如下步骤:

步骤一,提取图像上的特征点进行特征匹配,计算图像位姿,以及图像的最大深度和最小深度;

步骤二,利用图像的最大深度和最小深度计算离散深度值集合;

步骤三,对每个像素测试一定数量的从离散深度值集合内随机获取的深度值,得到初始深度值;

步骤四,四通路传播像素的深度;

步骤五,时序融合优化深度图的深度。

2.根据权利要求1所述的一种基于单目相机的稠密深度图计算方法,其特征在于,所述步骤一的具体方法如下:

(1)单目相机拍摄的图像在时间上连续,选取时间上相近且具有一定基线长度的两帧图像提取surf特征点,计算两帧图像上的匹配关系,获得一系列匹配点对;

(2)使用ransac算法通过二维点到二维点的匹配关系计算单应矩阵和基础矩阵,选择重投影误差较小的矩阵分解出两帧之间的相对位姿;

(3)对相对位姿转化为相对于世界坐标系的位姿,然后使用集束调整方法进行优化,获得图像位姿和稀疏点云,反投影稀疏点云到图像上计算该图像的最大深度和最小深度。

3.根据权利要求2所述的一种基于单目相机的稠密深度图计算方法,其特征在于,所述步骤二的具体方法如下:

离散深度值集合d计算方法如下:

d={d0d1…dl…dl},l={0,1,2,…,l}

dl=dmin l×ε1

l为所有可能的深度总数,是一个整数;l为深度索引,dl为第l个深度值,精度阈值ε1为自定义值,dmax为最大深度,dmin为最小深度。

4.根据权利要求3所述的一种基于单目相机的稠密深度图计算方法,其特征在于,所述步骤三的具体方法如下:

使用并行计算平台cuda并行处理每一个像素,对每个像素测试j个从离散深度值集合内随机获取的深度值,具体方法如下:

选取当前帧之前计算过的一帧为参考帧,将当前帧上的像素i依据测试深度投影到参考帧上,计算匹配损失;

像素i在深度d处的匹配损失cost(i,d)计算公式为:

其中,w为以选定像素为中心的5*5像素块,p为像素块中的某一像素,ic(p)为当前帧上以像素i为中心的像素块中某一像素的灰度值,ir(p)为参考帧上以投影像素ri为中心的像素块中某一像素的灰度值,和σ(ii)分别为以像素i为中心的像素块均值和标准差,和σ(iri)分别为以投影像素ri为中心的像素块均值和标准差;

像素的投影计算过程如下:

trc=trw×t-1cw

其中,trw和tcw为参考帧位姿和当前帧位姿,而trc为当前帧变换到参考帧的位姿变换,ui、uri分别为当前帧上任意一个像素i和该像素i投影到参考帧上像素ri的纵坐标,vi、vri分别为当前帧上任意一个像素i和该像素i投影到参考帧上像素ri的横坐标,dj为第j个深度值,k为已知的相机内参矩阵,pri是当前帧上的一个像素i在深度dj时对应的空间点在参考帧坐标系下的坐标值,pri.z为pri的第三维坐标;

保留匹配损失最低的深度测试值和匹配损失,设置匹配损失最低的深度测试值为当前像素的深度初始值。

5.根据权利要求4所述的一种基于单目相机的稠密深度图计算方法,其特征在于,所述步骤四的具体方法如下:

使用四路径传播方法将好的深度值传播它的相邻像素位置上去,依次执行自左向右,自上向下,自右向左,自下向上传播,传播过程中每个像素的深度更新公式为:

其中,为像素i更新后的深度值,di,df(i-1)分别为像素i更新前的深度和沿深度传播方向的前一个像素的深度值;

深度传播后移除匹配损失大于-0.5的深度值。

6.根据权利要求5所述的一种基于单目相机的稠密深度图计算方法,其特征在于,所述步骤五的具体方法如下:

根据步骤三中的像素投影计算公式与步骤一中得到的下一帧图像的位姿tnw,可得当前帧图像变换到下一帧图像的位姿tnc,以及当前帧上的任意像素i投影到下一帧上的像素ni的坐标(uni,vni)和深度值dni;

对当前帧图像上的所有像素执行投影计算,对于多个像素投影到一个像素上的情况,被投影像素取深度最小的值作为深度值;此时获得当前帧传递到下一帧图像的深度图,使用二维插值方法填补传递后的深度图上的微小空洞;

将传递后下一帧的深度图与下一帧经深度传播后的深度图进行融合,得到稠密深度图,具体方法如下:

传递后下一帧的参数包括标准差σ'、深度值d'、贝塔分布参数a'、贝塔分布参数b',下一帧计算出的深度值和标准差分别为d,σ,计算高斯融合后的均值m和方差s2

计算权重系数c1,c2:

归一化权重系数:

可得更新后的参数为

其中,a,b为贝塔分布的参数,e,f为中间变量,分别为更新后的深度值、方差、贝塔分布参数a、贝塔分布参数b;

移除融合后的深度值,输出且更新后方差较小的深度值。

技术总结
本发明公开了一种基于单目相机的稠密深度图计算方法,包括如下步骤:提取图像上的特征点进行特征匹配,计算图像位姿,以及图像的最大深度和最小深度;利用图像的最大深度和最小深度计算离散深度值集合;对每个像素测试一定数量的从离散深度值集合内随机获取的深度值,得到初始深度值;四通路传播像素的深度;时序融合优化深度图的深度。本发明所公开的方法可以降低存储空间的使用、提高深度传播的并行性、并且有效去除异常点。

技术研发人员:纪刚;杨丰拓;朱慧;蒋云飞;柴琦;安帅
受保护的技术使用者:青岛联合创智科技有限公司
技术研发日:2020.02.13
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-9809.html

最新回复(0)