点云数据的拼接方法、装置和终端
技术领域
本发明涉及数据处理技术领域,尤其涉及一种点云数据的拼接方法、装置和终端。
背景技术
在图像处理领域,对于二维(2-Dimensional,2D)图像拼接问题,通常使用尺度不变特征变换(Scale Invariant Feature Transform,SIFT)等特征点匹配,来实现全景图拼接。而对于三维(3-Dimensional,3D)数据的拼接,通常需要用户点击两组3D点云数据中对应的匹配点来计算出初始姿态,并利用初始姿态进行点云数据的拼接。拼接过程可以是全自动的拼接,全自动的拼接依赖于丰富的纹理。
但是,在现有技术中,用户在两组不同的点云中点击标注出物理世界中相同的点,是一个非常复杂的过程,普通用户很难操作,尤其是在移动端,例如手机、平板电脑中操作;且通常需要三对点才可以计算出相对姿态,使得用户操作时间长,拼接准确性低,体验差。此外,在采用全自动拼接时,如果纹理欠缺,则会一直提示拼接失败,尤其是纹理欠缺的应用场景,例如未装修的室内,全自动拼接根本没有办法使用,影响用户体验。
发明内容
本发明解决的技术问题是如何提高点云数据拼接的准确性。
为解决上述技术问题,本发明实施例提供一种点云数据的拼接方法,点云数据的拼接方法包括:
确定多组点云数据中每一组点云数据与指定点云数据的相对姿态信息,并根据所述相对姿态信息调整所述点云数据,使得调整后的每一组点云数据所处坐标系与指定点云数据所处坐标系一致,以完成所述多组点云数据的拼接;对于调整后的至少一部分点云数据,通过对不同的点云数据渲染后的图像进行比较得到比较结果;根据所述比较结果确定所述多组点云数据的拼接是否正确。
可选的,所述对于调整后的至少一部分点云数据,通过比较不同的点云数据渲染后的图像得到比较结果包括:对于调整后的至少一部分点云数据,确定需要比较的每两组点云数据;对需要比较的每两组点云数据分别进行渲染,以分别得到第一全景图和第二全景图;确定所述第一全景图和所述第二全景图的相同区域;计算所述第一全景图和第二全景图在相同区域中每一像素点的像素值误差;根据所述相同区域中所有像素点的像素值误差计算得到误差总值,并将所述误差总值与设定阈值相比较,以得到所述比较结果。
可选的,所述根据所述比较结果确定所述多组点云数据的拼接是否正确包括:如果所述比较结果为所述误差总值小于所述设定阈值,则两组点云数据的拼接正确,否则,所述两组点云数据的拼接错误;如果任意两组点云数据均拼接正确,则所述多组点云数据的拼接正确,否则所述多组点云数据的拼接错误。
可选的,所述拼接方法还包括:如果所述多组点云数据的拼接错误,则发送提示信息。
可选的,所述确定多组点云数据中每一组点云数据与指定点云数据的相对姿态信息,并根据所述相对姿态信息调整所述点云数据包括:依次确定所述多组点云数据中每一组点云数据与新的点云集合的相对姿态信息,并根据所述相对姿态信息调整所述点云数据,每次计算并调整后,将调整后的点云数据加入所述新的点云集合,直至遍历完成所述多组点云数据,所述新的点云集合初始时包括所述指定点云数据。
可选的,所述点云数据的相对姿态信息是基于用户对所述点云数据渲染后的图像的拖拽操作确定的。
可选的,所述点云数据的相对姿态信息是通过特征点的计算和匹配确定的。
可选的,所述特征点为SHOT。
可选的,所述相对姿态信息包括所述点云数据与所述指定点云数据的相对旋转信息和相对平移信息。
为解决上述技术问题,本发明实施例还公开了一种点云数据的拼接装置,点云数据的拼接装置包括:
调整模块,适于确定多组点云数据中每一组点云数据与指定点云数据的相对姿态信息,并根据所述相对姿态信息调整所述点云数据,使得调整后的每一组点云数据所处坐标系与指定点云数据所处坐标系一致,以完成所述多组点云数据的拼接;比较模块,适于对于调整后的至少一部分点云数据,通过对不同的点云数据渲染后的图像进行比较得到比较结果;确定模块,适于根据所述比较结果确定所述多组点云数据的拼接是否正确。
可选的,所述比较模块包括:点云数据确定单元,适于对于调整后的至少一部分点云数据,确定需要比较的每两组点云数据;渲染单元,适于对需要比较的每两组点云数据分别进行渲染,以分别得到第一全景图和第二全景图;相同区域确定单元,适于确定所述第一全景图和所述第二全景图的相同区域;计算单元,适于计算所述第一全景图和第二全景图在相同区域中每一像素点的像素值误差;比较单元,适于根据所述相同区域中所有像素点的像素值误差计算得到误差总值,并将所述误差总值与设定阈值相比较,以得到所述比较结果。
可选的,所述确定模块包括:第一确定单元,适于在所述比较结果为所述误差总值小于所述设定阈值时,确定两组点云数据的拼接正确,否则,所述两组点云数据的拼接错误;第二确定单元,适于在任意两组点云数据均拼接正确时,确定所述多组点云数据的拼接正确,否则所述多组点云数据的拼接错误。
可选的,所述拼接装置还包括:提示模块,适于在如果所述多组点云数据的拼接错误时,发送提示信息。
可选的,所述调整模块包括:调整单元,适于依次确定所述多组点云数据中每一组点云数据与新的点云集合的相对姿态信息,并根据所述相对姿态信息调整所述点云数据,每次计算并调整后,将调整后的点云数据加入所述新的点云集合,直至遍历完成所述多组点云数据,所述新的点云集合初始时包括所述指定点云数据。
可选的,所述点云数据的相对姿态信息是基于用户对所述点云数据渲染后的图像的拖拽操作确定的。
可选的,所述点云数据的相对姿态信息是通过特征点的计算和匹配确定的。
可选的,所述特征点为SHOT。
可选的,所述相对姿态信息包括所述点云数据与所述指定点云数据的相对旋转信息和相对平移信息。
为解决上述技术问题,本发明实施例还公开了一种终端,所述终端包括所述点云数据的拼接装置。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
本发明技术方案通过确定多组点云数据中每一组点云数据与指定点云数据的相对姿态信息,并根据所述相对姿态信息调整所述点云数据,使得调整后的每一组点云数据所处坐标系与指定点云数据所处坐标系一致,以完成所述多组点云数据的拼接;对于调整后的至少一部分点云数据,通过对不同的点云数据渲染后的图像进行比较得到比较结果;根据所述比较结果确定所述多组点云数据的拼接是否正确。本发明技术方案在将多组点云数据拼接完成后,还利用调整后的至少一部分点云数据渲染后的图像进行比较,以验证多组点云数据的拼接是否正确;通过对调整后的至少一部分点云数据进行比较,可以在拼接错误时及时发现错误,从而进行相应的调整,进而提高点云数据拼接的准确性。同时,由于点云数据的数据量大,因此利用不同的点云数据渲染后的图像进行比较,可以减小比较时的计算量。
进一步,对于调整后的至少一部分点云数据,通过比较不同的点云数据渲染后的图像得到比较结果包括:对于调整后的至少一部分点云数据,确定需要比较的每两组点云数据;对需要比较的每两组点云数据分别进行渲染,以分别得到第一全景图和第二全景图;确定所述第一全景图和所述第二全景图的相同区域;计算所述第一全景图和第二全景图在相同区域中每一像素点的像素值误差;根据所述相同区域中所有像素点的像素值误差计算得到误差总值,并将所述误差总值与设定阈值相比较,以得到所述比较结果。本发明实施例在确定比较结果时,首先确定需要比较的每两组点云数据,然后利用渲染得到第一全景图和第二全景图在相同区域中每一像素点的像素值误差得到误差总值,并与设定阈值进行比较,进而得到每两组点云数据的比较结果;通过每两组渲染图像在相同区域的像素值误差作为比较结果,来判断每两组点云数据是否拼接正确,可以保证拼接的准确性。
进一步,所述点云数据的相对姿态信息是基于用户对所述点云数据渲染后的图像的拖拽操作确定的。本发明实施例通过用户对所述点云数据渲染后的图像的拖拽操作确定点云数据的相对姿态信息,可以避免在纹理不丰富的应用场景中无法完成点云数据的拼接的情况,从而扩大点云数据拼接的应用场景。
附图说明
图1是本发明实施例一种点云数据的拼接方法的流程图;
图2是本发明实施例一种点云数据的拼接装置的结构示意图。
具体实施方式
如背景技术中所述,现有技术中用户在两组不同的点云中点击标注出物理世界中相同的点,是一个非常麻烦的过程,普通用户很难操作,尤其是在移动端,例如手机、平板电脑;且通常需要三对点才可以计算出相对姿态,使得用户操作时间长,拼接准确性低,体验差。且在采用全自动拼接时,如果纹理欠缺,则会一直提示拼接失败,尤其是纹理欠缺的应用场景,例如未装修的室内,全自动拼接根本没有办法使用,影响用户体验。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
图1是本发明实施例一种点云数据的拼接方法的流程图。
图1所示的点云数据的拼接方法可以包括以下步骤:
步骤S101:确定多组点云数据中每一组点云数据与指定点云数据的相对姿态信息,并根据所述相对姿态信息调整所述点云数据,使得调整后的每一组点云数据所处坐标系与指定点云数据所处坐标系一致,以完成所述多组点云数据的拼接;
步骤S102:对于调整后的至少一部分点云数据,通过对不同的点云数据渲染后的图像进行比较得到比较结果;
步骤S103:根据所述比较结果确定所述多组点云数据的拼接是否正确。
本实施例中,点云数据可以是3D点云数据。每组点云数据可以是单点的集合,每一单点包含空间坐标和彩色,或空间坐标和灰度信息的数据。例如,单次扫描得到的3D点云数据具备360度横向视角和上下160度纵向视角,具备三维坐标信息和彩色信息。
本实施例中,所述相对姿态信息包括所述点云数据与所述指定点云数据的相对旋转信息和相对平移信息。具体而言,相对姿态信息可以包括相对坐标和旋转信息。例如,相对姿态信息可以用一个4×4矩阵来表示,左上角的3×3矩阵表示旋转信息,右上角3×1表示平移信息。
具体实施中,在步骤S101中,通过确定的每一组点云数据的相对姿态信息调整所述点云数据,使得调整后的每一组点云数据所处坐标系与指定点云数据所处坐标系一致。换句话说,利用每一组点云数据的相对姿态信息调整该点云数据的姿态,该点云数据的最终姿态与指定点云数据的姿态处于同一坐标系。具体而言,相对姿态信息可以是计算得到的;也可以是预先获取得到的。
具体地,对每一组点云数据的调整可以是单独计算该组点云数据与指定点云数据的相对姿态信息,然后进行调整。
可以理解的是,指定点云数据可以包括在多组点云数据中;也可以不包括在多组点云数据中。例如,可以从多组点云数据中选定一组作为指定点云数据,则在步骤S101中,确定剩余点云数据与指定点云数据的相对姿态信息。
具体实施中,还可以对调整后的每一组点云数据进行进一步的调整,以得到更加精确的姿态。具体而言,可以采用迭代最近点(iterative closest point,ICP)算法对调整后的每一组点云数据进行进一步的调整。
具体实施中,在步骤S102中,对调整后的至少一部分点云数据进行渲染,得到至少一部分点云数据渲染后的图像,利用不同的点云数据渲染后的图像进行比较,得到比较结果。具体而言,如果调整后的不同的点云数据拼接正确,则调整后的不同的点云数据渲染后的图像在纹理或像素值上是一致的,则比较结果可以表示不同的点云数据渲染后的图像在纹理或像素值上是否一致。更具体地,可以对调整后的多组点云数据中的一部分进行比较,也可以对调整后的所有多组点云数据进行比较。本实施例并非对调整后的至少一部分点云数据直接进行比较,而是利用至少一部分点云数据渲染后的图像进行比较,来判断点云数据的拼接是否正确,可以减小比较时的计算量。
具体实施中,在步骤S103中,根据所述比较结果确定所述多组点云数据的拼接是否正确。也就是说,通过不同的点云数据的至少一个比较结果,来确定多组点云数据的拼接是否正确。
具体地,如果存在一个比较结果表示不同的点云数据拼接错误,则多组点云数据的拼接错误;否则,至少一个比较结果全部表示不同的点云数据拼接正确,则多组点云数据的拼接正确。
本发明实施例在将多组点云数据拼接完成后,还利用调整后的至少一部分点云数据渲染后的图像进行比较,以验证多组点云数据的拼接是否正确;通过对调整后的至少一部分点云数据进行比较,可以在拼接错误时及时发现错误,从而进行相应的调整,进而提高点云数据拼接的准确性。
优选地,步骤S102可以包括以下步骤:对于调整后的至少一部分点云数据,确定需要比较的每两组点云数据;对需要比较的每两组点云数据分别进行渲染,以分别得到第一全景图和第二全景图;确定所述第一全景图和所述第二全景图的相同区域;计算所述第一全景图和第二全景图在相同区域中每一像素点的像素值误差;根据所述相同区域中所有像素点的像素值误差计算得到误差总值,并将所述误差总值与设定阈值相比较,以得到所述比较结果。
具体而言,需要比较的点云数据是调整后的至少一部分点云数据。在比较时,两两进行比较,也就是对需要比较的每两组点云数据分别进行渲染,以得到第一全景图和第二全景图。通常而言,两次不同的扫描得到的点云数据需要观测相同的物理空间数据,因此可以确定所述第一全景图和所述第二全景图的相同区域。如果第一全景图和所述第二全景图在相同区域像素值误差在一定范围内(例如小于设定阈值),则表示第一全景图和第二全景图拼接是正确的,那么对应的每两组点云数据的拼接也是正确的。
可以理解的是,相同区域像素点的像素值误差可以是像素点的RGB值差值,也可以是像素点的灰度值差值。本领域技术人员应当理解的是,如果像素点具备RGB信息,则可以采用R值差值、G值差值和B值差值的均值作为该像素点的像素值误差。
进一步地,步骤S103可以包括以下步骤:如果所述比较结果为所述误差总值小于所述设定阈值,则两组点云数据的拼接正确,否则,所述两组点云数据的拼接错误;如果任意两组点云数据均拼接正确,则所述多组点云数据的拼接正确,否则所述多组点云数据的拼接错误。
进一步地,图1所示的点云数据的拼接方法还可以包括以下步骤:如果所述多组点云数据的拼接错误,则发送提示信息。换言之,在多组点云数据拼接出现错误时,可以给出提示信息,以便用户及时发现问题并进行调整;避免了现有技术中拼接失败时反复计算进入死循环的问题。
优选地,在步骤S101中,依次确定所述多组点云数据中每一组点云数据与新的点云集合的相对姿态信息,并根据所述相对姿态信息调整所述点云数据,每次计算并调整后,将调整后的点云数据加入所述新的点云集合,直至遍历完成所述多组点云数据,所述新的点云集合初始时包括所述指定点云数据。本实施例中,在每次调整完点云数据后,加入新的点云集合,则下次点云数据的调整是基于新的点云集合来做的;对每一组点云数据的调整基于新的点云集合来做,可以在一定程度上提高对该组点云数据姿态调整的准确性。
具体而言,由于调整后的新的点云集合与指定点云数据所处坐标系一致,因此点云数据与新的点云集合的相对姿态信息,以及点云数据与所述指定点云数据的相对姿态信息是一致的。
优选地,所述点云数据的相对姿态信息是基于用户对所述点云数据渲染后的图像的拖拽操作确定的。具体而言,所述拖拽操作可以是用户对图像的旋转或平移操作,那么通过旋转或平移操作的幅度可以确定相对坐标和旋转信息,也就可以确定相对姿态信息。具体地,在3D点云数据缺少纹理的应用场景中,例如未装修的室内,大量点云数据无法及时处理,而使用渲染后图像让用户去拖拽操作来匹配,可以确定相对姿态信息,进而得到调整后的初始姿态。
优选地,所述点云数据的相对姿态信息是通过特征点的计算和匹配确定的。所述特征点可以为方向直方图的签名(Signature of Histograms of Orientations,SHOT)特征点,也就是局部曲面直方图的唯一签名描述(Unique Signatures of Histograms forLocal Surface Description,SHOT),例如SHOT1344。具体而言,在拼接二维图片中常用的特征点,例如SIFT,不容易扩展到三维点云数据;同时计算速度很慢;而对于三维数据来讲,其描述性很差。在采用SHOT特征点进行计算和匹配时,通过提取三维特征点SHOT,实现两次扫描数据的特征点匹配,可以通过不少于三组对应特征点计算出姿态信息,调整相应的参数来实现点云数据的拼接。具体地,基于两次扫描得到的点云数据中比较明显的特征点的不变性,例如拐角或纹理丰富的地方,两组不同点云数据都会有相同的观测,通过提取三维特征点SHOT,实现两组点云数据的特征点匹配。
图2是本发明实施例一种点云数据的拼接装置的结构示意图。
图2所示的点云数据的拼接装置20可以包括调整模块201、比较模块202和确定模块203。
其中,调整模块201适于确定多组点云数据中每一组点云数据与指定点云数据的相对姿态信息,并根据所述相对姿态信息调整所述点云数据,使得调整后的每一组点云数据所处坐标系与指定点云数据所处坐标系一致,以完成所述多组点云数据的拼接。
比较模块202适于对于调整后的至少一部分点云数据,通过对不同的点云数据渲染后的图像进行比较得到比较结果。
确定模块203适于根据所述比较结果确定所述多组点云数据的拼接是否正确。
具体实施中,调整模块201通过确定的每一组点云数据的相对姿态信息调整所述点云数据,使得调整后的每一组点云数据所处坐标系与指定点云数据所处坐标系一致。换句话说,利用每一组点云数据的相对姿态信息调整该点云数据的姿态,该点云数据的最终姿态与指定点云数据的姿态处于同一坐标系。具体而言,相对姿态信息可以是计算得到的;也可以是预先获取得到的。具体地,对每一组点云数据的调整可以是单独计算该组点云数据与指定点云数据的相对姿态信息,然后进行调整。
具体实施中,还可以对调整后的每一组点云数据进行进一步的调整,以得到更加精确的姿态。具体而言,可以采用迭代最近点(iterative closest point,ICP)算法对调整后的每一组点云数据进行进一步的调整。
具体实施中,比较模块202对调整后的至少一部分点云数据进行渲染,得到至少一部分点云数据渲染后的图像,利用不同的点云数据渲染后的图像进行比较,得到比较结果。具体而言,如果调整后的不同的点云数据拼接正确,则调整后的不同的点云数据渲染后的图像在纹理或像素值上是一致的,则比较结果可以表示不同的点云数据渲染后的图像在纹理或像素值上是否一致。更具体地,可以对调整后的多组点云数据中的一部分进行比较,也可以对调整后的所有多组点云数据进行比较。本实施例避免对调整后的至少一部分点云数据直接进行比较,而是利用至少一部分点云数据渲染后的图像进行比较,来判断点云数据的拼接是否正确,可以减小比较时的计算量。
具体实施中,确定模块203根据所述比较结果确定所述多组点云数据的拼接是否正确。也就是说,通过不同的点云数据的至少一个比较结果,来确定多组点云数据的拼接是否正确。
具体地,如果存在一个比较结果表示不同的点云数据拼接错误,则多组点云数据的拼接错误;否则,至少一个比较结果全部表示不同的点云数据拼接正确,则多组点云数据的拼接正确。
本发明实施例在将多组点云数据拼接完成后,还利用调整后的至少一部分点云数据渲染后的图像进行比较,以验证多组点云数据的拼接是否正确;通过对调整后的至少一部分点云数据进行比较,可以在拼接错误时及时发现错误,从而进行相应的调整,进而提高点云数据拼接的准确性。
优选地,所述点云数据的相对姿态信息是基于用户对所述点云数据渲染后的图像的拖拽操作确定的。或者,所述点云数据的相对姿态信息是通过特征点的计算和匹配确定的。进一步地,所述特征点可以为SHOT。
具体而言,所述拖拽操作可以是用户对图像的旋转或平移操作,那么通过旋转或平移操作的幅度可以确定相对坐标和旋转信息,也就可以确定相对姿态信息。具体地,在3D点云数据缺少纹理的应用场景中,例如未装修的室内,大量点云数据无法及时处理,而使用渲染后图像让用户去拖拽操作来匹配,可以确定相对姿态信息,进而得到调整后的初始姿态。
优选地,比较模块202可以包括点云数据确定单元2021、渲染单元2022、相同区域确定单元2023、计算单元2024和比较单元2025。
其中,点云数据确定单元2021适于对于调整后的至少一部分点云数据,确定需要比较的每两组点云数据;渲染单元2022适于对需要比较的每两组点云数据分别进行渲染,以分别得到第一全景图和第二全景图;相同区域确定单元2023适于确定所述第一全景图和所述第二全景图的相同区域;计算单元2024适于计算所述第一全景图和第二全景图在相同区域中每一像素点的像素值误差;比较单元2025适于根据所述相同区域中所有像素点的像素值误差计算得到误差总值,并将所述误差总值与设定阈值相比较,以得到所述比较结果。具体而言,需要比较的点云数据是调整后的至少一部分点云数据。在比较时,两两进行比较,也就是对需要比较的每两组点云数据分别进行渲染,以得到第一全景图和第二全景图。通常而言,两次不同的扫描得到的点云数据需要观测相同的物理空间数据,因此可以确定所述第一全景图和所述第二全景图的相同区域。如果第一全景图和所述第二全景图在相同区域像素值误差在一定范围内(例如小于设定阈值),则表示第一全景图和第二全景图拼接是正确的,那么对应的每两组点云数据的拼接也是正确的。
优选地,确定模块203可以包括第一确定单元2031和第二确定单元2032。
其中,第一确定单元2031适于在所述比较结果为所述误差总值小于所述设定阈值时,确定两组点云数据的拼接正确,否则,所述两组点云数据的拼接错误;第二确定单元2032适于在任意两组点云数据均拼接正确时,确定所述多组点云数据的拼接正确,否则所述多组点云数据的拼接错误。
优选地,图2所示的点云数据的拼接装置20可以包括提示模块204,提示模块204适于在如果所述多组点云数据的拼接错误时,发送提示信息。换言之,在多组点云数据拼接出现错误时,可以给出提示信息,以便用户及时发现问题并进行调整;避免了现有技术中拼接失败时反复计算进入死循环的问题。
优选地,调整模块201可以包括调整单元2011,调整单元2011适于依次确定所述多组点云数据中每一组点云数据与新的点云集合的相对姿态信息,并根据所述相对姿态信息调整所述点云数据,每次计算并调整后,将调整后的点云数据加入所述新的点云集合,直至遍历完成所述多组点云数据,所述新的点云集合初始时包括所述指定点云数据。
关于所述点云数据的拼接装置20的工作原理、工作方式的更多内容,可以参照图1中的相关描述,这里不再赘述。
本发明实施例还公开了一种终端,所述终端可以包括图2所示的点云数据的拼接装置20。点云数据的拼接装置20可以内部集成于或外部耦接于所述终端,所述终端包括但不限于计算机、手机、平板电脑等。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于以计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。