掌桥专利:专业的专利平台
掌桥专利
首页

一种数据压缩方法、装置、设备及存储介质

文献发布时间:2023-06-19 12:13:22


一种数据压缩方法、装置、设备及存储介质

技术领域

本申请涉及数据压缩技术领域,尤其涉及一种数据压缩方法、装置、设备及存储介质。

背景技术

数据压缩是数据传输过程中的重要预处理内容,高效的数据压缩,可以在保证数据完整传输的基础上,提高数据传输速度。尤其是对于三维场景数据传输来说,由于场景数据量大、数据种类丰富,对待传输的场景数据进行压缩更是必不可少的处理内容。

常规的场景数据压缩处理方案,通常是直接从建模软件中获取模型数据,例如场景数据、场景中的物体的相关数据等,然后对模型数据直接进行压缩。该数据压缩方式的压缩效率不高,压缩后的数据量依然较大,对于提升数据传输速度、提升场景渲染效率的作用较小。

发明内容

基于上述技术现状,本申请提出一种数据压缩方法、装置、设备及存储介质,意在实现对场景数据的更高效压缩。

为了达到上述目的,本申请具体提出如下技术方案:

一种数据压缩方法,包括:

将目标场景中的每个显示构件分别划分为可供渲染的基元,得到所述目标场景对应的基元集合;其中,同一显示构件中的相同材质的各个几何图形构成一个基元;

对所述基元集合进行数据压缩处理。

一种数据压缩装置,包括:

基元划分单元,用于将目标场景中的每个显示构件分别划分为可供渲染的基元,得到所述目标场景对应的基元集合;其中,同一显示构件中的相同材质的各个几何图形构成一个基元;

数据压缩单元,用于对所述基元集合进行数据压缩处理。

一种数据压缩设备,包括:

存储器和处理器;

其中,所述存储器用于存储程序;

所述处理器,用于通过运行所述存储器中的程序,实现上述的数据压缩方法。

一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时,实现上述的数据压缩方法。

本申请实施例通过将目标场景中的各个显示构件分别划分为可供渲染的基元,从而得到与目标场景对应的基元集合,然后对该基元集合进行数据压缩处理,从而实现对目标场景数据的压缩。该数据压缩方法使得被压缩的目标场景的数据种类和数据复杂度均降低,从而使得压缩后的数据量更少,因此提高了数据压缩效率,同时有利于提升数据存储、传输和渲染效率。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1是本申请实施例提供的一种数据压缩方法的流程示意图;

图2是本申请实施例提供的另一种数据压缩方法的流程示意图;

图3是本申请实施例提供的对合并基元的几何图形进行合并的示意图;

图4是本申请实施例提供的对基元集合的几何图形进行合并的示意图;

图5是本申请实施例提供的几何图形的示意图;

图6是本申请实施例提供的将目标场景中的基元存储至空间数据结构节点中的处理流程示意图;

图7是本申请实施例提供的一种数据压缩装置的结构示意图;

图8是本申请实施例提供的一种数据压缩设备的结构示意图。

具体实施方式

本申请实施例适用于数据压缩应用场景,采用本申请实施例技术方案,能够对三维场景数据进行更大比例的压缩,使得三维场景数据的存储、传输和渲染效率都有较大提升。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例提出一种数据压缩方法,参见图1所示,该方法包括:

S101、将目标场景中的每个显示构件分别划分为可供渲染的基元,得到所述目标场景对应的基元集合。

其中,同一显示构件中的相同材质的各个几何图形构成一个基元。

具体的,上述的目标场景,可以是任意包含可见物体的视觉场景,在本申请实施例中,该目标场景特指三维空间场景,例如虚拟的3D游戏界面场景、BIM三维场景、或者是VR视场场景等。

上述的目标场景中的显示构件,是指当对目标场景进行投影显示时,在目标场景中所显示的任意物体。例如,当将三维建筑场景通过BIM建模软件显示时,在该软件显示界面所显示的任意物体,均为该三维建筑场景中的显示构件。

可以理解,目标场景中的各个显示构件的数据内容,即构成了目标场景中的所有数据内容,将目标场景中的各个显示构件进行存储,也就实现了对目标场景数据的存储。

在对目标场景的各个显示构件进行数据压缩之前,本申请实施例先对各个显示构件分别进行基元划分处理,将其划分为可供渲染的基元。所有显示构件划分得到的基元,构成与目标场景对应的基元集合。

其中,目标场景中的每个构件,在建模软件,例如BIM软件中,均表示为一组相同或不同材质的几何图形的集合,例如[(材质,几何),(材质,几何),…,(材质,几何)]。

本申请实施例设定,在同一显示构件中,材质相同的几何图形,构成一个基元,即,一个基元可表示为(材质,[几何1,几何2,…几何n]),其中n为正整数,该基元由相同材质的n个不同几何图形构成。

S102、对所述基元集合进行数据压缩处理。

具体的,对于上述目标场景对应的基元集合进行数据压缩处理,即实现了对目标场景数据的压缩。

可以理解,对目标场景的显示构件进行基元划分,实际上实现了对目标场景各个显示构建的几何图形的归并处理,使得同一显示构件内的相同材质的几何图形归并为一个基元,这样,原本数量众多的几何图形,变换为数量较少的基元,使得目标场景数据的种类和复杂度均降低。

然后,再对目标场景对应的基元集合进行数据压缩处理,可以显著减少压缩后的数据量,从而提升数据压缩比例。由于压缩后的数据量更小,因此对该压缩数据进行存储、传输,以及根据该压缩数据进行场景渲染时的数据处理量均同步减少,从而能够提升数据存储、传输和渲染效率。

通过上述介绍可见,本申请实施例通过将目标场景中的各个显示构件分别划分为可供渲染的基元,从而得到与目标场景对应的基元集合,然后对该基元集合进行数据压缩处理,从而实现对目标场景数据的压缩。该数据压缩方法使得被压缩的目标场景的数据种类和数据复杂度均降低,从而使得压缩后的数据量更少,因此提高了数据压缩效率,同时有利于提升数据存储、传输和渲染效率。

作为一种可选的实现方式,上述的对所述基元集合进行数据压缩处理,具体包括:

首先,将所述基元集合划分为第一集合和第二集合。

其中,所述第一集合存储基元的材质与几何图形的对应信息,所述第二集合存储基元对应的几何图形。

具体的,在上述的基元集合中,存储着来自各个显示构件的基元,而每个显示构件的基元,是由相同材质的一种或多种几何图形构成的。因此,在基元集合中,包含材质和几何图形两种主要的数据,并且,基元的材质和几何图形之间具有明确的对应关系,即,正常状态下,在同一显示构件中,一个基元对应一种材质,以及对应一种几何图形。

为了便于数据压缩,本申请实施例对上述的基元集合中的数据进行划分,将其划分为包含不同种类数据的集合。

具体的,本申请实施例将基元集合中的各个基元的几何图形提取出来,得到包含基元集合中的各个基元对应的几何图形的第二集合。同时,将原基元集合中的各个基元的材质与第二集合中的各个几何图形的对应信息,组成第一集合。

在将上述的基元集合划分为第一集合和第二集合后,对所述第一集合和所述第二集合进行数据压缩处理。

具体的,将上述的基元集合划分为第一集合和第二集合后,对第一集合和第二集合进行数据压缩处理,即实现了对原基元集合中的所有数据的压缩处理,也就是实现了对目标场景数据的压缩处理。

作为一种可选的实现方式,参见图2所示,上述的将基元集合划分为第一集合和第二集合,可以参照如下步骤S202和S203进行处理,此时,本申请实施例提出的数据压缩方法具体包括:

S201、将目标场景中的每个显示构件分别划分为可供渲染的基元,得到所述目标场景对应的基元集合。

其中,同一显示构件中的相同材质的各个几何图形构成一个基元。

具体的,步骤S201与图1所示的方法实施例中的步骤S101相对应,其具体处理内容,可参见图1所示的方法实施例中的步骤S101,此处不再重复。

S202、根据所述基元集合中的每个基元的材质和几何图形,对所述基元集合中的基元对应的几何图形进行合并处理,得到第二集合,所述第二集合中包含与基元对应的合并后的几何图形。

具体的,在上述的基元集合中,存储着各个显示构件的基元,每个基元均是由某种材质的一种或多种几何图形归并构成的,因此,对于每个基元来说,其均对应一种材质和一种几何图形,而不同构件中的不同基元的材质或几何图形,可能是相同的。

如果将来自不同显示构件的相同材质或相同几何图形的基元进行合并,可以使基元集合的数据量减少。

基于上述思想,本申请实施例根据基元集合中的每个基元的材质和几何图形,对基元集合中的各个基元对应的几何图形进行合并处理,即,将几何图形相同的基元的几何图形进行合并,得到合并后的几何图形,并利用合并后的几何图形构成第二集合。可以理解,在第二集合中,包含了原始的基元集合中出现的所有几何图形,并且不存在重复的几何图形。

S203、将所述基元集合中的基元,替换为基元的材质信息,以及基元与所述第二集合中的几何图形的对应信息,得到第一集合。

上述的第二集合的构建,相当于将基元集合中出现的每种几何图形提取出来单独成立几何图形集合。

此时,在构建得到上述第二集合的基础上,原基元集合中的基元的几何图形,就成为冗余信息,此时,本申请实施例将原基元集合中的基元,替换为基元的材质信息,以及基元与第二集合中的几何图形的对应信息,本申请实施例将信息替换后的基元集合表示为第一集合。

上述的基元与几何图形的对应信息,又可称为是基元与第二集合中的几何图形的索引信息,根据该信息,可以明确基元的几何图形。

可以理解,根据第一集合中的基元的材质信息,以及基元与第二集合中的几何图形的对应信息,同时结合第二集合中的各个几何图形,可以确定各个基元。

例如,假设在第一集合中记录了某基元的材质为X材质,同时记录了该基元对应第二集合中的几何图形A,则根据上述信息可以确定,该基元为X材质的A几何图形的基元。

S204、对所述第一集合和所述第二集合进行数据压缩处理。

对上述第一集合和第二集合中的数据分别进行压缩处理,即相当于实现了对原基元集合中的所有数据进行压缩处理,也就相当于实现了对目标场景中的所有数据进行了压缩处理。

可以理解,由于上述的第二集合中的几何图形,是对原基元集合中的所有几何图形进行合并处理后得到的几何图形,因此不再存在重复的几何图形数据;同时,上述的第一集合只存储基元的材质,以及基元与第二集合中的几何图形的对应信息,其数据更加轻量化。

因此,上述的第一集合和第二集合,实现了对目标场景数据的最大限度的合并处理,对第一集合和第二集合的数据分别进行压缩处理,可以实现对目标场景数据的最大限度的数据压缩,使得数据存储、传输、以及渲染显示效率均可以显著提升。

作为一种可选的实现方式,上述的根据所述基元集合中的每个基元的材质和几何图形,对所述基元集合中的基元对应的几何图形进行合并处理,得到第二集合,具体可参照如下步骤SS10~SS12处理:

SS10、根据所述基元集合中的每个基元的材质和几何图形,识别所述基元集合中的单一基元、实例基元和合并基元。

其中,所述单一基元为材质和几何图形均唯一存在的基元,所述实例基元为材质和几何图形均相同的基元,所述合并基元为几何图形不同并且材质相同的基元。

具体的,本申请实施例将基元集合中的基元,按照其材质和几何图形,划分为单一基元、实例基元和合并基元。

其中,上述的单一基元,是指其材质和几何图形在基元集合中均为唯一存在的基元,也就是在基元集合中独一无二的基元。例如,假设在基元集合中,只有一个基元为a材质b几何图形的基元,则该基元为单一基元。

上述的实例基元,是指基元集合中的多个(至少两个)材质和几何图形均相同的基元。例如,假设在基元集合中,有几个基元均为c材质d几何图形的基元,则该几个基元为实例基元。

上述的合并基元,是指几何图形相同并且材质不同的基元,存在于基元集合中的合并基元的数量,通常为多个(至少两个)。例如,假设在基元集合中有三个基元,其材质均为a材质,并且其几何图形分别为X几何图形、Y几何图形和Z几何图形,则该三个基元为合并基元。

按照上述规定,本申请实施例从基元集合中分别识别其中的单一基元、实例基元和合并基元。

SS11、对所述基元集合中的实例基元和合并基元分别进行几何图形合并处理。

可以理解,实例基元和合并基元,均为存在部分相同数据的基元。比如,实例基元的材质和几何图形均相同,而合并基元的材质相同。

本申请实施例对基元集合中的实例基元和合并基元,分别进行几何图形合并处理,以期减少基元集合中的几何图形数据量。

示例性的,对于基元集合中的实例基元,当对其进行几何图形合并处理时,从基元集合中的各个实例基元的几何图形中,任取一份几何图形即可,也就是只保留一份实例基元几何图形。

对于基元集合中的合并基元,当对其进行几何图形合并处理时,从将各个合并基元的几何图形进行合并处理,得到合并几何图形。

例如图3所示,假设基元c为材质2几何图形2的基元,而基元d为材质2几何图形3的基元,则基元c和基元d为合并基元,此时对基元c和基元d的几何图形进行合并,得到如图3右侧所示的由几何图形2和几何图形3合并得到的合并几何图形。

SS12、利用合并得到的几何图形以及所述单一基元的几何图形组成第二集合。

具体的,对上述的实例基元以及合并基元分别进行几何图形合并后,将合并后的几何图形,以及单一基元的几何图形,组成第二集合。

例如图4所示,假设基元1为单一基元,基元2和基元3为实例基元,基元4和基元5为合并基元。按照常规的数据压缩方式,需要对5个基元的几何图形均进行压缩。

但是,按照本申请实施例技术方案,对于基元2和基元3的几何图形只保留一个,对于基元4和基元5的几何图形进行合并,这样5个基元只需存储3个几何图形,显著减少了几何图形数据量。

作为一种可选的实现方式,本申请实施例还提出,上述的将目标场景中的每个显示构件分别划分为可供渲染的基元,得到所述目标场景对应的基元集合,可以按照如下步骤SS20~SS22的步骤进行处理:

SS20、将目标场景中的每个显示构件,分别划分为各个几何图形。

具体的,如图5所示,上述的几何图形,是由一系列具有某种颜色的三角形面片构成的。而在BIM等建模软件中,目标场景中的显示构件表面也是三角形面片形式,因此,对于目标场景中的显示构件,根据其表面的三角形面片的颜色,可以将显示构件划分为各个几何图形。

SS21、将每个显示构件的相同材质的几何图形进行合并,得到每个构件的各个基元。

具体的,不同的几何图形颜色,可以用于表示不同的材质(无颜色表示透明),因此,将每个显示构件中的相同颜色的几何图形进行合并,即可得到每个构件中的各个基元。

需要说明的是,本申请实施例采用deflate压缩算法,对基元集合的数据进行压缩。

deflate是同时使用了LZ77算法与哈夫曼编码(Huffman Coding)的一种无损数据压缩算法。

LZ77压缩算法在数据压缩过程中,会查找重复的序列进行数据压缩。具体的,LZ77压缩算法通过滑动窗口,从数据序列中选取数据进行压缩,当滑动窗口滑动到任意数据点时,都记录了在此之前的字符。32k的滑动窗口表示压缩器(解压器)能记录前32768个字符。当下一个需要压缩的字符序列能够在当前滑动窗口中找到时,这个字符序列会被两个数字代替:一个是距离,表示这个字符序列在窗口中的起始位置离窗口的距离,一个是长度,表示字符串的长度。

因此,LZ77压缩算法本质上是差值压缩算法,在一个滑动窗口内的重复序列,将以更加简洁的数据进行表示,从而可以简化压缩数据。

为了充分利用LZ77压缩算法的上述性能,本申请实施例在对同一构件的几何图形进行合并时,将相同材质的几何图形的空间相邻的三角形面片依次排列,也就是将相邻三角形面片排在一起,从而提高相似三角形面片处于同一滑动窗口的概率,以充分利用LZ77压缩算法的工作原理,取得更好的数据压缩效果。

SS22、利用各个显示构件的各个基元,组成所述目标场景对应的基元集合。

具体的,将目标场景中的各个显示构件的各个基元进行汇总,即可得到与目标场景对应的基元集合。

示例性的,本申请另一实施例还提出,上述的利用各个显示构件的各个基元,组成目标场景对应的基元集合,具体包括:

首先,将各个显示构件的各个基元,分布存储至空间数据结构的各个节点中。

具体的,上述的空间数据结构,是指用于存储三维空间数据的数据结构。将目标场景的各个显示构件的各个基元,分布存储至空间数据结构中,可以使得目标场景数据的存储更加结构化,使得数据存储更有序。

上述的各个基元向空间数据结构的各个节点的存储,可以根据基元的面积大小、或者基元的相互位置关系等,为其选择合适的空间数据结构节点进行存储。

然后,遍历所述空间数据结构中的各个节点,并依次将遍历到的各个节点中存储的基元进行排列,组成基元集合。

当将目标场景的各个显示构件的各个基元分别存储至空间数据结构中之后,相当于限定了各个基元在空间数据结构中的相互关系。此时,本申请实施例按照该空间数据结构中的各个节点的相互关系,例如层级关系、链路关系等,依次遍历该空间数据结构中的各个节点,每遍历到一个节点时,读取节点中存储的基元,并放入基元集合。当遍历完空间数据结构的所有节点时,该空间数据结构中的所有基元均进入基元集合,并且基元集合中的各个基元是按照基元在空间数据结构中的位置关系而排列的。

示例性的,本申请实施例采用二叉树数据结构,作为用于存储各个显示构件的各个基元的空间数据结构。

则,作为一种可选的实现方式,上述的将各个显示构件的各个基元,分布存储至空间数据结构的各个节点中,包括:

将目标场景中的每个目标基元组,分别存储至与该目标基元组对应的二叉树节点中;

其中,所述目标基元组中的基元,为所述目标场景的待存储场景空间中的各个显示构件中的表面积最大的前N个基元,所述表面积最大的前N个基元的表面积之和不超过设定阈值,N为正整数;所述待存储场景空间,为包含所有未存储至二叉树中的基元的场景空间。

具体的,上述的待存储场景空间,是指待将其中包含的基元进行存储的场景空间,可以理解,该待存储场景空间是由目标场景中的未存储的基元所界定的场景空间,本申请实施例规定,在目标场景中,包含所有未存储的基元的最小场景空间,即为待存储场景空间。待存储场景空间,是目标场景中的部分场景空间,其可以理解为是目标场景的子空间,对目标场景的各个场景空间的数据分别进行存储,可以实现对目标场景数据的存储。

上述的各个待存储场景空间的划分,可以是在对目标场景数据进行存储之前统一进行划分,也可以是在对目标场景数据进行存储过程中,随着被存储的基元以及未存储基元的更新,而实时更新得到待存储场景空间。

上述的待存储场景空间中的目标基元组,是指由待存储场景空间所包含的各个基元中的、表面积最大的前N个基元构成的基元组,并且,该表面积最大的前N个基元的表面积之和不超过设定阈值。

上述的基元的表面积,是指在三维场景中,例如在BIM场景中,基元表面显示的一系列三角形面片的面积总和。

上述的设定阈值的设置,以单个二叉树节点可存储的数据量,和/或渲染引擎处理性能而决定,具体的,以能够将上述的N个物体存储至同一二叉树节点,并且能够通过渲染引擎单次将该二叉树节点中的基元渲染显示为准,设置该设定阈值的大小。

进一步的,本申请实施例还可以同时将待存储场景空间的包围盒信息,存储至与待存储场景空间对应的二叉树节点中,也就是,将目标基元组所在的待存储场景空间的包围盒信息,存储至用于存储该目标基元组的二叉树节点中。

上述的待存储场景空间的包围盒,是指能够同时包围待存储空间的各个基元的几何体,该几何体通常为立方体。该包围盒信息,是指包围盒各个顶点的位置坐标、各个边长等参数信息。

可以理解,待存储场景空间的包围盒信息,能够表示待存储场景空间的范围、大小等参数信息。

本申请实施例设定,对于目标场景的每个待存储场景空间,本申请实施例将其中的目标基元组,以及该待存储场景空间的包围盒信息,存储至与该待存储场景空间对应的二叉树节点中。

经过上述处理,将同一目标场景中的基元存储到同一空间数据结构中,使得目标场景中的基元排列更紧凑、结构性更强。

每个待存储场景空间分别对应一个二叉树节点,在与待存储场景空间对应的二叉树节点中,存储着待存储场景空间中的目标基元组,以及待存储场景空间的包围盒信息。

由于每个二叉树节点中,均存储着对应场景空间的表面积最大的若干个基元,因此,将任意一个二叉树节点中的数据进行渲染显示,均可以快速渲染出某一场景空间的表面积较大的若干个基元。如果在三维场景渲染过程中,能够首先渲染出场景内表面积最大的几个基元,则在用户视角来说,能够快速、直观地观看到场景较大的物体显示出来,从而能够给用户带来渲染速度很快的视觉体验。

作为一种示例性的实现方式,上述的将目标场景中的每个目标基元组,分别存储至与该目标基元组对应的二叉树节点中,包括:

循环地根据所述目标场景中的未存储至二叉树中的基元,确定待存储场景空间,并将确定出的待存储场景空间中的目标基元组,存储至与确定出的待存储场景空间对应的二叉树节点中,直至将所述目标场景中的所有基元均存储至二叉树中。

具体的,本申请实施例在目标场景数据存储过程中,实时更新待存储场景空间,并将更新后的待存储场景空间中的目标基元组,存储至待存储场景空间对应的二叉树节点中。

在此基础上,根据目标场景中未存储的基元,再次更新待存储场景空间,并对更新后的待存储场景空间的目标基元组进行存储。

因此类推,不断地循环更新待存储场景空间,并对更新的待存储场景空间的目标基元组进行存储,直至将目标场景中的所有基元均存储至二叉树中。

参见图6所示,上述的数据存储过程,具体可按照如下步骤进行:

S601、根据所述目标场景中的未存储的基元,从所述目标场景中确定出第i待存储场景空间,所述第i待存储场景空间对应二叉树中的i节点。

上述的i,对应第i次数据存储操作,因此i为正整数。如果当前数据存储操作,为针对目标场景进行的第一次数据存储操作,则i=1;如果当前数据存储操作为针对目标场景进行的第二次数据存储操作,则i=2,以此类推,根据数据存储操作的执行次数,可以确定相应的i的取值。

每次数据存储操作,均是对应某一待存储场景空间的数据存储操作,因此,每一待存储场景空间,均唯一对应一个二叉树节点。

当i=1时,目标场景中的未存储的基元,为目标场景中的所有基元,此时,该目标场景即为待存储场景空间,由于是第一次执行数据存储操作,因此该待存储场景空间对应二叉树中的第一个节点,也就是根节点。

S602、将所述第i待存储场景空间中的目标基元组,存储至所述二叉树的i节点中。

具体的,从第i待存储场景空间中,选取表面积最大的,并且表面积之和不超过设定阈值的前N个基元,作为目标基元组。同时,还可以计算第i待存储场景空间的包围盒信息,将第i待存储场景空间中的目标基元组,以及第i待存储场景空间的包围盒信息,一起存储至与第i待存储场景空间对应的二叉树节点中,也就是存储至二叉树的i节点中。

例如,假设i=1,则从目标场景中,选取表面积最大的,并且表面积之和不超过设定阈值的前N个基元,存储至二叉树根节点中,同时,将目标场景的包围盒信息,存储至二叉树根节点中,即完成了第一次数据存储操作。

S603、根据所述目标场景中剩余的未存储的基元,从所述目标场景中确定出第i+1待存储场景空间。

具体的,当完成第i次的数据存储操作后,对于目标场景中的剩余的未存储的基元,重新计算待存储场景空间,即,将目标场景中剩余的未存储的基元所在的场景空间,作为第i+1待存储场景空间。

S604、将所述第i+1待存储场景空间中的目标基元组,存储至所述二叉树的j节点和k节点。

其中,所述j节点和所述k节点,分别为所述i节点的叶子节点。

具体的,从第i+1待存储场景空间中,筛选出表面积最大的、面积总和不超过设定阈值的N个基元,将该N个基元,以及第i+1待存储场景空间的包围盒信息,存储到与第i+1待存储场景空间对应的二叉树节点中。

其中,第i+1待存储场景空间对应的节点,为第i待存储场景空间对应的节点的叶子节点,假设i节点的叶子节点为j节点和k节点,则将第i+1待存储场景空间中的目标基元组,以及第i+1待存储场景空间的包围盒信息,存储至j节点和k节点。

S605、判断目标场景中的所有基元是否均已存储至二叉树中;

如果是,则执行步骤S606、结束数据存储操作。

如果否,则返回步骤S603,重复执行步骤S603~S605,直到将目标场景中的所有基元存储至二叉树中。

与上述的数据压缩方法相对应的,本申请实施例还提出一种数据压缩装置,参见图7所示,该装置包括:

基元划分单元100,用于将目标场景中的每个显示构件分别划分为可供渲染的基元,得到所述目标场景对应的基元集合;其中,同一显示构件中的相同材质的各个几何图形构成一个基元;

数据压缩单元110,用于对所述基元集合进行数据压缩处理。

上述的数据压缩装置通过将目标场景中的各个显示构件分别划分为可供渲染的基元,从而得到与目标场景对应的基元集合,然后对该基元集合进行数据压缩处理,从而实现对目标场景数据的压缩。该数据压缩过程使得被压缩的目标场景的数据种类和数据复杂度均降低,从而使得压缩后的数据量更少,因此提高了数据压缩效率,同时有利于提升数据存储、传输和渲染效率。

作为一种可选的实现方式,所述对所述基元集合进行数据压缩处理,包括:

将所述基元集合划分为第一集合和第二集合,其中,所述第一集合存储基元的材质与几何图形的对应信息,所述第二集合存储基元对应的几何图形;

对所述第一集合和所述第二集合进行数据压缩处理。

作为一种可选的实现方式,所述将所述基元集合划分为第一集合和第二集合,包括:

根据所述基元集合中的每个基元的材质和几何图形,对所述基元集合中的基元对应的几何图形进行合并处理,得到第二集合,所述第二集合中包含与基元对应的合并后的几何图形;

将所述基元集合中的基元,替换为基元的材质信息,以及基元与所述第二集合中的几何图形的对应信息,得到第一集合。

作为一种可选的实现方式,所述根据所述基元集合中的每个基元的材质和几何图形,对所述基元集合中的基元对应的几何图形进行合并处理,得到第二集合,包括:

根据所述基元集合中的每个基元的材质和几何图形,识别所述基元集合中的单一基元、实例基元和合并基元;其中,所述单一基元为材质和几何图形均唯一存在的基元,所述实例基元为材质和几何图形均相同的基元,所述合并基元为几何图形不同并且材质相同的基元;

对所述基元集合中的实例基元和合并基元分别进行几何图形合并处理;

利用合并得到的几何图形以及所述单一基元的几何图形组成第二集合。

作为一种可选的实现方式,对所述基元集合中的实例基元进行几何图形合并处理,包括:

从所述基元集合中的各个实例基元的几何图形中,任取一份几何图形。

作为一种可选的实现方式,对所述基元集合中的合并基元进行几何图形合并处理,包括:

将所述基元集合中的各个合并基元的几何图形进行合并处理,得到合并几何图形。

作为一种可选的实现方式,所述将目标场景中的每个显示构件分别划分为可供渲染的基元,得到所述目标场景对应的基元集合,包括:

将目标场景中的每个显示构件,分别划分为各个几何图形;

将每个显示构件的相同材质的几何图形进行合并,得到每个构件的各个基元;

利用各个显示构件的各个基元,组成所述目标场景对应的基元集合。

作为一种可选的实现方式,将每个显示构件的相同材质的几何图形进行合并时,将所述相同材质的几何图形中的空间相邻的三角形面片依次排列。

作为一种可选的实现方式,所述利用各个显示构件的各个基元,组成所述目标场景对应的基元集合,包括:

将各个显示构件的各个基元,分布存储至空间数据结构的各个节点中;

遍历所述空间数据结构中的各个节点,并依次将遍历到的各个节点中存储的基元进行排列,组成基元集合。

作为一种可选的实现方式,所述空间数据结构为二叉树数据结构;

所述将各个显示构件的各个基元,分布存储至空间数据结构的各个节点中,包括:

将目标场景中的每个目标基元组,分别存储至与该目标基元组对应的二叉树节点中;

其中,所述目标基元组中的基元,为所述目标场景的待存储场景空间中的各个显示构件中的表面积最大的前N个基元,所述表面积最大的前N个基元的表面积之和不超过设定阈值,N为正整数;所述待存储场景空间,为包含所有未存储至二叉树中的基元的场景空间。

作为一种可选的实现方式,所述将目标场景中的每个目标基元组,分别存储至与该目标基元组对应的二叉树节点中,包括:

循环地根据所述目标场景中的未存储至二叉树中的基元,确定待存储场景空间,并将确定出的待存储场景空间中的目标基元组,存储至与确定出的待存储场景空间对应的二叉树节点中,直至将所述目标场景中的所有基元均存储至二叉树中。

上述的数据压缩装置的各个单元的具体工作内容,请参见上述方法实施例的内容,此处不再赘述。

本申请另一实施例还公开了一种数据压缩设备,参见图8所示,该设备包括:

存储器200和处理器210;

其中,所述存储器200与所述处理器210连接,用于存储程序;

所述处理器210,用于通过运行所述存储器200中存储的程序,实现上述任一实施例公开的数据压缩方法。

具体的,上述目标检测结果的评测设备还可以包括:总线、通信接口220、输入设备230和输出设备240。

处理器210、存储器200、通信接口220、输入设备230和输出设备240通过总线相互连接。其中:

总线可包括一通路,在计算机系统各个部件之间传送信息。

处理器210可以是通用处理器,例如通用中央处理器(CPU)、微处理器等,也可以是特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

处理器210可包括主处理器,还可包括基带芯片、调制解调器等。

存储器200中保存有执行本发明技术方案的程序,还可以保存有操作系统和其他关键业务。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。更具体的,存储器200可以包括只读存储器(read-only memory,ROM)、可存储静态信息和指令的其他类型的静态存储设备、随机存取存储器(random access memory,RAM)、可存储信息和指令的其他类型的动态存储设备、磁盘存储器、flash等等。

输入设备230可包括接收用户输入的数据和信息的装置,例如键盘、鼠标、摄像头、扫描仪、光笔、语音输入装置、触摸屏、计步器或重力感应器等。

输出设备240可包括允许输出信息给用户的装置,例如显示屏、打印机、扬声器等。

通信接口220可包括使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等。

处理器2102执行存储器200中所存放的程序,以及调用其他设备,可用于实现本申请实施例所提供的数据压缩方法的各个步骤。

本申请另一实施例还提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时,实现上述任一实施例提供的数据压缩方法的各个步骤。

上述的数据压缩设备的各个部分的具体工作内容,以及上述的存储介质中的程序被处理器运行时的具体处理内容,均可参见上述方法实施例的内容,此处不再重复。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本申请各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,各实施例中记载的技术特征可以进行替换或者组合。

本申请各实施例种装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。

本申请所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件单元,或者二者的结合来实施。软件单元可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 数据压缩方法及其装置、数据解压方法及其装置、存储介质及电子设备
  • 货源数据的数据压缩方法、装置、计算机设备和存储介质
技术分类

06120113210327