一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种模型文件封装方法、装置和存储介质与流程

2022-03-16 15:23:56 来源:中国专利 TAG:


1.本发明涉及文件封装技术领域,特别涉及一种模型文件封装方法、装置和存储介质。


背景技术:

2.在三维物体扫描时,为了减少由于程序崩溃、电脑关机等异常导致扫描结果丢失的风险,需要使用文件封装技术对3d扫描结果进行保存。
3.用户在使用3d扫描设备对三维物体进行扫描时,希望能保存原始的扫描数据,方便后期对扫描结果进行多次处理。为了提高三维物体模型的精度,往往需要对三维物体进行多角度扫描,并将每个角度的扫描结果进行独立保存。
4.在3d扫描设备扫描时,实时记录从3d设备传送到pc的帧数据,该方法需要占用一定的cpu资源,而且原始帧数据往往占用内存较大,需要用户有较大的磁盘空间,不利于后期对扫描数据进行多次处理。


技术实现要素:

5.本发明的目的在于提供一种模型文件封装方法、装置和存储介质,实现了通过将模型数据序列化,减少模型数据对cpu和磁盘等系统资源的占用,提高模型数据写入效率,保证数据稳定性的模型文件封装。
6.为了实现上述发明目的,本发明提供如下技术方案:
7.第一方面,提供一种模型文件封装方法,包括:
8.获取扫描目标物体生成的第一模型数据,所述第一模型数据用于标识扫描目标物体的数据;
9.将第一模型数据序列化,得到第一序列模型数据;
10.将第一序列模型数据写入第一文件,所述第一文件用于保存扫描数据;
11.根据第一模型数据计算出第二模型数据,所述第二模型数据用于建立目标物体模型;
12.将第二模型数据序列化,得到第二序列模型数据,并写入第一文件;
13.将第一序列模型数据和第二序列模型数据进行封装,形成模型文件。
14.第二方面,提供一种模型文件封装装置,包括:
15.获取模块,用于获取扫描目标物体生成的第一模型数据,所述第一模型数据用于标识扫描目标物体的数据;
16.第一序列化模块,用于将第一模型数据序列化,得到第一序列模型数据;
17.第一写入模块,用于将第一序列模型数据写入第一文件,所述第一文件用于保存扫描数据;
18.计算模块,用于根据第一模型数据计算出第二模型数据,所述第二模型数据用于建立目标物体模型;
19.第二序列化模块,将第二模型数据序列化,得到第二序列模型数据;
20.第二写入模块,用于将第二序列模型数据写入第一文件;
21.封装模块,用于将第一序列模型数据和第二序列模型数据进行封装,形成模型文件。
22.第三方面,提供一种计算机可读存储介质,包括:存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:
23.获取扫描目标物体生成的第一模型数据,所述第一模型数据用于标识扫描目标物体的数据;
24.将第一模型数据序列化,得到第一序列模型数据;
25.将第一序列模型数据写入第一文件,所述第一文件用于保存扫描数据;
26.根据第一模型数据计算出第二模型数据,所述第二模型数据用于建立目标物体模型;
27.将第二模型数据序列化,得到第二序列模型数据,并写入第一文件;
28.将第一序列模型数据和第二序列模型数据进行封装,形成模型文件。
29.相较于现有技术,本发明至少具有如下的有益效果:
30.实现了通过将模型数据序列化,模型数据被压缩,从而减少模型数据对cpu和磁盘等系统资源的占用,提高模型数据写入的效率;将第一序列模型数据和第二序列模型数据在同一个文件中封装成模型文件,保证数据稳定性。
附图说明
31.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
32.其中:
33.图1为本技术实施例所提供的一种模型文件封装方法的流程示意图;
34.图2为本技术实施例所提供的一种模型文件封装装置示意图;
35.图3为本技术实施例提供的一种计算机可读存储介质的结构框图。
具体实施方式
36.应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
37.下面将结合本技术的实施例中的附图,对本技术的实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
38.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“包括”、“包含”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或
单元。在本技术的权利要求书、说明书以及说明书附图中的术语,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体/操作/对象与另一个实体/操作/对象区分开来,而不一定要求或者暗示这些实体/操作/对象之间存在任何这种实际的关系或者顺序。
39.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其他实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其他实施例相结合。
40.如图1所示,提出了一种模型文件封装方法,上述方法具体包括如下步骤:
41.步骤100,终端获取扫描目标物体生成的第一模型数据,所述第一模型数据用于标识扫描目标物体的数据。
42.其中,终端可以是智能手机、平板电脑、便携式电脑、台式电脑等,通过扫描仪扫描目标物体,扫描结束后终端获取扫描目标物体生成的第一模型数据,所述第一模型数据用于标识扫描目标物体的数据。在一个实施例中,计算机通过3d扫描仪扫描目标物体,获取扫描目标物体生成的第一模型数据,所述第一模型数据为版本号、压缩标记、加密标记、修改时间、模型uuid、是否离线重建标记。其中版本号表示封装格式的版本,压缩标记表示内容是否进行了压缩,加密标识表示是否进行了加密,修改时间记录当前时间yyyy-mm-ddthh:mm:ss,模型uuid为文件唯一标识,是否离线重建标记表示模型是否使用了离线重建。
43.步骤102,终端将第一模型数据序列化,得到第一序列模型数据。
44.其中,序列化是将目标对象的状态信息转换为可存储形态和/或可传输形态的过程,以便于数据的存储和/或传输。将第一模型数据序列化,就是将第一模型数据转换为二进制,对第一模型数据进行压缩,从而减少第一模型数据在内存中的占用体积。
45.步骤104,终端将第一序列模型数据写入第一文件,所述第一文件用于保存扫描数据。
46.其中,将第一序列模型数据写入第一文件,是为了后期便于查找数据。当内存泄漏数据时,还能保持第一序列模型数据的稳定性。
47.步骤106,终端根据第一模型数据计算出第二模型数据,所述第二模型数据用于建立目标物体模型。
48.其中,根据第一模型数据实时计算出第二模型数据,第二模型数据用于建立目标物体模型,在调用模型文件数据时能够建立目标物体模型。在一个实施例中,根据第一模型数据计算出第二模型数据,所述第二模型数据包括是否关键帧信息、关键帧的矩阵信息、关键帧id、关键帧几何数据(顶点、法线、纹理坐标等)、纹理数据、颜色点数据、选择id数据。
49.步骤108,终端将第二模型数据序列化,得到第二序列模型数据,并写入第一文件。
50.其中,将第二模型数据序列化,就是将第二模型数据转换为二进制,将第二模型数据进行压缩,减少第二模型数据在内存中的占用体积。将第二序列数据写入第一文件中,为了后期便于查找第二序列模型数据。当内存泄漏数据时,还能保持第二序列模型数据的稳定性。
51.步骤110,终端将第一序列模型数据和第二序列模型数据进行封装,形成模型文件。
52.其中,将第一序列模型数据和第二序列模型数据一起封装,形成模型文件,保证数
据的稳定性。如果将第一序列模型数据和第二序列模型分别保存在不同文件中,不利于后期查找,且容易丢失。故为了提高查找数据效率和确保数据稳定,将第一序列模型数据和第二序列模型数据在第一文件中进行封装,形成模型文件。
53.上述的模型文件封装方法,实现了通过将模型数据序列化,模型数据被压缩,从而减少模型数据对cpu和磁盘等系统资源的占用,提高模型数据写入的效率;将第一序列模型数据和第二序列模型数据在同一个文件中封装成模型文件,保证数据稳定性。
54.在一个实施例中,所述模型文件封装方法还包括:终端获取在扫描过程中实时计算生成的第三模型数据,所述第三模型数据为同一次扫描后生成的多个模型的匹配点信息、特征点信息;将第三模型数据序列化,得到第三序列模型数据,并写入第二文件中,所述第二文件用于记录三维重建信息。
55.其中,为了让同一次扫描后生成的多个模型相互匹配,所以需要多个模型的匹配点信息、特征点信息。在一幅图像中存在着其独特的像素点,这些点可以认为就是这幅图像的特征,成为特征点。图像特征匹配就是基于特征点而进行的。第三模型数据序列化,是将第三模型数据转换为二进制,将第三模型数据进行压缩,减少第三模型数据在内存中的占用体积。将第三序列模型数据写入第二文件,第二文件用于记录三维重建信息,快速还原模型。第二文件作为缓存文件。缓存是用来存储一些常用或即将用到的数据或指令,当需要这些数据或指令的时候直接从缓存中读取,这样比直接从内存或者硬盘中读取数据要快的多。
56.在一个实施例中,终端将第一模型数据序列化,得到第一序列模型数据之前还包括:根据第一模型数据,判断是否为多帧模型;若为多帧模型,则对每一帧模型进行遍历操作;若不为多帧模型,则不需要进行遍历操作;所述遍历操作为根据第一模型数据计算出每一帧模型的第二模型数据。
57.其中,多帧模型是指在扫描目标物体时,对目标物体进行多角度扫描,从而生成多帧模型数据。根据第一模型数据中的是否为多帧模型数据,对每一帧模型进行遍历操作。遍历操作为使用for循环,for循环能完整遍历每一帧模型数据,且采用for循环进行遍历操作,程序不冗余,运行效率提升。
58.在一个实施例中,所述序列化为采用protobuf序列化,将模型数据转换为二进制。
59.其中,protobuf是一种用于对结构化数据进行序列化的协议,具有灵活且高效的特点,经过protobuf序列化后的代码流较小,速度较快,适合执行大批量的序列化操作。因为模型数据用于建立模型,数据量大,所以为了便于计算机读取和减少模型数据的体积,将模型数据采用protobuf序列化,减少模型数据在传输过程中的资源消耗,提升数据处理的效率。
60.如图2所示,提出了一种模型文件封装装置,包括:
61.获取模块200,用于获取扫描目标物体生成的第一模型数据,所述第一模型数据用于标识扫描目标物体的数据;
62.第一序列化模块202,用于将第一模型数据序列化,得到第一序列模型数据;
63.第一写入模块204,用于将第一序列模型数据写入第一文件,所述第一文件用于保存扫描数据;
64.计算模块206,用于根据第一模型数据计算出第二模型数据,所述第二模型数据用
于建立目标物体模型;
65.第二序列化模块208,将第二模型数据序列化,得到第二序列模型数据;
66.第二写入模块210,用于将第二序列模型数据写入第一文件;
67.封装模块212,用于将第一序列模型数据和第二序列模型数据进行封装,形成模型文件。
68.在一个实施例中,上述装置还包括:
69.获取在扫描过程中实时计算生成的第三模型数据,所述第三模型数据为同一次扫描后生成的多个模型的匹配点信息、特征点信息;
70.将第三模型数据序列化,得到第三序列模型数据,并写入第二文件中,所述第二文件用于记录三维重建信息。
71.在一个实施例中,上述装置还包括:将第一模型数据序列化,得到第一序列模型数据之前还包括:根据第一模型数据,判断是否为多帧模型;若为多帧模型,则对每一帧模型进行遍历操作;若不为多帧模型,则不需要进行遍历操作;所述遍历操作为根据第一模型数据计算出每一帧模型的第二模型数据。
72.在一个实施例中,第一序列化模块及第二序列化模块的序列化为采用protobuf序列化,将模型数据转换为二进制。
73.如图3所示,在一个实施例中,提出了一种计算机可读存储介质,有存储计算机程序,计算机程序被处理器执行时,使得处理器执行上述模型文件封装方法的步骤。
74.可以理解的是,上述模型文件封装方法、装置和存储介质属于一个总的发明构思,实施例可相互适用。
75.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
76.以上对本发明及其实施方式进行了描述,这种描述没有限制性,附图中所示的也只是本发明的实施方式之一,实际的描述并不局限于此,总而言之如果本领域的技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的方式及实施例,均应属于本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献