本发明涉及计算机视觉、图像处理技术领域,具体的说是一种深度图的全局优化方法。
背景技术:
从不同视角获取场景的两幅图像,可通过场景在两幅图像中的位置偏移来估算场景的深度信息。这种位置偏移对应为图像像素点的视差,可直接转换为场景深度,一般用深度图表示。然而,当场景出现纹理缺失和纹理重复时,计算的深度图在对应区域上可能出现大片空洞。现有的方法,一方面,通过对场景进行人为补偿(如粘贴标志点、投射光斑等)来丰富纹理,但存在操作不便、无法操作、不起作用等情况;另一方面,直接对深度图进行优化,但存在方法复杂、过度优化或不符实际等情况。
技术实现要素:
为了解决现有技术中的不足,本发明提供了一种深度图的全局优化方法,该方法实现深度图的滤波去噪及大片空洞的填补,将左右视角视差数据转换到rgb相机视角下,充分利用rgb图像边缘信息,简洁高效。
为了实现上述目的,本发明采用的具体方案为:一种深度图的全局优化方法,该方法包括如下步骤:
步骤一、基于区域生长法分别对初始左视角视差数据和初始右视角视差数据进行区域滤波,去除孤立的块状区域有误视差,得到优化后的左视角视差数据和优化后的右视角视差数据;基于区域生长法去除块状区域有误视差的具体过程如下:
s1、新建两个大小与原视差图像相等且初值为零的图像buff和dst,buff用来记录生长过的像素点,dst用来标记满足条件的图像块状区域;
s2、设定第一阈值和第二阈值;所述第一阈值为视差差值,第二阈值为块状区域有误视差的面积值;
s3、遍历每个未生长过的像素点,以当前点为种子点,压入区域生长函数;
s4、新建栈vectorgrowpoints和栈resultpoints,从栈vectorgrowpoints中取出末尾点,再按该点八个方向:{-1,-1},{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0}取出未生长过的像素点视差值与种子点视差值进行比较,若小于第一阈值,则认为符合条件,分别压入栈vectorgrowpoints和栈resultpoints中,并将生长过的点在buff中做标记,重复上述过程,直到栈vectorgrowpoints中没有点为止;若栈resultpoints中的点数小于第二阈值,则在dst中做标记;
s5、重复步骤s3和s4,将dst中做过标记的区域在视差数据中去除,得到优化后的左视角视差数据和优化后的右视角视差数据;
步骤二、由步骤一优化后的左视角视差数据和优化后的右视角视差数据计算左视角置信度系数数据;计算左视角置信度系数数据的具体方法为:αp=e-|ld-rd|,其中,ld为步骤一优化后左视角视差数据,rd为对应的步骤一优化后右视角视差数据,αp为左视角置信度系数数据;
步骤三、由步骤一优化后的左视角视差数据和相机参数计算左视角深度数据;将左视角深度数据和步骤二得到的左视角置信度系数数据同时通过视角投影转换,得到rgb相机视角下的初始深度数据和置信度系数数据;
步骤四、利用rgb图像边缘信息计算边缘约束系数数据,之后将边缘约束系数数据、步骤三rgb相机视角下的初始深度数据和置信度系数数据利用全局优化目标函数生成优化后的深度数据。
作为优选的,获取深度图像过程中用到一种获取装置,所述获取装置包括两个近红外相机和一个rgb相机。
作为优选的,步骤三中,rgb相机视角下的初始深度数据具体计算过程如下:
t1、遍历图像像素,已知左右近红外相机基线和焦距,将视差值转换为深度值;
t2、由深度值及左近红外相机或者近红外右相机的内参数,计算对应空间点在该坐标系下的三维坐标;
t3、由左近红外相机或者右近红外相机坐标系与rgb相机坐标系的相对位置关系及左右近红外相机之间的立体矫正矩阵,计算对应空间点在rgb相机坐标系下的三维坐标;t4、由rgb相机的内参数,计算对应空间点在rgb图像平面上的投影及深度值,即得rgb相机视角下的初始深度数据。
作为优选的,步骤四采用的全局优化目标函数为:
其中,
作为优选的,对任意像素点p,ax=b中第p行为:
作为优选的,系数矩阵a和常数矩阵b的具体计算过程如下:
(1)、首先对rgb图像求梯度
(2)、由αp和ωqp计算系数矩阵a,其中a的第p行为:(αp+∑(p,q)∈e(ωpq+ωqp))dp-∑(p,q)∈e(ωpq+ωqp)dq,得该行有5个非零值,所述5个非零值为该像素点p和该像素点p的四邻域像素点对应元素,其中,该像素点p所对应的元素αp+∑(p,q)∈e(ωpq+ωqp),该像素点p的四邻域像素点q所对应的元素-(ωpq+ωqp);
(3)、由αp和初始深度值
作为优选的,采用超松弛迭代法解算线性方程组,得到优化后的深度数据。
有益效果:
(1)本发明提供了一种深度图的全局优化方法,该方法基于一个获取装置,所述获取装置包括两个近红外相机(nir)和一个可见光(rgb)相机,近红外相机构成一个双目立体视觉系统,实时获取深度图,并与可见光相机采集的rgb图像配准;充分利用左右视角视差数据的全局信息和颜色数据的边缘约束来对深度图进行全局优化,将左右视角视差数据转换到rgb相机视角下,利用rgb图像边缘信息;在计算置信度系数数据时,采用e-x模型直接利用左右视角视差数据的方法,实验证明该方法简洁有效。简洁体现在:现有方法中,置信度系数的确定是通过拟合像素点相邻三个整数视差值的匹配代价二次曲线的方法,该法需要重新计算视差匹配代价,并对像素点的三个匹配代价值做二次拟合,通过判断曲线朝向来确定αp的正负值,因此,本发明方法与现有技术相比较为简洁;有效体现在:经过优化的深度图光滑、保有边缘且大片空洞能较好填充;
(2)本发明提供了一种深度图的全局优化方法,采用区域生长法分别对初始左视角视差数据和初始右视角视差数据进行区域滤波,实验证明,该方法遍历一次图像即可完成标记,且能够有效地将视差值相似且明显不同于周围视差值的小块孤立区域有误视差去除。
附图说明
图1是本发明流程图;
图2为优化前头部大片空洞深度图;
图3为本发明全局优化方法优化后的深度图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅本发明流程图图1,本发明所有相机的内外参数均为已知,并通过现有技术计算得初始左视角视差数据和初始右视角视差数据,在此不做赘述。一种深度图的全局优化方法,该方法基于一个获取装置获取深度图像过程中用到一种获取装置,所述获取装置包括两个近红外相机和一个rgb相机,该方法包括如下步骤:
步骤一、基于区域生长法分别对初始左视角视差数据和初始右视角视差数据进行区域滤波,去除孤立的块状区域有误视差,得到优化后的左视角视差数据和优化后的右视角视差数据;一般生成的视差数据均经过左右校验,已经去除了大量误匹配的点视差,但仍存在呈小块区域的有误视差,本发明首先分别对左右视角视差数据进行区域滤波,去除视差值相似的小块孤立区域,进一步提高了视差质量,基于区域生长法去除块状区域有误视差的具体过程如下:
s1、新建两个大小与原视差图像相等且初值为零的图像buff和dst,buff用来记录生长过的像素点,dst用来标记满足条件的图像块状区域;
s2、设定第一阈值和第二阈值;所述第一阈值为视差差值,第二阈值为块状区域有误视差的面积值;作为优选的,所述第一阈值为10,第二阈值为60;
s3、遍历每个未生长过的像素点,以当前点为种子点,压入区域生长函数;
s4、新建栈vectorgrowpoints和栈resultpoints,从栈vectorgrowpoints中取出末尾点,再按该点八个方向:{-1,-1},{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0}取出未生长过的像素点视差值与种子点视差值进行比较,若小于第一阈值,则认为符合条件,分别压入栈vectorgrowpoints和栈resultpoints中,并将生长过的点在buff中做标记,重复上述过程,直到栈vectorgrowpoints中没有点为止;若栈resultpoints中的点数小于第二阈值,则在dst中做标记;
s5、重复步骤s3和s4,将dst中做过标记的区域在视差数据中去除,得到优化后的左视角视差数据和优化后的右视角视差数据;
步骤二、由步骤一优化后的左视角视差数据和优化后的右视角视差数据计算左视角置信度系数数据;计算左视角置信度系数数据的具体方法为:αp=e-|ld-rd|,其中,ld为步骤一优化后左视角视差数据,rd为对应的步骤一优化后右视角视差数据,αp为左视角置信度系数数据;现有方法中,存在通过拟合匹配代价曲线确定该点视差置信度系数数据的方法,实现过程较繁琐,本发明计算置信度系数数据的方法简洁高效。左视角置信度系数数据对优化效果起决定性的作用,而αp取值的可信度又与视差数据的准确性紧密相关,视差数据中的小块有误视差会导致优化后对应区域出现大块有误深度数据,因此,本发明提出基于区域生长法去除块状有误视差的方法来提高视差质量;
步骤三、由步骤一优化后的左视角视差数据和相机参数计算左视角深度数据;将左视角深度数据和步骤二得到的左视角置信度系数数据同时通过视角投影转换,得到rgb相机视角下的初始深度数据和置信度系数数据;rgb相机视角下的初始深度数据具体计算过程如下:
t1、遍历图像像素,已知左右近红外相机基线和焦距,将视差值转换为深度值;
t2、由深度值及左近红外相机或者近红外右相机的内参数,计算对应空间点在该坐标系下的三维坐标;
t3、由左近红外相机或者右近红外相机坐标系与rgb相机坐标系的相对位置关系及左右近红外相机之间的立体矫正矩阵,计算对应空间点在rgb相机坐标系下的三维坐标;t4、由rgb相机的内参数,计算对应空间点在rgb图像平面上的投影及深度值,即得rgb相机视角下的初始深度数据;
步骤四、利用rgb图像边缘信息计算边缘约束系数数据,之后将边缘约束系数数据、步骤三rgb相机视角下的初始深度数据和置信度系数数据利用全局优化目标函数生成优化后的深度数据,采用的全局优化目标函数为:
其中,
对任意像素点p,ax=b中第p行为:
步骤三已获取初始深度数据,下面计算系数矩阵和常数矩阵,对于百万分辨率的图像,深度数据量可达百万,而系数矩阵数据量是平方级,为满足gpu实时实现,本发明采用超松弛迭代法(sor)解算线性方程组,完成深度数据优化,如图2和图3所示,图2为优化前头部大片空洞深度图;图3为利用本发明全局优化方法优化后的深度图。系数矩阵a和常数矩阵b的具体计算过程如下:
(1)、首先对rgb图像求梯度
(2)、由αp和ωqp计算系数矩阵a,其中a的第p行为:
(3)、由αp和初始深度值
(4)、由sor法解算线性方程组,得到优化后的深度数据。
本发明提供了一种深度图的全局优化方法,该方法对场景初始深度进行全局优化,实现深度实时高精度获取,主要解决场景纹理缺少或重复时,导致计算的视差数据中存在大量空洞的问题,如头发处,纹理单一,且即使采用主动光源投射结构光,也极易被吸收而缺少特征。可用于三维重建、体感交互等案例中。在三维重建中,为实时高精度重建提供各个视角下的优质深度数据,可简化后续优化处理操作。在体感交互中,通过对不同交互者模型的建立,将真实画面展现在对方面前。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。