点云到点云的最近距离计算系统及方法

文档序号:6615190阅读:385来源:国知局
专利名称:点云到点云的最近距离计算系统及方法
技术领域
本发明涉及一种距离计算系统及方法。
背景技术
近年来,随着计算机硬件性能的提高及价格的降低,其在量测系统中被大量的引入。做 法一般是使用点云获取装置获取物体的点云(即由多个三维离散点组成的点的集合),而后 将点云数据输入计算机,执行相应软件对点云数据进行各种处理,比如最优匹配、碰撞检测 、逆向工程等。
在对点云的各种处理中,经常要进行距离计算,如计算点云到点云的最近距离。传统的 计算最近距离的方法通常是计算一个点云中的所有点与另一个点云中的所有点的距离,从中 找到最近距离。而点云数据一般密度较大,通常有数十万、上百万、甚至上千万,因此,按 照传统的方法计算点云到点云的最近距离需要很大的计算量,导致运算速度缓慢。
因此,需要一种距离计算系统及方法,能够快速方便地计算点云到点云的最近距离。

发明内容
鉴于以上内容,有必要提供一种点云到点云的最近距离计算系统,其可快速地计算杂乱 点云到杂乱点云的最近距离。
鉴于以上内容,还有必要提供一种点云到点云的最近距离计算方法,其可快速地计算杂 乱点云到杂乱点云的最近距离。
一种点云到点云的最近距离计算系统,该系统包括计算机及存储单元。所述计算机包括 :接收模块,用于从所述存储单元中接收点云数据,所述点云数据包括一组移动点云及一组 参考点云;包围盒构造模块,用于为所述的参考点云构造包围盒;选择模块,用于遍历移动 点云中的点,从中选择一个未进行过距离计算的点;及最近距离计算模块,用于根据上述对 参考点云构造的包围盒,寻找距离上述选择的点最近的若干个单元包围盒,通过计算该点与 该若干个单元包围盒中的所有点的距离,得到该点到参考点云的最近距离,以及该最近距离 所对应的参考点云中的最近点。
一种点云到点云的最近距离计算方法,该方法包括(a)接收点云数据,所述点云数 据包括一组移动点云及一组参考点云;(b)为所述参考点云构造包围盒;(C)遍历移动点 云中的点,从中选择一个未进行过距离计算的点;(d)根据上述对参考点云构造的包围盒
,寻找距离上述选择的点最近的若干个单元包围盒,通过计算该点与该若干个单元包围盒中 的所有点的距离,得到该点到参考点云的最近距离,以及该最近距离所对应的参考点云中的 最近点;及重复步骤(c)至(d),直到该移动点云中的所有点都进行过距离计算。
利用本发明所提供的系统及方法,采用了构造包围盒的方法,计算点云到点云的最近距 离,极大地减少了计算量,提高了运行速度。


图l是本发明点云到点云的最近距离计算系统较佳实施例的硬件架构图。 图2是图1中主机的功能模块图。
图3是本发明第一较佳实施例点云到点云的最近距离计算方法的实施流程图。 图4是图3中步骤S 11对参考点云构造包围盒的具体流程图。 图5是图3中步骤S13计算一点到参考点云最近距离的具体流程图。 图6是本发明第二较佳实施例点云到自由曲面最近距离计算方法的实施流程图。 图7是本发明第三较佳实施例自由曲面到自由曲面最近距离计算方法的实施流程图。
具体实施例方式
参阅图1所示,是本发明点云到点云的最近距离计算系统较佳实施例的硬件架构图。该 系统主要包括一台计算机,该计算机包括显示器l、主机2、键盘3及鼠标4。所述主机2连接 有存储单元5。
所述存储单元5可以用于存储多组点云数据以及在计算点云到点云的最近距离时所产生 的各种数据。
所述主机2连接于存储单元5,用于从存储单元5中接收点云数据,并根据接收的点云数 据,计算点云到点云的最近距离。
所述显示器1连接于所述主机2,用于提供用户图形界面,该图形界面能够显示主机2接 收的点云数据所组成的图像,并可以时时显示对点云的处理结果。
所述键盘3及鼠标4连接于主机2,主要用作在计算点云到点云的最近距离时的输入、输 出设备。
如图2所示,是图1所示主机2的功能模块图。所述主机2主要包括接收模块20、包围盒构 造模块21、选择模块22、最近距离计算模块23、存储模块24及判断模块25。本发明所称的模 块是完成一特定功能的计算机程序段,比程序更适合于描述软件在计算机中的执行过程,因 此在本发明以下对软件描述中都以模块描述。
所述接收模块20主要用于从所述存储单元5中接收点云数据。本实施例中,接收模块20
从所述存储单元5中接收两组点云数据,其中一组点云可以称为移动点云,另一组点云可以 称为参考点云。
所述包围盒构造模块21用于为参考点云构造包围盒。为参考点云构造包围盒是为了将参 考点云中的所有点建立起关联。所述包围盒构造模块21通过如下步骤构造包围盒根据参考
点云中各点的三维坐标值,找到该参考点云中坐标最小的点的三维坐标值及坐标最大的点的
三维坐标值;根据上述两组三维坐标值,将其中的X、 Y、 Z坐标值进行组合,得到8组三维坐 标值;以得到的8组三维坐标值为顶点,构造所述参考点云的包围盒;以一个网格间距将上 述包围盒划分为多个单元包围盒;为每个单元包围盒设置标号。
所述选择模块22主要用于遍历移动点云中的点,从中选择一个未进行过距离计算的点。 所述最近距离计算模块23用于根据上述对参考点云构造的包围盒,寻找距离上述选择的 点(下称该点)最近的若干个单元包围盒,通过计算该点与该若干个单元包围盒中的所有 点的距离,得到该点到参考点云的最近距离,以及该最近距离所对应的参考点云中的最近点
所述存储模块24用于存储上述得到的最近距离及最近点。
所述判断模块25主要用于遍历移动点云中的所有点,判断该移动点云中是否还有未进行 过距离计算的点。若有,则所述选择模块22选择移动点云中的下一点。否则,点云到点云的 最近距离计算完毕。
参阅图3所示,是本发明第一较佳实施例点云到点云的最近距离计算方法较佳实施例的 实施流程图。
步骤SIO,接收模块20从存储单元5中接收点云数据。本实施例中,接收模块20从所述存 储单元5中接收两组点云数据,其中一组点云可以称为移动点云,另一组点云可以称为参考 点云。
步骤Sll,包围盒构造模块21为参考点云构造包围盒。为参考点云构造包围盒是为了将 参考点云中的所有点建立起关联。构造包围盒的详细步骤请参阅图4所示。
步骤S12,选择模块22遍历移动点云中的点,从中选择一个未进行过距离计算的点。
步骤S13,最近距离计算模块23根据上述对参考点云构造的包围盒,寻找距离上述选择 的点(下称该点)最近的若干个单元包围盒,通过计算该点与该若干个单元包围盒中的所 有点的距离,得到该点到参考点云的最近距离,以及该最近距离所对应的参考点云中的最近 点。计算最近距离的详细步骤请参阅图5所示。
步骤S14,存储模块24存储上述得到的最近距离及最近点。
步骤S15,判断模块25遍历移动点云中的点,判断该移动点云中是否还有未进行过距离 计算的点。若有,则返回步骤S12,所述选择模块22从移动点云中选择下一个未进行过距离 计算的点。否则,点云到点云的最近距离计算的流程执行完毕。
图4是图3中步骤S 11对参考点云构造包围盒的具体流程图。
步骤S110,所述包围盒构造模块21根据参考点云中各点的三维坐标值,找到该参考点云 中坐标最小的点的三维坐标值(ptMin[O], ptMin[l], ptMin[2])及坐标最大的点的三维坐 标值(ptMax[O], ptMax[l], ptMax[2])。
步骤Slll,所述包围盒构造模块21将上述两组三维坐标值中的X、 Y、 Z坐标值进行组合 ,得到8组三维坐标值,分别为(ptMin[O], ptMin[l], ptMin[2]) 、 (ptMin[O], ptMin[l], ptMax[2]) 、 (ptMin[O], ptMax[l], ptMin[2]) 、 (ptMin[O], ptMax[l], ptMax[2]) 、 (ptMax[O], ptMax[l], ptMax[2]) 、 (ptMax[O], ptMax[l], ptMin[2])、 (ptMax[O], ptMin[l], ptMax[2])及(ptMax[O], ptMin[l], ptMin[2])。
步骤S112,所述包围盒构造模块21以上述8组三维坐标值为顶点,构造所述参考点云的 包围盒。
步骤S113,所述包围盒构造模块21以一个网格间距St印将上述包围盒划分为多个单元包 围盒,该网格间距St印根据用户的需求可以取不同的值,若用户希望每个单元包围盒内的点 多些,则可以将St印的值设置的大一些,否则,若用户希望每个单元包围盒内的点少些,则 可以将St印的值设置的小一些。
步骤S 114,所述包围盒构造模块21为每个单元包围盒设置标号。
参阅图5所示,是图3中步骤S 13计算一点到参考点云最近距离的具体流程图。
步骤S130,所述最近距离计算模块23通过将所选择的点(该点)向参考点云包围盒投影 ,得到距离该点最近的单元包围盒,并计算该点距离该单元包围盒的距离D。
步骤S131,所述最近距离计算模块23以该点为中心,以2 (D+MSt印)为边长,构造一 个立方体区域,使该立方体区域与参考点云包围盒相交,得到一个相交区域。其中,n为构 造立方体区域的次数,此时!1=1; St印为参考点云单元包围盒的边长。
步骤S132,所述最近距离计算模块23得到该相交区域的起始位置与终止位置的单元包围 盒标号,并得到该相交区域的单元包围盒数量。
步骤S133,所述判断模块25遍历该相交区域内的所有单元包围盒,判断该所有单元包围 盒内是否有参考点云中的点。
若该所有单元包围盒内没有参考点云中的点,则返回步骤S131,所述最近距离计算模块
23以该点为中心,以2 (D+MSt印)为边长,构造一个立方体区域,得到一个相交区域。此 时,n=2。若相交区域内的单元包围盒中还是没有参考点云的点,则继续构造立方体区域, 其中的n依次递增。
若单元包围盒内有参考点云的点,则在步骤S134中,所述最近距离计算模块23计算该所 有单元包围盒内的所有点到该点的距离,并得到其中的最近距离d。 步骤S135,判断模块25判断是否d〉 (D+n伞St印)。
若d《(D+MSt印),则步骤S142中,确定该距离d为该点到参考点云的最近距离。 否则,若d〉 (D+MSt印),该距离d不一定是该点到参考点云的最近距离,则在步骤 S136中,存储模块24暂存该距离d,记作cUn。
执行上述描述的步骤S 131及步骤S 132,得到一个更大的相交区域。
步骤S137,所述最近距离计算模块23将本次得到的相交区域减去上次得到的相交区域。 步骤S138,判断模块25遍历上述相减后得到的相交区域中的所有单元包围盒,判断该所
有单元包围盒内是否存在参考点云的点。
若没有参考点云的点,则重复执行上述步骤S131、步骤S132、步骤S137及步骤S138。 若在步骤S138中,判断该单元包围盒内存在参考点云的点,则步骤S139,所述最近距离
计算模块23计算该部分单元包围盒内的所有点到该点的距离,并在该些距离值与上述的C^in
的值之间寻找一个最近距离d'。
步骤S140,判断模块25判断是否d' > (D+n伞St印)。
若d' > (D+MSt印),该距离d'不一定是该点到参考点云的最近距离,则在步骤S141 中,存储模块24暂存该距离d',取代上述的d记作cUn。返回重复执行步骤S131、步骤S132 、步骤S137、步骤S138、步骤S139及步骤S140。
否则,若d'《(D+MSt印),则步骤S142中,确定该距离d'为该点到参考点云的最近 距离。
步骤S143中,所述最近距离计算模块23得到上述最近距离所对应的参考点云中的点。 本发明所提供的点云到点云的最近距离计算系统及方法,采用了为其中一组点云构造包 围盒的方法,计算另一组点云的点到该点云的最近距离及对应的最近点,极大地减少了计算 量。进一步的,利用该方法的思想,也可以计算点云到自由曲线、点云到自由曲面,及自由 曲面到自由曲面的最近距离。以下,仅举实施例对点云到自由曲面及自由曲面到自由曲面的 最近距离计算方法进行说明。
参阅图6所示,是本发明第二较佳实施例点云到自由曲面最近距离计算方法的实施流程
图。
步骤S20,接收一组点云数据及一个自由曲面。其中,该组点云称为移动点云。 步骤S21,将上述自由曲面进行三角形网格化。所述将自由曲面三角形网格化是将自由 曲面划分成多个三角形。
步骤S22,将该自由曲面中所有三角形的顶点组成的一组点云,称为参考点云。 步骤S23,对该参考点云构造包围盒。详细步骤同图4所示。 步骤S24,遍历所述的移动点云,选择其中一个点。
步骤S25,根据上述对参考点云构造的包围盒,寻找距离上述选择的点最近的若干个单 元包围盒,通过计算该点与该若干个单元包围盒中的所有点的距离,得到该点到参考点云的 最近距离,以及该最近距离所对应的参考点云中的最近点p。详细步骤同图5所示。
步骤S26,计算该选择的点到以点p为顶点的若干三角形的距离,得到其中的最近距离。
步骤S27,保存该最近距离。
步骤S28,遍历上述移动点云,判断该移动点云中是否还有点没有被选择过。 若有,则返回步骤S23。否则,该流程结束。
参阅图7所示,是本发明第三较佳实施例自由曲面到自由曲面最近距离计算方法的实施 流程图。
步骤S30,接收两个自由曲面。
步骤S31,将上述两个自由曲面进行三角形网格化。
步骤S32,将其中一个自由曲面中所有三角形的中心点组成的一组点云,称为移动点云 ;将另一个自由曲面中的所有三角形顶点组成一组点云,称为参考点云。 步骤S33,对该参考点云构造包围盒。详细步骤同图4所示。 步骤S34,遍历所述的移动点云,选择其中一个点PO。
步骤S35,根据上述对参考点云构造的包围盒,寻找距离点PO最近的若干个单元包围盒 ,通过计算点PO与该若干个单元包围盒中的所有点的距离,得到点PO到参考点云的最近距离 ,以及该最近距离所对应的参考点云中的最近点P。详细步骤同图5所示。
步骤S36,计算点PO到以点p为顶点的若干三角形的距离,得到其中的最近距离。
步骤S37,得到该最近距离所对应的以点p为顶点的三角形。
步骤S38,计算点PO所在的三角形与上述得到的三角形的距离d。
步骤S39,保存该距离d。
步骤S40,遍历上述移动点云,判断该移动点云中是否还有点没有被选择过。
若有,则返回步骤S34。否则,步骤S41中,根据上述计算出的最近距离,计算出该两个 自由曲面的平均距离,即该两个自由曲面的最近距离。
最后所应说明的是,以上几个实施例仅用以说明本发明的技术方案而非限制,尽管参照 以上较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明 的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
权利要求
权利要求1一种点云到点云的最近距离计算系统,包括计算机及存储单元,其特征在于,所述计算机包括接收模块,用于从所述存储单元中接收点云数据,所述点云数据包括一组移动点云及一组参考点云;包围盒构造模块,用于为所述的参考点云构造包围盒;选择模块,用于遍历移动点云中的点,从中选择一个未进行过距离计算的点;及最近距离计算模块,用于根据上述对参考点云构造的包围盒,寻找距离上述选择的点最近的若干个单元包围盒,通过计算该点与该若干个单元包围盒中的所有点的距离,得到该点到参考点云的最近距离,以及该最近距离所对应的参考点云中的最近点。
2.如权利要求l所述的点云到点云的最近距离计算系统,其特征在于 ,该计算机还包括存储模块,用于存储得到的最近距离及最近点;及判断模块,用于遍历移动点云中的所有点,判断该移动点云中是否还有未进行过距离 计算的点。
3.如权利要求l所述的点云到点云的最近距离计算系统,其特征在于 ,所述包围盒构造模块构造参考点云的包围盒是依据如下步骤根据参考点云中各点的三维 坐标值,找到该参考点云中坐标最小的点的三维坐标值及坐标最大的点的三维坐标值;根据 上述两组三维坐标值,将其中的X、 Y、 Z坐标值进行组合,得到8组三维坐标值;以得到的8 组三维坐标值为顶点,构造所述参考点云的包围盒;以一个网格间距将上述包围盒划分为多 个单元包围盒;为每个单元包围盒设置标号。
4. 一种点云到点云的最近距离计算方法,其特征在于,该方法包括(a) 接收点云数据,所述点云数据包括一组移动点云及一组参考点云;(b) 为所述参考点云构造包围盒; (c) 遍历移动点云中的点,从中选择一个未进行过距离计算的点;(d) 根据上述对参考点云构造的包围盒,寻找距离上述选择的点最近的若干个单元包 围盒,通过计算该点与该若干个单元包围盒中的所有点的距离,得到该点到参考点云的最近 距离,以及该最近距离所对应的参考点云中的最近点;及重复步骤(c)至(d),直到该移动点云中的所有点都进行过距离计算。
5.如权利要求4所述的点云到点云的最近距离计算方法,其特征在于 ,步骤(b)包括(bl)根据参考点云中各点的三维坐标值,找到该参考点云中坐标最小的点的三维坐 标值(ptMin[O], ptMin[l], ptMin[2])及坐标最大的点的三维坐标值(ptMax[O], ptMax[l], ptMax[2]);(b2)将上述两组三维坐标值中的X、 Y、 Z坐标值进行组合,得到8组三维坐标值,分 另J为(ptMin[O], ptMin[l], ptMin[2]) 、 (ptMin[O], ptMin[l], ptMaxl[2])、( ptMin[O], ptMax[l], ptMin[2]) 、 (ptMin[O], ptMax[l], ptMax[2]) 、 (ptMax[O], ptMax[l], ptMax[2]) 、 (ptMax[O], ptMax[l], ptMin[2]) 、 (ptMax[O], ptMin[l], ptMax[2])及(ptMax[O], ptMin[l], ptMin[2]);(b3)以上述8组三维坐标值为顶点,构造所述参考点云的包围盒;(b4)以一个网格间距将上述包围盒划分为多个单元包围盒;及(b5)为每个单元包围盒设置标号。
6.如权利要求5所述的点云到点云的最近距离计算方法,其特征在于 ,步骤(d)包括(dl)通过将上述选择的点向参考点云包围盒投影,得到距离该点最近的单元包围盒,并计算该选择的点距离该最近单元包围盒的距离D;(d2)以该选择的点为中心,以2 (D+MSt印)为边长,构造一个立方体区域,使该立 方体区域与参考点云包围盒相交,得到一个相交区域;(d3)得到该相交区域的起始位置与终止位置的单元包围盒标号,并得到该相交区域 的单元包围盒数量;(d4)计算该相交区域的所有单元包围盒内的所有点到上述选择的点的距离,并得到 其中的最近距离d;(d5)判断是否d〉 (D+MSt印),其中,n为构造立方体区域的次数,St印为单元包围 盒的边长; (d6)若d《(D+MSt印),则该距离d为上述选择的点到参考点云的最近距离;(d7)否则,若d〉 (D+n伞St印),则暂存该距离d,记作dmin; (d8)执行步骤(d2)及(d3),得到一个相交区域;(d9)将此次得到的相交区域减去上次得到相交区域,并计算该相减后得到相交区域 内所有单元包围盒内的所有点与上述选择的点的距离;(d10)在上述得到的距离及dmin的值之间寻找一个最近距离d'; (dll)判断是否d' > (D+IPKSt印);(dl2)若d' > (D+MSt印),则暂存该距离d',取代上述的d记作dmin,重复执行步 骤(d8)到步骤(dll);(dl3)否则,若d'《(D+MSt印),则该距离d'为该点到参考点云的最近距离;及 (dl4)得到上述最近距离所对应的参考点云中的最近点。
7. 一种点云到自由曲面最近距离计算方法,其特征在于,该方法包括(a) 接收一组点云数据及一个自由曲面,其中,该点云称为移动点云;(b) 上述自由曲面进行三角形网格化;(c) 将该自由曲面中所有三角形的顶点组成的一组点云,并将该点云称为参考点云;(d) 对该参考点云构造包围盒;(e) 遍历所述的移动点云,选择其中一个点;(f) 根据上述对参考点云构造的包围盒,寻找距离上述选择的点最近的若干个单元包 围盒,通过计算该点与该若干个单元包围盒中的所有点的距离,得到该点到参考点云的最近 距离,以及该最近距离所对应的参考点云中的最近点P;(g) 计算上述选择的点到以点P为顶点的若干三角形的距离,得到其中的最近距离;及重复步骤(e)到(g),直至该移动点云中的所有点都被选择过。
8. 一种自由曲面到自由曲面最近距离计算方法,其特征在于,该方法包括(A) 接收两个自由曲面;(B) 将上述两个自由曲面进行三角形网格化;(C) 将其中一个自由曲面中所有三角形的中心点组成的一组点云,称为移动点云,将 另一个自由曲面中的所有三角形顶点组成一组点云,称为参考点云; (D) 对所述参考点云构造包围盒;(E) 遍历所述的移动点云,选择其中一个点PO;(F) 根据上述对参考点云构造的包围盒,寻找距离点PO最近的若干个单元包围盒,通 过计算点PO与该若干个单元包围盒中的所有点的距离,得到点PO到参考点云的最近距离,以 及该最近距离所对应的参考点云中的最近点P;(G) 计算点PO到以点p为顶点的若干三角形的距离,得到其中的最近距离;(H) 得到该最近距离所对应的以点p为顶点的三角形;(I) 计算点PO所在的三角形与上述得到的三角形的距离d; 重复步骤(E)到(I),直到该移动点云中的所有点都被选择过;及(J)根据上述计算出的最近距离,计算出该两个自由曲面的平均距离,即该两个自由 曲面的最近距离。
全文摘要
本发明提供一种点云到点云的最近距离计算系统,包括计算机及存储单元。所述计算机包括接收模块,用于从所述存储单元中接收点云数据,所述点云数据包括一组移动点云及一组参考点云;包围盒构造模块,用于为所述的参考点云构造包围盒;选择模块,用于遍历移动点云中的点,从中选择一个未进行过距离计算的点;及最近距离计算模块,用于根据上述对参考点云构造的包围盒,寻找距离上述选择的点最近的若干个单元包围盒,通过计算该点与该若干个单元包围盒中的所有点的距离,得到该点到参考点云的最近距离,以及该最近距离所对应的参考点云中的最近点。本发明还提供一种点云到点云的最近距离计算方法。本发明能够快速方便地计算点云到点云的最近距离。
文档编号G06T7/00GK101377851SQ20071020151
公开日2009年3月4日 申请日期2007年8月29日 优先权日2007年8月29日
发明者吴新元, 张旨光, 华 黄 申请人:鸿富锦精密工业(深圳)有限公司;鸿海精密工业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1