CN104183021A - 一种利用可移动空间网格精简点云数据的方法 - Google Patents
一种利用可移动空间网格精简点云数据的方法 Download PDFInfo
- Publication number
- CN104183021A CN104183021A CN201410326078.2A CN201410326078A CN104183021A CN 104183021 A CN104183021 A CN 104183021A CN 201410326078 A CN201410326078 A CN 201410326078A CN 104183021 A CN104183021 A CN 104183021A
- Authority
- CN
- China
- Prior art keywords
- point
- cloud data
- value
- space grid
- space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种利用可移动空间网格精简点云数据的方法,包括:三维扫描仪采集被测对象的点云数据,创建点云数据的第一外包盒,该第一包围盒为点云数据的最小外包立方体或长方体;给定二次空间网格在X轴、Y轴和Z轴方向上的边长值,在第一外包盒中创建多个二次空间网格,将点云数据中的所有点存储到多个二次空间网格中,筛选出每个二次空间网格中权重值最大的点,滤除其他点;平移第一外包盒,得到第二外包盒;在第二外包盒中创建多个三次空间网格,三次空间网格的大小与形状和二次空间网格一致,将第二外包盒中的点存储到多个三次空间网格中,筛选出每个三次空间网格中权重值最大的点,滤除其他点。本发明在精简点云数据的效果和时间效率上有很大的优化和提高。
Description
技术领域
本发明涉及点云数据精简技术,特别涉及一种利用可移动空间网格精简点云数据的方法。
背景技术
近年来,三维激光技术在测绘领域的应用越来越广泛。然而由于通过扫描获取的点云数据具有冗余量大、存在误差以及规则性弱等特点,直接处理原始点云将会耗费大量的时间和资源,因此一般在进行点云数据的后处理之前都要进行预处理工作,包括点云去噪、点云精简、数据分块等等。点云精简是最为基本且非常重要的一步,同时也是逆向工程目前的研究热点之一。
点云精简最初的一些方法只是简单基于点之间距离、曲率、法向等原则,而目前点云精简的方法主要集中在以下几种典型方法:包围盒法、基于几何图像精简法、基于曲率精简法、基于法向精度精简法。
国外很多学者早就在点云精简这一领域探索出了很多解决方案。如Filip等人采用了包围盒法来精简点云数据,速度非常快,但只能用于处理均匀分布的点云;Alexa等人依据点云对最小二乘移动曲面的影响程度这一权重来进行点云的精简,且通过重采样保证了点云的密度,但其算法过程较为复杂;Chen.Y.H提出了先对点云进行三角网格化,通过精简三角网格数量来减少点云数量的方法,但往往构建三角网过程较繁杂。
国内学者针对点云精简也有很多研究,张丽艳在用Riemann图建立散乱测点间的k邻近的基础上,提出了简化后数据集中点的个数、数据集中点的密度阈值及删除一点引起的法向误差的阈值这三种简化准则进行点云的精简,三种算法效率较高且精简效果较好,但是较算法中的邻近点个数K难以确定合适值;Xiao提出了一种非均匀点云的精简算法,主要依据各点与KD-tree包围球中心法向内积的阈值进行点云的精简,算法达到的精简效果 很好,但是KD-tree包围球的半径难以计算,且法向内积计算量较大;王仁方等提出了基于几何图像的精简算法和随机采样方法,精简效率非常高,但容易丢失点云特征;倪小军提出了一种特征保留的点云自适应的精简算法,将点云划分为特征点和非特征点,保留特征点,而非特征点则通过计算自适应精简距离阈值进行精简处理,算法速度较快,能够较好地保留点云中的几何特征,但算法较依赖于点集的权重系数和初始设定的距离阈值。
发明内容
本发明针对目前点云数据精简中存在的不足,设计开发了一种利用可移动空间网格精简点云数据的方法。
本发明提供的技术方案为:
一种利用可移动空间网格精简点云数据的方法,包括:
步骤1、三维扫描仪采集被测对象的点云数据,创建点云数据的第一外包盒,该第一包围盒为点云数据的最小外包立方体或长方体;
步骤2、给定二次空间网格在X轴、Y轴和Z轴方向上的边长值,在第一外包盒中创建多个二次空间网格,将点云数据中的所有点存储到多个二次空间网格中,筛选出每个二次空间网格中权重值最大的点,滤除其他点;
步骤3、平移第一外包盒,得到第二外包盒,且第二包围盒包围所有步骤2中筛选出的点;
步骤4、在第二外包盒中创建多个三次空间网格,三次空间网格的大小与形状和二次空间网格一致,将第二外包盒中的点存储到多个三次空间网格中,筛选出每个三次空间网格中权重值最大的点,滤除其他点。
优选的是,所述的利用可移动空间网格精简点云数据的方法中,所述步骤1具体为:
三维扫描仪采集被测对象的点云数据,在点云数据中查找最大三维坐标值的点,若存在,则取该点作为三维坐标值最大的点,若不存在,则根据点云数据中的点在X轴上的最大坐标值、在Y轴上的最大坐标值和在Z轴上的最大坐标值,创建一个虚拟的三维坐标值最大的点;在点云数据中查找最小三维坐标值的点,若存在,则取该点作为三维坐标值最小的点,若不存在, 则根据点云数据中的点在X轴上的最小坐标值、在Y轴上的最小坐标值和在Z轴上的最小坐标值,创建一个虚拟的三维坐标值最小的点;依据最大三维坐标值的点和最小三维坐标值的点,创建第一外包盒。
优选的是,所述的利用可移动空间网格精简点云数据的方法中,所述步骤2具体为:
S1、根据三维扫描仪的分辨率,结合工程实际需求,人工设定一次空间网格和二次空间网格在X轴、Y轴和Z轴方向上的边长值,根据公式(1)分别计算出第一外包盒在Y轴方向和Z轴方向上包含一次空间网格的个数,
其中,一次空间网格和二次空间网格形状为立方体或长方体,
一次空间网格的边长是二次空间网格的边长的N倍,N为大于1的整数,为了确保划分的二次空间网格均在一次空间网格中;因为计算一次空间网格在Y轴和Z轴方向上的个数时,最后的个数取整,为了保证点云数据中的所有点均包含在一次空间网格中,所以对一次空间网格在X轴、Y轴和Z轴方向的个数上均多加一个一次空间网格;
B为第一外包盒在Y轴方向上的边长值,Δdy为一次空间网格在Y轴方向上的边长值,count2是一次空间网格在Y轴方向上的个数;C为第一外包盒在Z轴方向上的边长值,Δdz为一次空间网格在Z轴方向上的边长值,count3是一次空间网格在Z轴方向上的个数,为取整符号;
S2、定义一次XYZ编码值表示点云数据中的一个点在第一包围盒中的空间位置,根据公式(2)确定点云数据中每个点的一次XYZ编码值,根据公式(3)对点云数据中的所有点编码,每个点获得一个第一编码值;
其中,(II、JJ、KK)为点云数据中的一个点的一次XYZ编码值,(x,y,z)为点云数据中的一个点的三维坐标值,(xo,yo,zo)为点云数据中三维坐标值最小的点的坐标值,Δdx为一次空间网格在X轴方向上的边长值,code1为点的第一编码值;此处利用公式(3)对点云数据中的点进行线性编码,便于步骤S3中使用二分查找法,将点云数据中的每个点存放到相应的一次空 间网格中,为取整符号;
code1=II×count2×count3+JJ×count3+KK (3);
S3、点云数据中任选一个点,利用二分查找法,在第一包围盒中查找是否存在具有与该点第一编码值相同的编码值的一次空间网格,若存在,则将该点存储到具有与其第一编码值相同的编码值的一次空间网格,若不存在,则创建一个具有与该点第一编码值相同的编码值的一次空间网格,(具体为:根据公式(2)和(3)反推算出该点的一次XYZ编码值,根据该一次XYZ编码值提供的空间位置的信息,创建一个新一次空间网格;)并将该点存储到新创建的一次空间网格中;对点云数据中所有点执行上述过程,直至点云数据中的所有点均存储到相应的一次空间网格中;这里根据点云数据中点的第一编码值创建一次空间网格,可以避免出现空网格,有效的减少了运算;
S4、定义二次XYZ编码值表示二次空间网格的空间位置,根据公式(4)确定点云数据中每个点的二次XYZ编码值,根据公式(5)对点云数据中的所有点的编码,每个点获得一个第二编码值,
code2=II′×a×b+JJ′×b+KK′ (5);
其中,(II′、JJ′、KK′)为点云数据中的一个点的二次XYZ编码值,(x′,y′,z′)为点云数据中的一个点的三维坐标值,(xo,yo,zo)为点云数据中三维坐标值最小的点的三维坐标值,为取整符号;
Δdx′为二次空间网格在X轴方向上的边长值,Δdy′为二次空间网格在Y轴方向上的边长值,Δdz′为二次空间网格在Z轴方向上的边长值,code2 为点的第二编码值;a和b为人工设定常数,且a是b的平方;此处利用公式(5)对点云数据中的点进行线性编码,便于步骤S5中使用二分查找法,将点云数据中的每个点存放到相应的二次空间网格中;这里在对点云数据中的点进行第二编码时,使用了人工设定常数,减少了运算次数;
S5、点云数据中任选一个点,在该点所处的一次空间网格中,利用二分查找法查找是否存在具有与该点第二编码值相同的编码值的二次空间网格,若存在,则将该点存储到具有与其第二编码值相同的编码值的二次空间网格,若不存在,则创建一个具有与该点第二编码值相同的编码值的二次空间网格,(具体为:根据公式(4)和(5)反推算该点的二次XYZ编码值,根据该二次XYZ编码值提供的空间位置的信息,创建一个新二次空间网格;)并将该点存储到新创建的二次空间网格中;对点云数据中所有点执行上述过程,直至点云数据中的所有点均存储到相应的二次空间网格中;这里根据点云数据中点的第二编码值创建二次空间网格,可以避免出现没有点的空格,有效的减少了运算;同时,在进行二分查找时,不用在之前所有的二次空间网格中查找是否有对应的二次空间网格,只需在当前点所处的一次空间网格所包含的二次空间网格中查找即可,从而降低了查找消耗的时间;
S6、筛选出每个二次空间网格中权重值最大的点,滤除其他点。
优选的是,所述的利用可移动空间网格精简点云数据的方法中,所述S3中,当所有点云数据中点存储到一次空间网格中后,将每个一次空间网格中存储的点的个数与设定的点个数阈值对比,
若不存在存储的点的个数大于点个数阈值的一次空间网格,则进行S4;
若存在存储的点的个数大于点个数阈值的一次空间网格,则将存储的点的个数大于点个数阈值的一次空间网格划分为多个新一次空间网格,对该一次空间网格中存储的点执行S2和S3过程,其中,在这里S2中的(x,y,z)为存储点个数大于点个数阈值中的一次空间网格中的一个点的三维坐标值,(xo,yo,zo)为点个数存储点个数大于点个数阈值的一次空间网格中的三维坐标值最小的点的三维坐标值,Δdx为新一次空间网格在X轴方向上的边长值,Δdy为新一次空间网格在Y轴方向上的边长值,count2是新一次空间网格在一次空间网格的Y轴方向上的个数,Δdz为新一次空间网格在Z轴方 向上的边长值,count3是新一次空间网格在一次空间网格的Z轴方向上的个数;在这里对存储的点个数大于点个数阈值的一次空间网格中的点,执行S3时,每个点在存储到相应的新一次空间网格中时,遍该一次空间网格,将每个新一次空间网格中存储的点的个数与点个数阈值比较,若所有新一次空间网格中存储的点的个数或等于小于点个数阈值,则停止划分,若有新一次空间网格中存储的点个数值大于点个数阈值,则对存储点个数大于点个数阈值的新一次空间网格重复上述过程,直至所有新一次空间网格中存储的点的个数小于或等于点个数阈值,停止划分;
将多个新一次空间网格与其他一次空间网格合并,并统称为一次空间网格,执行S4;
其中每次划分时,新一次空间网格的边长值都要为别二次空间网格边长值的整数倍;
确保每个一次空间网格中存储的点的个数小于点个数阈值,是为了防止有的一次空间网格中点过多,在筛选后,造成点云空洞现象;而每次重新划分的新一次空间网格的边长值为二次空间网格边长值的整数倍,是为了确保后续二次空间网的划分不会超出一次空间网格。
优选的是,所述的利用可移动空间网格精简点云数据的方法中,重新设定的一次空间网格在X轴、Y轴和Z轴方向上的边长值,分别为原一次空间网格在在X轴、Y轴和Z轴方向上的边长值的1/2;具体为:将新一次空间网格在X轴方向上的边长值设定为原一次空间网格在X轴方向上的边长值的1/2,将新一次空间网格在Y轴方向上的边长值设定为原一次空间网格在Y轴方向上的边长值的1/2,将新一次空间网格在Z轴方向上的边长值设定为原一次空间网格在Z轴方向上的边长值的1/2。
优选的是,所述的利用可移动空间网格精简点云数据的方法中,权重值可根据点与二次空间网格中心距离值、点与扫描仪原定位置距离值、曲率值或法向值确定。
优选的是,所述的利用可移动空间网格精简点云数据的方法中,所述步骤3中,第一外包盒移动m个单位值,得到第二外包盒,其中,一个单位值为二次空间网格的在X轴、Y轴或Z轴方向上的边长值,m非整数。
优选的是,所述的利用可移动空间网格精简点云数据的方法中,所述步骤4中,给定三次空间网格在X轴、Y轴和Z轴方向上的边长值,定义三次XYZ编码值表示三次空间网格的空间位置,根据公式(6)确定第二外包盒中每个点的三次XYZ编码值,根据公式(7)对第二外包盒中的所有点编码,每个点获得一个第三编码值;
code3=II×c×d+JJ×d+KK (7);
其中,II″、JJ″、KK″为点第二外包盒中的一个点的三次XYZ编码值,(x″,y″,z″)为点云数据中的一个点的三维坐标值,(xo,yo,zo)为点云数据中三维坐标值最小的点的坐标值,Δdx″为三次空间网格在X轴方向上的边长值,Δdy″为三次空间网格在Y轴方向上的边长值,Δdz″为三次空间网格在Z轴方向上的边长值;c和d为人工设定常数,且c是d的平方,code3为点的第三编码值,为取整符号;
点云数据中任选一个点,在第二外包盒中查找是否存在具有与该点第三编码值相同的编码值的三次空间网格,若存在,则将该点存储到该三次空间网格,若不存在,则创建一个具有与该点第三编码值相同的编码值的三次空间网格,并将该点存储到新创建的三次空间网格中;对第二外包盒中所有点执行上述过程,直至第二外包盒中所有点均存储到相应的三次空间网格中;
筛选出每个三次空间网格中权重值最大的点,滤除其他点。
优选的是,所述的利用可移动空间网格精简点云数据的方法中,二次空间网格中筛选权重值大的点的标准与三次空间网格中筛选权重值大的点的标准一致。
本发明针对目前点云数据精简中存在的不足,设计开发了一种利用可移动空间网格精简点云数据的方法。本发明在点云模型的空间网格划分基础上,采用了可移动空间网格划分思想,对大数据点云进行了快速有效的精简。第一、本发明在对点云数据进行二次空间网格划分前,先采用了一次空间网格 划分,对点云数据进行了分块处理,将二次空间网格置于一次空间网格,大大减少了二次空间网格二分插入时所带来的时间消耗,整体上加快了点云精简的速率;第二、本发明在进行二次空间网格划分结束后,即第一次点云精简后,采用了移动网格划分思想,很好地解决了点云密集无法剔除的问题;第三、本发明在进行点云筛选精简时,能够很好地兼容其他算法所采用的点云精简准则,即二次空间网格和三次空间网格所采用的权重值可为其他任何算法的权重值,如曲率值、法向值等等;第四、本发明采用根据点划分空间网格,避免出现空格子,有效的提交了运算的效率。
附图说明
图1为本发明的流程图。
图2为本发明中北京故宫太和门点云数据未经移动网格划分精简的点的分布图。
图3为本发明中北京故宫太和门点云数据经过移动网格划分精简后的点分布图。
图4本发明中龙头原始点云效果图。
图5本发明中龙头点云数据经Geomagic的精简后效果图。
图6本发明中龙头点云数据经本发明中方法的精简后效果图。
图7本发明中一条龙原始点云效果图。
图8本发明中一条龙点云数据经Geomagic的精简后效果图。
图9本发明中一条龙点云数据经本发明中方法的精简后效果图。
具体实施方式
下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
具体流程:
如图1所示,本发明提供一种利用可移动空间网格精简点云数据的方法,包括:
步骤1、三维扫描仪采集被测对象的点云数据,在点云数据中查找最大 三维坐标值的点,若存在,则取该点作为三维坐标值最大的点,若不存在,则根据点云数据中的点在X轴上的最大坐标值、在Y轴上的最大坐标值和在Z轴上的最大坐标值,创建一个虚拟的三维坐标值最大的点;在点云数据中查找最小三维坐标值的点,若存在,则取该点作为三维坐标值最小的点,若不存在,则根据点云数据中的点在X轴上的最小坐标值、在Y轴上的最小坐标值和在Z轴上的最小坐标值,创建一个虚拟的三维坐标值最小的点;依据最大三维坐标值的点和最小三维坐标值的点,创建第一外包盒,该第一包围盒为点云数据的最小外包立方体或长方体;
步骤2、划分一次空间网格和二次空间网格,具体为:
S1、根据三维扫描仪的分辨率,人工设定一次空间网格和二次空间网格在X轴、Y轴和Z轴方向上的边长值,根据公式(1)分别计算出第一外包盒在Y轴方向和Z轴方向上包含一次空间网格的个数,一次空间网格和二次空间网格形状为立方体或长方体,
其中,一次空间网格的边长是二次空间网格的边长的N倍,N为大于1的整数;因为计算一次空间网格在Y轴和Z轴方向上的个数时,最后的个数取整,为了保证点云数据中的所有点均包含在一次空间网格中,所以对一次空间网格在X轴、Y轴和Z轴方向的个数上均多加一个一次空间网格;
B为第一外包盒在Y轴方向上的边长值,Δdy为一次空间网格在Y轴方向上的边长值,count2是一次空间网格在Y轴方向上的个数;C为第一外包盒在Z轴方向上的边长值,Δdz为一次空间网格在Z轴方向上的边长值,count3是一次空间网格在Z轴方向上的个数,为取整符号;
定义一次XYZ编码值表示点云数据中的一个点在第一包围盒中的空间位置,根据公式(2)确定点云数据中每个点的一次XYZ编码值,根据公式(3)对点云数据中的所有点编码,每个点获得一个第一编码值;
其中,(II、JJ、KK)为点云数据中的一个点的一次XYZ编码值,(x,y,z)为点云数据中的一个点的三维坐标值,(xo,yo,zo)为点云数据中三维 坐标值最小的点的坐标值,Δdx为一次空间网格在X轴方向上的边长值,code1为点的第一编码值;此处利用公式(3)对点云数据中的点进行线性编码,便于步骤S3中使用二分查找法,将点云数据中的每个点存放到相应的一次空间网格中;
code1=II×(count2+1)×(count3+1)+JJ×(count3+1)+KK (3);
S3.1、点云数据中任选一个点,利用二分查找法,在第一包围盒中查找是否存在具有与该点第一编码值相同的编码值的一次空间网格,若存在,则将该点存储到具有与其第一编码值相同的编码值的一次空间网格,若不存在,则创建一个具有与该点第一编码值相同的编码值的一次空间网格,
具体为:根据公式(2)和(3)反推算出该点的一次XYZ编码值,根据该一次XYZ编码值提供的空间位置的信息,创建一个新一次空间网格;并将该点存储到新创建的一次空间网格中;对点云数据中所有点执行上述过程,直至点云数据中的所有点均存储到相应的一次空间网格中;
S3.2、每个一次空间网格中存储的点的个数与设定的点个数阈值对比,
若不存在存储的点的个数大于点个数阈值的一次空间网格,则进行S4;
若存在存储的点的个数大于点个数阈值的一次空间网格,则将存储的点的个数大于点个数阈值的一次空间网格划分为多个新一次空间网格,对该一次空间网格中存储的点执行S2和S3过程,具体为:根据S2过程,对每个该一次空间网格中的点编码,每个点获得一个新第一编码,根据S3过程,将该一次空间网格中的所有点,存储到相应的新一次空间网格中,其中(x,y,z)为存储点个数大于点个数阈值中的一次空间网格中的一个点的三维坐标值,(xo,yo,zo)为点个数存储点个数大于点个数阈值的一次空间网格中的三维坐标值最小的点的三维坐标值,Δdx为新一次空间网格在X轴方向上的边长值,Δdy为新一次空间网格在Y轴方向上的边长值,count2是新一次空间网格在一次空间网格的Y轴方向上的个数,Δdz为新一次空间网格在Z轴方 向上的边长值,count3是新一次空间网格在一次空间网格的Z轴方向上的个数;在这里对存储的点个数大于点个数阈值的一次空间网格中的点,执行S3时,每个点在存储到相应的新一次空间网格中时,遍该一次空间网格;
将每个新一次空间网格中存储的点的个数与点个数阈值比较,若所有新一次空间网格中存储的点的个数值小于点个数阈值,则停止划分,若有新一次空间网格中存储的点个数值大于点个数阈值,则对存储点个数大于点个数阈值的新一次空间网格重复上述过程,直至每个新一次空间网格中存储的点的个数小于或等于点个数阈值,停止划分;
将多个新一次空间网格与其他一次空间网格合并,并统称为一次空间网格,执行S4;
其中每个新一次空间网格在X轴、Y轴和Z轴方向上的边长值分别二次空间网格在X轴、Y轴和Z轴方向上的边长值的整数倍;
确保每个一次空间网格中存储的点的个数小于点个数阈值,是为了防止有的一次空间网格中点过多,在筛选后,造成点云空洞现象;而每次重新划分的新一次空间网格的边长值为二次空间网格边长值的整数倍,是为了确保后续二次空间网的划分不会超出一次空间网格;
例如:为了方便描述,这里定义存储的点的个数大于点个数阈值的一次空间网格为大一次空间网格,人工设定将大一次空间网格划分为p个新一次空间网格,计算出每个新一次空间网格的边长值,若这个计算出的边长值为二次空间网格的边长值的倍数,则使用这个新一次空间网格的个数,若这个计算出的边长值不是二次空间网格的边长值的倍数,重新设定新一次空间网格的个数,直至新一次空间网格的边长值为二次空间网格边长值的整数倍,对大一次空间网格中存储的点执行S2和S3.1,大一次空间网格中存储的每个点存储到相应的新一次空间网格中;将每个新一次空间网格中的存储的点的个数与点个数阈值对比,若每个新一次空间网格中存储的点个数小于或等于点个数阈值,则划分完成,若存在新一次空间网格中存储的点个数大于点个数阈值,对大于点个数阈值的新一次空间网格执行上述过程,直至所有新一次空间网格中存储的点个数小于或等于点个数阈值;这里无论是原一次空间网格的边长值还是所有新一次空间网格的边长值多要为二次空间网格的整数 倍;
将所有新一次空间网格与其他一次空间网格合并,并统称为一次空间网格;
S4、定义二次XYZ编码值表示二次空间网格的空间位置,根据公式(4)确定点云数据中每个点的二次XYZ编码值,根据公式(5)对点云数据中的所有点编码,每个点获得一个第二编码值,
code2=II′×a×b+JJ′×b+KK′ (5);
其中,(II′、JJ′、KK′)为点云数据中的一个点的二次XYZ编码值,(x′,y′,z′)为点云数据中的一个点的三维坐标值,(xo,yo,zo)为点云数据中三维坐标值最小的点的三维坐标值,为取整符号;
Δdx′为二次空间网格在X轴方向上的边长值,Δdy′为二次空间网格在Y轴方向上的边长值,Δdz′为二次空间网格在Z轴方向上的边长值,code2为点的第二编码值;a和b为人工设定常数,且a是b的平方;此处利用公式(5)对点云数据中的点进行线性编码,便于步骤S5中使用二分查找法,将点云数据中的每个点存放到相应的二次空间网格中;这里在对点云数据中的点进行第二编码时,使用了人工设定常数,减少了运算次数;
S5、点云数据中任选一个点,在该点所处的一次空间网格中,查找是否存在具有与该点第二编码值相同的编码值的二次空间网格,若存在,则将该点存储到具有与其第二编码值相同的编码值的二次空间网格,若不存在,则创建一个具有与该点第二编码值相同的编码值的二次空间网格,并将该点存储到新创建的二次空间网格中;对点云数据中所有点执行上述过程,直至点云数据中的所有点均存储到相应的二次空间网格中;
S6、筛选出每个二次空间网格中权重值最大的点,滤除其他点;其中,权重值可根据点与二次空间网格中心距离值、点与扫描仪原定位置距离值、曲率值或法向值确定;
步骤3、第一外包盒移动m个单位值,得到第二外包盒,其中,一个单位值为二次空间网格的在X轴、Y轴或Z轴方向上的边长值,m非整数;例如:可将m值设为0.8,若二次空间网格为立方体,则单位值就为二次空间网格的边长值,根据上述设定可将第一外包盒根据实际情况某一方向移动0.8个二次网格的边长值,若二次空间网格为长方体,则可选二次空间网格在X轴、Y轴或Z轴方向上任意一个方向上的边长值作为单位值,根据上述设定可将第一外包盒根据实际情况某一方向移动0.8个选定的二次网格的边长值;
步骤4、给定三次空间网格在X轴、Y轴和Z轴方向上的边长值,定义三次XYZ编码值表示三次空间网格的空间位置,根据公式(6)确定第二外包盒中每个点的三次XYZ编码值,根据公式(7)对点云数据中的所有点编码,第二包围盒中每个点获得一个第三编码值;其中,三次空间网格的大小与形状和二次空间网格一致;
code3=II×c×d+JJ×d+KK (7);
其中,(II″、JJ″、KK″)为第二外包盒中的一个点的三次XYZ编码值,(x″,y″,z″)为点云数据中的一个点的三维坐标值,(xo,yo,zo)为点云数据中三维坐标值最小的点的三维坐标值,Δdx″为三次空间网格在X轴方向上的边长值,Δdy″为三次空间网格在Y轴方向上的边长值,Δdz″为三次空间网格在Z轴方向上的边长值;c和d为人工设定常数,且c是d的平方,code3为点的第三编码值,为取整符号;
点云数据中任选一个点,在第二外包盒中查找是否存在具有与该点第三编码值相同的编码值的三次空间网格,若存在,则将该点存储到该三次空间网格,若不存在,则创建一个具有与该点第三编码值相同的编码值的三次空间网格,并将该点存储到新创建的三次空间网格中;对第二外包盒中所有点执行上述过程,直至第二外包盒中所有点均存储到相应的三次空间网格中;
筛选出每个三次空间网格中权重值最大的点,滤除其他点;其中三次空 间网格中筛选权重值大的点的标准与二次空间网格中筛选权重值大的点的标准一致。
实例分析:
为了实际分析和验证本发明提出的方法,分别对不同的点云模型进行精简实验,并将其结果与商业软件Geomagic的精简结果进行对比分析。本实验的环境为:CPU:酷睿i5,内存:3.0G,GPU:GeForce GTX650,操作系统:Windows7SP1。
点分布分析:
图2和图3为北京故宫太和门中的一扇门的点云数据精简后的点云分布图。图2和图3简化点云的步骤除图2未使用移动空间网格处理外,其他均相同,图2中用线条圈起处,为点云数据精简后的点分布密集区域,我们可以明显的看到,图2中有四处点分布密集区域,这是由于相邻的二次空间网格最终筛选出的点之间的权重值和距离相近造成的,而图3由于经过移动空间网格处理,滤除了距离和权重值相近的点,所以在图3中没有出现点密集区域。
精简效果分析:
通过对不同大小点云数据进行测试,分别得到Geomagic精简和本文发明精简的最终成果点云和分别消耗的时间。其中精简消耗时间对比如表1所示,
表1精简点云数据消耗时间
从表1中,我们可以看出,使用本发明提供的点云精简方法,点的个数明显少于Geomagic软件精简后的个数,且用时也更少。
图4~9显示利用本发明提供的方法和使用Geomagic软件距离精简后的点 云数据制作的图像。图4为点个数为427917的龙头的原始点云效果图,即表1中第一组数据,图5是利用Geomagic软件距离精简后点云数据效果图,图6是本发明所提供方法精简后点云数据效果图,综合表1,可以明显的看出,经本发明所提出方法精简点云,不仅精简效率更高,而且精简后点云效果图更接近原图;
图7为点个数为5479491的整条龙的原始点云效果图,即表1中第二组数据,图8是利用Geomagic软件距离精简后点云数据效果图,图9是本发明所提供方法精简后点云数据效果图,综合表1,可以明显的看出,经本发明所提出方法精简点云,不仅精简效率更高,而且精简后点云效果图更接近原图。
点云精简后,可靠性分析:
针对本发明的精简效果准确性问题,这里采用的误差度量方法如下:将精简后的点云数据P’进行三维重构,生成三角网模型,然后计算原始点云数据中所有点到该三角网模型的距离。分别用两项指标进行精简数据评估:Dmax和Davg,其中Dmax指的是原始点云数据P中所有点到精简后点云数据P’构建的三角网模型表面的距离最大值,Davg指的是原始点云数据P中所有点到精简后点云数据P’构建的三角网模型表面的距离平均值,Ratio指的是存在误差的区域占总体区域百分比。精简数据误差度量结果如表2所示。
从表2中可以看出本发明的精简的简度(精简后点云相对原始点云的百分比)明显降低,且在精度上很好地保留了点云的特征点,避免了点云“空洞”的现象发生,时间效率上也达到了明显的优势。
表2点云数据可靠性
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范 围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。
Claims (8)
1.一种利用可移动空间网格精简点云数据的方法,其特征在于,包括:
步骤1、三维扫描仪采集被测对象的点云数据,创建点云数据的第一外包盒,该第一包围盒为点云数据的最小外包立方体或长方体;
步骤2、给定二次空间网格在X轴、Y轴和Z轴方向上的边长值,在第一外包盒中创建多个二次空间网格,将点云数据中的所有点存储到多个二次空间网格中,筛选出每个二次空间网格中权重值最大的点,滤除其他点;
步骤3、平移第一外包盒,得到第二外包盒,且第二包围盒包围所有步骤2中筛选出的点;
步骤4、在第二外包盒中创建多个三次空间网格,三次空间网格的大小与形状和二次空间网格一致,将第二外包盒中的点存储到多个三次空间网格中,筛选出每个三次空间网格中权重值最大的点,滤除其他点。
2.如权利要求1所述的利用可移动空间网格精简点云数据的方法,其特征在于,所述步骤1具体为:
三维扫描仪采集被测对象的点云数据,在点云数据中查找最大三维坐标值的点,若存在,则取该点作为三维坐标值最大的点,若不存在,则根据点云数据中的点在X轴上的最大坐标值、在Y轴上的最大坐标值和在Z轴上的最大坐标值,创建一个虚拟的三维坐标值最大的点;在点云数据中查找最小三维坐标值的点,若存在,则取该点作为三维坐标值最小的点,若不存在,则根据点云数据中的点在X轴上的最小坐标值、在Y轴上的最小坐标值和在Z轴上的最小坐标值,创建一个虚拟的三维坐标值最小的点;依据最大三维坐标值的点和最小三维坐标值的点,创建第一外包盒。
3.如权利要求1所述的利用可移动空间网格精简点云数据的方法,其特征在于,所述步骤2具体为:
S1、根据三维扫描仪的分辨率,人工设定一次空间网格和二次空间网格在X轴、Y轴和Z轴方向上的边长值,根据公式(1)分别计算出第一外包盒在Y轴方向和Z轴方向上包含一次空间网格的个数,
其中,一次空间网格的边长是二次空间网格的边长的N倍,N为大于1 的整数;
B为第一外包盒在Y轴方向上的边长值,Δdy为一次空间网格在Y轴方向上的边长值,count2是一次空间网格在Y轴方向上的个数;C为第一外包盒在Z轴方向上的边长值,Δdz为一次空间网格在Z轴方向上的边长值,count3是一次空间网格在Z轴方向上的个数,为取整符号;
S2、定义一次XYZ编码值表示点云数据中的一个点在第一包围盒中的空间位置,根据公式(2)确定点云数据中每个点的一次XYZ编码值,根据公式(3)对点云数据中的所有点编码,每个点获得一个第一编码值;
其中,(II、JJ、KK)为点云数据中的一个点的一次XYZ编码值,(x,y,z)为点云数据中的一个点的三维坐标值,(xo,yo,zo)为点云数据中三维坐标值最小的点的三维坐标值,Δdx为一次空间网格在X轴方向上的边长值,code1为点的第一编码值,为取整符号;
code1=II×count2×count3+JJ×count3+KK (3);
S3、点云数据中任选一个点,在第一包围盒中查找是否存在具有与该点第一编码值相同的编码值的一次空间网格,若存在,则将该点存储到具有与其第一编码值相同的编码值的一次空间网格,若不存在,则创建一个具有与该点第一编码值相同的编码值的一次空间网格,并将该点存储到新创建的一次空间网格中;对点云数据中所有点执行上述过程,直至点云数据中的所有点均存储到相应的一次空间网格中;
S4、定义二次XYZ编码值表示二次空间网格的空间位置,根据公式(4)确定点云数据中每个点的二次XYZ编码值,根据公式(5)对点云数据中的 所有点编码,每个点获得一个第二编码值;
code2=II′×a×b+JJ′×b+KK′ (5);
其中,(II′、JJ′、KK′)为点云数据中的一个点的二次XYZ编码值,(x′,y′,z′)为点云数据中的一个点的三维坐标值,(xo,yo,zo)为点云数据中三维坐标值最小的点的三维坐标值,为取整符号;
Δdx′为二次空间网格在X轴方向上的边长值,Δdy′为二次空间网格在Y轴方向上的边长值,Δdz′为二次空间网格在Z轴方向上的边长值,code2为点的第二编码值;a和b为人工设定常数,且a是b的平方。
S5、点云数据中任选一个点,在该点所处的一次空间网格中,查找是否存在具有与该点第二编码值相同的编码值的二次空间网格,若存在,则将该点存储到具有与其第二编码值相同的编码值的二次空间网格,若不存在,则创建一个具有与该点第二编码值相同的编码值的二次空间网格,并将该点存储到新创建的二次空间网格中;对点云数据中所有点执行上述过程,直至点云数据中的所有点均存储到相应的二次空间网格中;
S6、筛选出每个二次空间网格中权重值最大的点,滤除其他点。
4.如权利要求3所述的利用可移动空间网格精简点云数据的方法,其特征在于,当所有点云数据中点存储到一次空间网格中后,将每个一次空间网格中存储的点的个数与设定的点个数阈值对比,
若不存在存储的点的个数大于点个数阈值的一次空间网格,则进行S4;
若存在存储的点的个数大于点个数阈值的一次空间网格,则将存储的点的个数大于点个数阈值的一次空间网格划分为多个新一次空间网格,对该一次空间网格中存储的点执行S2和S3过程,将每个新一次空间网格中存储的点的个数与点个数阈值比较,若所有新一次空间网格中存储的点的个数小于点个数阈值,则停止划分,若有新一次空间网格中存储的点个数值大于点个数阈值,则对存储点个数大于点个数阈值的新一次空间网格重复上述过程,直 至每个新一次空间网格中存储的点的个数小于或等于点个数阈值,停止划分;
将多个新一次空间网格与其他一次空间网格合并,并统称为一次空间网格,执行S4;
其中每个新一次空间网格在X轴、Y轴和Z轴方向上的边长值分别二次空间网格在X轴、Y轴和Z轴方向上的边长值的整数倍。
5.如权利要求1、3或4所述的利用可移动空间网格精简点云数据的方法,其特征在于,权重值可根据点与二次空间网格中心距离值、点与扫描仪原定位置距离值、曲率值或法向值确定。
6.如权利要求3或4所述的利用可移动空间网格精简点云数据的方法,其特征在于,所述步骤3中,第一外包盒移动m个单位值,得到第二外包盒,其中,一个单位值为二次空间网格的在X轴、Y轴或Z轴方向上的边长值,m非整数。
7.如权利要求1所述的利用可移动空间网格精简点云数据的方法,其特征在于,所述步骤4中,
给定三次空间网格在X轴、Y轴和Z轴方向上的边长值,定义三次XYZ编码值表示三次空间网格的空间位置,根据公式(6)确定第二外包盒中每个点的三次XYZ编码值,根据公式(7)对第二外包盒中的所有点编码,每个点获得一个第三编码值;
code3=II×c×d+JJ×d+KK (7);
其中,(II″、JJ″、KK″)为第二外包盒中的一个点的三次XYZ编码值,(x″,y″,z″)为点云数据中的一个点的三维坐标值,(xo,yo,zo)为点云数据中三维坐标值最小的点的三维坐标值,Δdx″为三次空间网格在X轴方向上的边长值,Δdy″为三次空间网格在Y轴方向上的边长值,Δdz″为三次空间网格在Z轴方向上的边长值;c和d为人工设定常数,且c是d的平方,code3为点的第三编码值,为取整符号;
点云数据中任选一个点,在第二外包盒中查找是否存在具有与该点第三编码值相同的编码值的三次空间网格,若存在,则将该点存储到该三次空间网格,若不存在,则创建一个具有与该点第三编码值相同的编码值的三次空间网格,并将该点存储到新创建的三次空间网格中;对第二外包盒中所有点执行上述过程,直至第二外包盒中所有点均存储到相应的三次空间网格中;
筛选出每个三次空间网格中权重值最大的点,滤除其他点。
8.如权利要求5所述的利用可移动空间网格精简点云数据的方法,其特征在于,二次空间网格中筛选权重值大的点的标准与三次空间网格中筛选权重值大的点的标准一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410326078.2A CN104183021B (zh) | 2014-07-10 | 2014-07-10 | 一种利用可移动空间网格精简点云数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410326078.2A CN104183021B (zh) | 2014-07-10 | 2014-07-10 | 一种利用可移动空间网格精简点云数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104183021A true CN104183021A (zh) | 2014-12-03 |
CN104183021B CN104183021B (zh) | 2017-03-15 |
Family
ID=51964034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410326078.2A Expired - Fee Related CN104183021B (zh) | 2014-07-10 | 2014-07-10 | 一种利用可移动空间网格精简点云数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104183021B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106067193A (zh) * | 2016-06-06 | 2016-11-02 | 中国人民解放军信息工程大学 | 一种点云数据的体素化方法和体素的遮挡裁剪方法 |
CN106570835A (zh) * | 2016-11-02 | 2017-04-19 | 北京控制工程研究所 | 一种点云简化滤波方法 |
CN109791171A (zh) * | 2016-09-30 | 2019-05-21 | 瑞典爱立信有限公司 | 用于总辐射功率测量的精简网格 |
CN110662087A (zh) * | 2018-06-30 | 2020-01-07 | 华为技术有限公司 | 点云编解码方法和编解码器 |
CN113628224A (zh) * | 2021-08-09 | 2021-11-09 | 南通大学 | 一种基于三维欧式距离变换的房间分割方法 |
WO2022032465A1 (zh) * | 2020-08-11 | 2022-02-17 | 武汉深能环保新沟垃圾发电有限公司 | 一种垃圾焚烧发电厂垃圾池的智能控制方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080238919A1 (en) * | 2007-03-27 | 2008-10-02 | Utah State University | System and method for rendering of texel imagery |
US20110216063A1 (en) * | 2010-03-08 | 2011-09-08 | Celartem, Inc. | Lidar triangular network compression |
CN102663237A (zh) * | 2012-03-21 | 2012-09-12 | 武汉大学 | 基于网格分块与移动最小二乘的点云数据全自动滤波方法 |
CN102944174A (zh) * | 2012-11-28 | 2013-02-27 | 北京矿冶研究总院 | 一种点云数据的处理方法及系统 |
US20130202193A1 (en) * | 2012-02-03 | 2013-08-08 | Harris Corporation | Fractal method for detecting and filling data gaps within lidar data |
CN103679807A (zh) * | 2013-12-24 | 2014-03-26 | 焦点科技股份有限公司 | 一种带边界约束的散乱点云重构方法 |
-
2014
- 2014-07-10 CN CN201410326078.2A patent/CN104183021B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080238919A1 (en) * | 2007-03-27 | 2008-10-02 | Utah State University | System and method for rendering of texel imagery |
US20110216063A1 (en) * | 2010-03-08 | 2011-09-08 | Celartem, Inc. | Lidar triangular network compression |
US20130202193A1 (en) * | 2012-02-03 | 2013-08-08 | Harris Corporation | Fractal method for detecting and filling data gaps within lidar data |
CN102663237A (zh) * | 2012-03-21 | 2012-09-12 | 武汉大学 | 基于网格分块与移动最小二乘的点云数据全自动滤波方法 |
CN102944174A (zh) * | 2012-11-28 | 2013-02-27 | 北京矿冶研究总院 | 一种点云数据的处理方法及系统 |
CN103679807A (zh) * | 2013-12-24 | 2014-03-26 | 焦点科技股份有限公司 | 一种带边界约束的散乱点云重构方法 |
Non-Patent Citations (4)
Title |
---|
KAI LIU 等: "SIMPLIFICATION OF POINT CLOUD DATA BASED ON GAUSSIAN CURVATURE", 《ICSSC 2013》 * |
刘涛 等: "基于包围盒法的散乱点云数据的曲率精简", 《科学技术与工程》 * |
范然,金小刚: "大规模点云选择及精简", 《图学学报》 * |
蔡志敏 等: "基于 KD 树散乱点云数据的 Guass 平均曲率精简算法", 《测绘通报》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106067193A (zh) * | 2016-06-06 | 2016-11-02 | 中国人民解放军信息工程大学 | 一种点云数据的体素化方法和体素的遮挡裁剪方法 |
CN106067193B (zh) * | 2016-06-06 | 2019-02-19 | 中国人民解放军信息工程大学 | 一种点云数据的体素化方法和体素的遮挡裁剪方法 |
CN109791171A (zh) * | 2016-09-30 | 2019-05-21 | 瑞典爱立信有限公司 | 用于总辐射功率测量的精简网格 |
CN109791171B (zh) * | 2016-09-30 | 2021-08-17 | 瑞典爱立信有限公司 | 用于总辐射功率测量的精简网格 |
CN106570835A (zh) * | 2016-11-02 | 2017-04-19 | 北京控制工程研究所 | 一种点云简化滤波方法 |
CN106570835B (zh) * | 2016-11-02 | 2019-05-24 | 北京控制工程研究所 | 一种点云简化滤波方法 |
CN110662087B (zh) * | 2018-06-30 | 2021-05-11 | 华为技术有限公司 | 点云编解码方法和编解码器 |
CN110662087A (zh) * | 2018-06-30 | 2020-01-07 | 华为技术有限公司 | 点云编解码方法和编解码器 |
US11328450B2 (en) | 2018-06-30 | 2022-05-10 | Huawei Technologies Co., Ltd. | Point cloud encoding method, point cloud decoding method, encoder, and decoder |
US11704837B2 (en) | 2018-06-30 | 2023-07-18 | Huawei Technologies Co., Ltd. | Point cloud encoding method, point cloud decoding method, encoder, and decoder |
WO2022032465A1 (zh) * | 2020-08-11 | 2022-02-17 | 武汉深能环保新沟垃圾发电有限公司 | 一种垃圾焚烧发电厂垃圾池的智能控制方法 |
CN113628224A (zh) * | 2021-08-09 | 2021-11-09 | 南通大学 | 一种基于三维欧式距离变换的房间分割方法 |
CN113628224B (zh) * | 2021-08-09 | 2023-12-19 | 南通大学 | 一种基于三维欧式距离变换的房间分割方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104183021B (zh) | 2017-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104183021A (zh) | 一种利用可移动空间网格精简点云数据的方法 | |
CN104268934B (zh) | 一种由点云直接重建三维曲面的方法 | |
CN112669463B (zh) | 三维点云的曲面重建方法、计算机设备和计算机可读存储介质 | |
Chaine | A geometric convection approach of 3-D reconstruction | |
Yan et al. | Voxel cores: Efficient, robust, and provably good approximation of 3d medial axes | |
CN104616349B (zh) | 基于局部曲面变化因子的散乱点云数据精简处理方法 | |
EP3652706A2 (en) | Point cloud data method and apparatus | |
CN107993279B (zh) | 一种场景精确表达方法 | |
CN104699946B (zh) | 一种游戏场景的管理方法及装置 | |
CN104361625A (zh) | 一种基于射线原理的带边界保留的云数据精简算法 | |
Reberol et al. | Quasi-structured quadrilateral meshing in Gmsh--a robust pipeline for complex CAD models | |
CN115578536A (zh) | 一种分层分块三维模型节点合并方法、装置和电子装置 | |
CN111798558A (zh) | 数据处理方法及装置 | |
Aleardi et al. | Catalog-based representation of 2D triangulations | |
Luo et al. | Quad-tree atlas ray casting: a gpu based framework for terrain visualization and its applications | |
CN109448106A (zh) | 基于球坐标的植物果实点云重建方法 | |
EP3091512B1 (en) | Point cloud simplification | |
Liu et al. | A novel terrain rendering algorithm based on quasi Delaunay triangulation | |
Ulyanov et al. | Interactive vizualization of constructive solid geometry scenes on graphic processors | |
CN104794747A (zh) | 一种基于射线原理的三维点云数据精简算法 | |
Camata et al. | Parallel linear octree meshing with immersed surfaces | |
CN110443891B (zh) | 一种3d模型的网格化处理方法及系统 | |
Xu et al. | A pipeline for surface reconstruction of 3-dimentional point cloud | |
Liziér et al. | Template-based quadrilateral mesh generation from imaging data | |
CN114840629B (zh) | 居留位置修正方法、装置、电子设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170315 Termination date: 20200710 |