[发明专利]基于内存预分配和多点并写技术的大规模点云数据快速读取方法在审
申请号: | 201410503690.2 | 申请日: | 2014-09-26 |
公开(公告)号: | CN104268096A | 公开(公告)日: | 2015-01-07 |
发明(设计)人: | 张建生 | 申请(专利权)人: | 西南科技大学 |
主分类号: | G06F12/02 | 分类号: | G06F12/02;G06F9/38 |
代理公司: | 哈尔滨市松花江专利商标事务所 23109 | 代理人: | 杨立超 |
地址: | 621000 四*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 内存 分配 多点 技术 大规模 数据 快速 读取 方法 | ||
1.一种基于内存预分配和多点并写技术的大规模点云数据快速读取方法,其特征在于,所述方法为:
步骤A、内存预分配过程:首先确定点云数据文件中点的数目,从而确定点云数据文件中所有点需要占用的内存大小,然后预先为点云数据分配对应大小的内存;
步骤B、多点并写过程:通过内存映射文件机制,将点云数据文件映射到映射内存后创建含有指定数量线程的线程池,每个线程负责解析映射内存中的部分点数据信息,并将解析结果写入到之前预先分配的内存中,实现多点并写。
2.根据权利要求1所述的一种基于内存预分配和多点并写技术的大规模点云数据快速读取方法,其特征在于,所述方法的具体实现过程为:
步骤一、选择点云数据文件,
步骤二、确定点云数据文件中点的数目,采用数据分块方式确定点云数据文件中的点数目,
步骤三、分配相应大小的内存:根据点云数据文件中点的数目确定点云数据文件中所有点需要占用的内存大小,然后预先为点云数据分配对应大小的内存;
步骤四、将点云数据文件映射入映射内存中,
步骤五、创建含有指定数量线程的线程池,
步骤六、对映射内存文件分块,并对每一块文件数据的解析任务创建新线程,加入到线程池中,
步骤七、线程池中的活动线程执行解析任务,并将解析结果保存到预分配内存,
步骤八、判断线程中是否有活动线程,如果没有,则结束映射文件数据解析,否则返回步骤七直至完成映射文件数据的解析。
3.根据权利要求2所述的一种基于内存预分配和多点并写技术的大规模点云数据快速读取方法,其特征在于,步骤二中所述的数据分块方式的具体操作过程为:分配指定大小的内存缓冲区,利用文件I/O函数读取该大小的文件数据,并从数据中查找换行符的数目,以确定该块数据中的点的数目;如果该块数据中的最后一个字符不是换行符,则表明该块数据的最后一个点数据不完整,此时向前移动文件指针,使指针位置指向这个点数据的起始位置;然后重新利用文件I/O函数读取一块新的文件数据,重复此过程,直至文件中点的数据计算完毕。
4.根据权利要求2或3所述的一种基于内存预分配和多点并写技术的大规模点云数据快速读取方法,其特征在于,
在步骤六中,对映射内存文件分块,并对每一块文件数据的解析任务创建新线程,加入到线程池中的过程为:
首先确定缺省的分块大小,然后从映射文件内存起始地址B处创建一个解析任务,该解析任务经过计算后能判定合适的结束地址C,保证从B到C处的数据为完整的若干个点信息,并将该解析任务作为线程添加到线程池中执行;接下来从映射文件内存地址C+1处创建另一个解析任务,并按照上述过程计算结束地址D,并将该解析任务作为线程添加到线程池中执行;重复循环该过程,直至为每一个映射文件内存块都创建了解析任务,并添加到线程池中执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西南科技大学,未经西南科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410503690.2/1.html,转载请声明来源钻瓜专利网。