具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种三维拼接方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种三维拼接方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,确定当前帧深度图的三维点与纹理图的像素点之间的第一映射关系,以及不同纹理图中的标识点之间的第一对应关系;
步骤S104,依据上述第一映射关系和上述第一对应关系,确定上述当前帧深度图与其他帧深度图之间的第一相对位置关系,其中,上述其他帧深度图为与上述当前帧深度图不同的深度图;
步骤S106,基于上述第一相对位置关系,对上述当前帧深度图与上述其他帧深度图中的三维点进行三维拼接。
需要说明的是,本申请实施例可以但不限于适用于基于结构光的三维扫描领域,尤其是手持式扫描仪领域,例如,多用于消费扫描、齿科入口式扫描等。并且,在手持式扫描仪领域,可以但不限于用于标志点、非标志点的三维扫描方案中,通过利用纹理图的纹理信息进行二维粗匹配,可以最大程度上减少单纯依靠三维ICP拼接对于对称物体造成的二义性,提高三维拼接的准确性。
可选的,上述三维点为基于深度相机进行三维重建获取到的当前帧深度图的三维点;上述标识点包括如下至少之一:角点、标志点,上述角点的位置位于纹理图中在x和y方向上,变化均很大的交点处;上述标志点可以为人为进行标志的点;上述其他帧深度图可以但不限于为当前帧深度图的前一帧深度图,当前帧深度图的后一帧深度图,等等。
在一种可选的实施例中,可以基于预先对深度相机和纹理相机进行标定,其中,上述深度相机和纹理相机均为手持式扫描仪中的相机,基于标定好的深度相机和纹理相机之间的相对位置关系,将三维点投影到纹理相机采集的纹理图上,通过将三维点与纹理图上的像素点一一映射,得到三维点与像素点之间的第一映射关系。需要说明的是,三维点和像素点均可以以坐标的形式进行体现,例如,三维点与像素点之间的映射关系,可以但不限于理解为三维坐标和像素坐标之间的映射关系。
在上述可选的实施例中,在上述标识点为角点的情况下,对于通过将不同纹理图中所提取的角点,需要进行点对点匹配,以确定上述不同纹理图中的角点之间的第一对应关系。
在本申请实施例中,每个纹理图中的每个角点均对应一个深度值,其中,上述深度值是指每个角点对应的深度相机所测量的三维点(x,y,z)中的z值。
其中,在上述可选的实施例中,由于每个纹理图中的每个角点均对应一个深度值,进而可以依据每个角点的深度值以及三维点的深度值,确定角点和三维点之间的第三映射关系。
在另一种可选的实施例中,在本申请实施例中,可以但不限于通过RANSAC算法将不同纹理图中的标识点进行点对点匹配,得到上述第一对应关系。
需要说明的是,作为一种可选的实施例,本申请可以但不限于可以采用RANSAC匹配算法,针对两幅或多幅不同的纹理图上的无序角点进行准确匹配。其中,RANSAC匹配算法的基本思路即是随机选择一个小的数据点子集,然后对其进行拟合,查看有多少其他点匹配到拟合的模型上,迭代这个过程直至有较大的概率找到需要拟合的模型。经过RANSAC算法的匹配运算,可以得到不同纹理图中的角点之间的第一对应关系,则此时即可基于第一映射关系和上述第一对应关系,获取上述当前帧深度图与其他帧深度图之间的第一相对位置关系,进而可以基于上述第一相对位置关系对上述当前帧深度图与其他帧深度图中的三维点进行三维拼接。
在本申请实施例中,通过在使用手持扫描仪对不贴标志点的物体进行三维扫描过程中,通过纹理图中的纹理信息与深度相机采集到的帧图像结合,基于被扫描物体的纹理信息辅助进行三维拼接,可以解决由于被扫描物体为平面特征、无明显特征或者对称性物体容易造成拼接失败的问题,可以显著提高手持式扫描仪的准确性及流畅性。
在本发明实施例中,通过确定当前帧深度图的三维点与纹理图的像素点之间的第一映射关系,以及不同纹理图中的标识点之间的第一对应关系;依据上述第一映射关系和上述第一对应关系,确定上述当前帧深度图与其他帧深度图之间的第一相对位置关系,其中,上述其他帧深度图为与上述当前帧深度图不同的深度图;基于上述第一相对位置关系,对上述当前帧深度图与上述其他帧深度图中的三维点进行三维拼接,达到了提高三维拼接的准确性的目的,从而实现了减少三维拼接失败的次数,增加扫描的流畅性的技术效果,进而解决了现有技术中所采用的三维拼接方案的拼接失败率较高的技术问题。
在一种可选的实施例中,在上述标识点为上述角点的情况下,在确定上述标识点与上述像素点之间的第二映射关系之前,上述方法还包括:通过目标提取算法提取上述纹理图中的每个上述角点,其中,上述目标提取算法包括如下至少之一:Harris角点提取算法、SIFT算法、SURF特征提取算法、FAST角点检测算法、AGAST角点检测算法、BRISK特征提取算法、FREAK特征提取算法、ORB特征提取算法。
在一种可选的实施例中,图2是根据本发明实施例的一种可选的三维拼接方法的流程图,如图2所示,确定当前帧深度图的三维点与纹理图的像素点之间的第一映射关系,包括:
步骤S202,通过标定深度相机和纹理相机,确定出上述深度相机和上述纹理相机之间的第二相对位置关系;
步骤S204,基于上述深度相机进行三维重建,获取上述当前帧深度图的三维点;
步骤S206,基于上述第二相对位置关系,通过将上述三维点投影至上述纹理相机采集的上述纹理图上,得到上述第一映射关系。
在上述可选的实施例中,通过对深度相机与纹理相机进行标定,标定出深度相机与纹理相机之间的第二相对位置关系,并基于上述深度相机进行三维重建,获取上述当前帧深度图的三维点,基于上述第二相对位置关系,通过将上述三维点投影至上述纹理相机采集的上述纹理图上,进而可以得到上述第一映射关系。
在一种可选的实施例中,图3是根据本发明实施例的一种可选的三维拼接方法的流程图,如图3所示,依据上述第一映射关系和上述第一对应关系,确定上述当前帧深度图与其他帧深度图之间的第一相对位置关系,包括:
步骤S302,确定上述标识点与上述像素点之间的第二映射关系;
步骤S304,依据上述第一映射关系和上述第二映射关系,确定上述标识点与上述三维点之间的第三映射关系;
步骤S306,依据上述第三映射关系和上述第一对应关系,确定上述第一相对位置关系。
可选的,上述标识点可以为纹理图中的角点、标志点,与纹理图中的像素点之间存在坐标数据之间的映射关系,在本申请实施例中,由于标识点与像素点之间存在第二映射关系,三维点与像素点之间存在第一映射关系,因而,依据上述第一映射关系和第二映射关系,可以唯一确定标识点与三维点之间的第三映射关系,依据上述第三映射关系和第一对应关系,可以确定当前帧深度图与其他帧深度图之间的第一相对位置关系。
作为一种可选的实施例,图4是根据本发明实施例的一种可选的三维拼接方法的流程图,如图4所示,依据上述第三映射关系和上述第一对应关系,确定上述第一相对位置关系,包括:
步骤S402,依据上述第三映射关系和上述第一对应关系,确定上述当前帧深度图与上述其他帧深度图中的三维点之间的第二对应关系;
步骤S404,基于上述第二对应关系确定上述第一相对位置关系。
在本申请实施例中,通过上述第三映射关系和上述第一对应关系,确定上述当前帧深度图与其他帧深度图中的三维点之间的第二对应关系,并且,在本申请实施例中,还可以但不限于基于四元数法求取上述当前帧深度图与其他帧深度图之间的第一相对位置关系。
在本申请实施例中,还存在一种可选的实施例,基于上述第一相对位置关系,对上述当前帧深度图与上述其他帧深度图中的三维点进行三维拼接,包括:
步骤S502,基于上述第一相对位置关系对上述当前帧深度图与上述其他帧深度图中的三维点进行初始三维拼接;
步骤S504,在上述初始三维拼接的基础上,采用迭代最近点算法对上述当前帧深度图与上述其他帧深度图中的三维点进行精准三维拼接。
可选的,上述第一相对位置关系可以但不限于为一个初始位置关系,在基于上述初始位置关系对上述当前帧深度图与其他帧深度图中的三维点进行初始三维拼接之后,还可以在初始三维拼接的基础上,后续进行多轮迭代最近点算法ICP拼接,以实现对上述当前帧深度图与其他帧深度图中的三维点进行精准三维拼接。
可选的,在本申请实施例中,可以但不限于将上述第一相关位置关系理解为一个旋转平移矩阵,通过上述旋转平移矩阵将后帧图像转到前帧图像的三维点的坐标系下,实现统一的坐标,得到一个可能存在误差的初始三维拼接的相对位置结果,通过ICP算法迭代进行更精确的位置修正,使得相对位置求得更加精准。
实施例2
根据本发明实施例,还提供了一种用于实施上述三维拼接方法的装置实施例,图5是根据本发明实施例的一种三维拼接装置的结构示意图,如图5所示,上述三维拼接装置,包括:第一确定模块50、第二确定模块52和拼接模块54,其中,
第一确定模块50,用于确定当前帧深度图的三维点与纹理图的像素点之间的第一映射关系,以及不同纹理图中的标识点之间的第一对应关系;第二确定模块52,用于依据上述第一映射关系和上述第一对应关系,确定上述当前帧深度图与其他帧深度图之间的第一相对位置关系,其中,上述其他帧深度图为与上述当前帧深度图不同的深度图;拼接模块54,用于基于上述第一相对位置关系,对上述当前帧深度图与上述其他帧深度图中的三维点进行三维拼接。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一个处理器中;或者,上述各个模块以任意组合的方式位于不同的处理器中。
此处需要说明的是,上述第一确定模块50、第二确定模块52和拼接模块54对应于实施例1中的步骤S102至步骤S106,上述模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在计算机终端中。
需要说明的是,本实施例的可选或优选实施方式可以参见实施例1中的相关描述,此处不再赘述。
在一种可选的实施例中,上述第一确定模块,包括:确定单元,用于通过标定深度相机和纹理相机,确定出上述深度相机和上述纹理相机之间的第二相对位置关系;获取单元,用于基于上述深度相机进行三维重建,获取上述当前帧深度图的三维点;映射单元,用于基于上述第二相对位置关系,通过将上述三维点投影至上述纹理相机采集的上述纹理图上,得到上述第一映射关系。
上述的三维拼接装置还可以包括处理器和存储器,上述第一确定模块50、第二确定模块52和拼接模块54等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元,上述内核可以设置一个或以上。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
根据本申请实施例,还提供了一种存储介质实施例。可选地,在本实施例中,上述存储介质包括存储的程序,其中,在上述程序运行时控制上述存储介质所在设备执行上述任意一种三维拼接方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中,上述存储介质包括存储的程序。
可选地,在程序运行时控制存储介质所在设备执行以下功能:确定当前帧深度图的三维点与纹理图的像素点之间的第一映射关系,以及不同纹理图中的标识点之间的第一对应关系;依据上述第一映射关系和上述第一对应关系,确定上述当前帧深度图与其他帧深度图之间的第一相对位置关系,其中,上述其他帧深度图为与上述当前帧深度图不同的深度图;基于上述第一相对位置关系,对上述当前帧深度图与上述其他帧深度图中的三维点进行三维拼接。
可选地,在程序运行时控制存储介质所在设备执行以下功能:通过标定深度相机和纹理相机,确定出上述深度相机和上述纹理相机之间的第二相对位置关系;基于上述深度相机进行三维重建,获取上述当前帧深度图的三维点;基于上述第二相对位置关系,通过将上述三维点投影至上述纹理相机采集的上述纹理图上,得到上述第一映射关系。
可选地,在程序运行时控制存储介质所在设备执行以下功能:确定上述标识点与上述像素点之间的第二映射关系;依据上述第一映射关系和上述第二映射关系,确定上述标识点与上述三维点之间的第三映射关系;依据上述第三映射关系和上述第一对应关系,确定上述第一相对位置关系。
可选地,在程序运行时控制存储介质所在设备执行以下功能:依据上述第三映射关系和上述第一对应关系,确定上述当前帧深度图与上述其他帧深度图中的三维点之间的第二对应关系;基于上述第二对应关系确定上述第一相对位置关系。
可选地,在程序运行时控制存储介质所在设备执行以下功能:基于上述第一相对位置关系对上述当前帧深度图与上述其他帧深度图中的三维点进行初始三维拼接;在上述初始三维拼接的基础上,采用迭代最近点算法对上述当前帧深度图与上述其他帧深度图中的三维点进行精准三维拼接。
可选地,在程序运行时控制存储介质所在设备执行以下功能:通过目标提取算法提取上述纹理图中的每个上述角点,其中,上述目标提取算法包括如下至少之一:Harris角点提取算法、SIFT算法、SURF特征提取算法、FAST角点检测算法、AGAST角点检测算法、BRISK特征提取算法、FREAK特征提取算法、ORB特征提取算法。
根据本申请实施例,还提供了一种处理器实施例。可选地,在本实施例中,上述处理器用于运行程序,其中,上述程序运行时执行上述任意一种三维拼接方法。
本申请实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:确定当前帧深度图的三维点与纹理图的像素点之间的第一映射关系,以及不同纹理图中的标识点之间的第一对应关系;依据上述第一映射关系和上述第一对应关系,确定上述当前帧深度图与其他帧深度图之间的第一相对位置关系,其中,上述其他帧深度图为与上述当前帧深度图不同的深度图;基于上述第一相对位置关系,对上述当前帧深度图与上述其他帧深度图中的三维点进行三维拼接。
可选地,上述处理器执行程序时,还可以通过标定深度相机和纹理相机,确定出上述深度相机和上述纹理相机之间的第二相对位置关系;基于上述深度相机进行三维重建,获取上述当前帧深度图的三维点;基于上述第二相对位置关系,通过将上述三维点投影至上述纹理相机采集的上述纹理图上,得到上述第一映射关系。
可选地,上述计算机程序产品执行程序时,还可以确定上述标识点与上述像素点之间的第二映射关系;依据上述第一映射关系和上述第二映射关系,确定上述标识点与上述三维点之间的第三映射关系;依据上述第三映射关系和上述第一对应关系,确定上述第一相对位置关系。
可选地,上述处理器执行程序时,还可以依据上述第三映射关系和上述第一对应关系,确定上述当前帧深度图与上述其他帧深度图中的三维点之间的第二对应关系;基于上述第二对应关系确定上述第一相对位置关系。
可选地,上述处理器执行程序时,还可以基于上述第一相对位置关系对上述当前帧深度图与上述其他帧深度图中的三维点进行初始三维拼接;在上述初始三维拼接的基础上,采用迭代最近点算法对上述当前帧深度图与上述其他帧深度图中的三维点进行精准三维拼接。
可选地,上述处理器执行程序时,还可以通过目标提取算法提取上述纹理图中的每个上述角点,其中,上述目标提取算法包括如下至少之一:Harris角点提取算法、SIFT算法、SURF特征提取算法、FAST角点检测算法、AGAST角点检测算法、BRISK特征提取算法、FREAK特征提取算法、ORB特征提取算法。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:确定当前帧深度图的三维点与纹理图的像素点之间的第一映射关系,以及不同纹理图中的标识点之间的第一对应关系;依据上述第一映射关系和上述第一对应关系,确定上述当前帧深度图与其他帧深度图之间的第一相对位置关系,其中,上述其他帧深度图为与上述当前帧深度图不同的深度图;基于上述第一相对位置关系,对上述当前帧深度图与上述其他帧深度图中的三维点进行三维拼接。
可选地,上述计算机程序产品执行程序时,还可以通过标定深度相机和纹理相机,确定出上述深度相机和上述纹理相机之间的第二相对位置关系;基于上述深度相机进行三维重建,获取上述当前帧深度图的三维点;基于上述第二相对位置关系,通过将上述三维点投影至上述纹理相机采集的上述纹理图上,得到上述第一映射关系。
可选地,上述计算机程序产品执行程序时,还可以确定上述标识点与上述像素点之间的第二映射关系;依据上述第一映射关系和上述第二映射关系,确定上述标识点与上述三维点之间的第三映射关系;依据上述第三映射关系和上述第一对应关系,确定上述第一相对位置关系。
可选地,上述计算机程序产品执行程序时,还可以依据上述第三映射关系和上述第一对应关系,确定上述当前帧深度图与上述其他帧深度图中的三维点之间的第二对应关系;基于上述第二对应关系确定上述第一相对位置关系。
可选地,上述计算机程序产品执行程序时,还可以基于上述第一相对位置关系对上述当前帧深度图与上述其他帧深度图中的三维点进行初始三维拼接;在上述初始三维拼接的基础上,采用迭代最近点算法对上述当前帧深度图与上述其他帧深度图中的三维点进行精准三维拼接。
可选地,上述计算机程序产品执行程序时,还可以通过目标提取算法提取上述纹理图中的每个上述角点,其中,上述目标提取算法包括如下至少之一:Harr is角点提取算法、SIFT算法、SURF特征提取算法、FAST角点检测算法、AGAST角点检测算法、BRISK特征提取算法、FREAK特征提取算法、ORB特征提取算法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。