本发明涉及图像处理技术领域,特别涉及一种基于图像的深度计算方法。
背景技术:
深度计算是三维重建领域的重要技术,深度计算的速度和准确性决定了三维重建的速度和效果。目前为止,深度计算的研究较为广泛,如结合基于概率推断的混合滤波器算法、基于sgbm优化的深度计算方法和基于结合四叉树与置信传播的深度计算法等。为实现深度图的快速计算,并行计算平台是必不可少的存在。
基于概率推断的混合滤波器算法中,每计算一幅深度需要较多的图像和位姿对。基于立体匹配的深度计算方法仅需较少的图像和位姿对。其中立体匹配方法分为全局立体匹配和局部立体匹配。基于全局的立体匹配方法精度高但耗时较长,而基于局部的立体匹配方法耗时短但精度低。而基于结合四叉树与置信传播的深度计算方法速度快,精度高,但计算的深度过于稀疏,完整度低。
技术实现要素:
为解决上述技术问题,本发明提供了一种基于图像的深度计算方法,在保证精度和快速性的前提下提高深度完整度,降低立体匹配计算的计算量,提高深度计算的速度。
为达到上述目的,本发明的技术方案如下:
一种基于图像的深度计算方法,包括如下步骤:
步骤一,使用视觉里程计获取图像位姿对;
步骤二,对当前帧进行四叉树划分;
步骤三,计算图像的匹配损失体;
步骤四,提取图像四叉树节点像素对应的损失构建次级匹配损失体,对次级匹配损失体执行动态置信传播算法进行优化;
步骤五,将优化后的匹配损失体放回原始匹配损失体中,在并行计算平台上对每个像素使用赢家通吃策略提取最小损失及其对应的采样深度值;
步骤六,去除噪声深度并平滑深度图。
上述方案中,所述步骤一的具体方法如下:
使用单目相机拍摄图像,运动的单目相机两两帧之间构成对极几何关系,在两幅图像上提取orb特征点和描述子,并进行特征匹配;对匹配好的特征点利用对极几何约束使用最小化重投影误差求解相机运动,获取单通道灰度图和图像的位姿,以及最大深度和最小深度。
上述方案中,所述步骤二的具体方法如下:
在并行计算平台下,以每一个4x4小块作为四叉树节点,判断同一像素块内像素灰度值的一致性,即块内每个像素灰度值与整个块的灰度均值的绝对差是否小于λ;若大于λ则不参与下一步划分;划分完4x4小块后,依次划分8x8小块和16x16小块,实现对图像依纹理丰富程度进行划分。
上述方案中,所述步骤三的具体方法如下:
(1)计算当前帧坐标系与每个测量帧坐标系之间的相对位姿变换:
设置待计算深度图像为当前帧,设置时间维度上当前帧之前的m幅图像为测量帧,分别计算当前帧坐标系与各测量帧坐标系之间的相对位姿变换tmci:
tmci=tmwi×twc
其中,twc为当前帧坐标系相对于世界坐标系的位姿变换,tmwi为世界坐标系到第i幅测量帧坐标系的位姿变换;
(2)并行计算当前帧每个像素在n个采样深度下,投影到第i幅测量帧上的像素坐标:
读取视觉里程计输出的最大深度和最小深度,设置为深度计算的最大深度和最小深度;计算最大逆深度和最小逆深度,在逆深度空间均匀采样,取n个采样点,则每个采样点对应的采样深度如下:
其中,zj为第j次采样对应的采样深度,zmin为视觉里程计输出的最小深度,zmax为视觉里程计输出的最大深度;
当前帧像素点ip在当前帧坐标系采样深度zj对应的空间坐标ppj为:
ppj=k-1×ip×zj
其中,k为已知的单目相机的内参矩阵,ip为图像上每个像素p的齐次坐标,均为已知;
当前帧像素点ip在当采样深度zj时投影到第i幅测量帧上的像素坐标iqi(j)为:
其中,
(3)并行计算当前帧上每个像素p在n个采样深度下与投影像素q的灰度值的绝对差,计算投影到多幅测量帧的绝对差并取平均值:
其中,c为成功投影次数,m为测量帧的总数;
(4)使用加权自适应窗口聚合匹配损失,在固定大小的窗口w×w内依窗口内投影像素q与中心像素p的曼哈顿距离md(p,q)和灰度值绝对差进行加权求和匹配损失:
其中,σ1为自定义距离阈值,σ2为自定义灰度阈值,t[]为条件函数,[]内的条件满足则为1,不满足则为0。
上述方案中,所述步骤四的具体方法如下:
所有置信消息都初始化为零向量,置信消息的更新公式如下:
其中,w(p)是像素p周围的四个相邻像素,w(p)/g为四个相邻像素中除相邻像素g之外的其他三个相邻像素,s为其他三个相邻像素中的一个,ms→p是从相邻像素s传递到像素p的置信消息,mt,mt-1分别为置信消息更新过程中的第t次传递后的置信消息和第t-1次传递的置信消息,v(fp,fg)为正则化函数,fp和fg分别为像素p和相邻像素g的n维采样点值的集合,min()表示求括号内函数的最小值;
在并行计算平台上使用简单的正则函数,交替迭代消息及由粗到细更新三种策略加速置信传播算法;
下式中自定义的p1,p2为正则项,控制深度图的平滑程度:
图像网格中的每个像素向4个邻居发送消息,并从该邻居接收4条消息,结合匹配损失向量和置信消息,计算出优化后的四叉树节点像素对应的每个采样值的匹配损失:
其中,ite为置信消息的最终传递次数,j为采样深度对应的采样点值。
上述方案中,所述步骤五中,为进一步细化提取到的采样深度,取最小采样点对应的前一和后一采样损失,构建抛物线,取抛物线的最底端作为对应的深度值放入深度图中。
上述方案中,所述步骤六的具体方法如下:
使用动态置信传播方法计算出的深度来约束局部方法计算出的深度值,使用gpu并行处理每个像素,对非四叉树节点的深度降噪处理;
每个像素p的深度为dp,像素p所在的四叉树节点处的深度为dp0,像素p所在的四叉树块的尺寸大小为size,计算提高信噪比后的深度
则像素p的新深度为
最后,使用边缘保留平滑方法对降噪后的深度图进行平滑处理。
通过上述技术方案,本发明提供的一种基于图像的深度计算方法具有如下有益效果:
1、动态置信传播方法与局部方法相结合提高了深度计算的连续性;
2、动态置信传播方法与局部方法相结合提高了深度计算的完整性;
3、使用步骤三的方法计算匹配损失,降低了损失计算的计算量,提高深度计算的速度;
4、在步骤六中,使用步骤四优化后的匹配损失计算出的深度降噪未优化的深度,剔除噪声,提高了仅使用动态执行传播计算出的深度的完整度,以及局部方法计算出的深度的精度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例所公开的一种基于图像的深度计算方法流程图;
图2为当前帧和测量帧的位置关系示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明提供了一种基于图像的深度计算方法,如图1所示的流程,该方法在保证精度和快速性的前提下提高深度完整度,降低了立体匹配计算的计算量,提高了深度计算的速度。
一种基于图像的深度计算方法,包括如下步骤:
步骤一,使用视觉里程计获取图像位姿对:
使用单目相机拍摄图像,运动的单目相机两两帧之间构成对极几何关系,在两幅图像上提取orb特征点和描述子,并进行特征匹配;对匹配好的特征点利用对极几何约束使用最小化重投影误差求解相机运动,获取单通道灰度图和图像的位姿,以及最大深度和最小深度。
步骤二,四叉树划分图像:
在并行计算平台下,以每一个4x4小块作为四叉树节点,判断同一像素块内像素灰度值的一致性,即块内每个像素灰度值与整个块的灰度均值的绝对差是否小于λ;若大于λ则不参与下一步划分;划分完4x4小块后,依次划分8x8小块和16x16小块,实现对图像依纹理丰富程度进行划分。
步骤三,计算图像的n维匹配损失体:
(1)计算当前帧坐标系与每个测量帧坐标系之间的相对位姿变换:
如图2所示,设置待计算深度图像为当前帧,设置时间维度上当前帧之前的m幅图像为测量帧,分别计算当前帧坐标系与各测量帧坐标系之间的相对位姿变换tmci:
tmci=tmwi×twc
其中,twc为当前帧坐标系相对于世界坐标系的位姿变换,tmwi为世界坐标系到第i幅测量帧坐标系的位姿变换;
(2)并行计算当前帧每个像素在n个采样深度下,投影到第i幅测量帧上的像素坐标:
读取视觉里程计输出的最大深度和最小深度,设置为深度计算的最大深度和最小深度;计算最大逆深度和最小逆深度,在逆深度空间均匀采样,取n个采样点,则每个采样点对应的采样深度如下:
其中,zj为第j次采样对应的采样深度,zmin为视觉里程计输出的最小深度,zmax为视觉里程计输出的最大深度;
当前帧像素点ip在当前帧坐标系采样深度zj对应的空间坐标ppj为:
ppj=k-1×ip×zj
其中,k为已知的单目相机的内参矩阵,ip为图像上每个像素p的齐次坐标,均为已知;
当前帧像素点ip在当采样深度zj时投影到第i幅测量帧上的像素坐标iqi(j)为:
其中,
(3)并行计算当前帧上每个像素p在n个采样深度下与投影像素q的灰度值的绝对差,计算投影到多幅测量帧的绝对差并取平均值:
其中,c为成功投影次数,m为测量帧的总数;
(4)使用加权自适应窗口聚合匹配损失,在固定大小的窗口w×w内依窗口内投影像素q与中心像素p的曼哈顿距离md(p,q)和灰度值绝对差进行加权求和匹配损失:
其中,σ1为自定义距离阈值,σ2为自定义灰度阈值,t[]为条件函数,[]内的条件满足则为1,不满足则为0。
步骤四,提取图像四叉树节点像素对应的n维损失构建次级匹配损失体,对次级匹配损失体执行动态置信传播算法进行优化:
所有置信消息都初始化为零向量,置信消息的更新公式如下:
其中,w(p)是像素p周围的四个相邻像素,w(p)/g为四个相邻像素中除相邻像素g之外的其他三个相邻像素,s为其他三个相邻像素中的一个,ms→p是从相邻像素s传递到像素p的置信消息,mt,mt-1分别为置信消息更新过程中的第t次传递后的置信消息和第t-1次传递的置信消息,v(fp,fg)为正则化函数,fp和fg分别为像素p和相邻像素g的n维采样点值的集合,min()表示求括号内函数的最小值;
在并行计算平台上使用简单的正则函数,交替迭代消息及由粗到细更新三种策略加速置信传播算法;
下式中自定义的p1,p2为正则项,控制深度图的平滑程度:
图像网格中的每个像素向4个邻居发送消息,并从该邻居接收4条消息,结合匹配损失向量和置信消息,计算出优化后的四叉树节点像素对应的每个采样值的匹配损失:
其中,ite为置信消息的最终传递次数,j为采样深度对应的采样点值。
步骤五,将优化后的匹配损失体放回原始匹配损失体中,在并行计算平台上对每个像素使用赢家通吃策略提取最小损失及其对应的采样深度值:
为进一步细化提取到的采样深度,取最小采样点对应的前一和后一采样损失,构建抛物线,取抛物线的最底端作为对应的深度值放入深度图中。
步骤六,去除噪声深度并平滑深度图:
使用动态置信传播方法计算出的深度来约束局部方法计算出的深度值,使用gpu并行处理每个像素,对非四叉树节点的深度降噪处理;
每个像素p的深度为dp,像素p所在的四叉树节点处的深度为dp0,像素p所在的四叉树块的尺寸大小为size,计算提高信噪比后的深度
则像素p的新深度为
最后,使用边缘保留平滑方法对降噪后的深度图进行平滑处理。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
1.一种基于图像的深度计算方法,其特征在于,包括如下步骤:
步骤一,使用视觉里程计获取图像位姿对;
步骤二,对当前帧进行四叉树划分;
步骤三,计算图像的匹配损失体;
步骤四,提取图像四叉树节点像素对应的损失构建次级匹配损失体,对次级匹配损失体执行动态置信传播算法进行优化;
步骤五,将优化后的匹配损失体放回原始匹配损失体中,在并行计算平台上对每个像素使用赢家通吃策略提取最小损失及其对应的采样深度值;
步骤六,去除噪声深度并平滑深度图。
2.根据权利要求1所述的一种基于图像的深度计算方法,其特征在于,所述步骤一的具体方法如下:
使用单目相机拍摄图像,运动的单目相机两两帧之间构成对极几何关系,在两幅图像上提取orb特征点和描述子,并进行特征匹配;对匹配好的特征点利用对极几何约束使用最小化重投影误差求解相机运动,获取单通道灰度图和图像的位姿,以及最大深度和最小深度。
3.根据权利要求2所述的一种基于图像的深度计算方法,其特征在于,所述步骤二的具体方法如下:
在并行计算平台下,以每一个4x4小块作为四叉树节点,判断同一像素块内像素灰度值的一致性,即块内每个像素灰度值与整个块的灰度均值的绝对差是否小于λ;若大于λ则不参与下一步划分;划分完4x4小块后,依次划分8x8小块和16x16小块,实现对图像依纹理丰富程度进行划分。
4.根据权利要求2所述的一种基于图像的深度计算方法,其特征在于,所述步骤三的具体方法如下:
(1)计算当前帧坐标系与每个测量帧坐标系之间的相对位姿变换:
设置待计算深度图像为当前帧,设置时间维度上当前帧之前的m幅图像为测量帧,分别计算当前帧坐标系与各测量帧坐标系之间的相对位姿变换tmci:
tmci=tmwi×twc
其中,twc为当前帧坐标系相对于世界坐标系的位姿变换,tmwi为世界坐标系到第i幅测量帧坐标系的位姿变换;
(2)并行计算当前帧每个像素在n个采样深度下,投影到第i幅测量帧上的像素坐标:
读取视觉里程计输出的最大深度和最小深度,设置为深度计算的最大深度和最小深度;计算最大逆深度和最小逆深度,在逆深度空间均匀采样,取n个采样点,则每个采样点对应的采样深度如下:
其中,zj为第j次采样对应的采样深度,zmin为视觉里程计输出的最小深度,zmax为视觉里程计输出的最大深度;
当前帧像素点ip在当前帧坐标系采样深度zj对应的空间坐标ppj为:
ppj=k-1×ip×zj
其中,k为已知的单目相机的内参矩阵,ip为图像上每个像素p的齐次坐标,均为已知;
当前帧像素点ip在当采样深度zj时投影到第i幅测量帧上的像素坐标iqi(j)为:
其中,
(3)并行计算当前帧上每个像素p在n个采样深度下与投影像素q的灰度值的绝对差,计算投影到多幅测量帧的绝对差并取平均值:
其中,c为成功投影次数,m为测量帧的总数;
(4)使用加权自适应窗口聚合匹配损失,在固定大小的窗口w×w内依窗口内投影像素q与中心像素p的曼哈顿距离md(p,q)和灰度值绝对差进行加权求和匹配损失:
其中,σ1为自定义距离阈值,σ2为自定义灰度阈值,t[]为条件函数,[]内的条件满足则为1,不满足则为0。
5.根据权利要求4所述的一种基于图像的深度计算方法,其特征在于,所述步骤四的具体方法如下:
所有置信消息都初始化为零向量,置信消息的更新公式如下:
其中,w(p)是像素p周围的四个相邻像素,w(p)/g为四个相邻像素中除相邻像素g之外的其他三个相邻像素,s为其他三个相邻像素中的一个,ms→p是从相邻像素s传递到像素p的置信消息,mt,mt-1分别为置信消息更新过程中的第t次传递后的置信消息和第t-1次传递的置信消息,v(fp,fg)为正则化函数,fp和fg分别为像素p和相邻像素g的n维采样点值的集合,min()表示求括号内函数的最小值;
在并行计算平台上使用简单的正则函数,交替迭代消息及由粗到细更新三种策略加速置信传播算法;
下式中自定义的p1,p2为正则项,控制深度图的平滑程度:
图像网格中的每个像素向4个邻居发送消息,并从该邻居接收4条消息,结合匹配损失向量和置信消息,计算出优化后的四叉树节点像素对应的每个采样值的匹配损失:
其中,ite为置信消息的最终传递次数,j为采样深度对应的采样点值。
6.根据权利要求5所述的一种基于图像的深度计算方法,其特征在于,所述步骤五中,为进一步细化提取到的采样深度,取最小采样点对应的前一和后一采样损失,构建抛物线,取抛物线的最底端作为对应的深度值放入深度图中。
7.根据权利要求6所述的一种基于图像的深度计算方法,其特征在于,所述步骤六的具体方法如下:
使用动态置信传播方法计算出的深度来约束局部方法计算出的深度值,使用gpu并行处理每个像素,对非四叉树节点的深度降噪处理;
每个像素p的深度为dp,像素p所在的四叉树节点处的深度为dp0,像素p所在的四叉树块的尺寸大小为size,计算提高信噪比后的深度
则像素p的新深度为
最后,使用边缘保留平滑方法对降噪后的深度图进行平滑处理。
技术总结