一种基于四边面片分割的三维点云模型数据压缩方法与流程

文档序号:13558069阅读:731来源:国知局
一种基于四边面片分割的三维点云模型数据压缩方法与流程

本发明涉及一种基于四边面片分割的三维点云模型数据压缩方法,属于数字几何处理以及计算机数据压缩技术领域。



背景技术:

随着三维扫描和相关建模技术的快速发展,三维数字几何模型作为一种新兴的数字媒体,已逐渐融入到人们的生产和生活中,在三维游戏,影视特效,计算机仿真,自主导航,工业检测,逆向工程,医疗诊断以及数字文化遗产保护等方面取得了日益广泛的应用。另一方面,由于移动互联网的快速发展以及移动设备处理能力的不断提高,移动互联网上的三维应用必将成为以后的一个发展趋势。这就对存储空间、计算能力、交互性能和网络带宽等方面提出了越来越高的要求。为了满足这些要求,必须要对三维模型数据进行有效的压缩。

在计算机和移动设备中,三维数据形式主要包括三维网格、三维点云、三维体数据等等。由于三维扫描技术的快速发展以及kinect等深度摄像头的广泛使用,三维点云数据近年来受到了越来越广泛的关注。传统的三维模型简化与压缩方法,压缩比不理想且计算量较大,不适合在移动互联网环境下使用。



技术实现要素:

针对现有技术的不足,本发明选取三维点云作为三维模型的表示形式,提供了一种基于四边面片分割的三维点云模型数据压缩方法,实现提高三维模型数据压缩率的目的。

本发明的技术方案为:

一种基于四边面片分割的三维点云模型数据压缩方法,包括:

(1)将输入的点云模型的表面分割成若干四边形的面片;

(2)对步骤(1)获取的四边形的面片依次进行参数化、重采样处理,获取二维的图像数据;对这些面片进行规则的重采样,重采样之后每一个面片就可以用一个高度图来描述,这样就把三维的数据转化成了二维的图像数据,减少了数据量;

(3)采用ezw算法对步骤(2)获取的二维的图像数据进行小波编码;实现对三维点云模型的渐进式压缩。

(4)解码与模型重建。

根据本发明优选的,对步骤(2)处理后的四边形的面片之间进行相似性分析;进一步减少数据量。

根据本发明优选的,所述步骤(1),将输入的点云模型的表面分割成若干四边形的面片,包括:

a、预处理,建立点之间的邻接关系并计算每个点的主方向;

b、基于gla聚类的面片划分;

c、基于区域增长的四边面片调整。

根据本发明优选的,所述步骤a,所述预处理,包括:

a、构建局部邻接关系;

设定每一个点被表示成一个圆盘,包含位置p、法线n以及半径r;输入的点云模型为p={pi|i=1,2,...,n},n为点云模型包含的点数,第i个点pi表示成一个三元组pi=(pi,ni,ri);使用点元的位置和半径来测试两个点是否相邻:将输入模型的包围盒划分成32×32×32的栅格,给定两个点pi和pj,如果|pi-pj|<(ri+rj),则这两个点相邻,否则,不相邻;也就是说,如果两个点之间的距离小于两个圆盘的半径之和,则这两个点就判定为邻居点。另外,我们也也可以通过一个缩放因子s来改变一个点的邻接区域的大小,这样,判断准则变为|pi-pj|<s*(ri+rj)。邻接区域的大小对于主方向的计算是一个重要的因素,我们在实验中把s设为1.2。为了加速邻接关系的计算,我们把输入模型的包围盒划分成32×32×32的栅格,这样,对于每一个点,我们只需要在它所在的3×3×3的栅格中查找可能的邻居点即可。

b、计算主方向;

假设点p有m个邻居点,并且第i个邻居点记为qi,对应于点p的法向量为n,点qi为ni;包括:

i)将点p的邻居点投影到点p所在的平面,把qi的投影点记为qi’,则,

q'i=qi-((qi-p)*n)*n,

其中,q'i和qi分别表示点qi’和qi的位置;

ii)构建局部坐标系;设坐标系的原点为p,三个单位坐标向量分别为u0,v0,n0,则坐标系按下列公式构建:

iii)在点p的切平面,即坐标原点p和u0,v0所确定的平面上,对于给定的一组正交的方向,计算法线的变化。

根据本发明优选的,所述步骤b,基于gla聚类的面片划分,包括:

把输入点云模型中的点集表示成p={pi|i=1,2,...,n},n为点云模型包含的点数;

ⅲ)初始化;在点集p中随机的选择一组代表点,代表点的数目k根据面片的大小(每个面片大致包含的点数,记为np,可由用户指定)和模型中点的总数n估算,k=n/np;初始代表点的集合记为r0={r1,r2,...,rk};

ⅳ)迭代划分,将迭代次数记为t,t=1,2,3,...,执行以下操作:

把点集p划分成k个不想交的子集为s和r之间的欧式距离;对于点集p中的其它点,计算该点到所有代表点的距离;离哪一个代表点最近,就把该点和这个代表点划分到一个子集中;点集p中的所有点都找到相应的代表点之后,就完成了对点集p的划分;

计算每个点集pi的中心点ri,并用这些中心点作为新的代表点,形成代表点集rt,计算本次迭代的误差:

ⅴ)迭代终止,每次迭代后,都要判断一下迭代是否终止,如果(et-1-et)/et<δ或者t=t,就终止迭代,其中δ和t都是用户指定的参数,δ用来衡量两次迭代误差之间的接近程度,如果已非常接近,就终止迭代,t为用户指定的最大迭代次数。

根据本发明优选的,所述步骤c,基于区域增长的四边面片调整,包括:

ⅵ)构建局部坐标系,对于每一个gla面片gp,以面片的中心点c为坐标原点,建立面片的局部坐标系;假设面片中所有点的平均法线为n,平均的最大主曲率方向为d,局部坐标系的三个单位坐标轴分别为u,v,n,则构建方法按以下公式完成:

ⅶ)确定四边面片的尺寸,将面片gp中点的坐标转换到局部坐标系下,寻找三个坐标轴上坐标的最大值和最小值,记为(umin,vmin,nmin)和(umax,vmax,nmax),记面片在两个方向的尺寸分别为sx,sy,则sx=umax-umin,sy=vmax-vmin;

ⅷ)使用区域增长算法生成四边面片;以gla面片的中心点作为种子点,从种子点开始往外增长,直至填满整个矩形框为止;

根据本发明优选的,所述步骤(2),对步骤(1)获取的四边形的面片依次进行参数化、重采样处理,获取二维的图像数据;包括:

将模型的表面分割成一些四边面片之后,我们对这些面片进行参数化与重采样。参数化是为了建立面片中的三维点与二维参数域上点的一一对应关系,由于我们的面片都是一些简单面片(较平坦,面片无折叠,即可以用高度域来建模),采用简单的投影来实现参数化,即把面片上的点投影到局部坐标系的xoy平面上。

将四边面片投影到二维的参数域之后,我们就可以在参数域上对面片进行规则的重采样。重采样的目的是把面片表示成一个高度域,即一个二维的灰度图像。这样,三维面片中的每一个点即可以用一个一维的高度值来表示,减少数据量,达到压缩的目的。

对于参数域上的每一个采样点,找到离它最近的三个投影点,用这三个投影点的高度值进行插值,得到采样点的高度,设三个投影点到采样点的距离分别为d1,d2,d3,高度值分别为h1,h2,h3,不失一般性,假设d1<d2<d3,则采样点的高度h按下式计算:

根据本发明优选的,对步骤(2)处理后的四边形的面片之间进行相似性分析,包括:采用gla聚类方法对面片进行相似性分析。

根据本发明优选的,所述步骤(3),采用ezw算法对步骤(2)获取的二维的图像数据进行小波编码,包括:

要编码的数据。面片进行相似性分析之后,对相似的一类面片,我们计算一个代表(平均的高度图),有了代表面片之后,每个面片就可以用该面片与代表面片之间的误差(也是一个高度图)来表示。再者,由于每个面片是用局部坐标系下的高度图来表示的,要想恢复在原始模型中的位置,还需要编码一些变换参数,包括参数域上的两个缩放参数,旋转变换参数(三个角度值)和平移变换参数(三个位移量)。

要编码的数据包括:代表面片的高度图、每一个面片的类型索引(所属的代表面片索引,只需要用一个整数表示)、变换参数以及误差图像;

对于每一个面片的类型索引,采用算术编码方法直接编码;

对于变换参数,先对变换参数进行平移、旋转、缩放处理,再编码;

对于代表面片的高度图以及所有面片的误差图像,采用嵌入式零树小波ezw编码算法进行渐进式编码。

本发明的有益效果为:

1、现有ot算法在低比特率时有很明显的锯齿现象,而本发明的方法很好的改进了这一点,在相同的比特率下,本发明的方法获得了更为优异的视觉效果。

2、本发明的方法提高了三维模型数据压缩率,例如,本发明可以实现以下效果:压缩率在1bpp以下时,就已经可以看到模型的大致形状;到了4bpp以上时,模型就已经和原始模型非常接近。

附图说明

图1为法线的变化示意图;

图2为k组正交的方向(k=6)示意图;

图3为人脸模型的四边面片分割结果示意图;

图4为确定四边面片的尺寸示意图;

图5为一次区域增长过程描述示意图;

图6为区域增长算法流程描述示意图;

图7为人脸模型的四边面片分割结果示意图;

图8为面片的参数化示意图;

图9为采样点的计算示意图;

图10为面片的聚类结果展示示意图;

图11为face模型的渐进式压缩结果示意图;

图12为igea模型的渐进式压缩结果示意图;

图13为本发明的方法和ot算法的视觉结果比较示意图;

具体实施方式

下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。

实施例

一种基于四边面片分割的三维点云模型数据压缩方法,包括:

(1)将输入的点云模型的表面分割成若干四边形的面片;包括:

a、预处理,建立点之间的邻接关系并计算每个点的主方向;包括:

a、构建局部邻接关系;

设定每一个点被表示成一个圆盘,包含位置p、法线n以及半径r;输入的点云模型为p={pi|i=1,2,...,n},n为点云模型包含的点数,第i个点pi表示成一个三元组pi=(pi,ni,ri);使用点元的位置和半径来测试两个点是否相邻:将输入模型的包围盒划分成32×32×32的栅格,给定两个点pi和pj,如果|pi-pj|<(ri+rj),则这两个点相邻,否则,不相邻;也就是说,如果两个点之间的距离小于两个圆盘的半径之和,则这两个点就判定为邻居点。另外,我们也也可以通过一个缩放因子s来改变一个点的邻接区域的大小,这样,判断准则变为|pi-pj|<s*(ri+rj)。邻接区域的大小对于主方向的计算是一个重要的因素,我们在实验中把s设为1.2。为了加速邻接关系的计算,我们把输入模型的包围盒划分成32×32×32的栅格,这样,对于每一个点,我们只需要在它所在的3×3×3的栅格中查找可能的邻居点即可。

b、计算主方向;

假设点p有m个邻居点,并且第i个邻居点记为qi,对应于点p的法向量为n,点qi为ni;包括:

i)将点p的邻居点投影到点p所在的平面,把qi的投影点记为qi’,则,

q'i=qi-((qi-p)*n)*n,

其中,q'i和qi分别表示点qi’和qi的位置;

ii)构建局部坐标系;设坐标系的原点为p,三个单位坐标向量分别为u0,v0,n0,则坐标系按下列公式构建:

iii)在点p的切平面,即坐标原点p和u0,v0所确定的平面上,对于给定的一组正交的方向,计算法线的变化。如图1所示,在方向d1上,点p两侧的两个法线有一个夹角α,同样的,在方向d1’上也有一个法线的夹角β。我们使用这两个角度来表示法线在这两个方向的变化,实现时我们用离这个方向最近的两个邻居点的法线进行插值来获得n1,n2,n3和n4。

由于主方向表示的是法线变化最快和最慢的两个方向,在p的切平面上,我们考虑k对正交的方向,如图2所示。对于每一对方向,我们分别计算法线变化的角度α和β,并记△θ=|α-β|,然后,我们选择具有最大△θ值的那组方向作为主方向。为了能表示的清楚,在图3中,k=6,但是在实验中,k可以取一个较大的值以获得更高的精度。

b、基于gla聚类的面片划分;包括:

把输入点云模型中的点集表示成p={pi|i=1,2,...,n},n为点云模型包含的点数;

ⅲ)初始化;在点集p中随机的选择一组代表点,代表点的数目k根据面片的大小(每个面片大致包含的点数,记为np,可由用户指定)和模型中点的总数n估算,k=n/np;初始代表点的集合记为r0={r1,r2,...,rk};

ⅳ)迭代划分,将迭代次数记为t,t=1,2,3,...,执行以下操作:

把点集p划分成k个不想交的子集为s和r之间的欧式距离;对于点集p中的其它点,计算该点到所有代表点的距离;离哪一个代表点最近,就把该点和这个代表点划分到一个子集中;点集p中的所有点都找到相应的代表点之后,就完成了对点集p的划分;

计算每个点集pi的中心点ri,并用这些中心点作为新的代表点,形成代表点集rt,计算本次迭代的误差:

ⅴ)迭代终止,每次迭代后,都要判断一下迭代是否终止,如果(et-1-et)/et<δ或者t=t,就终止迭代,其中δ和t都是用户指定的参数,δ用来衡量两次迭代误差之间的接近程度,如果已非常接近,就终止迭代,t为用户指定的最大迭代次数。

图3显示了人脸模型的gla面片划分结果,每个面片用不同的颜色表示。

c、基于区域增长的四边面片调整。包括:

ⅵ)构建局部坐标系,对于每一个gla面片gp,以面片的中心点c为坐标原点,建立面片的局部坐标系;假设面片中所有点的平均法线为n,平均的最大主曲率方向为d,局部坐标系的三个单位坐标轴分别为u,v,n,则构建方法按以下公式完成:

ⅶ)确定四边面片的尺寸,将面片gp中点的坐标转换到局部坐标系下,寻找三个坐标轴上坐标的最大值和最小值,记为(umin,vmin,nmin)和(umax,vmax,nmax),如图4所示。使用区域增长算法时,我们关心的是面片在uv平面上的增长情况,记面片在两个方向的尺寸分别为sx,sy,则sx=umax-umin,sy=vmax-vmin;

ⅷ)使用区域增长算法生成四边面片;确定了四边面片的尺寸之后,实际上就相当于有了一个虚拟的矩形框限制住了面片的形状,如图5所示,以gla面片的中心点作为种子点,从种子点开始往外增长,直至填满整个矩形框为止;算法流程如图6所示。我们为矩形面片中的点设置一个列表,初始时先把种子点加入列表中;然后对于每次增长,都判断所有新加入点的邻居点是否落在面片的尺寸范围内,如果是,则加入该点;算法迭代进行,直至列表的长度不再增加为止。图7以人脸模型为例,显示了把gla面片调整为四边面片之后的分割结果,以不同的颜色来表示不同的面片。

(2)对步骤(1)获取的四边形的面片依次进行参数化、重采样处理,获取二维的图像数据;对这些面片进行规则的重采样,重采样之后每一个面片就可以用一个高度图来描述,这样就把三维的数据转化成了二维的图像数据,减少了数据量;包括:

将模型的表面分割成一些四边面片之后,我们对这些面片进行参数化与重采样。参数化是为了建立面片中的三维点与二维参数域上点的一一对应关系,由于我们的面片都是一些简单面片(较平坦,面片无折叠,即可以用高度域来建模),采用简单的投影来实现参数化,即把面片上的点投影到局部坐标系的xoy平面上,如图8所示,为了描述清楚,我们把投影平面画到了面片的下面。

将四边面片投影到二维的参数域之后,我们就可以在参数域上对面片进行规则的重采样。重采样的目的是把面片表示成一个高度域,即一个二维的灰度图像。这样,三维面片中的每一个点即可以用一个一维的高度值来表示,减少数据量,达到压缩的目的。

重采样过程如图9所示,对于参数域上的每一个采样点,找到离它最近的三个投影点,用这三个投影点的高度值进行插值,得到采样点的高度,设三个投影点到采样点的距离分别为d1,d2,d3,高度值分别为h1,h2,h3,不失一般性,假设d1<d2<d3,则采样点的高度h按下式计算:

对步骤(2)处理后的四边形的面片之间进行相似性分析,包括:采用gla聚类方法对面片进行相似性分析。

以图7中的分割结果为例,对这些面片的聚类结果如图10所示。图中,形状相似的面片用相同的颜色表示,同一类中的面片具有相同的形状模式,图中用白色的圆圈给出了一种形状类型示例,从图中可以看出,gla聚类算法可以把形状相似的面片聚为一类。

(3)采用ezw算法对步骤(2)获取的二维的图像数据进行小波编码;实现对三维点云模型的渐进式压缩。包括:

要编码的数据。面片进行相似性分析之后,对相似的一类面片,我们计算一个代表(平均的高度图),有了代表面片之后,每个面片就可以用该面片与代表面片之间的误差(也是一个高度图)来表示。再者,由于每个面片是用局部坐标系下的高度图来表示的,要想恢复在原始模型中的位置,还需要编码一些变换参数,包括参数域上的两个缩放参数,旋转变换参数(三个角度值)和平移变换参数(三个位移量)。

要编码的数据包括:代表面片的高度图、每一个面片的类型索引(所属的代表面片索引,只需要用一个整数表示)、变换参数以及误差图像;

对于每一个面片的类型索引,采用算术编码方法直接编码;

对于变换参数,先对变换参数进行平移、旋转、缩放处理,再编码;

对于代表面片的高度图以及所有面片的误差图像,采用嵌入式零树小波ezw编码算法进行渐进式编码。

(4)解码与模型重建。

本实施例使用igea和face模型测试了算法的性能,模型来自ethzurich的计算机图形学实验室(http://graphics.ethz.ch/pointshop3d/download.html)。模型的查看和渲染使用pointshop3d研究小组提供的开源软件。图11和12分别是face和igea模型的一些渐进式压缩结果。我们使用bpp(bitsperpoint,每个点所用的比特数)来度量压缩效率,即压缩所用的总比特数与原始模型中所含的点数之比。原始模型中每个点的位置用三个浮点数来表示,因此是96bpp。从图中可以看出,压缩率在1bpp以下时,就已经可以看到模型的大致形状;到了4bpp以上时,模型就已经和原始模型非常接近了。

图13以人脸模型为例,显示了我们的算法和ot算法的视觉效果比较,从图中可以看出,ot算法在低比特率时有很明显的锯齿现象,而我们的算法很好的改进了这一点。在相同的比特率下,本发明的算法获得了更为优异的视觉效果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1