【技术领域】
本发明涉及光学测量技术领域,具体涉及一种利用深度相机进行精确测量的方法与系统。
背景技术:
深度相机可以获取目标的深度信息借此实现3d扫描、场景建模、手势交互,与目前被广泛使用的rgb相机相比,深度相机正逐步受到各行各业的重视。在利用深度相机对目标进行深度图像测量时,清晰、准确的深度信息是衡量深度相机性能的重要指标,然而由于受到温度、光照、场景等影响,往往会使得深度相机获取的深度信息有较大的误差。另一方面,在深度相机元器件制造以及组装过程中不可避免地会产生误差,这也会给测量直接带来系统性的误差。
常用的消除误差的方法是对深度相机建立误差模型,然后对多个已知量进行测量后,利用真实值与测量值对误差模型中的未知量进行求解。尽管如此,由于深度相机的测量精度受多重因此影响,比如被测物体表面材质、当前测量环境光以及上述所述的系统误差等等,这种方法也仅能对系统误差进行消除,而对于由被测物体、环境等偶然误差的影响,目前仍缺少一种行之有效的误差消除方案。
技术实现要素:
本发明的目的是解决现有技术中深度相机不能同时消除系统误差和偶然误差进行精确测量的问题,提供一种利用深度相机进行精确测量的方法和系统。
一种利用深度相机进行精确测量的方法,包括如下步骤:
t1:建立深度相机的测量值和真实值之间的误差模型;
t2:利用所述深度相机对处在不同深度上的同一被测物体进行测量得到所述不同深度的测量值,并测得所述不同深度的差值;
t3:根据所述不同深度的测量值、所述不同深度之间的差值以及所述深度相机的误差模型修正得到所述被测物体的真实值。
优选地,所述误差模型是测量值和真实值之间的映射关系,所述映射关系包含可利用步骤t2中所测量的测量值、差值来进行计算的未知系数。
优选地,所述映射关系为线性或非线性映射,所述映射关系中至少有两个未知系数。
优选地,所述映射关系为幂函数映射,所述映射关系中至少有两个未知系数。
优选地,所述不同深度的测量值的数量大于所述映射关系中未知系数的数量。
优选地,所述测量值包括:利用所述深度相机对处在不同深度上的同一被测物体上的单个点进行测量得到所述单个点的测量值;
或利用所述深度相机对处在不同深度上的同一被测物体上的至少两个点进行测量得到所述至少两个点的测量值。
优选地,所述真实值包括:被测物体上单个点或多个点的深度真实值;被测物体上单个点或多个点的横、纵坐标真实值;被测物体上的任意两点之间的尺寸真实值;被侧物体的部件的尺寸真实值。
一种包含计算机程序的计算机可读存储介质被计算机执行以实现以上任一所述的方法。
一种利用深度相机进行精确测量的系统,包括:深度相机和计算设备;所述计算设备与深度相机连接,并用于执行以上任一所述的方法。
一种利用深度相机进行精确测量的系统包括深度相机,所述深度相机包括一个或多个处理器、存储器以及一个或多个程序;所述程序存储在所述处存储器中,被配置成由所述一个或多个处理器执行,所述程序包括用于执行以上任一所述方法的指令。
本发明的有益效果为:提供了利用深度相机进行精确测量的方法与系统,建立深度相机的深度测量值和深度真实值之间的误差模型;然后在不同测量环境下,对处在不同深度上的同一被测物体进行测量得到几何测量值和深度差值,根据在不同环境下的所述不同深度的几何测量值、所述不同深度之间的深度差值以及所述深度相机的误差模型修正得到所述深度相机不同深度的真实值,从而在任意环境中且无需额外的设备进行真实值测量就可以实现深度相机测量值的修正以得到较精确的测量结果。
【附图说明】
图1是本发明实施例中深度相机的精度随测量距离变化图像。
图2是本发明实施例中深度相机进行精确测量的示意图。
图3是本发明实施例的精确测量方法的流程图。
【具体实施方式】
以下对本发明的实施方式作详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
实施例1
任何测量系统都存在误差,误差越小表明该系统的测量精度越高。深度相机属于一种距离测量装置,与传统的米尺、激光测距仪等设备相比,优势在于深度相机能实现无接触、全场的实时深度距离测量。根据测量原理,深度相机分基于双目视觉、时间飞行法以及结构光三角法等。以下的说明中将以结构光三角法为例进行说明,但本发明所述方法与系统也可以适用其他距离测量装置。
基于结构光三角法的深度相机一般由激光投影仪、激光相机以及处理器组成,其中激光投影仪用于向被测物体投影结构光图案,比如散斑图案;散斑图案由激光相机采集,最后传输到处理器中,通过三角法原理可以计算出被测物体所成的散斑图案上各个点的深度值。
在实际使用中,所测量的结果往往存在误差,主要可以分为两类,一种是系统误差,一种是偶然误差。其中系统误差由深度相机的装配误差、激光温度、深度算法等决定,一般地,各个深度相机在出厂时都会经过严格的标定,同时会在给定的测量环境下对深度相机的系统误差进行评价,给出一个参考的数据以供用户参考。因此,系统误差在较大程度上可以被修正。偶然误差主要由于被测物体的表面材质、环境光照以及温度等影响,而这些影响因素由于过于复杂在深度相机出厂时是无法标定的,本发明就是针对这种情况,提出一种能够在任意被测物体以及环境下对深度测量进行偶然误差修正的方法及系统。值得注意的是,测量系统的误差理论是不可能被消除的,只能被修正以降低可减小误差,真实值在大多数情况下是无法获取的,因此真实值实际上指的是比测量值精度更高的值或者指的是被修正后的测量值。
图1是在一实施例中深度相机的精度随测量距离的变化曲线,一般地,当被测物体以及环境确定后,深度相机的精度会随着测量距离的变化而变化;同样地,在被测物体以及环境不同时,该曲线也会不一样,这就是为何偶然误差无法在出厂时就进行标定的原因。从图1中可以看出,精度曲线可以被线性拟合或者非线性拟合(如幂函数拟合),两种情形下可以分别拟合出测量值与真实值之间的映射关系,即拟合函数。线性拟合函数可以用下式表示:
z′=az+b
幂函数拟合函数可以用下式表示:
z′=azb
式中,z′表示深度测量值,z表示深度真实值,a、b表示系数。
如图3所示,在被测物体以及环境确定后,在给定了拟合函数下,只要计算出系数即可以得到映射关系以修正由偶然误差所带来的影响。以上分别针对线性映射以及非线性映射分别举例说明,但并非是对本发明的限定,在其它实施例中也可以由其他拟合函数。
在上述说明中将误差分成系统误差以及偶然误差进行阐述,但在实际情形中,两种误差是被耦合在一起的,也就是说,测量的精度是同时由多种误差引起的。本发明的方法并非仅仅针对解决偶然误差,而是针对在被测物体以及测量环境确定后,通过本发明所述的方法与系统进行误差消除以提高测量精度。
图2是根据本发明的一种实施例的利用深度相机进行精确测量的示意图。测量对象为人体,假设测量的是人体脚尖的深度值。在测量时,分别在三个不同的位置对人体进行测量,各个位置的真实的深度值(z)是未知的,然而相互之间的间距为已知量(l1、l2)。
假如在三个位置时由深度相机测量的深度值分别为:z’1、z’2、z’3,真实值设为z1、z1+l1、z1+l1+l2。若测量值与真实值的映射关系为线性映射,则有以下关系:
上述三式组成的方程组中有三个未知数k、z1、b,然而用传统的求解方程组的方法是无法对未知数进行求解。实际上,上式仅在理想情形下才会成立,方程组中三个等式中左右两边在大部分情形下均不会相等,而是近似,用差值δ表示近似的程度:
用∑δi表示整体的近似程度,当未知数选取某个值时∑δi最小时,认为所选取的值为方程组的解,对应的z1即为所要精确测量的真实值,这里可以采用迭代法进行求解,迭代初始值选为:z1=z’1、k=1、b=0。在其它实施例中整体近似程度也可以用其他公式表示,例如
在另一种实施例中,可以利用机器学习的方法进行求解。与前面不同的是,需要在更多个位置处进行测量,以确保有足够的学习样本。比如使用基于多层神经网络的深度学习,将测量值做为样本数据进行输入,输出的是真实值,然后将真实值之间的差值与已知的间距构成loss函数,用于更新多层神经网络中的参数,在通过多个样本数据的学习之后可以得到一个较为理想的学习模型。
实施例2
下面介绍幂函数映射关系来进行误差修正。同样在三个位置上由深度相机得到三个测量值:z’1、z’2、z’3,真实值设为z1、z1+l1、z1+l1+l2。则测量值与真实值的映射关系如下:
上述方程组中有三个未知数a、z1、b,可以通过方程组直接求解。在其他实施例中方程组的数量也可以大于3个。
实施例3
考虑到深度相机获取的是多像素的深度图像,在上述分析中仅以单个点来进行说明。在实际使用中,往往单个点是难以定位的,因此也可以利用一个区域的深度值平均来替代单个点,或者直接同步对多个点进行误差修正。
在本实施例中,需要测量的除了深度值之外,还包括x、y方向上的坐标值,比如测量人体的身高,则是主要利用y方向上的坐标值。假设某个点的深度相机坐标系的坐标为(x、y、z),深度相机的像素坐标系为(u、v),二者之间的关系可以用下式表示:
式中fx、fy、ox、oy分别指深度相机的焦距以及感光底片的中心坐标,由上式可知,x、y方向上的坐标值x、y与深度值z线性相关,因此只要得到深度值的精确值就可以得到x、y方向上的精确坐标值。以下将以身高精确测量为例进行说明。
将深度相机与被测人体以一定的初始距离放置,一般地,深度相机固定放置。在初始位置处用深度相机获取初始深度图像,然后由被测人体向前/后走n步,再用深度相机获取第二幅深度图像,以此类推。获取了多幅深度图像后,通过对每幅深度图像进行前景提取后利用前面所述的误差修正方法将头部顶点以及脚部底点的三维坐标测量值进行误差修正得到精确的三维坐标,然后利用所获取的三维坐标来计算人体身高。本实施例中通过人体步伐来控制多次测量,且已知每个步伐的长度且假设每个步伐相等,这种方法比较适合一般应用的测量,在另一种实施例中,可以设置被测人体固定,而通过机械装置控制深度相机间距移动以实现多次测量的目的。
实施例4
对于基于双目视觉、时间飞行法以及结构光三角法的任意深度相机都可以采用本发明所述的方法进行精确测量,而不需要额外的设备。所述的精确测量是在降低系统误差的基础上同时降低环境误差。基本原理是通过在真实测量环境中,首先选取深度相机的误差模型,此时的误差模型仅对系统误差进行修正;然后通过测量得到被测物体在不同深度处的测量值,不同深度之间的差值已知或测量得到;根据不同深度处的测量值以及不同深度之间的差值可以对选取的误差模型进一步修正,得到该环境下测量值所对应的真实值。因为此次修正是通过真实测量环境中的测量值进行修正的,所以在一定程度上降低了环境误差。具体包括如下步骤:
(1)建立深度相机的测量值和真实值之间的误差模型,这个误差模型可以来自深度相机的生产厂家也可以来自用户对深度相机的使用研究所得,根据测量目的可以选择最优的误差模型;
(2)利用所述深度相机对处在不同深度上的同一被测物体进行测量得到所述不同深度的测量值,并测得所述不同深度的差值;或者选取差值已知的不同深度处的同一被测物体进行测量得到不同深度处的测量值;测量值包括但不限于:利用所述深度相机对处在不同深度上的同一被测物体上的单个点进行测量得到所述单个点的几何测量值;或利用所述深度相机对处在不同深度上的同一被测物体上的至少两个点进行测量得到所述至少两个点的几何测量值;
(3)根据所述不同深度的测量值、所述不同深度之间的差值以及所述深度相机的误差模型修正得到所述深度相机不同深度的真实值,修正的方法有很多种,比如迭代法,也可以采用计算软件修正;真实值包括但不限于:被测物体上单个点或多个点的深度真实值;被测物体上单个点或多个点的横、纵坐标真实值;被测物体上的任意两点之间的尺寸真实值;被侧物体的部件的尺寸真实值,所述的测量值和真实值的种类涵盖深度相机测量的主要应用但是不仅仅限于这些测量的数值信息,还可以包括其他深度相机可能得到的数值信息。
以上所述误差模型是几何测量值和几何真实值之间的映射关系,这个映射关系包含有未知系数,所述映射关系为线性或非线性映射,也可以为幂函数映射,所述映射关系中至少有两个未知系数。所述未知系数可以通过不同深度的测量值、不同深度之间的差值进行计算得到,测量次数肯定要大于未知系数的数量才能解出未知系数的值,但是本发明的目的不在于求解未知系数的值而在于直接求解对应于某次测量值的真实值。
每一次测量环境发生变化时,都需要利用深度相机进行大于所选取的误差模型中所含的未知系数的数量的测量次数对测量值进行修正,得到该环境下的测量值所对应的真实值。
实施例5
实现本发明所述方法的硬件设备可以是一种包含计算机程序的计算机可读存储介质,这种可读存储介质可以是移动存储设备,比如优盘、硬盘、光盘、软盘等,也可以是其他形式,计算机可读存储介质中存储实现本发明所述方法的程序。
还可以通过深度相机和计算设备相连接的方式实现本发明所述的方法,所述计算设备中存储了可以实现本发明所述方法的程序,存储的程序可以直接存储于电脑硬盘,也可以通过外接设备导入。
还可以将实现本发明所述方法的程序直接配置到深度相机中,所述深度相机包括一个或多个处理器、存储器以及一个或多个程序;所述程序存储在所述处存储器中,被配置成由所述一个或多个处理器执行,所述程序包括用于执行以上任一所述方法的指令。
以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。