CN115063496B - 一种点云数据快速处理方法及装置 - Google Patents
一种点云数据快速处理方法及装置 Download PDFInfo
- Publication number
- CN115063496B CN115063496B CN202210995627.XA CN202210995627A CN115063496B CN 115063496 B CN115063496 B CN 115063496B CN 202210995627 A CN202210995627 A CN 202210995627A CN 115063496 B CN115063496 B CN 115063496B
- Authority
- CN
- China
- Prior art keywords
- point cloud
- point
- data
- pixel
- display
- 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/50—Depth or shape recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/24—Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本申请公开了一种点云数据快速处理方法,包含以下步骤:在显示平面上获得第一点云集合向像素位置的映射,生成显示像素的集合,使每一个显示像素对应点云中至少一个点;计算点云中点的视觉坐标,当多个点映射在同一个像素时,保留深度最小的点的视觉坐标,进而生成与全部显示像素相对应的第二点云集合的数据集,包含第二点云集合的各点视觉坐标。响应于GUI中显示位置的信息,根据该位置的像素对应的第二点云集合中点的视觉坐标计算该点的空间坐标,根据所述空间坐标在第一点云集合中搜索出该点。本申请还包含用于实现所述方法的装置。本申请的方法和装置解决现有技术中动态显示不流畅、数据调取速度和反向溯源的速度较慢问题。
Description
技术领域
本申请涉及地理信息系统和计算机技术领域,尤其涉及一种点云数据快速处理方法及装置。
背景技术
点云数据(point cloud data)是指在一个三维坐标系统中的一组向量的集合。扫描资料以点的形式记录,每一个点包含有三维坐标,有些可能含有颜色信息(RGB)或反射强度信息(Intensity)。
点云是由很多的离散的采样点构成的“云团”,远看如同真实世界一样,放大来看都是一些离散的点,每个点中都包含数据,因此很多的点聚在一起的数据量非常大。
现有技术中,当点云数据被显示时,眼睛到鼠标所指位置,可以构成一条射线,用这个射线在点云数据集合里进行射线求交,可得到这条线上的所有点云点。找到射线上所有点后,按离眼睛的距离排序,取最近的点。因此要根据屏幕显示的点云点进行溯源,找到原始点云数据的参数时,需要进行较多的计算才能获得该点的数据,且在原始点云数据中搜索和调取相关数据时,处理器需要进行大量读写,处理速度缓慢。
发明内容
本申请实施例提供一种点云数据快速处理方法及装置,用于解决现有技术中动态显示不流畅、数据调取速度和反向溯源的速度较慢问题。
第一方面,本申请提出一种点云数据快速处理方法,包含以下步骤:
在显示平面上获得第一点云集合向像素位置的映射,生成显示像素的集合,使每一个显示像素对应点云中至少一个点;
计算点云中点的视觉坐标,当多个点映射在同一个像素时,保留深度最小的点的视觉坐标,进而生成与全部显示像素相对应的第二点云集合的数据集,包含第二点云集合的各点视觉坐标。
响应于GUI中显示位置的信息,根据该位置的像素对应的第二点云集合中点的视觉坐标计算该点的空间坐标,根据所述空间坐标在第一点云集合中搜索出该点。
优选地,所述第一点云集合为:根据原始点云数据集建立八叉树,生成并存储分支结点和叶子结点数据结构,每一个叶子结点包含的点云数量小于设定阈值。
进一步优选地,任一分支结点的数据,是由所述分支结点的8个子结点的点云数据合并采样后生成。
再进一步优选地,在八叉树数据结构中读取小于视距阈值的结点中每一分支最底层结点数据,更新第一点云集合;结点的视距阈值和所述结点的空间内径正相关。
在本申请第一方面的任意一个实施例中,优选地,每一个结点的点云数据依空间坐标按照KD树结构存储;所述根据所述空间坐标在第一点云集合中搜索出该点的步骤,按照KD树的索引信息查找。
在本申请第一方面的任意一个实施例中,优选地,还包含以下步骤:响应于设定深度值,对应于设定像素;在映射到所述设定像素的多个点中,在第一点云集合中删除深度小于设定深度值的点,或者,在第一点云集合中删除深度大于设定深度值的点。
在本申请第一方面的任意一个实施例中,优选地,还包含以下步骤:响应于设定深度值,对应于设定像素,在第二点云集合中删除小于所述设定深度值的点,在映射到所述设定像素的多个点中,选择不小于所述设定深度的、深度最小的点,更新第二点云集合中的视觉坐标,或者,在第二点云集合中删除大于所述设定深度值的点。
第二方面,本申请还提出一种点云数据快速处理装置,用于实现本申请第一方面任意一项实施例所述方法,包含:显示化处理单元、捕捉处理单元。
所述显示化处理单元,用于在显示平面上获得第一点云集合向像素位置的映射,生成显示像素集合,使每一个显示像素对应点云中至少一个点;计算点云中点的视觉坐标,当多个点映射在同一个像素时,保留深度最小的点的视觉坐标,进而生成与全部显示像素相对应的第二点云集合数据集,包含第二点云集合的各点视觉坐标。
所述捕捉处理单元,响应于GUI中显示位置的信息,根据该位置的像素对应点的视觉坐标计算该点的空间坐标,根据所述空间坐标在第一点云集合中搜索出该点。
优选地,还包含:结构化处理单元,用于读取原始点云数据,根据原始点云数据集建立八叉树,生成并存储分支结点和叶子结点数据结构,每一个叶子结点包含的点云数量小于设定阈值,生成第一点云集合并存储。
进一步优选地,还包含视距化处理单元,用于在八叉树数据结构中读取小于视距阈值的结点中每一分支的最底层结点数据,更新第一点云集合;结点的视距阈值和所述结点的空间内径正相关。
在本申请第二方面任意一个实施例中,优选地,所述显示化处理单元,还用于,响应于设定深度值,对应于设定像素,在第二点云集合中删除小于所述设定深度值的点;在映射到所述设定像素的多个点中,选择不小于所述设定深度的、深度最小的点,更新第二点云集合中的视觉坐标;或者,所述显示化处理单元,还用于,响应于设定深度值,对应于设定像素,在第二点云集合中删除大于所述设定深度值的点。
在本申请第二方面任意一个实施例中,优选地,还包含视距化处理单元,响应于设定深度值,对应于设定像素;在映射到所述设定像素的多个点中,在第一点云集合中删除深度小于设定深度值的点,或者,在第一点云集合中删除深度大于设定深度值的点。
第三方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请中任一实施例所述的方法。
第四方面,本申请实施例提供一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,在处理器运行所述计算机程序时实现本申请中任一实施例所述的方法。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
使用非平衡八叉树结合KD树存储点云数据,并在使用点云数据时进行延迟渲染,在GPU上剔除大量不可见点云,极大的提高点云着色显示速度。利用“点云、像点、眼睛”三点共线关系,在GPU上进行三维空间点云的实时解算与点位捕捉。能够实现海量点云加载、提高显示速度和鼠标精准捕捉的目的,为海量点云的数字测图提供了底层技术支撑。本申请方案实现快速无穿透捕捉,比传统的射线求交,多面体求交,性能提高很多。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例提供的一种点云数据快速处理方法的实施例流程图;
图2为本申请实施例进一步优化的点云数据外部存储处理过程;
图3为本申请实施例进一步优化的缓存数据切片更新过程;
图4为本申请数据关联关系示意图;
图5为本申请的一种点云数据快速处理装置的实施例示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本说明书实施例提供的一种点云数据快速处理方法的实施例流程图。
本申请提出一种点云数据快速处理方法,包含以下步骤:
步骤101、在显示平面上获得第一点云集合向像素位置的映射,生成显示像素的集合,使每一个显示像素对应点云中至少一个点。
也就是说,根据第一点云集合中任何一个采样点的世界坐标和视觉触发点(相机、眼睛)的位置,能够计算该采样点在显示平面上的映射,即采样点和视觉点之间的连线和显示平面的交点的位置,所在的像素为显示像素。例如,世界坐标的点云在GPU上进行投影变换。
步骤102、计算点云中点的视觉坐标,当多个点映射在同一个像素时,保留深度最小的点的视觉坐标。
视觉坐标,是以视觉触发点位置为原点的坐标。
当多个点映射在同一个像素,例如,映射在像素P上的点,包括p1(x1,y1,z1)、p2(x2,y2,z2),当z1<z2,则保留p1。视觉坐标系为(x,y,z),其中z为深度值。
本步骤进行深度测试,沿同一射线,深度小的(z坐标小,离眼睛近的)覆盖深度大的(z坐标大,离眼睛远的),最终留在显示像素上的都是该射线上离眼睛近的点。此过程可以通过GPU完成。
步骤103、生成与全部显示像素相对应的第二点云集合数据集,包含第二点云集合的各点视觉坐标。
第二点云集合是显示平面上像素所对应显示的全部点云点。按照步骤101~102,最终每个像素点对应最多1个点云点。
第二点云集合中的p1点的视觉坐标,至少包含深度值z1。
需要说明的是,用像素P点在显示平面上的位置坐标和P点对应的点云点的深度值(例如z1),通过简单的几何关系能够计算出x1,y1的值,因此在第二点云集合中只保存深度值,能够减少存储空间。
需要说明的是,只保存深度值z,反向溯源时会引起误差。减小误差的方法是同时保存视觉坐标的x,y值。保存视觉坐标x,y,z之后,每个点云点在对应的显示像素上显示面积变大之后,不会引起误差,能保证反算回去的空间坐标,跟其中某个点云点的坐标一致。
还需要说明的是,当点云密度大时,多个点云点映射在同一个像素时,按照步骤102的方案,仅会取得深度值最小的一个点,例如p1(x1,y1,z1)。此时,仅使用像素点位置和深度值z1所计算出来的实际点位置将存在误差。因此,为了快速获得高精度的点云点位置,在第二点云集合中的p1点的视觉坐标可包含三维坐标值(x1,y1,z1)。
因此,优选地,在第二点云集合的数据集中,每个像素都对应一个存储单元。在每个存储单元中,记录了该像素所显示的最近点的三维视觉坐标(x,y,z)。
步骤104、响应于GUI中显示位置的信息,根据该位置的像素对应的第二点云集合中点的视觉坐标计算该点的空间坐标,根据所述空间坐标在第一点云集合中搜索出该点。
无穿透快速捕捉是指:每个像素都对应一个存储单元,在每个存储单元里记录了该像素显示的最近点的“视觉坐标xyz”,鼠标在屏幕上移动时,用鼠标位置处的“视觉坐标xyz”,即可以反算出真实的点云坐标“世界坐标xyz”,然后用这个“世界坐标xyz”到原始点云数据中里快速最近邻查找,即可得到捕捉点的其它属性(强度、回波次数、GPS时间等)
进一步地,当使用鼠标对GUI进行操纵时,为获得位置信息处对应的像素,例如以当前鼠标位置为中心,n个像素为捕捉阈值(可设置n=3,即不少于3个像素),构建一个矩形,矩形内有6×6个像素,可从CPU中获取得每个像素对应的“视觉坐标xyz”,共6×6=36个。比较这36个“视觉坐标xyz”的 z 值,取 z 最小的点为捕捉点,反算“世界坐标xyz",完成捕捉。(在视觉坐标系下,z 值即是深度)。
这样就实现了无穿透捕捉,在以像素为单位的容差阈值内,保证用户鼠标点击下去,捕捉到的点云点,是最前面的,用户看到的、想要的那个点,而不是后面的背景点云点。
图2为本申请实施例进一步优化的点云数据外部存储处理过程。
步骤201、用原始点云数据集生成结构化的第一点云集合的数据集。
优选地,所述第一点云集合为:根据原始点云数据集建立八叉树,所述八叉树的数据结构由多层分支结点和最终的叶子结点构成;生成并存储分支结点和叶子结点数据结构,每一个叶子结点包含的点云数量小于设定阈值。进一步优选地,任一分支结点的数据,是由所述分支结点的8个子结点的点云数据合并采样后生成。
在具体实施中,八叉树底层叶子结点存储原始数据,8个叶子结点的数据合并进行下采样后存储为其上层父结点数据,进一步地,生成的父结点作为新的子结点,用于向上简化重采样,重复将每8个子结点的数据合并采样后存储到上层父结点,构建LOD。
将生成的第一点云集合的结构化数据集存储于外存中。
对GPU来说,点云渲染时,是由多线程把八叉树各块的数据分别同时读到内存,渲染显示的时候也是按块批量渲染(一次渲染一块数据),
步骤202、通过视距阈值截取和更新第一点云集合的数据集。
再进一步优选地,在八叉树数据结构中读取小于视距阈值的结点中每一分支最底层结点数据,更新第一点云集合;结点的视距阈值和所述结点的空间内径正相关。
小于视距阈值的结点中每一分支最底层结点,是指当互为父子的结点都小于视距阈值的,取子结点的结点数据。因此,对选中的任何一个结点,视距化数据中不包含其子结点或父结点。例如,当一个结点满足设定的视距阈值时,所述视距化数据中仅包含该结点的点云数据而不包含其子结点的点云数据,也不包含其父结点的点云数据。
需要说明的是,结点数据的视距阈值的确定方法是根据结点空间内径,例如按照结点空间内径的20倍。当结点空间内径较大时,结点的视距阈值也增大。超过视距阈值的结点数据不被读取。
在实际应用中,由于视觉原点的移动、或视野范围变化,需要动态地更新第一点云集合,从第一点云集合结构化数据集中选择数据生成的第一点云集合视距化数据集,可保存在处理器缓存中。
步骤203、在第一点云集合中,每一个结点的点云数据依空间坐标按照KD树结构存储。
进一步地,所述根据所述空间坐标在第一点云集合中搜索出该点的步骤,按照KD树的索引信息查找。
在每个点云点的数据里可用2个二进制位存储KD树分割轴信息。由于结点内的点云数据是根据每个点的空间位置按照KD树的结构存储的,对于已知空间坐标的任意一个点可以快速在结点内搜索到。
进一步地,眼睛到鼠标所指位置可以构成一条射线,射线经过该点云点。用这个射线在KD树里进行射线求交,能够得到这条线上的所有点云点。
进一步地,每一个结点的点云数据按照属性分段存储,每一个数据段中包含所述结点中的点云的同一种属性类型;不同数据段中的点云排列顺序相同,且依空间坐标按照KD树结构存储。
例如,每个点云点包含坐标、强度、颜色、分类、回波次数、GPS时间,数据标识,共24个字节,KD树分割轴占用数据标识字节的前2位,其它6位用来表示是否删除、采集来源(机载、车载、测站、背包、上采样);使用时根据用户自定义,此处不做限定。
一个结点可以理解为一个点云块,点云块在文件里分段存储,每一块的格式为:坐标、坐标、坐标、强度、强度、强度、颜色、颜色、颜色、……,使用的时候分段进行内存映射,不需要使用的数据不加载。这样内存映射更快,同一块数据,不需要的属性不用映射到内存。在第一点云集合的结构化数据集中,仅读取与设定属性对应的数据段中的点云数据,进入处理器内存。
需要说明的是,除了八叉树叶子结点的原始点云会建立KD树之外,下采样(抽稀)得到的八叉树分支结点的点云也会建立KD树。与叶子结点数据存储方式相同,分支结点的点云数据按照属性类型分段,每一个数据段的属性类型相同,不同的数据段的点云顺序相同。
需要说明的是,利用八叉树和KD树排序后,线性存储的序号不会对内存造成负担。需要把八叉树也线性化,并记录两个序号,即八叉树线性化后的结点序号,块内KD树排序后的点云点序号,根据序号能够确定目标点在八叉树的哪个结点以及结点中的哪个点云点数据。
图3为本申请实施例进一步优化的缓存数据切片更新过程。
在本申请第一方面的任意一个实施例中,优选地,还包含以下步骤:
步骤301、响应于设定深度值,对应于设定像素;在映射到所述设定像素的多个点中,在第一点云集合中删除深度小于设定深度值的点。
所述设定像素,例如可以是,响应于GUI中的位置信息确定的,例如,通过鼠标在显示界面上点选的位置所在的像素。
对应于设定像素,设定深度值,例如,所述深度值定义了一个“近平面”,小于近平面深度值的点不显示。
在本申请第一方面的任意一个实施例中,优选地,还包含以下步骤:
步骤302、响应于设定深度值,对应于设定像素,在第二点云集合中删除小于所述设定深度值的点;在映射到所述设定像素的多个点中,选择不小于所述设定深度的、深度最小的点,更新第二点云集合中的视觉坐标。
例如,一种点云数据快速处理方法,按顺序包含以下步骤:101、102、103、104、301。经步骤104,在第一点云集合中搜寻出的位于视觉前方的点云点,在步骤301中如果该点深度小于设定深度则被排除。循环执行以上步骤,则再次执行步骤103时,第二点云集合也被更新。
在显示效果上,如果小于近平面位置的点被删除,则投射在显示像素上的在前的点云点被删除,露出在后的点云点。
例如,一种点云数据快速处理方法,按顺序包含以下步骤:101、102、103、302、104。步骤103生成了第二点云集合,步骤302进一步地对第二点云集合进行切片,去除深度小于设定深度值的点。因此,如果使用步骤301的技术手段,则在本申请的实施例中,第一点云集合和第二点云集合均会被更新。如果使用步骤302的技术手段,则可以不更新第一点云集合,再次执行步骤103时,在第一点云集合中选择深度值大于设定深度的点云,再在其中寻找深度值最小的点。
还需要说明的是,所述设定深度值还可以用于定义一“远平面”,大于远平面深度值的点不显示。这样,在步骤301中,相应地,在第一点云集合中删除深度大于设定深度值的点;在步骤302中,相应地,在第二点云集合中删除深度大于设定深度值的点。能够理解,在设定像素上如果存在点云点,则只有1个点云点存在于第二点云集合中,如果该点云点的位置因大于远平面位置被删除,则该设定像素上就不再显示有点云点。
还需要说明的是,如设定第一深度值为近平面位置、第二深度值为远平面位置,则在步骤301~302中可以删除深度小于第一深度值的点云点、删除深度大于第二深度值的点云点,因此在第一点云集合中保留深度值在第一深度值和第二深度之间的点,即切片。同样在第二点云集合中也可删除深度小于第一深度值的点云点、删除深度大于第二深度值的点云点,也就是实现在第一点云集合的切片数据向显示像素的映射。
图4为本申请数据关联关系示意图。表示点云点向显示像素的映射,世界坐标、视觉坐标、像素位置之间的关系。其中,点云数据中,包含每个采样点的“世界坐标”,世界坐标是点云的全局坐标。视觉坐标系(x,y,z)的原点位于眼睛(或相机),当多个点云点(例如p1,p2)映射在同一个像素时 (例如P),原点与点云点的连线经过该像素所在位置。
图中还表示了第一点云集合、第二点云集合范围。以原始点云数据在视觉范围内的采样点作为第一点云集合,经过向显示平面的映射,在每一条原点经像素点的射线上,取得一个深度值最小的点云点,因此使每一个像素获得一个对应的点云点,作为第二点云集合。
设定深度切片时,在第一点云集合中,去掉深度值小于设定深度的点(虚线框内)。或者,在第二点云集合中,去掉深度值小于设定深度的点,再调取第一点云集合中深度值大于所述设定深度的点,在其中取深度值最小的点,更新第二点云集合。
图5为本申请的一种点云处理装置的实施例示意图。
本申请还提出一种点云数据快速处理装置,用于实现本申请任意一项实施例所述方法,包含:显示化处理单元51、捕捉处理单元52。
所述显示化处理单元,用于在显示平面上获得第一点云集合向像素位置的映射,生成显示像素集合,使每一个显示像素对应点云中至少一个点;计算点云中点的视觉坐标,当多个点映射在同一个像素时,保留深度最小的点的视觉坐标,进而生成与全部显示像素相对应的第二点云集合的数据集,包含第二点云集合的各点视觉坐标,称为第二点云集合显示化数据集。
所述捕捉处理单元,响应于GUI中显示位置的信息,根据该位置的像素对应点的视觉坐标计算该点的空间坐标,根据所述空间坐标在第一点云集合中搜索出该点。
进一步地,所述装置还包含GPU显示模块及GUI 55。通过GUI,输出人工操作的位置响应、对应像素点坐标信息。所述GPU可包含显示化处理单元51和显示模块及GUI 55部分,所述第二点云集合数据集可存储在GPU缓存中。
优选地,还包含:结构化处理单元53,用于读取原始点云数据(原始点云数据存储器在图中未示出),根据原始点云数据集建立八叉树,生成并存储分支结点和叶子结点数据结构,每一个叶子结点包含的点云数量小于设定阈值,生成第一点云集合并存储第一点云集合结构化数据。
进一步优选地,还包含视距化处理单元54,用于在八叉树数据结构中读取小于视距阈值的结点中每一个分支最底层结点数据,更新第一点云集合,生成第一点云集合视距化数据;结点的视距阈值和所述结点的空间内径正相关。
在本申请任意一个装置实施例中,优选地,所述显示化处理单元,还用于,响应于设定深度值,对应于设定像素,在第二点云集合中删除深度小于所述设定深度值的点,在映射到所述设定像素的多个点中,选择不小于所述设定深度的、深度最小的点,更新第二点云集合中的视觉坐标。或者,所述显示化处理单元,还用于,响应于设定深度值,对应于设定像素,在第二点云集合中删除深度大于所述设定深度值的点。
在本申请第二方面任意一个实施例中,优选地,所述视距化处理单元,响应于设定深度值,对应于设定像素;在映射到所述设定像素的多个点中,在第一点云集合中删除深度小于设定深度值的点,或者,在第一点云集合中删除深度大于设定深度值的点。
本申请装置还包含以下存储器:
第一点云集合结构化数据存储器56,用于存储所述八叉树的分支结点数据结构、区分结点按属性分段存储所述叶子结点、分支结点的点云数据。
第一点云集合视距化数据存储器57,用于存储经视距删选后的第一点云集合的结点数据。由于视觉原点的移动或视野范围变化,需要动态地更新第一点云集合,从第一点云集合结构化数据集中选择数据生成的第一点云集合视距化数据集,其中包含小于视距阈值的结点中每一分支最底层结点的点云数据。
进一步地,结点中的点云数据,按照KD树的方式存取。
需要说明的是,优选地,所述第一点云集合结构化数据存储器为外部存储器;所述第一点云集合视距化数据存储器为设备内存,其中的视距化数据集根据显示的视觉范围和视觉坐标原点变化而动态地变化。
海量点云数据构建成非平衡八叉树数据结构与数据集,数据集按块分段存储在外部存储器,经过上述数据处理过程后,能够以极小的占用量存储在内存中。其中,八叉树的结构占用内存极小,用x、y坐标值加一个深度就可以表示一个结点。结点空间大小可以计算得出,结点内的点云通过内存映射动态读取,所选择的点云数据量远远小于原始点云数据量。
八叉树结构存储在文件头,一次性全部读入到内存,每个八叉树结点对应的点云数据存储在外部文件(叶子结点为 xx.pcd 文件,分支结点为 xx.ovr 文件),使用的时候(显示或做其它处理),先从内存中的八叉树结构里获取相应的八叉树结点,然后由多线程内存映射,将相应八叉树结点的点云数据(一般不是点的所有属性,按需读取)读入内存,根据坐标位置按KD树排列规律进行快速查找(确定点的序号之后,再去读取相应序号点的其它属性)。点云数据在内存里是动态加载与释放(用完就释放,需要的时候再去读,每个八叉树结点里存储了该块点云数据在文件中的地址)。
海量点云数据建立非平衡八叉树与平衡KD树的过程依次进行。首先,将点云从原始文件中解析出来,只构建八叉树结构,记录每个结点的实际点云数量(由于结点内数据量超限时,会分裂成八个子结点,所以也需要临时存储每块的数据);然后,根据每个结点的实际点云数据量,开辟相应大小的文件存储空间,形成正式的八叉树数据文件(从临时存储里读取每块点云数据,不需要从原始文件重新解析点云),并在块内构建KD树,形成 xx.pcd文件。
分支结点的数据存储在 xx.ovr 文件中,可以删除,下次若使用到该数据,程序发现没有该文件,会根据八叉树结构和叶子结点数据集计算生成分支结点数据集,重新自动创建 xx.ovr 文件。
第二点云集合显示化数据存储器58,按照像素位置排列,每一个像素对应一个点云点。所述第二点云集合显示化数据存储器中包含每个像素对应的采样点的深度值z。进一步地,所述存储器中还包含所述采样点的(x,y)的坐标值。当使用GPU进行点云显示时,可使用GPU缓存作为所述第二点云集合显示化数据的存储器。
应当理解的,上述列举的具体相关内容,仅仅用于示例性说明,不应当对本申请造成任何的限定。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
因此,本申请还提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请中任一实施例所述的方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
进一步地,本申请还提出一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请任一实施例所述的方法。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种点云数据快速处理方法,其特征在于,包含以下步骤:
根据原始点云数据集生成结构化的第一点云集合的数据集,存储于外存中;
在显示平面上获得第一点云集合向像素位置的映射,生成显示像素的集合,使每一个显示像素对应点云中至少一个点;采样点在显示平面上的映射,即采样点和视觉点之间的连线和显示平面的交点的位置,所在像素为显示像素;
计算点云中点云点的视觉坐标,当多个点映射在同一个像素时,保留深度最小的点的视觉坐标,进而生成与全部显示像素相对应的第二点云集合的数据集,包含第二点云集合的各点视觉坐标,视觉坐标包含三维坐标值;所述第二点云集合数据集存储在GPU缓存中;第二点云集合是显示平面上像素所对应显示的全部点云点,最终每个像素点对应最多一个点云点;
响应于GUI中显示位置的信息,根据该位置的像素对应的第二点云集合中点的视觉坐标计算该点的空间坐标,根据所述空间坐标在第一点云集合中搜索出该点。
2.如权利要求1所述的点云数据快速处理方法,其特征在于,
所述第一点云集合为:根据原始点云数据集建立八叉树,生成并存储分支结点和叶子结点数据结构,每一个叶子结点包含的点云数量小于设定阈值。
3.如权利要求2所述点云数据快速处理方法,其特征在于,
任一分支结点的数据,是由所述分支结点的8个子结点的点云数据合并采样后生成。
4.如权利要求3所述点云数据快速处理方法,其特征在于,在八叉树数据结构中读取小于视距阈值的结点中每一分支最底层结点数据,更新第一点云集合;所述结点的视距阈值和所述结点的空间内径正相关。
5.如权利要求1~4任意一项所述点云数据快速处理方法,其特征在于,
每一个结点的点云数据依空间坐标按照KD树结构存储;所述根据所述空间坐标在第一点云集合中搜索出该点的步骤,按照KD树的索引信息查找。
6.如权利要求1~4任意一项所述点云数据快速处理方法,其特征在于,
响应于设定深度值,对应于设定像素;在映射到所述设定像素的多个点中,在第一点云集合中删除深度小于设定深度值的点,或者,在第一点云集合中删除深度大于设定深度值的点。
7.如权利要求1~4任意一项所述的点云数据快速处理方法,其特征在于,还包含以下步骤:
响应于设定深度值,对应于设定像素,
在第二点云集合中删除小于所述设定深度值的点,在映射到所述设定像素的多个点中,选择不小于所述设定深度的、深度最小的点,更新第二点云集合中的视觉坐标,或者,
在第二点云集合中删除大于所述设定深度值的点。
8.一种点云数据快速处理装置,用于实现权利要求1~7任意一项所述方法, 其特征在于,包含:显示化处理单元、捕捉处理单元;
所述显示化处理单元,用于在显示平面上获得第一点云集合向像素位置的映射,生成显示像素集合,使每一个显示像素对应点云中至少一个点;计算点云中点云点的视觉坐标,当多个点映射在同一个像素时,保留深度最小的点的视觉坐标,进而生成与全部显示像素相对应的第二点云集合数据集,包含第二点云集合的各点视觉坐标;
所述捕捉处理单元,响应于GUI中显示位置的信息,根据该位置的像素对应点的视觉坐标计算该点的空间坐标,根据所述空间坐标在第一点云集合中搜索出该点。
9.如权利要求8所述点云数据快速处理装置,其特征在于,还包含:
结构化处理单元,用于读取原始点云数据,根据原始点云数据集建立八叉树,生成并存储分支结点和叶子结点数据结构,每一个叶子结点包含的点云数量小于设定阈值,生成第一点云集合并存储。
10.如权利要求9所述点云数据快速处理装置,其特征在于,还包含视距化处理单元,用于在八叉树数据结构中读取小于视距阈值的结点中每一分支的最底层结点数据,更新第一点云集合;结点的视距阈值和所述结点的空间内径正相关。
11.如权利要求8所述点云数据快速处理装置,其特征在于,
所述显示化处理单元,还用于,响应于设定深度值,对应于设定像素,在第二点云集合中删除小于所述设定深度值的点;在映射到所述设定像素的多个点中,选择不小于所述设定深度的、深度最小的点,更新第二点云集合中的视觉坐标,或者,
所述显示化处理单元,还用于,响应于设定深度值,对应于设定像素,在第二点云集合中删除大于所述设定深度值的点。
12.如权利要求8所述点云数据快速处理装置,其特征在于,还包含:
视距化处理单元,响应于设定深度值,对应于设定像素;在映射到所述设定像素的多个点中,在第一点云集合中删除深度小于设定深度值的点,或者,在第一点云集合中删除深度大于设定深度值的点。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1~7中任一所述的方法。
14.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上的计算机程序,在处理器运行所述计算机程序时实现权利要求1~7任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210995627.XA CN115063496B (zh) | 2022-08-19 | 2022-08-19 | 一种点云数据快速处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210995627.XA CN115063496B (zh) | 2022-08-19 | 2022-08-19 | 一种点云数据快速处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115063496A CN115063496A (zh) | 2022-09-16 |
CN115063496B true CN115063496B (zh) | 2023-06-27 |
Family
ID=83207781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210995627.XA Active CN115063496B (zh) | 2022-08-19 | 2022-08-19 | 一种点云数据快速处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115063496B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117807434B (zh) * | 2023-12-06 | 2024-07-16 | 中国信息通信研究院 | 一种通信数据集处理方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113393514A (zh) * | 2021-06-11 | 2021-09-14 | 中国科学院自动化研究所 | 一种三维无序点云数据处理方法、系统及设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9070285B1 (en) * | 2011-07-25 | 2015-06-30 | UtopiaCompression Corporation | Passive camera based cloud detection and avoidance for aircraft systems |
CN109033989B (zh) * | 2018-07-02 | 2020-11-24 | 深圳辰视智能科技有限公司 | 基于三维点云的目标识别方法、装置及存储介质 |
CN110211219A (zh) * | 2019-04-18 | 2019-09-06 | 广东满天星云信息技术有限公司 | 一种海量点云数据的处理方法 |
CN114494366B (zh) * | 2022-01-19 | 2024-04-30 | 中铁第一勘察设计院集团有限公司 | 一种影像与点云配准的道路坑槽提取方法 |
CN114078151B (zh) * | 2022-01-19 | 2022-04-22 | 季华实验室 | 一种点云融合方法、装置、电子设备及存储介质 |
-
2022
- 2022-08-19 CN CN202210995627.XA patent/CN115063496B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113393514A (zh) * | 2021-06-11 | 2021-09-14 | 中国科学院自动化研究所 | 一种三维无序点云数据处理方法、系统及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115063496A (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11263816B2 (en) | Method and device for a placement of a virtual object of an augmented or mixed reality application in a real-world 3D environment | |
US10268917B2 (en) | Pre-segment point cloud data to run real-time shape extraction faster | |
Elseberg et al. | One billion points in the cloud–an octree for efficient processing of 3D laser scans | |
CN110990516B (zh) | 地图数据的处理方法、装置和服务器 | |
US11748937B2 (en) | Sub-pixel data simulation system | |
JP2004521423A (ja) | 8分木を用いた多数の画像からの3次元表現の生成 | |
CN113795867B (zh) | 物体姿态的检测方法、装置、计算机设备和存储介质 | |
CN115063496B (zh) | 一种点云数据快速处理方法及装置 | |
CN114820975B (zh) | 基于全要素参数符号化的三维场景仿真重构系统及方法 | |
CN107832771A (zh) | 气象数据处理装置及方法、包括气象数据处理装置的系统及记录气象数据处理程序的介质 | |
CN113989744A (zh) | 一种基于超大尺寸高分辨图像的行人目标检测方法及系统 | |
CN115063497B (zh) | 一种点云数据处理方法及装置 | |
CN112669426A (zh) | 基于生成对抗网络的三维地理信息模型渲染方法及系统 | |
KR20170025993A (ko) | 가속 구조를 생성 및 탐색하는 방법 | |
CN116091715A (zh) | 一种基于三维gis引擎的poi点聚合方法 | |
CN114972599A (zh) | 一种对场景进行虚拟化的方法 | |
CN117422848B (zh) | 三维模型的分割方法及装置 | |
US20230107740A1 (en) | Methods and systems for automated three-dimensional object detection and extraction | |
CN118071955B (zh) | 一种基于Three.JS实现三维地图埋点方法 | |
CN116824068B (zh) | 面向复杂动态场景中点云流的实时重建方法、装置及设备 | |
CN117494289B (zh) | 特征边几何体生成方法及装置、测量吸附方法及装置 | |
CN117611781B (zh) | 一种实景三维模型的压平方法及装置 | |
Du | Accurate, Detailed and Automatic Tree Modelling from Point Clouds | |
Adsul et al. | IntelliMap: AI-Driven Terrain Exploration and Mapping | |
Ryan | A Domain Adjusting Region Octree: Indexing a stream of unpredictable point cloud data for line-of-sight analysis |
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 |