一种修正结构光相机偏差的方法及装置
技术领域
本发明实施例涉及虚拟3D建模技术领域,尤其是涉及一种修正结构光相机偏差的方法及装置。
背景技术
结构光技术的基本原理是在激光器外放置一个光栅,激光通过光栅进行投射成像时会发生折射,从而使得激光最终在物体表面上的落点产生位移。当物体距离激光投射器比较近的时候,折射而产生的位移就较小,当物体距离较远时,折射而产生的位移也就会相应的变大。使用一个摄像头来检测采集投射到物体表面上的图样,通过图样的位移变化,就能用算法计算出物体的位置和深度信息,进而复原整个虚拟三维空间。然而,由于物理设备和拍摄环境的缘故,结构光相机获得的物体的深度信息有误差,对后续处理数据会造成比较大的影响。
在实现本发明实施例的过程中,发明人发现现有的结构光相机拍摄的物体的深度信息因设备或者环境的影响存在误差,影响后续基于该深度信息建立虚拟三维模型的效果。
发明内容
本发明所要解决的技术问题是如何解决现有的结构光相机拍摄的物体的深度信息因设备或者环境的影响存在误差,影响后续基于该深度信息建立虚拟三维模型的效果的问题。
针对以上技术问题,本发明的实施例提供了一种修正结构光相机偏差的方法,包括:
获取由结构光相机拍摄得到的目标拍摄点与所述结构光相机的目标拍摄距离;
从预先存储的查询表中获取至少两个选定标定点,得到所述查询表中记录的每一选定标定点对应的拍摄距离和实际距离;
根据所述目标拍摄距离,以及获取的各选定标定点对应的拍摄距离和实际距离计算所述目标拍摄点到所述结构光相机的目标实际距离。
本实施例提供了一种修正结构光相机偏差的装置,包括:
第一获取模块,用于获取由结构光相机拍摄得到的目标拍摄点与所述结构光相机的目标拍摄距离;
第二获取模块,用于从预先存储的查询表中获取至少两个选定标定点,得到所述查询表中记录的每一选定标定点对应的拍摄距离和实际距离;
计算模块,用于根据所述目标拍摄距离,以及获取的各选定标定点对应的拍摄距离和实际距离计算所述目标拍摄点到所述结构光相机的目标实际距离。
可选地,所述计算模块还用于对获取的各选定标定点,根据记录的该选定标定点的拍摄距离和实际距离计算该选定标定点对应的修正系数,并由所述目标拍摄距离、该选定标定点对应的修正系数、各选定标定点对应于拍摄距离和实际距离计算以该选定标定点为参照的修正距离,将所述目标拍摄距离与各选定标定点对应的修正距离的和作为所述目标拍摄点到所述结构光相机的目标实际距离。
可选地,所述第二获取模块还用于从预先存储的查询表中获取第一选定标定点和第二选定标定点,分别得到所述第一选定标定点对应的第一拍摄距离和第一实际距离,所述第二选定标定点对应的第二拍摄距离和第二实际距离。
可选地,所述计算模块还用于对所述第一选定标定点,计算所述第一实际距离减去所述第一拍摄距离的差值,作为对应于所述第一选定标定点的第一修正系数,对所述第二选定标定点,计算所述第二实际距离减去所述第二拍摄距离的差值,作为对应于所述第二选定标定点的第二修正系数;由所述目标拍摄距离、所述第一修正系数、所述第一实际距离、所述第一拍摄距离和所述第二拍摄距离计算以所述第一选定标定点为参照的第一修正距离,由所述目标拍摄距离、所述第二修正系数、所述第二实际距离、所述第二拍摄距离和所述第一拍摄距离计算以所述第二选定标定点为参照的第二修正距离;计算所述目标拍摄距离、所述第一修正距离和所述第二修正距离的和,得到所述目标实际距离。
可选地,所述计算模块还用于由所述目标拍摄距离、该选定标定点对应的修正系数、各选定标定点对应于拍摄距离和实际距离,根据公式
计算以该选定标定点为参照的修正距离;其中,d
0为以该选定标定点为参照的修正距离,c为该选定标定点对应的修正系数,c=d
em-d
cm,d
em表示在编号为m的标定点对应的实际距离,d
cm表示在编号为m的标定点对应的拍摄距离,d为所述目标拍摄距离,d
cn表示在编号为n的标定点对应的拍摄距离。
可选地,所述第二获取模块还用于预先选定至少两个拍摄地点作为标定点,对每一标定点,通过激光测距仪测定所述结构光相机在所述标定点与参照物的实际距离,通过所述结构光相机进行拍摄,得到所述结构光相机拍摄的与所述参照物的拍摄距离,将在所述标定点测量的实际距离和拍摄得到的拍摄距离与所述标定点对应存储。
可选地,所述计算模块还用于根据计算得到的所述结构光相机拍摄的照片中各像素点对应的所述目标实际距离,创建虚拟三维模型。
本实施例提供了一种电子设备,包括:
至少一个处理器、至少一个存储器、通信接口和总线;其中,
所述处理器、存储器、通信接口通过所述总线完成相互间的通信;
所述通信接口用于该电子设备和终端的通信设备之间的信息传输;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行以上所述的方法。
本实施例提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行以上所述的方法。
本发明的实施例提供了一种修正结构光相机偏差的方法及装置,该方法预先在结构光相机中存储一个查询表,查询表中存储了预先测量的各标定点的拍摄距离和实际距离的对应关系。当采用该结构光相机进行拍摄时,可以依据查询表中记载的标定点的拍摄距离和实际距离对该结构光相机拍摄的目标拍摄距离进行修正,得到拍摄时该结构光相机和物体之间的目标实际距离。通过查询表中的各标定点对拍摄距离进行修正,消除了由相机本身或者环境因素导致的拍摄距离的误差,提高了通过结构光相机测量其和物体之间距离的准确性,使得后续创建的虚拟三维模型与真实结构吻合程度更高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的修正结构光相机偏差的方法的流程示意图;
图2是本发明另一个实施例提供的修正结构光相机偏差的装置的结构框图;
图3是本发明另一个实施例提供的电子设备的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本实施例提供的修正结构光相机偏差的方法的流程示意图,参见图1,该方法包括:
101:获取由结构光相机拍摄得到的目标拍摄点与所述结构光相机的目标拍摄距离;
102:从预先存储的查询表中获取至少两个选定标定点,得到所述查询表中记录的每一选定标定点对应的拍摄距离和实际距离;
103:根据所述目标拍摄距离,以及获取的各选定标定点对应的拍摄距离和实际距离计算所述目标拍摄点到所述结构光相机的目标实际距离。
本实施例提供的方法可以由结构光相机执行,结构光相机是利用结构光技术进行拍摄的相机,其能够测量出相机与拍摄的各点之间的距离。查询表预先存储在结构光相机中,通常查询表是在结构光相机出厂前边存储到结构光相机中,以便后续使用过程中,结构光相机能够利用该查询表精准地确定出拍摄点的深度信息(即拍摄点和结构光相机的实际距离)。
目标拍摄点是结构光相机拍摄的物体上的某一点,目标拍摄距离为结构光相机直接通过结构光技术得到的距离(即未通过查询表对拍摄距离进行修正之前的距离)。查询表中存储了多个标定点对应的拍摄距离和实际距离,其中,各标定点的拍摄距离是直接通过结构光相机拍摄的距离,实际距离是可以是通过激光测距仪测量得到的距离。每次根据目标拍摄距离计算目标实际距离时,可以通过查询表中的多个标定点进行修正,本实施例对此不做具体限定。
本实施例提供了一种修正结构光相机偏差的方法,该方法预先在结构光相机中存储一个查询表,查询表中存储了预先测量的各标定点的拍摄距离和实际距离的对应关系。当采用该结构光相机进行拍摄时,可以依据查询表中记载的标定点的拍摄距离和实际距离对该结构光相机拍摄的目标拍摄距离进行修正,得到拍摄时该结构光相机和物体之间的目标实际距离。通过查询表中的各标定点对拍摄距离进行修正,消除了由相机本身或者环境因素导致的拍摄距离的误差,提高了通过结构光相机测量其和物体之间距离的准确性,使得后续创建的虚拟三维模型与真实结构吻合程度更高。
进一步地,在上述各实施例的基础上,所述根据所述目标拍摄距离,以及获取的各选定标定点对应的拍摄距离和实际距离计算所述目标拍摄点到所述结构光相机的目标实际距离,包括:
对获取的各选定标定点,根据记录的该选定标定点的拍摄距离和实际距离计算该选定标定点对应的修正系数,并由所述目标拍摄距离、各选定标定点对应的修正系数、拍摄距离和实际距离计算以该选定标定点为参照的修正距离,将所述目标拍摄距离与各选定标定点对应的修正距离的和作为所述目标拍摄点到所述结构光相机的目标实际距离。
对于从查询表中选定的用于对目标拍摄距离进行修正的每一选定标定点,先计算出对应的修正系数,然后基于该选定标定点的修正系数、至少两个选定标定点对应的拍摄距离和实际距离计算该选定标定点的修正距离。其中,可以将目标拍摄距离和各选定标定点(可以是两个选定标定点也可以是多个,本实施例对此不做具体限制)对应的拍摄距离和实际距离进行运算,将运算结果乘以该修正系数,即可得到对应于该选定标定点的修正距离。
通常,受限于目前结构光相机的拍摄精度,本实施例提供的方法仅用于对相机和拍摄点距离小于或等于6米的情况下适用。
本实施例提供了一种修正结构光相机偏差的方法,通过查询表中各标定点的拍摄距离和实际距离可以快速计算出各选定标定点对应的修正距离,进而对目标拍摄距离进行修正。
进一步地,在上述各实施例的基础上,所述从预先存储的查询表中获取至少两个选定标定点,得到所述查询表中记录的每一选定标定点对应的拍摄距离和实际距离,包括:
从预先存储的查询表中获取第一选定标定点和第二选定标定点,分别得到所述第一选定标定点对应的第一拍摄距离和第一实际距离,所述第二选定标定点对应的第二拍摄距离和第二实际距离。
进一步地,在上述各实施例的基础上,所述对获取的各选定标定点,根据记录的该选定标定点的拍摄距离和实际距离计算该选定标定点对应的修正系数,并由所述目标拍摄距离、该选定标定点对应的修正系数、拍摄距离和实际距离计算以该选定标定点为参照的修正距离,将所述目标拍摄距离与各选定标定点对应的修正距离的和作为所述目标拍摄点到所述结构光相机的目标实际距离,包括:
对所述第一选定标定点,计算所述第一实际距离减去所述第一拍摄距离的差值,作为对应于所述第一选定标定点的第一修正系数,对所述第二选定标定点,计算所述第二实际距离减去所述第二拍摄距离的差值,作为对应于所述第二选定标定点的第二修正系数;
由所述目标拍摄距离、所述第一修正系数、所述第一实际距离、所述第一拍摄距离和所述第二拍摄距离计算以所述第一选定标定点为参照的第一修正距离,由所述目标拍摄距离、所述第二修正系数、所述第二实际距离、所述第二拍摄距离和所述第一拍摄距离计算以所述第二选定标定点为参照的第二修正距离;
计算所述目标拍摄距离、所述第一修正距离和所述第二修正距离的和,得到所述目标实际距离。需要说明的是,修正系数等于实际距离减去拍摄距离,若差值为负值,则修正系数为负值,若差值为正值,则修正距离为正值。
本实施例提供了一种修正结构光相机偏差的方法,以两个标定点的拍摄距离和实际距离对目标拍摄距离进行修正,简化了计算方法,提高了运算效率。
进一步地,在上述各实施例的基础上,所述由所述目标拍摄距离、该选定标定点对应的修正系数、各选定标定点对应于拍摄距离和实际距离计算以该选定标定点为参照的修正距离,包括:
由所述目标拍摄距离、该选定标定点对应的修正系数、各选定标定点对应于拍摄距离和实际距离,根据公式
计算以该选定标定点为参照的修正距离;
其中,d0为以该选定标定点为参照的修正距离,cm为编号为m选定标定点对应的修正系数,cm=dem-dcm,dem表示在编号为m的标定点对应的实际距离,dcm表示在编号为m的标定点对应的拍摄距离,d为所述目标拍摄距离,dcn表示在编号为n的标定点对应的拍摄距离。
作为具体的实施例,本实施例选定查询表中的编号为1的标定点和编号为2的标定点对目标拍摄距离进行修正,则目标实际距离通过以下公式得到:
其中,c1=de1-dc1,c2=de2-dc2,d为需要进行修正的目标拍摄距离,c1为编号为1选定标定点对应的修正系数,de1表示在编号为1的标定点对应的实际距离,dc1表示在编号为1的标定点对应的拍摄距离,c2为编号为2选定标定点对应的修正系数,de2表示在编号为2的标定点对应的实际距离,dc2表示在编号为2的标定点对应的拍摄距离。
本实施例提供了一种修正结构光相机偏差的方法,通过提供的公式能够快速确定出用于每一选定标定点的修正距离,对目标拍摄距离进行修正。
进一步地,在上述各实施例的基础上,所述查询表的生成方法包括:
预先选定至少两个拍摄地点作为标定点,对每一标定点,通过激光测距仪测定所述结构光相机在所述标定点与参照物的实际距离,通过所述结构光相机进行拍摄,得到所述结构光相机拍摄的与所述参照物的拍摄距离,将在所述标定点测量的实际距离和拍摄得到的拍摄距离与所述标定点对应存储。
在结构光相机出厂前,通过激光测距仪测定实际距离,通过结构光相机得到拍摄距离。需要说明的是,可以选定实际距离为整数的几个点作为拍摄点,便于进行计算。可理解的是,查询表中可以存储多个选定点对应的拍摄距离和实际距离,在制作查询表时,不是每一个标定点都需要测量得到拍摄距离和实际距离,在得到了几个通过测量得到的拍摄距离和实际距离后,可以通过线性平均的方法得到其它多个点的拍摄距离和实际距离。
本实施例提供了一种修正结构光相机偏差的方法,通过激光测距仪和结构光相机对几个标定点进行测量,可以快速得到查询表,将查询表存储到结构光相机中,以便通过本实施例提供的方法对测量的拍摄距离进行修正。
进一步地,在上述各实施例的基础上,还包括:
根据计算得到的所述结构光相机拍摄的照片中各像素点对应的所述目标实际距离,创建虚拟三维模型。
本实施例提供了一种修正结构光相机偏差的方法,精准地还原出每一拍摄点与结构光相机的实际距离后,可以通过各拍摄点的实际距离还原出三维场景中各点的位置,便于还原出房屋的真实结构。
作为一种具体的实施例,创建查询表的过程包括:
找一个光滑的墙面,使用激光测距仪定位出距离墙面分别为2米、4米和6米的点作为拍摄点,分别在2米、4米和6米的距离处用结构光相机拍摄墙面,得到2米、4米和6米各自对应的拍摄距离。
生成对应的查询表,用于标定每一个像素在2米,4米,6米的拍摄距离、实际距离和修正系数(其中,修正系数=实际距离-拍摄距离)。对于在其他位置的点,可以用已经标定点的误差数据做线性平均的方法,算出距离,存储到查询表中。
例如,在查询表中某个像素点在2米获得的拍摄距离是2.02米(修正系数为-0.01/米),4米获得的拍摄距离是4.04米(修正系数为-0.02/米)。对于结构光相机拍摄得到的拍摄距离为3.03米,则实际距离通过如下公式计算:
本实施例提供了修正结构光相机偏差的方法,通过在结构光相机出厂前做好指定距离的标定,并记录在查询表中,在实际拍摄过程中,可以直接用查询表,根据已经标定点对误差数据做线性平均的方法,算出距离,大大提高了实际数据的准确性。
第二方面,图2为本实施例提供的修正结构光相机偏差的装置的结构框图,参见图2,该修正结构光相机偏差的装置包括第一获取模块201、第二获取模块202和计算模块203,其中,
第一获取模块201,用于获取由结构光相机拍摄得到的目标拍摄点与所述结构光相机的目标拍摄距离;
第二获取模块202,用于从预先存储的查询表中获取至少两个选定标定点,得到所述查询表中记录的每一选定标定点对应的拍摄距离和实际距离;
计算模块203,用于根据所述目标拍摄距离,以及获取的各选定标定点对应的拍摄距离和实际距离计算所述目标拍摄点到所述结构光相机的目标实际距离。
本实施例提供的修正结构光相机偏差的装置适用于上述实施例提供的修正结构光相机偏差的方法,在此不再赘述。
本实施例提供了一种修正结构光相机偏差的装置,该装置预先在结构光相机中存储一个查询表,查询表中存储了预先测量的各标定点的拍摄距离和实际距离的对应关系。当采用该结构光相机进行拍摄时,可以依据查询表中记载的标定点的拍摄距离和实际距离对该结构光相机拍摄的目标拍摄距离进行修正,得到拍摄时该结构光相机和物体之间的目标实际距离。通过查询表中的各标定点对拍摄距离进行修正,消除了由相机本身或者环境因素导致的拍摄距离的误差,提高了通过结构光相机测量其和物体之间距离的准确性,使得后续创建的虚拟三维模型与真实结构吻合程度更高。
第三方面,图3是示出本实施例提供的电子设备的结构框图。
参照图3,所述电子设备包括:处理器(processor)301、存储器(memory)302、通信接口(Communications Interface)303和总线304;
其中,
所述处理器301、存储器302、通信接口303通过所述总线304完成相互间的通信;
所述通信接口303用于该电子设备和其它电子设备的通信设备之间的信息传输;
所述处理器301用于调用所述存储器302中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:获取由结构光相机拍摄得到的目标拍摄点与所述结构光相机的目标拍摄距离;从预先存储的查询表中获取至少两个选定标定点,得到所述查询表中记录的每一选定标定点对应的拍摄距离和实际距离;根据所述目标拍摄距离,以及获取的各选定标定点对应的拍摄距离和实际距离计算所述目标拍摄点到所述结构光相机的目标实际距离。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取由结构光相机拍摄得到的目标拍摄点与所述结构光相机的目标拍摄距离;从预先存储的查询表中获取至少两个选定标定点,得到所述查询表中记录的每一选定标定点对应的拍摄距离和实际距离;根据所述目标拍摄距离,以及获取的各选定标定点对应的拍摄距离和实际距离计算所述目标拍摄点到所述结构光相机的目标实际距离。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如,包括:获取由结构光相机拍摄得到的目标拍摄点与所述结构光相机的目标拍摄距离;从预先存储的查询表中获取至少两个选定标定点,得到所述查询表中记录的每一选定标定点对应的拍摄距离和实际距离;根据所述目标拍摄距离,以及获取的各选定标定点对应的拍摄距离和实际距离计算所述目标拍摄点到所述结构光相机的目标实际距离。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的电子设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的实施例各实施例技术方案的范围。