CN115063497B - 一种点云数据处理方法及装置 - Google Patents
一种点云数据处理方法及装置 Download PDFInfo
- Publication number
- CN115063497B CN115063497B CN202210995628.4A CN202210995628A CN115063497B CN 115063497 B CN115063497 B CN 115063497B CN 202210995628 A CN202210995628 A CN 202210995628A CN 115063497 B CN115063497 B CN 115063497B
- Authority
- CN
- China
- Prior art keywords
- point cloud
- data
- node
- cloud data
- nodes
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/40—Tree coding, e.g. quadtree, octree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- Image Generation (AREA)
Abstract
本申请公开了一种点云数据处理方法,根据原始点云数据集建立八叉树,生成并存储分支结点和叶子结点数据结构,每一个叶子结点包含的点云点数量小于设定阈值;每一个叶子结点的点云数据按照属性分段存储,每一个数据段中包含所述叶子结点中的点云的同一种属性类型;不同数据段中的点云排列顺序相同,且按照KD树结构存储;按照设定属性类型和视距范围动态读取数据并显示。本申请还包含用于实现所述方法的装置。本申请的方法和装置解决现有技术中动态显示不流畅,导致使用不够方便的问题。能够实现海量点云数据的加载、提高显示速度和精准捕捉数据的目的,为海量点云的数字测图提供了底层技术支撑。
Description
技术领域
本申请涉及地理信息系统和计算机技术领域,尤其涉及一种点云数据处理方法及装置。
背景技术
通过测量仪器得到的物体外观表面的点数据集合称之为点云(Point Cloud),通常使用三维激光扫描仪或照相式扫描仪得到点云,点数量比较大并且比较密集。
根据激光测量原理得到的点云,包括三维坐标(xyz)和激光反射强度(Intensity),回波次数,GPS时间等信息。根据摄影测量原理得到的点云,包括三维坐标和颜色信息(RGB)。结合激光测量和摄影测量原理得到点云,包括三维坐标、激光反射强度和颜色信息等信息。
点云是目标表面特性的海量点集合。现有技术中,由于数据量非常大,把所有的点加载进入计算机内存,会导致计算机难以承载。分块处理数据是常用的方法,但是,分块处理结果需要拼接起来才能使用,这种处理方式不能进行整体浏览。庞大的数据量加上点云的无结构化,使得点云的三维显示,坐标捕捉都变得非常困难,导致点云在测绘领域的使用受到限制。
发明内容
本申请实施例提供一种点云数据处理方法及装置,用于解决现有技术中海量点云动态显示不流畅,单点坐标捕捉速度慢、难以从海量点云中快速获取所需数据,导致使用不够方便的问题。
第一方面,本申请实施例提供一种点云数据处理方法,结合八叉树、KD树、数据分段存储和动态调取,包含以下步骤:
根据原始点云数据集建立八叉树,生成并存储分支结点和叶子结点数据结构,每一个叶子结点包含的点云点数量小于设定阈值;
每一个结点的点云数据按照属性分段存储,每一个数据段中包含所述叶子结点中的点云的同一种属性类型;不同数据段中的点云排列顺序相同,且根据空间坐标按照KD树结构存储;
按照设定属性类型和视距范围动态读取数据并显示。
优选地,所述点云数据处理方法,由根结点向下建立非平衡八叉树,具体包含以下步骤:
将点云数据进行分割,判断分割后空间内的点云点数量是否小于所述设定阈值,若是,则停止分割,生成叶子结点;若否,则继续进行空间分割,直至结点空间的点云点数量小于所述设定阈值为止。
所述八叉树的数据结构由多层分支结点和最终的叶子结点构成,全部叶子结点的点云数据总和为所述原始点云数据。优选地,任一分支结点的数据,是由所述分支结点的8个子结点的点云数据合并采样后生成。
优选地,所述动态读取数据包含:读取小于视距阈值的结点中,在每一分支上的底层结点数据;结点的视距阈值和所述结点的空间内径正相关。进一步优选地,根据内存容限设定结点的视距阈值,所述视距阈值和所述内存容限正相关。
进一步优选地,所述动态读取数据包含:对读取的数据进行射线追踪,放弃被遮挡的点云数据。
优选地,所述按照设定属性类型和视距范围动态读取数据,包含以下步骤:
确定结点距离小于其视距阈值的结点,构成一备选结点集合;
读取所述备选结点集合中的分支结点与设定属性对应的数据;
读取所述备选结点集合中的叶子结点中与设定属性对应的数据段中的点云数据;
排除所述备选结点集合中被遮挡的点云数据,生成应用数据集。
第二方面,本申请实施例还提出一种点云数据处理装置,用于实现本申请第一方面任意一项实施例所述方法,包含:
第一处理模块,用于根据原始点云数据集建立八叉树,生成叶子结点数据结构和分支结点数据结构;第二处理模块,用于多个子线程分别按属性读取所述点云数据,确定结点距离小于其视距阈值的结点,构成备选结点集合,排除所述备选结点集合中被遮挡的点云数据,生成应用数据集;第三处理模块,用于显示和渲染所述应用数据集的图像;
第一存储单元,用于存储原始点云数据集;第二存储单元,用于存储所述八叉树的分支结点数据结构;第三存储单元,用于区分叶子结点按属性分段存储所述叶子结点的点云数据;第四存储单元,用于存储所述应用数据集。
第三方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请中任一实施例所述的方法。
第四方面,本申请实施例提供一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,在处理器运行所述计算机程序时实现本申请中任一实施例所述的方法。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:使用非平衡八叉树结合KD树存储点云数据,并在使用点云数据时进行延迟渲染,在GPU上剔除大量不可见点云,极大地提高点云着色显示速度。利用“点云、像点、眼睛”三点共线关系,在GPU上进行三维空间点云的实时解算与点位捕捉。能够实现海量点云加载、提高显示速度和鼠标精准捕捉的目的,为海量点云的数字测图提供了底层技术支撑。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例提供的一种点云数据处理方法的实施例流程图;
图2为本申请实施例进一步优化的点云数据外部存储处理过程;
图3为本申请实施例进一步优化的动态缓存数据生成过程;
图4为本申请数据关联关系示意图;
图5为本申请的一种点云处理装置的实施例示意图;
图6包含本申请装置进一步优化的实施例示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本说明书实施例提供的一种点云数据处理方法的实施例流程图。
本申请实施例提供一种点云数据处理方法,结合八叉树、KD树、数据分段存储和动态调取,包含以下步骤11~13:
步骤11、根据原始点云数据集建立八叉树,生成并存储分支结点和叶子结点数据结构,每一个叶子结点包含的点云点数量小于设定阈值;
步骤12、每一个结点的点云数据按照属性分段存储,每一个数据段中包含所述结点中的点云的同一种属性类型;不同数据段中的点云排列顺序相同,且根据空间坐标按照KD树结构存储;
点云的属性包含:坐标值x,y,z,强度,RGB颜色,分类标识,回波次数、用户标识、GPS时间、删除标记、来源标识。
具体地,在每个叶子结点内构建KD树,利用KD树,将每个所述叶子结点内的第二点云数据进行线性存储,所述第二点云数据由所述第一点云数据分隔获得。
在具体实施中,在每个非平衡八叉树子结点内,建KD树,用数组线性存储,并在每个点云点里用2个二进制位存储KD树分割轴信息;
其中,每个点云点包含坐标、强度、颜色、分类、回波次数、GPS时间,数据标识,共24个字节,KD树分割轴占用数据标识字节的前2位,其它6位用来表示是否删除、采集来源(机载、车载、测站、背包、摄影测量);使用时根据用户自定义,此处不做限定。
一个结点可以理解为一个点云块,点云块在文件里分段存储,每一块的格式为:坐标、坐标、坐标、强度、强度、强度、颜色、颜色、颜色、……,使用的时候分段进行内存映射,不需要使用的数据不加载。这样内存映射更快,同一块数据,不需要的属性不用映射到内存。
步骤13、按照设定属性类型和视距范围动态读取数据并显示。
动态读取数据,例如使用的是:一个数据分段占用一个线程,内存映射并行读取数据,发挥多核处理器的作用,避免IO瓶颈。
图2为本申请实施例进一步优化的点云数据外部存储处理过程。
优选地,所述点云数据处理方法,由根结点向下建立非平衡八叉树,具体包含以下步骤21~22:
步骤21、将点云数据进行分割,判断分割后空间内的点云点数量是否小于所述设定阈值,若是,则停止分割,生成叶子结点;若否,则继续进行空间分割,直至结点空间的点云点数量小于所述设定阈值为止。
全部叶子结点的点云数据总和为所述原始点云数据。
需要说明的是,使用步骤21的方法,生成的八叉树不是等深度八叉树,也就是说,不同的叶子结点距离根结点的层数可以不同。根据叶子结点的点云点数量的设定阈值,如果数据超限(也就是说点云密度高),该结点要一直分割下去,直到结点内点数量小于设定阈值。
步骤22、所述八叉树的数据结构由多层分支结点和最终的叶子结点构成,优选地,任一分支结点的数据,是由所述分支结点的8个子结点的点云数据合并采样后生成。
需要说明的是,除了八叉树叶子结点的原始点云会建立KD树之外,下采样(抽稀)得到的八叉树分支结点的点云也建立KD树。与叶子结点数据存储方式相同,分支结点的点云数据按照属性类型分段,每一个数据段的属性类型相同,不同的数据段的点云顺序相同。
在具体实施中,八叉树底层叶子结点存储原始数据,8个叶子结点的数据合并进行下采样后存储为其上层父结点数据,进一步地,生成的父结点作为新的子结点,用于向上简化重采样,重复将每8个子结点的数据合并采样后存储到上层父结点,构建LOD。每一级别根据视距对应不同显示比例尺。
将生成的非平衡八叉树数据集存储于外存中。
图3为本申请实施例进一步优化的动态缓存数据生成过程。
所述按照设定属性类型和视距范围动态读取数据,根据拣选条件,在所述非平衡八叉树数据集中拣选要显示的所述非平衡八叉树数据集的叶子结点和分支结点数据,获得应用数据集。所述拣选条件至少包括,视距、结点空间内径和内存最大允许数据量。具体地,包含以下步骤31~33:
步骤31、确定结点距离小于其视距阈值的结点,构成备选结点集合;
优选地,所述动态读取数据包含:读取小于视距阈值的结点中,在每一分支上的底层结点数据;结点的视距阈值和所述结点的空间内径正相关。
小于视距阈值的结点中,在每一分支上的底层结点,是指当互为父子的结点都小于视距阈值的,取子结点的结点数据。
进一步优选地,根据内存容限设定结点的视距阈值,所述视距阈值和所述内存容限正相关。
需要说明的是,结点数据的视距阈值的确定方法是根据结点空间内径,例如按照结点空间内径的20倍。当结点空间内径较大时,结点的视距阈值也增大。超过视距阈值的结点数据不被读取。
另一方面,根据内存允许的数据量设定视距阈值。当内存量较大时,允许的视距阈值较大,内存量较小时,允许的视距阈值较小。超出视距阈值的结点数据不被读取。
步骤32、读取所述备选结点集合中的分支结点与设定属性对应的点云数据;
需要说明的是,每一个分支结点的点云数据是对其子结点的点云数据抽稀生成。
步骤33、读取所述备选结点集合中的叶子结点中与设定属性对应的数据段中的点云数据;
需要说明的是,对备选结点集合中的任何一个结点,所述备选结点集合中不包含其子结点或父结点。例如,当一个结点满足设定的视距阈值时,所述备选结点集合中仅包含该结点的点云数据而不包含其子结点的点云数据,也不包含其父结点的点云数据。
具体的,通过步骤31~33,根据视距、结点空间内径、内存最大允许数据量从外存中的八叉树数据结构里拣选每一帧要显示的八叉树结点,区分属性类型,只读取需要用到的属性项,经过多线程内存映射异步读取对应结点的数据,从而获得备选结点集合的相关数据。
步骤34、排除所述备选结点集合中被遮挡的点云数据,生成应用数据集。
进一步优选地,所述动态读取数据包含:对读取的数据进行射线追踪,放弃被遮挡的点云数据。由于读取的数据自带KD树结构,可快速进行近邻查找、射线追踪。
将所述应用数据集存储于显存中。具体地,通过判断遮挡关系去除重合点云数据,具体为以下步骤:获取显示屏幕像素;对所述备选结点集合的点云数据集进行延迟渲染,剔除不可见点云,获得与所述显示屏幕像素位置相同的显存点云数据集,所述显存点云数据集包括,点云视距坐标和着色信息;
具体的,根据相机视景体的上、下、左、右,近平面在八叉树中排除完全在平面背面的结点,从根结点往下按层次遍历,由结点到相机的距离判断该结点是否继续其子结点的遍历,由内存最大允许数据量限制控制整个层次遍历是否终止。
将主线程拣选出来的八叉树结点数据由多个子线程进行读取,子线程通过分段内存映射只读取必需的数据到内存,然后用绘图线程统一拷贝到GPU中。
在具体实施中,使用OpenGL可编程管线快速渲染点云。三维场景或数据变化时,通过OpenGL可编程管线,由特定的顶点与片元着色器,输出点的坐标到GPU缓存FBO中(按强度着色时,同时输出强度值),FBO与三维显示窗口大小一致。
使用顶点与片元着色器,将FBO中的数据作为纹理,贴图到实际三维显示窗口,在该顶点与片元着色器中,根据纹理中读到的强度值进行点云着色,无效值表示该处无点云。
三维场景或数据没有变化时,使用上次的FBO进行贴图,对于捕捉框,动态线每帧都进行编制,不绘制到FBO当中。
优选的,根据所述点云视觉坐标,获得该点云内点的空间坐标;
根据点的空间坐标,从非平衡八叉树数据集中获得相应结点的点云数据集,在该数据集中按KD树查找到对应的点云点,获取该点云点的其它所有信息。
图4为本申请数据关联关系示意图。
原始点云数据集41经排序和抽稀处理42生成八叉树数据集,所述八叉树数据集包含八叉树结构43、叶子结点数据集44、分支结点数据集45。所述叶子结点的数据的总和是原始点云数据集。任一分支结点数据是8个子结点数据合并重采样生成。
任一所述叶子结点数据分段存储,按照点云数据的属性类型分段,每一个数据段的属性类型相同,不同数据段441,442,443的点云顺序相同;
进行多线程处理46时,分别读取满足视觉阈值的各个分支结点数据和叶子结点数据、分数据段动态调取数据进入缓存处理,按照KD树结构顺序读取数据、确定点云数据的取舍,最后生成最小数据集作为应用数据集47。此处的多线程,包括多个叶子结点数据处理线程、及至少一个分支结点数据处理线程、至少一个绘图线程。
需要说明的是,除了八叉树叶子结点的原始点云会建立KD树之外,下采样(抽稀)得到的八叉树分支结点的点云也会建立KD树。
与叶子结点数据存储方式相同,分支结点的点云数据按照属性类型分段,每一个数据段的属性类型相同,不同的数据段551、552的点云顺序相同。
八叉树结构存储在文件头,一次性全部读入到内存,每个八叉树结点对应的点云数据存储在外部文件(叶子结点为 xx.pcd 文件,分支结点为 xx.ovr 文件),使用的时候(显示或做其它处理),先从内存中的八叉树结构里获取相应的八叉树结点,然后由多线程内存映射,将相应八叉树结点的点云数据(一般不是点的所有属性,按需读取)读入内存,按KD 树进行快速查找(确定点的序号之后,再去读取相应序号点的其它属性)。点云数据在内存里是动态加载与释放(用完就释放,需要的时候再去读,每个八叉树结点里存储了该块点云数据在文件中的地址)。
海量点云数据建立非平衡八叉树与平衡KD树的过程依次进行。首先,将点云从原始文件中解析出来,只构建八叉树结构,记录每个结点的实际点云点数量(由于结点内数据量超限时,会分裂成八个子结点,所以也需要临时存储每块的数据);然后,根据每个结点的实际点云数据量,开辟相应大小的文件存储空间,形成正式的八叉树数据文件(从临时存储里读取每块点云数据,不需要从原始文件重新解析点云),并在块内构建 KD 树,形成xx.pcd 文件。
分支结点的数据存储在 xx.ovr 文件中,可以删除,下次若使用到该数据,程序发现没有该文件,会根据八叉树结构43和叶子结点数据集44计算生成分支结点数据集45,重新自动创建 xx.ovr 文件。
图5为本申请的一种点云处理装置的实施例示意图。
本申请实施例还提出一种点云数据处理装置,用于实现本申请第一方面任意一项实施例所述方法,包含:
第一处理模块51,用于根据原始点云数据集建立八叉树,生成叶子结点数据结构和分支结点数据结构;第二处理模块52,用于多个子线程分别按属性读取所述点云数据,确定结点距离小于其视距阈值的结点,取底层结点构成备选结点集合;第三处理模块53,用于显示和渲染所述应用数据集的图像,排除所述备选结点集合中被遮挡的点云数据,生成应用数据集。
第一存储单元54,用于存储原始点云数据集;第二存储单元55,用于存储所述八叉树的分支结点数据结构;第三存储单元56,用于区分叶子结点按属性分段存储所述叶子结点的点云数据;第四存储单元57,用于存储所述应用数据集。
需要说明的是,优选地,所述第一存储单元、第二存储单元、第三存储单元为外部存储器;所述第四存储单元为设备内存,其中的应用数据集根据显示的视觉范围和视觉坐标变化而动态地变化。
海量点云数据构建成非平衡八叉树数据结构与数据集,数据集按块分段存储在外部存储器,经过上述数据处理过程后,能够以极小的内存占用存储在内存中。其中,八叉树的结构占用内存极小,用x、y、z三个坐标轴的key值加一个八叉树深度值depth,以及数据在外存中的地址就可以表示一个结点。一个八叉树结点结构占用24个字节。结点空间大小可以由x、y、z三个坐标轴的key值及深度值depth计算得出,叶子结点内的点云通过内存映射动态读取,当点云点数量较大或内存阈值较小时,所选择的点云数据量可远远小于原始点云数据量。
应当理解的,上述列举的具体相关内容,仅仅用于示例性说明,不应当对本申请造成任何的限定。
图6包含本申请装置进一步优化的实施例,其中,第一处理模块51进一步包含:
结构模块511,用于获取第一点云数据,将所述第一点云数据构建成八叉树结构,所述八叉树包含多层分支结点和最终的叶子结点;将整个点云数据空间分割为多个结点空间。每一个结点空间为一个立方体的包围盒,每一个父结点的结点空间被等分为8个子结点的结点空间的组合。
抽稀模块512,用于将8个叶子结点内的点云数据向上简化重采样,生成父结点的数据;进一步地,还用于将生成的父结点作为新的子结点,用于向上简化重采样生成上一层父结点的数据,重复将8个子结点内的结点数据向上简化重采样生成父结点的数据的步骤,生成非平衡八叉树的分支结点数据集;
排序模块513,用于在每个结点内构建KD树,利用KD树,将每个所述结点内的第二点云数据进行线性存储,所述第二点云数据由所述第一点云数据分隔获得;
第一处理模块连接于第一存储单元54、第二存储单元55和第三存储单元56。所述第二存储单元、第三存储单元将非平衡八叉树数据集保存在外部存储器中。
第二处理模块52,用于实施本申请实施例步骤11~13、21~22所述方法,进一步包括:
确定模块521,用于根据所述八叉树数据集中的八叉树结构数据,确定结点空间内径,进一步地,根据结点空间内径和/或内存最大允许数据量确定结点的视距阈值;
拣选模块522,用于根据拣选条件,在所述非平衡八叉树数据集中拣选要显示的分支结点和叶子结点,获得备选结点集合,所述拣选条件包括视距、结点空间内径和/或内存最大允许数据量;
第二处理模块连接于第二、第三、第四存储单元,具体地,所述第二、第三存储单元为保存八叉树结构和结点云数据的外部存储器,所述第四存储单元57为计算机处理设备的内存。
第三处理模块53,用于实施本申请实施例步骤31~33所述方法,将所述拣选点云数据集进行延迟渲染,剔除不可见点云。具体包括:
映射模块531,用于获取显示屏幕像素,在GPU上剔除备选结点集合中的大量不可见点云,在帧缓存附件中保存可见点云的视觉坐标、强度、分类等下一步着色处理的必要信息,获得与所述显示屏幕像素位置相同的显存点云数据集,至少包括:点云视距坐标和着色信息;
绘图模块532,用于将帧缓存附件作为纹理图片进行屏幕贴图渲染,在对应的片段着色器中获取帧缓存附件中保存的强度、分类等信息进行点云着色。
所述映射模块连接所述第四存储单元57,所述第四存储单元,例如可以为显存模块,用于将所述显存点云数据集存储于显存中,着色时需要哪些数据就获取哪些数据。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
因此,本申请还提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请中任一实施例所述的方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
进一步地,本申请还提出一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请任一实施例所述的方法。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (7)
1.一种点云数据处理方法,其特征在于,包含以下步骤:
根据原始点云数据集建立八叉树,生成并存储分支结点和叶子结点数据结构,每一个叶子结点包含的点云点数量小于设定阈值;
每一个结点的点云数据按照属性分段存储,每一个数据段中包含所述叶子结点中的点云的同一种属性类型;不同数据段中的点云排列顺序相同,且根据空间坐标按照KD树结构,用数组线性存储,并在每个点云点里用2个二进制位存储KD树分割轴信息;
根据内存容限设定结点的视距阈值,所述视距阈值和所述内存容限正相关,且结点的视距阈值和所述结点的空间内径正相关;
按照设定属性类型和视距范围动态读取数据,读取小于视距阈值的结点中,在每一分支上的底层结点数据,对读取的数据进行射线追踪,放弃被遮挡的点云数据;底层结点,是指当互为父子的结点都小于视距阈值的,取子结点。
2.如权利要求1所述点云数据处理方法,其特征在于,由根结点向下建立非平衡八叉树,具体包含以下步骤:
将点云数据进行分割,判断分割后空间内的点云点数量是否小于所述设定阈值,若是,则停止分割,生成叶子结点;若否,则继续进行空间分割,直至结点空间的点云点数量小于所述设定阈值为止。
3.如权利要求1所述点云数据处理方法,其特征在于,
任一分支结点的数据,是由所述分支结点的8个子结点的点云数据合并采样后生成。
4.如权利要求1所述点云数据处理方法,其特征在于,所述按照设定属性类型和视距范围动态读取数据,对读取的数据进行射线追踪,放弃被遮挡的点云数据,进一步包含以下步骤:
确定结点距离小于其视距阈值的结点,构成一备选结点集合;
读取所述备选结点集合中的分支结点与设定属性对应的数据;
读取所述备选结点集合中的叶子结点中与设定属性对应的数据段中的点云数据;
排除所述备选结点集合中被遮挡的点云数据,生成应用数据集。
5.一种点云数据处理装置,用于实现权利要求1~4任意一项所述方法, 其特征在于,包含:
第一处理模块,用于根据原始点云数据集建立八叉树,生成叶子结点数据结构和分支结点数据结构;第二处理模块,用于多个子线程分别按属性读取所述点云数据,确定结点距离小于其视距阈值的结点,构成备选结点集合,排除所述备选结点集合中被遮挡的点云数据,生成应用数据集;第三处理模块,用于显示和渲染所述应用数据集的图像;
第一存储单元,用于存储原始点云数据集;第二存储单元,用于存储所述八叉树的分支结点数据结构;第三存储单元,用于区分叶子结点按属性分段存储所述叶子结点的点云数据;第四存储单元,用于存储所述应用数据集。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1~4中任一所述的方法。
7.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上的计算机程序,在处理器运行所述计算机程序时实现权利要求1~4任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210995628.4A CN115063497B (zh) | 2022-08-19 | 2022-08-19 | 一种点云数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210995628.4A CN115063497B (zh) | 2022-08-19 | 2022-08-19 | 一种点云数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115063497A CN115063497A (zh) | 2022-09-16 |
CN115063497B true CN115063497B (zh) | 2023-05-05 |
Family
ID=83208238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210995628.4A Active CN115063497B (zh) | 2022-08-19 | 2022-08-19 | 一种点云数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115063497B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116109470B (zh) * | 2023-04-13 | 2023-06-20 | 深圳市其域创新科技有限公司 | 实时点云数据渲染方法、装置、终端及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107798721A (zh) * | 2016-08-31 | 2018-03-13 | 北京四维图新科技股份有限公司 | 一种点云数据的处理方法及装置和点云渲染方法及装置 |
WO2021232469A1 (zh) * | 2020-05-19 | 2021-11-25 | 北京数字绿土科技有限公司 | 一种点云的可视化方法和设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7940279B2 (en) * | 2007-03-27 | 2011-05-10 | Utah State University | System and method for rendering of texel imagery |
CN102750449B (zh) * | 2012-06-20 | 2015-05-20 | 北京航空航天大学 | 基于分步三维空间-特征域映射的点云直线特征提取方法 |
CN107403456B (zh) * | 2017-07-28 | 2019-06-18 | 北京大学深圳研究生院 | 一种基于kd树和优化图变换的点云属性压缩方法 |
CN110211219A (zh) * | 2019-04-18 | 2019-09-06 | 广东满天星云信息技术有限公司 | 一种海量点云数据的处理方法 |
EP4042573A4 (en) * | 2019-10-11 | 2023-06-21 | BlackBerry Limited | METHODS AND DEVICES FOR TREE SWITCHING IN POINT CLOUD COMPRESSION |
-
2022
- 2022-08-19 CN CN202210995628.4A patent/CN115063497B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107798721A (zh) * | 2016-08-31 | 2018-03-13 | 北京四维图新科技股份有限公司 | 一种点云数据的处理方法及装置和点云渲染方法及装置 |
WO2021232469A1 (zh) * | 2020-05-19 | 2021-11-25 | 北京数字绿土科技有限公司 | 一种点云的可视化方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115063497A (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Nießner et al. | Real-time 3D reconstruction at scale using voxel hashing | |
Richter et al. | Out-of-core real-time visualization of massive 3D point clouds | |
US7373473B2 (en) | System and method for efficient storage and manipulation of extremely large amounts of scan data | |
US7804498B1 (en) | Visualization and storage algorithms associated with processing point cloud data | |
US9754405B1 (en) | System, method and computer-readable medium for organizing and rendering 3D voxel models in a tree structure | |
CN113112603B (zh) | 三维模型优化的方法和装置 | |
EP2869273A2 (en) | Ray tracing method and apparatus | |
CN110969691B (zh) | 基于WebGL的摄影数据调度方法及系统 | |
CN110276820B (zh) | 基于lod组织与调度方法的gis模型优化方法及系统 | |
EP1371021A1 (en) | Generation of a three-dimensional representation from multiple images using octrees | |
CN115063497B (zh) | 一种点云数据处理方法及装置 | |
CN114387198B (zh) | 一种影像与实景模型的融合显示方法、装置及介质 | |
Adorjan | Opensfm: A collaborative structure-from-motion system | |
US11615578B1 (en) | Systems and methods for efficient rendering and processing of point clouds using textures | |
CN115063496B (zh) | 一种点云数据快速处理方法及装置 | |
Kuder et al. | Point-based rendering optimization with textured meshes for fast LiDAR visualization | |
CN111145085B (zh) | 拣选片元的方法和模型栅格化的方法、系统、设备和介质 | |
Steinlechner et al. | Adaptive pointcloud segmentation for assisted interactions | |
Bormann et al. | Real-time indexing of point cloud data during LiDAR capture | |
CN116152039B (zh) | 图像渲染的方法 | |
CN117494289B (zh) | 特征边几何体生成方法及装置、测量吸附方法及装置 | |
Glumova et al. | Investigation of algorithms for generating surfaces of 3D models based on an unstructured point cloud | |
CN116993894B (zh) | 虚拟画面的生成方法、装置、设备、存储介质及程序产品 | |
US20230107740A1 (en) | Methods and systems for automated three-dimensional object detection and extraction | |
Behmann et al. | Probabilistic 3d point cloud fusion on graphics processors for automotive (poster) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |