基于三维空间剖分的地理坐标压缩编解码方法
技术领域
本发明属于三维模型简化技术领域,尤其涉及一种基于三维空间剖分的地理坐标压缩编解码方法。
背景技术
现有三维电子地图技术中,三维模型数据直接记录了客体所有特征点的三维空间地理坐标。随着城市三维模型不断丰富以及电子地图包含的地理范围不断扩大,三维电子地图中的三维模型的数据量呈级数增长,从而导致数据传输、加载和显示渲染效率的提升变得越来越困难。
为解决上述技术问题,三维电子地图在显示大规模地理场景或高精度城市模型时,通常采三维模型简化的方法以减少三维模型的数据量。现有的简化方法通常在三个方面对三维模型的数据量进行压缩:简化拓扑结构、减少不必要的三角面以及压缩浮点型坐标的存储。这些方法普遍存在两个问题:第一,化简方法是面向三维模型本身,单个复杂的三维模型化简后仍然是单个较为复杂的三维模型,无法被分割成更小的数据单元;第二,化简引起的误差在三维地理空间上的分布有极大的不确定性,无法预知三维模型的在哪些地理位置上发生较大误差以及这些误差的范围是多少。
因此,目前的三维电子地图的三维模型数据量简化方法,存在化简后的一些地理要素三维模型个体,例如地形模型,仍然具有较大的数据量,而且化简引起的误差不确定性导致地图比例尺所代表的严格的数学约束失效,在三维电子地图中无法实现精确度可控的空间量测,导致为三维电子地图的应用带来困难。
发明内容
为解决上述技术问题,本发明提供一种基于三维空间剖分的地理坐标压缩编解码方法。
本发明采用如下技术方案:
在一些可选的实施例中,提供一种基于三维空间剖分的地理坐标压缩编解码方法,包括:将三维地理空间递归剖分为多个深度上的若干子空间;对每个剖分出来的子空间进行编码,获得每个子空间的立方体索引编码;将三维模型数据中描述几何信息的地理坐标转化为像素坐标,在转化过程中对几何坐标进行重采样,使用重采样后的像素坐标代替三维模型数据原有的地理坐标,得到离散几何编码。
在一些可选的实施例中,基于八叉树算法将三维地理空间划分后,八个节点所表示的子空间的数学模型为:
其中,node表示空间八叉树划分后八个节点所表示的子空间,depth表示空间八叉树的深度,rdepth表示在depth深度时该子空间的立方体索引行编码,cdepth表示在depth深度时该子空间的立方体索引列编码,hdepth表示在depth深度时该子空间的立方体索引铅锤编码。
在一些可选的实施例中,基于八叉树算法将三维地理空间划分后,子空间的立方体索引编码的数学模型为:
CIC=(r,c,h);
其中,CIC表示空间八叉树划分后子空间的立方体索引编码且由三元组(r,c,h)组成;r表示立方体索引编码的行编码,c表示立方体索引列编码,h表示立方体索引铅锤编码。
在一些可选的实施例中,depth最小为1,此时规定r、c、h均等于1。
在一些可选的实施例中,所述的基于三维空间剖分的地理坐标压缩编解码方法,还包括:为每个子空间沿空间八叉树划分的方向,建立子空间内部独立的离散空间坐标系,将三条坐标轴x、y、z分别等分成512个像素,使得每个子空间被离散化为512×512×512个立方体体素单元。
在一些可选的实施例中,所述离散几何编码的数学模型为:
其中,gx、gy、gz分别表示三个正交方向的地理坐标,Ox、Oy、Oz分别表示应用场景中原点的地理坐标,r、c、h表示该地理坐标点所在子空间的立方体索引编码,range表示应用场景中地理范围的最大边长。
在一些可选的实施例中,对几何坐标进行重采样的过程包括:使用所述离散几何编码的数学模型,计算每个地理坐标的像素坐标(x,y,z;将像素坐标相同的顶点进行合并,删除重复的顶点;更新三维模型数据中的顶点编号,将重复顶点的编号修改为合并后的顶点编号。
在一些可选的实施例中,所述的基于三维空间剖分的地理坐标压缩编解码方法,还包括:获取跨越两个以上子空间的三维模型与其相交子空间求交集,将完整的三维模型切割成若干个部分,每个部分都在各自子空间内部进行地理坐标压缩编码;将每个子空间内部的三维模型数据进行组合,以形成一个独立的三维模型数据文件,每个三维模型数据文件由一个立方体索引编码和其内部包含三维模型的离散几何编码组成。
在一些可选的实施例中,所述获取跨越两个以上子空间的三维模型与其相交子空间求交集,将完整的三维模型切割成若干个部分的过程中,对横跨两个或两个以上子空间的三角面片进行重构;所述对横跨两个或两个以上子空间的三角面片进行重构的过程包括:求子空间的外立面与三角面片的交线;沿交线将三角面片分割成两个部分;将分割后四边形再次切割,其切割线为交线的一个断点到原三角面一个顶点的连线,并确保四边形分割后成为两个三角面片。
在一些可选的实施例中,所述的基于三维空间剖分的地理坐标压缩编解码方法,还包括:根据已知编码坐标所在子空间的立方体索引编码,将所述离散几何编码逆向转换为地理坐标;
所述逆向转换出的地理坐标的数学模型为:
其中,gx、gy、gz分别表示三个正交方向的地理坐标,Ox、Oy、Oz分别表示应用场景中原点的地理坐标,r、c、h表示该地理坐标点所在子空间的立方体索引编码,range表示应用场景中地理范围的最大边长。
本发明所带来的有益效果:在立方体索引编码过程中保证了两条严格的数学约束;将三维模型数据中的地理坐标由较大的浮点型数值转换为一个值域在[0,512]内整型数据,压缩了坐标的存储空间;使得空间误差受比例尺约束,实现三维模型数据在不同比例尺约束条件下的模型化简和模型个体分割;减少单个模型文件的数据量,而且通过CIC可以快速找到同一地理空间范围内不同剖分精度的子空间,从而使编码后的三维模型支持渐进式网络传输;解码后的坐标不会导致地图比例尺所代表的严格的数学约束失效,保证了三维地图在各级比例尺下的可量测性。
附图说明
图1是本发明基于三维空间剖分的地理坐标压缩编解码方法的流程示意图;
图2是本发明三维模型重采样与离散几何编码过程的示意图;
图3是本发明对横跨两个或两个以上子空间的三角面片进行重构的示意图;
图4是本发明在不同的空间八叉树的深度的具体实施效果图片。
具体实施方式
如图1所示,在一些说明性的实施例中,提供一种基于三维空间剖分的地理坐标压缩编解码方法,包括三个部分:第一,基于空间八叉树划分的立方体索引编码(CIC,CubeIndex Code)过程;第二,三维模型重采样与离散几何编码过程;第三,离散几何编码逆转换为地理坐标的解码过程。实现对三维电子图中的三维模型数据进行压缩,实现三维模型数据在不同比例尺约束条件下的模型化简和模型个体分割。
本发明的基于三维空间剖分的地理坐标压缩编解码方法,包括:
101:基于八叉树算法,设定剖分深度,将整个三维地理空间递归剖分为多个深度上的若干子空间。
基于八叉树算法将三维地理空间划分后,八个节点所表示的子空间的数学模型为:
其中,node表示空间八叉树划分后八个节点所表示的子空间,depth表示空间八叉树的深度,rdepth表示在depth深度时该子空间的立方体索引行编码,cdepth表示在depth深度时该子空间的立方体索引列编码,hdepth表示在depth深度时该子空间的立方体索引铅锤编码。
102:使用基于空间八叉树划分的立方体索引编码方法,对每个剖分出来的子空间进行编码,获得每个子空间的CIC。
基于八叉树算法将三维地理空间划分后,子空间的立方体索引编码的数学模型为:
CIC=(r,c,h);
其中,CIC表示空间八叉树划分后子空间的立方体索引编码,由三元组(r,c,h)组成;r表示立方体索引编码的行编码,c表示立方体索引列编码,h表示立方体索引铅锤编码。
对于c、r、h的具体计算方法,其具体数学模型为基于八叉树算法将三维地理空间划分后,八个节点所表示的子空间的数学模型。
depth最小为1,此时规定r、c、h均等于1。
步骤101及步骤102构成基于空间八叉树划分的立方体索引编码过程。在基于空间八叉树划分的立方体索引编码过程中,保证了两条严格的数学约束:第一,八叉树内不同层级的每个节点都包含唯一编码;第二,在相同层级的任意两个相邻节点之间,只有一个数字的编码是不同的,并且差别为1。假设空间细分代码是积分的,当用作空间索引时,编码值在空间上是连续的。
103:基于空间八叉树划分的子空间,为每个子空间沿空间八叉树划分的方向,建立子空间内部独立的离散空间坐标系,将三条坐标轴x、y、z分别等分成512个像素,使得每个子空间被离散化为512×512×512个立方体体素单元,从而在每个子空间内构造出一个离散的三维空间直角坐标系。
104:基于每个子空间内离散的三维空间直角坐标系,将三维模型数据中描述几何信息的地理坐标转化为像素坐标。
由于转化过程中连续的地理坐标被映射到离散的三维空间直角坐标系中,因此需要在转化过程中对几何坐标进行重采样,使用重采样后的像素坐标代替三维模型数据原有的地理坐标,在同一立方体体素单元内的坐标被合并,最终得到离散几何编码(DGC,Discrete Geometry Code),如图2所示。
其中,离散几何编码的数学模型为:
其中,gx、gy、gz分别表示三个正交方向的地理坐标,Ox、Oy、Oz分别表示应用场景中原点的地理坐标,r、c、h表示该地理坐标点所在子空间的立方体索引编码,range表示应用场景中地理范围的最大边长。
其中,对几何坐标进行重采样的过程包括:
首先,使用所述离散几何编码的数学模型,计算每个地理坐标的像素坐标(x,y,z);
其次,将像素坐标相同的顶点进行合并,删除重复的顶点;
最后,更新三维模型数据中的顶点编号,将重复顶点的编号修改为合并后的顶点编号。
105:分割跨越子空间的三维模型。获取跨越两个以上子空间的三维模型与其相交子空间求交集,将完整的三维模型切割成若干个部分,每个部分都在各自子空间内部进行地理坐标压缩编码,即每个部分都在各自子空间内部均通过步骤101至步骤104中所述的基于三维空间剖分的地理坐标压缩编解码方法进行编码。
分割过程中,三维模型中的一些三角面片不可避免也可能会横跨两个或两个以上的子空间,此时需要对三角面片进行重构,如图3所示,具体步骤包括:
首先,求子空间的外立面与三角面片的交线;
其次,沿交线将三角面片分割成两个部分;
最后,将分割后四边形再次切割,其切割线为交线的一个断点到原三角面一个顶点的连线,并确保四边形分割后成为两个三角面片。
106:将每个子空间内部的三维模型数据进行组合,以形成一个独立的三维模型数据文件,每个三维模型数据文件由一个立方体索引编码和其内部包含三维模型的离散几何编码组成。
步骤103、步骤104、步骤105及步骤106构成三维模型重采样与离散几何编码过程。
在三维模型重采样与离散几何编码过程中,将三维模型数据中的地理坐标由较大的浮点型数值转换为一个值域在[0,512]内整型数据,压缩了坐标的存储空间。
而且,在同一空间八叉树深度上,对原始坐标的重采样使用了相同的空间尺度,这保证了在相同深度的子空间内,地理坐标重采样的误差是一致的,其误差范围等于因此可以获得不同比例尺约束条件下简化的三维模型数据。
除此之外,在面向三维空间剖分后的子空间时,占据空间范围较大的三维模型可以被分割到多个子空间中,减少单个模型文件的数据量,同时立方体索引编码递归剖分空间后,通过CIC可以快速找到同一地理空间范围内不同剖分精度的子空间。这两点能够使编码后的三维模型支持渐进式网络传输。
107:根据已知编码坐标所在子空间的立方体索引编码,将所述离散几何编码逆向转换为地理坐标。
经过构成基于空间八叉树划分的立方体索引编码过程以及三维模型重采样与离散几何编码过程后的模型几何信息是由三个值域在[0,255]的整数值构成的三元组(x,y,z)。编码过程中已知编码坐标所在子空间的CIC编码(r,c,h),由此可以将离散几何编码逆向转换为地理坐标,逆向转换出的地理坐标的数学模型为:
其中,gx、gy、gz分别表示三个正交方向的地理坐标,Ox、Oy、Oz分别表示应用场景中原点的地理坐标,r、c、h表示该地理坐标点所在子空间的立方体索引编码,range表示应用场景中地理范围的最大边长。
步骤107为离散几何编码逆转换为地理坐标的解码过程。基于立方体索引编码可以直接逆向计算出地理坐标,由于立方体索引编码包含空间八叉树的深度,而深度与地图比例尺的对应关系为因此解码后的坐标不会导致地图比例尺所代表的严格的数学约束失效,保证了三维地图在各级比例尺下的可量测性。
如图4所示,为不同的空间八叉树的深度的具体实施效果图片,可以看出,本发明压缩了坐标的存储空间,实现三维模型数据在不同比例尺约束条件下的模型化简和模型个体分割;通过CIC可以快速找到同一地理空间范围内不同剖分精度的子空间,从而使编码后的三维模型支持渐进式网络传输;解码后的坐标不会导致地图比例尺所代表的严格的数学约束失效,保证了三维地图在各级比例尺下的可量测性。