一种点云属性编解码方法和装置
技术领域
本发明专利属于点云编码领域,具体涉及一种基于新的处理顺序的点云属性解码方法和装置。
背景技术
支持虚拟现实技术(VR,Virtual Reality)和增强现实技术(AR,Augmented Reality)的应用是21世纪媒体技术的下一个重要挑战。这些应用连同三维数据采集、三维渲染和计算机视觉使得新兴的沉浸式媒体体验在不久的将来成为可能。点云是一种十分理想的三维场景和三维对象的表现形式,其由三维空间中无规则分布并且无连接的一组点构成,构成点云的每一个点都有几何信息以及可选的属性信息。其中几何信息用来表达三维物体的结构,由三维位置坐标x、y、z构成;而属性信息则用来表达三维场景或者对象的表面属性,常见的属性信息有颜色、反射率、法线和透明度等。点云的数据规模十分庞大,例如一个质量较好的表达三维对象的点云大约有几十万到几百万个点。为了便于点云数据的存储和传输,对于点云数据的压缩十分有必要。
点云压缩算法大多是基于体素化点云的,体素化点云具有处理方便、精度可控等优点。体素化点云是指点的位置坐标被量化到立方体网格内的点云,每个立方体网格的中点的坐标代表该立方体网格中点的坐标,因此编码点云的位置信息时只需要编码立方体网格的索引即可,位置精度可由立方体网格的大小来控制。
目前,对于点云属性编码大都基于莫顿序(Morton Order)来查找若干个最近邻点,然后使用这些最近邻点的属性进行加权来预测当前点的属性值。其中莫顿序是根据点的莫顿码(Morton Code)大小对点云中的点进行排序得到的点序,而每个点的莫顿码可以由点的位置坐标得到,具体的,是将点的各个维度坐标按照二进制位的每个位依序交错放置得到。[1]中基于莫顿序来查找近邻点,其中若细节层次(LoD,Level of Detail)数量为1,会从莫顿序下当前点前若干个已编码点中找到3个距离当前点最近的点,然后使用这些点的属性值的加权平均来预测当前点的属性值,若细节层次数量大于1,则会从按莫顿序排好序的已编码细节层次的点中找到第一个莫顿码大于当前点莫顿码的点,然后在这个找到的点的周围找到3个距离当前点最近的点,使用这些点的属性值的加权平均来预测当前点的属性值。[2]中同样基于莫顿码进行属性预测,其中对于稀疏点云,直接使用莫顿序下当前点的前三个点属性值的加权平均来预测当前点的属性值,对于密集点云,首先从莫顿序下当前点的前若干个点中查找和当前点共面和共线的点,若找得到,则用这些共面共线点的属性值的加权平均来预测当前点的属性值,否则直接使用莫顿序下当前点的前一点预测当前点的属性值。
理论上讲,预测点和当前点的三维空间距离越近,预测点的属性和当前点的属性相关性越强,属性预测的也就越准确,失真不变的情况下所需的码率也就越低。由于莫顿序下相邻或者相近的点之前的三维空间距离会周期性的发生幅度不等的跳跃,导致莫顿序下相邻点之前的三维空间距离周期性的忽近忽远,因此莫顿码具有较差的空间近邻特性,那么利用莫顿序进行最近邻搜索找到的最近点就会不理想。
Hilbert曲线是一种连续的分形空间填充曲线,也被称为Hilbert空间填充曲线,它首先由德国数学家大卫希尔伯特于1891年发现,其可以将高维空间映射到1维。Hilbert曲线具有良好的空间近邻特性,Hilbert的空间近邻特性是指在一维空间相近的数据点在高维空间也是相近的。由于其空间近邻特性,Hilbert曲线和其离散近似应用十分广泛。例如,人们广泛将其用在数据库索引、内存管理图像处理和动态负载平衡等领域。本发明用到的是Hilbert曲线在3维空间的离散近似。
发明内容
针对莫顿序下相邻点之前的三维空间距离会发生周期性跳跃的缺点,为了进一步的点云属性的编码效率,本发明提出了一种基于新的处理顺序的点云属性解码方法和装置。使用Hilbert序作为点云属性的编码顺序,在Hilbert序下当前点前序若干个点中查找当前点三维空间上的近邻点,使用这些近邻点作为当前点 的预测点。由于Hilbert序下相近的点三维空间上也相近,特别的,最坏情况下,Hilbert序上距离为n的两点三维空间上的距离小于等于
而Morton序上距离为n的两点三维空间上的距离有可能大于点云维度长的最大值,且在K较小的时候,Hilbert序上当前点前序K个点距离当前点的平均距离小于Morton序上当前点前序K个点距离当前点的平均距离。因此采用Hilbert序可以更大概率的找到和当前点三维空间上更相近的邻居点,从而使得预测点的属性值和当前点的属性值更相关,进而提升点云属性的编码效率。
本发明的第一目的是提供一种基于新的处理顺序的点云属性解码方法,包括如下内容:
使用Hilbert序下前序解码点重建属性值的加权平均值作为当前点的属性预测值,其中Hilbert序是点云中的点按照其对应的Hilbert码从小到大或者从大到小排序得到的点序;
从码流中解码出当前点的属性残差值;
根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值。
作为优选,所述的基于新的处理顺序的点云属性解码方法,其特征在于,所述Hilbert序下前序解码点重建属性值的加权平均值包括:
选取Hilbert序下前序n个解码点作为当前点的属性预测点,n是自然数;
使用这n个属性预测点重建属性值的加权平均值作为当前点的属性预测值。
作为优选,所述的基于新的处理顺序的点云属性解码方法,其特征在于,所述Hilbert序下前序解码点重建属性值的加权平均值包括:
选取Hilbert序下前序L个点中n个距离当前点最近的点作为当前点的属性预测点,L是大于0的自然数,n是自然数;
使用这n个属性预测点重建属性值的加权平均值作为当前点的属性预测值。
作为优选,所述的基于新的处理顺序的点云属性解码方法,其特征在于,所述Hilbert序下前序解码点重建属性值的加权平均值包括:
选取Hilbert序下前序L个点中当前点的共面点和共线点作为当前点的属性预测点,其中共面点是该点所在立方体与当前点所在立方体有一个公共面的点,共线点是指该点所在立方体与当前点所在立方体有一个公共边的点,L是大于0的自然数;
赋予共面点和共线点权重ω
pl和ω
po,其中ω
pl和ω
po是大于等于0的实数,ω
pl大于ω
po;
使用共面点和共线点重建属性值的加权平均值作为当前点的属性预测值。
作为优选,所述的基于新的处理顺序的点云属性解码方法还可以有另外一种实现形式,其特征在于包括,
构建L层细节层次(LOD
i)
i=0,1…L-1,其中,LOD
i是重建点云的子集,
LOD
L-1为整个重建点云,L是大于0的自然数;
获得当前点的n个属性预测点,令(R
i=LOD
i-LOD
i-1)
i=1…L-1,R
0=LOD
0,对于R
i中Hilbert码为H的点P,从LOD
i-1中Hilbert码范围在[H
1,H
2](H
1≤H≤H
2)内的点里面选取n个与点P距离最近的点,将这n个点作为当前点的属性预测点,n是自然数;
使用这n个属性预测点重建属性值的加权平均值作为当前点的属性预测值;
从码流中解码出当前点的属性残差值;
根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值。
以下约定本发明中的表达方法:
1.点云中点的三维几何坐标记为(X
1,X
2,X
3)
N,其中X
1,X
2,X
3按二进制展开分别表示为:
二进制展开的左边代表高位、右边代表低位,其中N为大于0的整数、表示坐标位宽。
2.点的Hilbert码HCode
N用二进制表示为
其中Hilbert码子码
是m
i位的二进制数。
作为优选,一种基于新的处理顺序的点云属性解码方法包括:
从高位到低位依次处理点云中重建点的三维几何坐标(X
1,X
2,X
3)
N的各二进制位,其中第i次处理:根据重建点的三维几何坐标中的(3*m
i)个二进制位、生成对应的Hilbert码子码
其中,
函数根据本次处理的二进制位的状态state
i和本次处理的二进制位生成本次处理的二进制位对应的Hilbert码子码,m
i不同时有不同的
生成Hilbert码子码的机理是根据由state
i确定的Hilbert子曲线的形状以及由本次处理的二进制位确定的Hilbert子曲线上的序号确定Hilbert码子码,
函数根据本次处理的二进制位的状态state
i和本次处理的二进制位生成下次处理的二进制位的状态state
i+1,m
i不同时有不同的
生成下次处理的二进制位的状态state
i+1的机理是根据由state
i确定的Hilbert子曲线的形状以及由本次处理的二进制位确定的Hilbert子曲线上的序号确定下次处理的二进制位的状态state
i+1,二进制位对应的状态和二进制位对应的Hilbert子曲线的形状一一对应,共进行p次处理,各次处理的m
i的总和为N,即
按照Hilbert从小到大或者从大到小的序,依次从码流中解码得到点云的重建属性信息。
本发明第二目的在于提供一种基于新的处理顺序的点云属性解码装置,其包括:
属性预测值获取模块:该模块输入是已重建的点云,输出是当前点的属性预测值,该模块使用Hilbert序下前序解码点重建属性值的加权平均值作为当前点的属性预测值,其中Hilbert序是点云中的点按照其对应的Hilbert码从小到大或者从大到小排序得到的点序;
属性残差解码模块:该模块输入是码流,输出是属性残差,该模块从码流中解码出当前点的属性残差值;
重建属性值获取模块:该模块输入是属性残差和属性预测值,输出是当前点的重建属性值,该模块根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值。
作为优选,所述的基于新的处理顺序的点云属性解码装置,其特征在于,所述Hilbert序下前序解码点重建属性值的加权平均值包括:
属性预测点获取模块:该模块输入是已重建的点云,输出是当前点的属性预测点,该模块选取Hilbert序下前序n个解码点作为当前点的属性预测点,n是自然数;
属性预测值计算模块:该模块输入是属性预测点,输出是当前点的属性预测值,该模块使用这n个属性预测点重建属性值的加权平均值作为当前点的属性预测值。
作为优选,所述的基于新的处理顺序的点云属性解码装置,其特征在于,所述Hilbert序下前序解码点重建属性值的加权平均值包括:
属性预测点获取模块:该模块输入是已重建的点云,输出是当前点的属性预测点,该模块选取Hilbert序下前序L个点中n个距离当前点最近的点作为当前点的属性预测点,L是大于0的自然数,n是自然数;
属性预测值计算模块:该模块输入是属性预测点,输出是当前点的属性预测值,该模块使用这n个属性预测点重建属性值的加权平均值作为当前点的属性预测值。
作为优选,所述的基于新的处理顺序的点云属性解码装置,其特征在于,所述Hilbert序下前序解码点重建属性值的加权平均值包括:
属性预测点获取模块:该模块输入是已重建的点云,输出是当前点的属性预测点,该模块选取Hilbert序下前序L个点中当前点的共面点和共线点作为当前点的属性预测点,其中共面点是该点所在立方体与当 前点所在立方体有一个公共面的点,共线点是指该点所在立方体与当前点所在立方体有一个公共边的点,L是大于0的自然数;
属性预测点赋权模块:该模块输入是属性预测点,输出是带权重的属性预测点,该模块赋予共面点和共线点权重ω
pl和ω
po,其中ω
pl和ω
po是大于等于0的实数,ω
pl大于ω
po;
属性预测值计算模块:该模块输入是带权重的属性预测点,输出是当前点的属性预测值,该模块使用共面点和共线点重建属性值的加权平均值作为当前点的属性预测值。
作为优选,所述的基于新的处理顺序的点云属性解码装置还可以有另外一种实现形式,其特征在于包括,
LOD构建模块:该模块的输入是重建的点云几何,输出是构建好的LOD,该模块构建L层细节层次(LOD
i)
i=0,1…L-1,其中,LOD
i是重建点云的子集,
LOD
L-1为整个重建点云,L是大于0的自然数;
属性预测点获取模块:该模块的输入是构建好的LOD,输出是当前点的属性预测点,该模块获得当前点的n个属性预测点,令(R
i=LOD
i-LOD
i-1)
i=1…L-1,R
0=LOD
0,对于R
i中Hilbert码为H的点P,从LOD
i-1中Hilbert码范围在[H
1,H
2](H
1≤H≤H
2)内的点里面选取n个与点P距离最近的点,将这n个点作为当前点的属性预测点,n是自然数;
属性预测值计算模块:该模块输入是属性预测点,输出是当前点的属性预测值,该模块使用这n个属性预测点重建属性值的加权平均值作为当前点的属性预测值;
属性残差解码模块:该模块输入是码流,输出是属性残差,该模块从码流中解码出当前点的属性残差值;
重建属性值获取模块:该模块输入是属性残差和属性预测值,输出是当前点的重建属性值,该模块根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值。
作为优选,一种基于新的处理顺序的点云属性解码方法包括:
Hilbert码生成模块:该模块输入是重建的点云几何坐标,输出是与点云几何坐标对应的Hilbert码,该模块从高位到低位依次处理点云中重建点的三维几何坐标(X
1,X
2,X
3)
N的各二进制位,其中第i次处理:根据重建点的三维几何坐标中的(3*m
i)个二进制位、生成对应的Hilbert码子码
其中,
函数根据本次处理的二进制位的状态state
i和本次处理的二进制位生成本次处理的二进制位对应的Hilbert码子码,m
i不同时有不同的
生成Hilbert码子码的机理是根据由state
i确定的Hilbert子曲线的形状以及由本次处理的二进制位确定的Hilbert子曲线上的序号确定Hilbert码子码,
函数根据本次处理的二进制位的状态state
i和本次处理的二进制位生成下次处理的二进制位的状态state
i+1,m
i不同时有不同的
生成下次处理的二进制位的状态state
i+1的机理是根据由state
i确定的Hilbert子曲线的形状以及由本次处理的二进制位确定的Hilbert子曲线上的序号确定下次处理的二进制位的状态state
i+1,二进制位对应的状态和二进制位对应的Hilbert子曲线的形状一一对应,共进行p次处理,各次处理的m
i的总和为N,即
属性解码模块:该模块的输入是属性码流,输出是重建的点云属性,该模块按照Hilbert从小到大或者从大到小的序,依次从码流中解码得到点云的重建属性信息。
由于采用Hilbert序有着最好的空间近邻特性,因此可以更大概率的找到和当前点三维空间上更相近 的邻居点作为预测点,从而使得预测点的属性值和当前点的属性值更相关,进而在实现复杂度不变的前提下提升点云属性的压缩效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明涉及的三维Hilbert曲线的示意图。
图2是本发明实施例算法流程图。
图3是本发明专利实施例装置示意图。
图4是本发明涉及的12种Hilbert状态。
图5是本发明专利实施例装置示意图。
具体实施方法
为了进一步理解本发明,下面结合实施例对本发明的优选实施方案进行描述,但是应当理解,这些描述只是为进一步说明本发明的特征和优点,而不是对本发明权利要求的限制。
为了表述方便,做如下定义:
对于n个二进制数X
1,X
2,…,X
n,X
1X
2…X
n表示将这n个二进制数按位拼接在一起,且左边的数是高位,右边的数是低位。
如果一个D维超立方体的各个维度均被2
n等分,则该超立方体被称为D维n阶超立方体,使用
表示,使用(X
1,X
2…X
d…X
D)表示D维n阶超立方体中最小子立方体的的坐标,其中,0≤X
d<2
n,1≤d≤D。一个穿行于
中最小子立方体的曲线被称为D维n阶Hilbert曲线,用
表示,D维n阶超立方体
中每个最小子立方体在
上的扫描顺序索引称为该最小子立方体的Hilbert码,用
从0开始
D维1阶Hilbert曲线在D维1阶超立方体
中扫描最小立方体的顺序就是gray码的顺序,例如对于三维而言,扫描顺序为0、1、2、3、4、5、6、7的子立方体的gray码的分别是000、001、011、010、110、111、101、100,正好是子立方体的坐标,因此可以根据gray码来生成D维1阶曲线的Hilbert码。
使用符号(x
1x
2…x
K)
b表示K位b进制数,其中0≤x
k<b,1≤k≤K。
Gray码编码函数为
G((x
1x
2…x
k)
2)=(g
1g
2…g
K)
2,
(g
1g
2…g
K)
2是(x
1x
2…x
K)
2的gray码,计算公式如下
(g
1g
2…g
K)
2=(x
1x
2…x
K)
2∧((x
1x
2…x
K)
2>>1)
其中∧为按位异或运算符,>>为右移运算符。
Gray码解码函数为
DG((g
1g
2…g
K)
2)=(x
1x
2…x
K)
2
其中x
k=DG
k((g
1g
2…g
K)
2)
计算公式如下
x
1=DG
1((g
1g
2…g
K)
2)=g
1,
Hilbert曲线是自相似的,曲线的生成是一个递归的过程,n+1阶Hilbert曲线,需要用到n阶Hilbert曲线,具体的:将D维1阶超立方体的2
D个子立方体对应的位置看做D维空间的2
D个象限,那么对于n+1阶Hilbert曲线而言,需要将n阶Hilbert曲线直接拷贝或者经过镜像翻转之后放在n+1阶Hilbert曲线的某个象限,然后将相邻象限的n阶Hilbert曲线或者镜像翻转后的n阶Hilbert曲线的起点和和终点连接起来,这样就构成了n+1阶曲线。用到的翻转主要有两种:镜像翻转1和镜像翻转2,这两种翻转都是沿着某个 超平面的镜像翻转,其中
镜像翻转1是沿超平面X
i-X
j=0翻转,坐标表达上需要交换X
i和X
j的坐标,用
表示坐标的交换。
镜像翻转2是沿着超平面
翻转,坐标表达上需要将X
i的坐标变为2
n-1-X
i。
这两种翻转都是保序,即曲线上的各个点翻转前后在曲线上的相对位置不变。
Hilbert子曲线是有方向的,方向可由起点坐标和终点坐标唯一确定,且起点和终点的坐标只有一位不同。例如3维1阶Hilbert曲线的起点坐标为DG(0)=000,终点坐标为DG(7)=100。分别使用B
q和E
q表示D维1阶在象限q的子曲线的起点和终点坐标(如前所述,象限q的坐标可由gray码G(q)得到),那么对于三维,有B
0=000,E
0=010,B
1=000,E
1=100,B
2=000,E
2=100,B
3=110,E
3=111,B
4=110,E
4=111,B
5=101,E
5=001,B
6=101,E
6=001,B
7=001,E
7=011。
可由起点和终点的坐标确定将各个子曲线变为相似于1阶曲的线镜像翻转。
后续均只考虑三维空间,即D=3,给定一个点的三维坐标(X
1,X
2,X
3),按照二进制展开为
象限q的镜像翻转1
得到3位数
代表镜像翻转1的翻转规则,具体翻转规则如下,由于入点和出点坐标只有一位不同,所以G(0)∧DG(7)和B
q∧E
q都只有一位为1,所以
的各个二进制位中要么只有两个1,要么全为0,如果
的第i位和第j位为1,那么交换坐标X
i和X
j,1≤i,j≤3。
象限q的镜像翻转2
得到3位数
代表镜像翻转2的翻转规则,具体翻转规则如下,如果
第i位为1,令X
i=2
n-1-X
i,其中n为待翻转曲线的阶数。
Hilbert编码是根据给定的坐标(X
1,X
2,X
3)计算Hilbert码HCode
N=(C
1C
2…C
n…C
N-1C
N)的过程,其中C
n是每层的3位二进制子码,n依次取1到N进行以下计算依次获得C
n
3.镜像翻转2:如果
第i位为1,令X
i=2
N-n+1-1-X
i,1≤i≤3
4.镜像翻转1:如果
的第i位和第j位为1,
1≤i,j≤3。
第一个实施例:
本实施例的一种基于新的处理顺序的点云属性解码方法,如图2所示,包含以下内容,
对于重建的点云几何,跟据其三维空间坐标生成与其相关联的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
则可以通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N=(C
1C
2…C
n…C
N-1C
N),其中C
n是3位二进制子码,n依次取1到N进行以下计算依次获得C
n:
3.镜像翻转2:如果
第i位为1,令X
i=2
N-n+1-1-X
i,1≤i≤3
4.镜像翻转1:如果
的第i位和第j位为1,
1≤i,j≤3;
按照Hilbert序依次处理点云中的点的属性值,对于当前点的属性值执行如下步骤进行处理:
1)使用Hilbert序下前序解码点重建属性值的加权平均值作为当前点的属性预测值,其中Hilbert序是点云中的点按照其对应的Hilbert码从小到大或者从大到小排序得到的点序:选取Hilbert序下当前点的前1个点点P,设其属性值分别为
则属性值
即为当前点的属性预测值;
2)从码流中解码出当前点的属性残差值R;
根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第二个实施例:
本实施例的一种基于新的处理顺序的点云属性解码方法,包含以下内容,
对于重建的点云几何,跟据其三维空间坐标生成与其相关联的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
则可以通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N=(C
1C
2…C
n…C
N-1C
N),其中C
n是3位二进制子码,n依次取1到N进行以下计算依次获得C
n:
3.镜像翻转2:如果
第i位为1,令X
i=2
N-n+1-1-X
i,1≤i≤3
4.镜像翻转1:如果
的第i位和第j位为1,
1≤i,j≤3;
按照Hilbert序依次处理点云中的点的属性值,对于当前点的属性值执行如下步骤进行处理:
1)选取Hilbert序下前序n个解码点作为当前点的属性预测点,n是自然数,本实施例中n取3:选取Hilbert序下当前点的前3个点P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,2,3;
2)使用这3个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
3)从码流中解码出当前点的属性残差值R;
4)根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第三个实施例:
本实施例的一种基于新的处理顺序的点云属性解码方法,包含以下内容,
对于重建的点云几何,跟据其三维空间坐标生成与其相关联的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
则可以通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N=(C
1C
2…C
n…C
N-1C
N),其中C
n是3位二进制子码,n依次取1到N进行以下计算依次获得C
n:
3.镜像翻转2:如果
第i位为1,令X
i=2
N-n+1-1-X
i,1≤i≤3
4.镜像翻转1:如果
的第i位和第j位为1,
1≤i,j≤3;
按照Hilbert序依次处理点云中的点的属性值,对于当前点的属性值执行如下步骤进行处理:
1)选取Hilbert序下前序L个点中n个距离当前点最近的点作为当前点的属性预测点,n是自然数,本实施例中n取3:在Hilbert序下当前点的前128个点中查找3个距离当前点最近的点,令其为P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,2,3;
2)使用这3个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
3)从码流中解码出当前点的属性残差值R;
4)根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第四个实施例:
本实施例的一种基于新的处理顺序的点云属性解码方法,包含以下内容,
对于重建的点云几何,跟据其三维空间坐标生成与其相关联的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
则可以通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N=(C
1C
2…C
n…C
N-1C
N),其中C
n是3位二进制子码,n依次取1到N进行以下计算依次获得C
n:
3.镜像翻转2:如果
第i位为1,令X
i=2
N-n+1-1-X
i,1≤i≤3
4.镜像翻转1:如果
的第i位和第j位为1,
1≤i,j≤3;
按照Hilbert序依次处理点云中的点的属性值,对于当前点的属性值执行如下步骤进行处理:
1)选取Hilbert序下前序L个点中当前点的共面点和共线点作为当前点的属性预测点,其中共面点是该点所在立方体与当前点所在立方体有一个公共面的点,共线点是指该点所在立方体与当前点所在立方体有一个公共边的点,L是大于0的自然数,本实施例中L取128:在Hilbert序下当前点的前128个点中 查找与当前点共面和共线的邻居点,设最终找到的邻居点的个数为k,若k不为0,则设这些邻居点为(P
i)
i=12..k,每一个邻居点的属性值为(A
i)
i=12..k;
2)赋予共面点和共线点权重ω
pl和ω
po,其中ω
pl和ω
po是大于等于0的实数,ω
pl大于ω
po,本实施例中令ω
pl=2,ω
po=1,:每一个邻居点的权重为(ω
i)
i=12..k,其中对距离为1的邻居点赋权重为2,对距离为
的邻居点赋权重为2;
3)使用共面点和共线点重建属性值的加权平均值作为当前点的属性预测值:使用以下公式计算这些邻居点(P
i)
i=12..k的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
4)从码流中解码出当前点的属性残差值R;
5)根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第五个实施例:
本实施例的一种基于新的处理顺序的点云属性解码方法,包含以下内容,
对于重建的点云几何,跟据其三维空间坐标生成与其相关联的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
则可以通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N=(C
1C
2…C
n…C
N-1C
N),其中C
n是3位二进制子码,n依次取1到N进行以下计算依次获得C
n:
3.镜像翻转2:如果
第i位为1,令X
i=2
N-n+1-1-X
i,1≤i≤3
4.镜像翻转1:如果
的第i位和第j位为1,
1≤i,j≤3;
构建L层细节层次(LOD
i)
i=0,1…L-1,其中,LOD
i是重建点云的子集,
LOD
L-1为整个重建点云,L是大于0的自然数,本实施例中L取10;
获得当前点的n个属性预测点,令(R
i=LOD
i-LOD
i-1)
i=1…L-1,R
0=LOD
0,对于R
i中Hilbert码为H的点P,从LOD
i-1中Hilbert码范围在[H
1,H
2](H
1≤H≤H
2)内的点里面选取n个与点P距离最近的点,将这n个点作为当前点的属性预测点,n是自然数,本实施例中n取3,令这3个属性预测点为P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,2,2;
使用这3个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值
为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测 值
从码流中解码出当前点的属性残差值R;
根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第六个实施例:
本实施例的一种基于新的处理顺序的点云属性解码装置,如图3所示,包含以下模块,
Hilbert码生成模块:该模块的输入是重建的点云几何,输出是含有Hilbert码的点云几何,该模块对于重建的点云几何,跟据其三维空间坐标生成与其相关联的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
则可以通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N=(C
1C
2…C
N…C
N-1C
N),其中C
n是3位二进制子码,n依次取1到N进行以下计算依次获得C
n:
3.镜像翻转2:如果
第i位为1,令X
i=2
N-n+1-1-X
i,1≤i≤3
4.镜像翻转1:如果
的第i位和第j位为1,
1≤i,j≤3;
按照Hilbert序依次处理点云中的点的属性值,对于当前点的属性值执行如下模块进行处理:
1)属性预测值获取模块:该模块输入是已重建的点云,输出是当前点的属性预测值,该模块使用Hilbert序下前序解码点重建属性值的加权平均值作为当前点的属性预测值,其中Hilbert序是点云中的点按照其对应的Hilbert码从小到大或者从大到小排序得到的点序:选取Hilbert序下当前点的前1个点点P,设其属性值分别为
则属性值
即为当前点的属性预测值;
2)属性残差解码模块:该模块输入是码流,输出是属性残差,该模块从码流中解码出当前点的属性残差值R;
3)重建属性值获取模块:该模块输入是属性残差和属性预测值,输出是当前点的重建属性值,该模块根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第七个实施例:
本实施例的一种基于新的处理顺序的点云属性解码装置,包含以下模块,
Hilbert码生成模块:该模块的输入是重建的点云几何,输出是含有Hilbert码的点云几何,该模块对于重建的点云几何,跟据其三维空间坐标生成与其相关联的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
则可以通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N=(C
1C
2…C
n…C
N-1C
N),其中C
n是3位二进制子码,n依次取1到N进行以下计算依次获得C
n:
3.镜像翻转2:如果
第i位为1,令X
i=2
N-n+1-1-X
i,1≤i≤3
4.镜像翻转1:如果
的第i位和第j位为1,
1≤i,j≤3;
按照Hilbert序依次处理点云中的点的属性值,对于当前点的属性值执行如下模块进行处理:
1)属性预测点获取模块:该模块输入是已重建的点云,输出是当前点的属性预测点,该模块选取Hilbert序下前序n个解码点作为当前点的属性预测点,n是自然数,本实施例中n取3:选取Hilbert序下当前点的前3个点P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,2,3;
2)属性预测值计算模块:该模块输入是属性预测点,输出是当前点的属性预测值,该模块使用这3个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
3)属性残差解码模块:该模块输入是码流,输出是属性残差,该模块从码流中解码出当前点的属性残差值R;
重建属性值获取模块:该模块输入是属性残差和属性预测值,输出是当前点的重建属性值,该模块根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第八个实施例:
本实施例的一种基于新的处理顺序的点云属性解码装置,包含以下模块,
Hilbert码生成模块:该模块的输入是重建的点云几何,输出是含有Hilbert码的点云几何,该模块对于重建的点云几何,跟据其三维空间坐标生成与其相关联的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
则可以通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N=(C
1C
2…C
n…C
N-1C
N),其中C
n是3位二进制子码,n依次取1到N进行以下计算依次获得C
n:
3.镜像翻转2:如果
第i位为1,令X
i=2
N-n+1-1-X
i,1≤i≤3
4.镜像翻转1:如果
的第i位和第j位为1,
1≤i,j≤3;
按照Hilbert序依次处理点云中的点的属性值,对于当前点的属性值执行如下模块进行处理:
1)属性预测点获取模块:该模块输入是已重建的点云,输出是当前点的属性预测点,该模块选取Hilbert序下前序L个点中n个距离当前点最近的点作为当前点的属性预测点,n是自然数,本实施例中n取3:在Hilbert序下当前点的前128个点中查找3个距离当前点最近的点,令其为P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,2,3;
2)属性预测值计算模块:该模块输入是属性预测点,输出是当前点的属性预测值,该模块使用这3 个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
3)属性残差解码模块:该模块输入是码流,输出是属性残差,该模块从码流中解码出当前点的属性残差值R;
4)重建属性值获取模块:该模块输入是属性残差和属性预测值,输出是当前点的重建属性值,该模块根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第九个实施例:
本实施例的一种基于新的处理顺序的点云属性解码装置,包含以下模块,
Hilbert码生成模块:该模块的输入是重建的点云几何,输出是含有Hilbert码的点云几何,该模块对于重建的点云几何,跟据其三维空间坐标生成与其相关联的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
则可以通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N=(C
1C
2…C
n…C
N-1C
N),其中C
n是3位二进制子码,n依次取1到N进行以下计算依次获得C
n:
3.镜像翻转2:如果
第i位为1,令X
i=2
N-n+1-1-X
i,1≤i≤3
4.镜像翻转1:如果
的第i位和第j位为1,
1≤i,j≤3;
按照Hilbert序依次处理点云中的点的属性值,对于当前点的属性值执行如下模块进行处理:
1)属性预测点获取模块:该模块输入是已重建的点云,输出是当前点的属性预测点,该模块选取Hilbert序下前序L个点中当前点的共面点和共线点作为当前点的属性预测点,其中共面点是该点所在立方体与当前点所在立方体有一个公共面的点,共线点是指该点所在立方体与当前点所在立方体有一个公共边的点,L是大于0的自然数,本实施例中L取128:在Hilbert序下当前点的前128个点中查找与当前点共面和共线的邻居点,设最终找到的邻居点的个数为k,若k不为0,则设这些邻居点为(p
i)
i=12..k,每一个邻居点的属性值为(A
i)
i=12..k;
2)属性预测点赋权模块:该模块输入是属性预测点,输出是带权重的属性预测点,该模块赋予共面点和共线点权重ω
pl和ω
po,其中ω
pl和ω
po是大于等于0的实数,ω
pl大于ω
po,本实施例中令ω
pl=2,ω
po=1:每一个邻居点的权重为(ω
i)
i=12..k,其中对距离为1的邻居点赋权重为2,对距离为
的邻居点赋权重为2;
3)属性预测值计算模块:该模块输入是带权重的属性预测点,输出是当前点的属性预测值,该模块使用共面点和共线点重建属性值的加权平均值作为当前点的属性预测值:使用以下公式计算这些邻居点(P
i)
i=12..k的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
4)属性残差解码模块:该模块输入是码流,输出是属性残差,该模块从码流中解码出当前点的属性残差值R;
重建属性值获取模块:该模块输入是属性残差和属性预测值,输出是当前点的重建属性值,该模块根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第十个实施例:
本实施例的一种基于新的处理顺序的点云属性解码装置,包含以下模块,
Hilbert码生成模块:该模块的输入是重建的点云几何,输出是含有Hilbert码的点云几何,该模块对于重建的点云几何,跟据其三维空间坐标生成与其相关联的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
则可以通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N=(C
1C
2…C
n…C
N-1C
N),其中C
n是3位二进制子码,n依次取1到N进行以下计算依次获得C
n:
3.镜像翻转2:如果
第i位为1,令X
i=2
N-n+1-1-X
i,1≤i≤3
4.镜像翻转1:如果
的第i位和第j位为1,
1≤i,j≤3;
LOD构建模块:该模块的输入是重建的点云几何,输出是构建好的LOD,该模块构建L层细节层次(LOD
i)
i=0,1…L-1,其中,LOD
i是重建点云的子集,
LOD
L-1为整个重建点云,L是大于0的自然数,本实施例中L取10;
属性预测点获取模块:该模块的输入是构建好的LOD,输出是当前点的属性预测点,该模块获得当前点的n个属性预测点,令(R
i=LOD
i-LOD
i-1)
i=1…L-1,R
0=LOD
0,对于R
i中Hilbert码为H的点P,从LOD
i-1中Hilbert码范围在[H
1,H
2](H
1≤H≤H
2)内的点里面选取n个与点P距离最近的点,将这n个点作为当前点的属性预测点,n是自然数,本实施例中n取3,令这3个属性预测点为P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,2,3;
属性预测值计算模块:该模块输入是属性预测点,输出是当前点的属性预测值,该模块使用这3个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
属性残差解码模块:该模块输入是码流,输出是属性残差,该模块从码流中解码出当前点的属性残差值R;
重建属性值获取模块:该模块输入是属性残差和属性预测值,输出是当前点的重建属性值,该模块根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第十一个实施例:
本实施例的一种基于新的处理顺序的点云属性解码方法,如图2所示,包含以下内容,
当解码的几何点为hilbert序时,直接按照解码序处理点云属性,对于当前点的属性值执行如下步骤进行处理:
1)使用Hilbert序下前序解码点重建属性值的加权平均值作为当前点的属性预测值,其中Hilbert序是点云中的点按照其对应的Hilbert码从小到大或者从大到小排序得到的点序:选取Hilbert序下当前点的前1个点点P,设其属性值分别为
则属性值
即为当前点的属性预测值;
2)从码流中解码出当前点的属性残差值R;
3)根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第十二个实施例:
本实施例的一种基于新的处理顺序的点云属性解码方法,包含以下内容,
当解码的几何点为hilbert序时,直接按照解码序处理点云属性,对于当前点的属性值执行如下步骤进行处理:
1)选取Hilbert序下前序n个解码点作为当前点的属性预测点,n是自然数,本实施例中n取3:选取Hilbert序下当前点的前3个点P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,2,3;
2)使用这3个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
3)从码流中解码出当前点的属性残差值R;
4)根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值 为
第十三个实施例:
本实施例的一种基于新的处理顺序的点云属性解码方法,包含以下内容,
当解码的几何点为hilbert序时,直接按照解码序处理点云属性,对于当前点的属性值执行如下步骤进行处理:
1)选取Hilbert序下前序L个点中n个距离当前点最近的点作为当前点的属性预测点,n是自然数,本实施例中n取3:在Hilbert序下当前点的前128个点中查找3个距离当前点最近的点,令其为P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,2,3;
2)使用这3个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
3)从码流中解码出当前点的属性残差值R;
4)根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第十四个实施例:
本实施例的一种基于新的处理顺序的点云属性解码方法,包含以下内容,
当解码的几何点为hilbert序时,直接按照解码序处理点云属性,对于当前点的属性值执行如下步骤进行处理:
1)选取Hilbert序下前序L个点中当前点的共面点和共线点作为当前点的属性预测点,其中共面点是该点所在立方体与当前点所在立方体有一个公共面的点,共线点是指该点所在立方体与当前点所在立方体有一个公共边的点,L是大于0的自然数,本实施例中L取128:在Hilbert序下当前点的前128个点中查找与当前点共面和共线的邻居点,设最终找到的邻居点的个数为k,若k不为0,则设这些邻居点为(P
i)
i=12..k,每一个邻居点的属性值为(A
i)
i=12..k;
2)赋予共面点和共线点权重ω
pl和ω
po,其中ω
pl和ω
po是大于等于0的实数,ω
pl大于ω
po,本实施例中令ω
pl=2,ω
po=1:每一个邻居点的权重为(ω
i)
i=12..k,其中对距离为1的邻居点赋权重为2,对距离为
的邻居点赋权重为2;
3)使用共面点和共线点重建属性值的加权平均值作为当前点的属性预测值:使用以下公式计算这些邻居点(P
i)
i=12..k的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
4)从码流中解码出当前点的属性残差值R;
5)根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第十五个实施例:
本实施例的一种基于新的处理顺序的点云属性解码装置,如图3所示,包含以下模块,
当解码的几何点为hilbert序时,直接按照解码序处理点云属性,对于当前点的属性值执行如下模块进行处理:
1)属性预测值获取模块:该模块输入是已重建的点云,输出是当前点的属性预测值,该模块使用Hilbert序下前序解码点重建属性值的加权平均值作为当前点的属性预测值,其中Hilbert序是点云中的点按照其对应的Hilbert码从小到大或者从大到小排序得到的点序:选取Hilbert序下当前点的前1个点点P,设其属性值分别为
则属性值
即为当前点的属性预测值;
2)属性残差解码模块:该模块输入是码流,输出是属性残差,该模块从码流中解码出当前点的属性残差值R;
3)重建属性值获取模块:该模块输入是属性残差和属性预测值,输出是当前点的重建属性值,该模块根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第十六个实施例:
本实施例的一种基于新的处理顺序的点云属性解码装置,包含以下模块,
当解码的几何点为hilbert序时,直接按照解码序处理点云属性,对于当前点的属性值执行如下模块进行处理:
1)属性预测点获取模块:该模块输入是已重建的点云,输出是当前点的属性预测点,该模块选取Hilbert序下前序n个解码点作为当前点的属性预测点,n是自然数,本实施例中n取3:选取Hilbert序下当前点的前3个点P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,2,3;
2)属性预测值计算模块:该模块输入是属性预测点,输出是当前点的属性预测值,该模块使用这3个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
3)属性残差解码模块:该模块输入是码流,输出是属性残差,该模块从码流中解码出当前点的属性残差值R;
4)重建属性值获取模块:该模块输入是属性残差和属性预测值,输出是当前点的重建属性值,该模 块根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第十七个实施例:
本实施例的一种基于新的处理顺序的点云属性解码装置,包含以下模块,
当解码的几何点为hilbert序时,直接按照解码序处理点云属性,对于当前点的属性值执行如下模块进行处理:
1)属性预测点获取模块:该模块输入是已重建的点云,输出是当前点的属性预测点,该模块选取Hilbert序下前序L个点中n个距离当前点最近的点作为当前点的属性预测点,n是自然数,本实施例中n取3:在Hilbert序下当前点的前128个点中查找3个距离当前点最近的点,令其为P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,2,3;
2)属性预测值计算模块:该模块输入是属性预测点,输出是当前点的属性预测值,该模块使用这3个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
3)属性残差解码模块:该模块输入是码流,输出是属性残差,该模块从码流中解码出当前点的属性残差值R;
4)重建属性值获取模块:该模块输入是属性残差和属性预测值,输出是当前点的重建属性值,该模块根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第十八个实施例:
本实施例的一种基于新的处理顺序的点云属性解码装置,包含以下模块,
当解码的几何点为hilbert序时,直接按照解码序处理点云属性,对于当前点的属性值执行如下模块进行处理:
1)属性预测点获取模块:该模块输入是已重建的点云,输出是当前点的属性预测点,该模块选取Hilbert序下前序L个点中当前点的共面点和共线点作为当前点的属性预测点,其中共面点是该点所在立方体与当前点所在立方体有一个公共面的点,共线点是指该点所在立方体与当前点所在立方体有一个公共边的点,L是大于0的自然数,本实施例中L取128:在Hilbert序下当前点的前128个点中查找与当前点共面和共线的邻居点,设最终找到的邻居点的个数为k,若k不为0,则设这些邻居点为(P
i)
i=12..k,每一个邻居点的属性值为(A
i)
i=12..k,;
2)属性预测点赋权模块:该模块输入是属性预测点,输出是带权重的属性预测点,该模块赋予共面 点和共线点权重ω
pl和ω
po,其中ω
pl和ω
po是大于等于0的实数,ω
pl大于ω
po,本实施例中令ω
pl=2,ω
po=1:每一个邻居点的权重为(ω
i)
i=12..k,其中对距离为1的邻居点赋权重为2,对距离为
的邻居点赋权重为2;
3)属性预测值计算模块:该模块输入是带权重的属性预测点,输出是当前点的属性预测值,该模块使用共面点和共线点重建属性值的加权平均值作为当前点的属性预测值:使用以下公式计算这些邻居点(P
i)
i=12..k的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
4)属性残差解码模块:该模块输入是码流,输出是属性残差,该模块从码流中解码出当前点的属性残差值P;
5)重建属性值获取模块:该模块输入是属性残差和属性预测值,输出是当前点的重建属性值,该模块根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第十九个实施例:
本实施例的一种基于新的处理顺序的点云属性解码方法,包含以下内容,
从高位到低位依次处理点云中重建点的三维几何坐标(X
1,X
2,X
3)
N的各二进制位,其中第i次处理:根据重建点的三维几何坐标中的(3*m
i)个二进制位、生成对应的Hilbert码子码
本实施例中N=bitWidth、X
1=x、X
2=y、X
3=z,每次固定都只处理1位即m
i=1,p=bitWidth,
对应查表操作HilbertTable[state][pos][1],
对应查表操作HilbertTable[state][pos][0],通过以下方法获得被解码点的希尔伯特(Hilbert)码HCode:
其中>>为按位右移操作,<<为按位左移操作,用到的查找表HilbertCode如下:
按照Hilbert从小到大或者从大到小的序,依次从码流中解码得到点云的重建属性信息,对于当前点的属性值执行如下步骤进行处理:
1)选取Hilbert序下前序L个点中n个距离当前点最近的点作为当前点的属性预测点,n是自然数,本实施例中n取3:在Hilbert序下当前点的前128个点中查找3个距离当前点最近的点,令其为P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,2,3;
2)使用这3个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
3)从码流中解码出当前点的属性残差值R;
4)根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第二十个实施例:
本实施例的一种基于新的处理顺序的点云属性解码装置,包含以下模块,
Hilbert码生成模块:该模块输入是重建的点云几何坐标,输出是与点云几何坐标对应的Hilbert码,该模块从高位到低位依次处理点云中重建点的三维几何坐标(X
1,X
2,X
3)
N的各二进制位,其中第i次处理:根据重建点的三维几何坐标中的(3*m
i)个二进制位、生成对应的Hilbert码子码
本实施例中N=bitWidth、X
1=x、X
2=y、X
3=z,每次固定都只处理1位即m
i=1,p=bitWidth,
对应查表操作HilbertTable[state][pos][1],
对应查表操作HilbertTable[state][pos][0],通过以下方法获得被解码点的希尔伯特(Hilbert)码HCode:
其中>>为按位右移操作,<<为按位左移操作,用到的查找表HilbertCode如下:
属性解码模块:该模块的输入是属性码流,输出是重建的点云属性,该模块按照Hilbert从小到大或者从大到小的序,依次从码流中解码得到点云的重建属性信息,对于当前点的属性值执行如下模块进行处理:
1)属性预测点获取模块:该模块输入是已重建的点云,输出是当前点的属性预测点,该模块选取Hilbert序下前序L个点中n个距离当前点最近的点作为当前点的属性预测点,n是自然数,本实施例中n取3:在Hilbert序下当前点的前128个点中查找3个距离当前点最近的点,令其为P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,2,3;
2)属性预测值计算模块:该模块输入是属性预测点,输出是当前点的属性预测值,该模块使用这3个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
3)属性残差解码模块:该模块输入是码流,输出是属性残差,该模块从码流中解码出当前点的属性残差值R;
4)重建属性值获取模块:该模块输入是属性残差和属性预测值,输出是当前点的重建属性值,该模块根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第二十一个实施例:
本实施例的一种基于新的处理顺序的点云属性解码方法,包含以下内容,
从高位到低位依次处理点云中重建点的三维几何坐标(X
1,X
2,X
3)
N的各二进制位,其中第i次处理:根据重建点的三维几何坐标中的(3*m
i)个二进制位、生成对应的Hilbert码子码
本实施例中N=bitWidth且为偶数、X
1=x、X
2=y、X
3=z,每次固定都只处理2位即m
i=2,p=bitWidth/2,
对应查表操作HilbertTable[state][pos][1],
对应查表操作HilbertTable[state][pos][0],通过以下方法获得被解码点的希尔伯特(Hilbert)码HCode:
其中>>为按位右移操作,<<为按位左移操作,用到的查找表HilbertCode如下:
按照Hilbert从小到大或者从大到小的序,依次从码流中解码得到点云的重建属性信息,对于当前点的属性值执行如下步骤进行处理:
1)选取Hilbert序下前序L个点中n个距离当前点最近的点作为当前点的属性预测点,n是自然数,本实施例中n取3:在Hilbert序下当前点的前128个点中查找3个距离当前点最近的点,令其为P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,2,3;
2)使用这3个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
3)从码流中解码出当前点的属性残差值R;
4)根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第二十二个实施例:
本实施例的一种基于新的处理顺序的点云属性解码装置,包含以下模块,
从高位到低位依次处理点云中重建点的三维几何坐标(X
1,X
2,X
3)
N的各二进制位,其中第i次处理:根据重建点的三维几何坐标中的(3*m
i)个二进制位、生成对应的Hilbert码子码
本实施例中N=bitWidth且为偶数、X
1=x、X
2=y、X
3=z,每次固定都只处理2位即m
i=2,p=bitWidth/2,
对应查表操作HilbertTable[state][pos][1],
对应查表操作HilbertTable[state][pos][0],通过以下方法获得被解码点的希尔伯特(Hilbert)码HCode:
其中>>为按位右移操作,<<为按位左移操作,用到的查找表HilbertCode如下:
属性解码模块:该模块的输入是属性码流,输出是重建的点云属性,该模块按照Hilbert从小到大或者从大到小的序,依次从码流中解码得到点云的重建属性信息,对于当前点的属性值执行如下模块进行处理:
1)属性预测点获取模块:该模块输入是已重建的点云,输出是当前点的属性预测点,该模块选取Hilbert序下前序L个点中n个距离当前点最近的点作为当前点的属性预测点,n是自然数,本实施例中n取3:在Hilbert序下当前点的前128个点中查找3个距离当前点最近的点,令其为P
i=(X
i,Y
i,Z
i),i=1,2,3,设其属性值分别为(A
i)
i=1,3,3;
2)属性预测值计算模块:该模块输入是属性预测点,输出是当前点的属性预测值,该模块使用这3个属性预测点重建属性值的加权平均值作为当前点的属性预测值:分别求得3个点的权重(ω
i)
i=1,2,3,
其中d
i是点P
i距离当前点(X,Y,Z)的距离,至少可以是以下距离之一:
◆欧氏距离的平方:d
i=a(X
i-X)
2+b(Y
i-Y)
2+c(Z
i-Z)
2
◆切比雪夫距离:d
i=max(a|X
i-X|,b|Y
i-Y|,c|Z
i-Z|)
◆曼哈顿距离:d
i=a|X
i-X|+b|Y
i-Y|+c|Z
i-Z|
a、b、c为三个维度的加权系数,用来控制三个维度的权重,本实施例中,加权系数a、b、c分别取值为a=2、b=1、c=3;
使用以下公式计算三个点P
1、P
2、P
3的属性值的加权平均值,将该加权平均值作为当前点的属性预测值
3)属性残差解码模块:该模块输入是码流,输出是属性残差,该模块从码流中解码出当前点的属性残差值R;
4)重建属性值获取模块:该模块输入是属性残差和属性预测值,输出是当前点的重建属性值,该模块根据当前点的属性预测值和解码出的属性残差值获得当前点的重建属性值:当前点的重建属性值为
第二十三个实施例:
本实施例的一种生成新的处理顺序的方法,包含以下内容,
对于重建的点云几何,跟据其三维空间坐标生成与其相对应的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N(X
1,X
2,X
3)=(C
1C
2…C
n…C
N-1C
N),Hilbert码共3*N个二进制位。C
i,i=1,…,N,是其中由3个二进制位组成的第i串子码,而C
1是最高的3位子码,C
N是最低的3位子码。依次进行以下计算获得Hilbert码:
其中,
表示生成第i串子码C
i时的状态,
为12种状态中的一种,如图4所示。每种状态分别对应一种
到C
i的转换
函数。
表示计算C
1时需从12种状态中任选其一作为初始值状态,此后每次
都是根据该子码所对应的上一级状态
和该子码所对应的上一级子码C
i-1用函数
定义的映射关系计算得到。直至计算出所有子码C
1,C
2…C
N,将所有子码依次排列,得到三维空间坐标为(X
1,X
2,X
3)的点的Hilbert码HCode
N(X
1,X
2,X
3),所述的Hilbert码的二进制码的各位与所述几何坐标的二进制码的各位不能构成一一对应。
与图4中定义的12种状态对应的某一映射关系
函数的输入
与输出C
i的对应关系如下:
其余函数如下:
上述映射之间的转换关系与状态对应的曲线之间的转换关系具有相同的意义,
输入的二进制坐标的顺序交换对应曲线中关于平面的对称,
输入的二进制坐标的取反对应曲线中的绕轴旋转。其余映射分别如下表所示:
函数
为根据上一级状态
和上一级子码C
i-1得到当前级的状态
如下表所示:
本例中图4所示的12种状态所对应的编号是可以改变的,但相应地,表1中的
函数也应相应调整,以便使由
得到
的状态转换关系保持不变。
第二十四个实施例:
本实施例的一种生成新的处理顺序的方法,包含以下内容
对于重建的点云几何,跟据其三维空间坐标生成与其相对应的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N(X
1,X
2,X
3)=(C
1C
2…C
n…C
N-1C
N),Hilbert码共3*N个二进制位。C
i,i=1,…,N,是其中由3个二进制位组成的第i串子码,而C
1是最高的3位子码,C
N是最低的3位子码。依次进行以下计算获得Hilbert码:
其中,
表示生成第i串子码C
i时的状态,
为12种状态中的一种,如图4所示。每种状态分别对应一种
到C
i的转换
函数。
表示计算C
1时需从12种状态中任选其一作为初始状态,此后每次
都是根据该子码所对应的上一级状态
和该子码所对应的上一级子码C
i-1用函数
定义的映射关系计算得到。直至计算出所有子码C
1,C
2…C
N,将所有子码依次排列,得到三维空间坐标为(X
1,X
2,X
3)的点的Hilbert码HCode
N(X
1,X
2,X
3),所述的Hilbert码的二进制码的各位与所述几何坐标的二进制码的各位不能构成一一对应。
与图4中定义的12种状态对应的某一映射关系
函数的输入
与输出C
i的对应关系如下:
其中
表示异或操作,⊙表示同或操作。其余状态的映射关系与
的映射关系有以下的运算关系,其中
表示x的取反操作。
上述映射之间的转换关系与状态对应的曲线之间的转换关系具有相同的意义,
输入的二进制坐标的顺序交换对应曲线中关于平面的对称,
输入的二进制坐标的取反对应曲线中的绕轴旋转。
本例中图4所示的12种状态所对应的编号是可以改变的,但相应地,表2中的
函数也应相应调整,以便使由
得到
的状态转换关系保持不变。
第二十五个实施例:
本实施例的一种生成新的处理顺序的方法,包含以下内容,
对于重建的点云几何,跟据其三维空间坐标生成与其相对应的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N(X
1,X
2,X
3)=(C
1C
2…C
n…C
N-1C
N),Hilbert码共3*N个二进制位。C
i,i=1,…,N,是其中由3个二进制位组成的第i串子码,而C
1是最高的3位子码,C
N是最低的3位子码。依次进行以下计算获得Hilbert码:
其中,
表示生成第i串子码C
i时的状态,
为12种状态中的一种。每种状态分别对应一种
到C
i的转换
函数。
表示计算C
1时需从12种状态中任选其一作为初始值状态,此后每次
都是根据该子码所对应的上一级状态
和该子码所对应的上一级子码C
i-1用函数
定义的映射关系计算得到。直至计算出所有子码C
1,C
2…C
N,将所有子码依次排列,得到三维空间坐标为(X
1,X
2,X
3)的点的Hilbert码HCode
N(X
1,X
2,X
3),所述的Hilbert码的二进制码的各位与所述几何坐标的二进制码的各位不能构成一一对应。
某一映射关系
函数的输入
与输出C
i的对应关系如下:
其余函数如下:
上述映射之间的转换关系与状态对应的曲线之间的转换关系具有相同的意义,
输入的二进制坐标的顺序交换对应曲线中关于平面的对称,
输入的二进制坐标的取反对应曲线中的绕轴旋转。其余映射分别如下表所示:
函数
为根据上一级状态
和上一级子码C
i-1得到当前级的状态
如下表所示:
本例中12种状态所对应的编号是可以改变的,但相应地,表3中的
函数也应相应调整,以便使由
得到
的状态转换关系保持不变。
第二十六个实施例:
本实施例的一种生成新的处理顺序的方法,包含以下内容
对于重建的点云几何,跟据其三维空间坐标生成与其相对应的Hilbert码,如前面所述的,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
通过以下过程求出点(X
1,X
2,X
3)的Hilbert码HCode
N(X
1,X
2,X
3)=(C
1C
2…C
n…C
N-1C
N),Hilbert码共3*N个二进制位。C
i,i=1,…,N,是其中由3个二进制位组成的第i串子码,而C
1是最高的3位子码,C
N是最低的3位子码。依次进行以下计算获得Hilbert码:
其中,
表示生成第i串子码C
i时的状态,
为12种状态中的一种。每种状态分别对应一种
到C
i 的转换
函数。
表示计算C
1时需从12种状态中任选其一作为初始状态,此后每次
都是根据该子码所对应的上一级状态
和该子码所对应的上一级子码C
i-1用函数
定义的映射关系计算得到。直至计算出所有子码C
1,C
2…C
N,将所有子码依次排列,得到三维空间坐标为(X
1,X
2,X
3)的点的Hilbert码HCode
N(X
1,X
2,X
3),所述的Hilbert码的二进制码的各位与所述几何坐标的二进制码的各位不能构成一一对应。
某一映射关系
函数的输入
与输出C
i的对应关系如下:
其中
表示异或操作,⊙表示同或操作。其余状态的映射关系与
的映射关系有以下的运算关系,其中
表示x的取反操作。
上述映射之间的转换关系与状态对应的曲线之间的转换关系具有相同的意义,
输入的二进制坐标的顺序交换对应曲线中关于平面的对称,
输入的二进制坐标的取反对应曲线中的绕轴旋转。
本例中的12种状态所对应的编号是可以改变的,但相应地,表4中的
函数也应相应调整,以便使由
得到
的状态转换关系保持不变。
第二十七个实施例:
本实施例的一种基于新的处理顺序的点云属性解码方法,包含以下内容
根据点集中所有点的三维几何坐标,用实施例二十三至实施例二十六中的任一方法计算对应的Hilbert码,然后根据所述这些点的Hilbert码值的大小对这些点进行重排序,得到按Hilbert序排列的所述的多个点,所述的Hilbert码的二进制码的各位与所述几何坐标的二进制码的各位不能构成一一对应;
从码流中依次解码得到多个点各自的属性残差值。
这些点各自的属性残差值依次与所述Hilbert序点集中各点的Hilbert码对应、也与所述Hilbert序中各点的三维几何坐标对应。即从码流中解码得到的属性残差r
1,r
2,…分别对应Hilbert排序后的点P
1,P
2,…。
第二十八个实施例:
本实施例的一种基于新的处理顺序的点云属性解码方法,包含以下内容
根据点集中所有点的三维几何坐标,用实施例二十三至实施例二十六中的任一方法计算对应的Hilbert码,然后根据所述这些点的Hilbert码值的大小对这些点进行重排序,得到按Hilbert序排列的所述的多个点,所述的Hilbert码的二进制码的各位与所述几何坐标的二进制码的各位不能构成一一对应;
用实施例一到二十二的任一方法从码流中解码属性残差且对待解码点进行属性预测,再根据该点对应的属性残差得到该点的重建属性值。
第二十九个实施例:
本实施例的一种基于新的处理顺序的点云属性编码方法,包含以下内容,
根据点集中所有点的三维几何坐标,用实施例二十三至实施例二十六中的任一方法计算对应的Hilbert码,然后根据所述这些点的Hilbert码值的大小对这些点进行重排序,得到按Hilbert序排列的所述的多个点,所述的Hilbert码的二进制码的各位与所述几何坐标的二进制码的各位不能构成一一对应;
用实施例一到二十二的任一属性预测方法对待编码点进行属性预测,再根据该点对应的实际属性值得到该点的属性残差值。
将多个点各自的属性残差值写入码流。
第三十个实施例:
本实施例的一种生成新的处理顺序的装置,包含以下内容,
子码生成模块:对于重建的点云几何,对于给定的三维坐标为(X
1,X
2,X
3)的点,其坐标按二进制展开为
输入其三维空间坐标的二进制位
输出与其相对应的Hilbert子码C
i,i=1,…,N,其中子码是3个二进制位组成,而C
1是最高的3位子码,C
N是最低的3位子码。通过以下计算获得Hilbert子码:
状态转换模块:
其中,
表示生成第i串子码C
i时的状态,
为12种状态中的一种,如图4所示。每种状态分别对应一种
到C
i的转换
函数。
表示计算C
1时需从12种状态中任选其一作为初始值状态,此后每次
都是根据该子码所对应的上一级状态
和该子码所对应的上一级子码C
i-1用函数
定义的映射关系计算得到。
Hilbert码生成模块:计算出所有子码C
1,C
2…C
N,将所有子码依次排列,得到三维空间坐标为(X
1,X
2,X
3)的点的Hilbert码HCode
N(X
1,X
2,X
3)=(C
1C
2…C
n…C
N-1C
N),所述的Hilbert码的二进制码的各位与所述几何坐标的二进制码的各位不能构成一一对应。
与图4中定义的12种状态对应的某一映射关系
函数的输入
与输出C
i的对应关系如下:
其余函数如下:
上述映射之间的转换关系与状态对应的曲线之间的转换关系具有相同的意义,
输入的二进制坐标的顺序交换对应曲线中关于平面的对称,
输入的二进制坐标的取反对应曲线中的绕轴旋转。其余映射分别如下表所示:
函数
为根据上一级状态
和上一级子码C
i-1得到当前级的状态
如下表所示:
本例中图4所示的12种状态所对应的编号是可以改变的,但相应地,表5中的
函数也应相应调整,以便使由
得到
的状态转换关系保持不变。
第三十一个实施例:
本实施例的一种生成新的处理顺序的装置,包含以下内容,
利用实施例三十的子码生成模块、状态转换模块、Hilbert码生成模块,对输入的三维坐标为(X
1,X
2,X
3)的点,输出其对应的Hilbert码;
Hilbert排序模块:输入多个点的Hilbert码,根据所述这些点的Hilbert码值的大小对这些点进行重排序,输出按Hilbert序排列的所述的多个点,所述的Hilbert码的二进制码的各位与所述几何坐标的二进制码的各位不能构成一一对应;
根据实施例六到十以及实施例二十到二十二的属性残差解码模块,从码流中依次解码得到所述的多个点各自的属性残差值;
属性残差对应模块:所述的多个点各自的属性残差值依次与所述Hilbert序中各点的Hilbert码对应、也与所述Hilbert序中各点的三维几何坐标对应。
根据实施例六到十以及实施例二十到二十二的属性预测获取模块和重建属性值获取模块,属性预测获取模块输入是已重建的点云,输出这些点的属性预测值,重建属性值获取模块输入该属性预测值和重建点对应的属性残差值,获得当前点的重建属性值。
最后需要说明上述所有的实现方法,如所述的
等的实现方法,包括但不限于函数、查表、固定电路实现,或使用状态机实现状态转换。