基于局部最小生成树的点模型快速无损压缩处理方法技术

技术编号:4154107 阅读:308 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及计算机图形处理领域。基于局部最小生成树的点模型快速无损压缩处理方法。首先将点模型表面切分成小单元;对每个单元中的点,以它们之间的距离为权值,进行最小生成树的生成;将每个最小生成树编码,并利用最小生成树的拓扑结构预测;然后将真实值与其预测值利用浮点数压缩算法进行压缩处理。该方法通过对点模型中的点在空间上进行分组处理,有效地减少了计算量,从而提高了算法的运行速度;快速高效的浮点压缩方法也有效地提高了算法的运行速度和压缩率。较以往的点模型无损压缩方法,实验表明本发明专利技术提出的方法在压缩率和压缩速度方面具有较高的压缩速度和压缩效果。

【技术实现步骤摘要】

本专利技术涉及计算机图形处理领域,特别是点模型的压缩处理方法。
技术介绍
三维扫描技术的迅速发展使得扫描所得模型的顶点数目达到百万甚至千万数量级。如果用多边形网格模型表示这些高精度模型,需要的多边形将达到了数百万甚至千万。一方面,维护和存储如此庞大的多边形网格将占据了大量的CPU时间及内存;另一方面,当投影到屏幕上的多边形网格数量超过屏幕像素数时,一个多边形网格的投影会比一个屏幕像素还要小。因此,用点来代替多边形网格作为模型数据的基本单元的基于点的图形学应运而生,并成为近年来的研究热点。但是,如何在有限的存储空间和网络带宽上对庞大的模型数据进行存储和传输成为一个重要的亟待解决的问题。 目前,点模型压缩是一个较新的领域。2004年以来,研究者在点模型的渐进压缩和单分辨率压缩方面提出了一些算法。渐进算法由于要构建LOD的层次结构,从而引入了额外的数据冗余,且算法较复杂,效率不高。还有很多渐进算法基于重采样,对数据的精度影响较大。而单分辨率压缩方法多是有损的方法,其中比较著名的是Gumhold等在2005年提出的方法(GumholdS,Karni Z,Isenburg M,Seidelh P.Predictive point-cloud compression[C].SIGGRAPH Sketches,Los Angeles,2005137)。该方法利用Prim算法对点模型构造一个最小生成树,并对相邻数据进行线性预测;并按照自顶向下宽度优先的顺序对得到的生成树进行编码;然后,运用算数编码对得到的预测校正值(即真实值与预测值的差值)进行压缩。上述基于最小生成树的压缩方法为全局的方法,造成了计算量的加大和压缩处理速度的减慢。并且已有的单分辨率压缩方法多是有损的方法。不能满足在压缩精度要求较高的工程的应用要求。
技术实现思路
本专利技术的目的是为了克服上述不足问题,提供一种快速高效的点模型无损压缩处理方法,该方法有效地减少了计算量,提高了压缩速度;同时,保证了数据的精度。 本专利技术为实现上述目的所采用的技术方案是,首先通过数据采集系统将模型数据采集,输入处理系统进行处理,处理时首先将点模型表面切分成小单元;对每个单元中的点,以它们之间的距离为权值,进行最小生成树的生成;将每个最小生成树编码,并利用最小生成树的拓扑结构预测;然后将真实值与其预测值利用浮点数压缩算法进行压缩处理。 所述点模型表面切分的步骤如下 假设待处理的点模型共有Number个点; a)将Number个点按其X坐标升序排列; b)将排列后的点等长切分为L段,每段的长度即每段包含的点的个数记为LengthX[i],按照如下公式计算 LengthX[i]=Number/L,0≤i<L-1; 最后一段的长度LengthX[i]的计算公式为 LengthX[i]=Number/L+Number%L,i=L-1; 其中,记X[i]为第i个X单元; c)对第i个X单元X[i]中的LengthX[i]个点按Y坐标值升序排列; d)将排列后的单元X[i]内等长切分M段,每段的长度即每段包含的点的个数记为LengthY[i,j],按照如下公式计算 LengthY[i,j]=LengthX[i]/L 0≤i<L,0≤j<M-1; 该X单元的最后一段的长度LengthY[i,M-1]为 LengthY[i,j]=LengthX[i]/L+LengthX[i]%M 0≤i<L,j=M-1 其中,记Y[i,j]为第[i,j]个XY单元; e)循环c)、d)步骤,直至所有X单元被循环处理; f)对第[i,j]个XY单元Y[i,j]中的LengthY[i,j]个点按Z坐标值升序排列; g)将排列后的单元Y[i,j]中的点等长切分为N段,每段的长度即每段包含的点的个数记为LengthZ[i,j,k]按照如下公式计算 LengthZ[i,j,k]=Length Y[i,j]/N 其中0≤i<L,0≤j<M,0≤k<N-1; 最后一段的长度LengthZ[i,j,k]的计算公式为 LengthZ[i,j,k]=Y[i,j]/N+Length Y[i,j]%N, 其中0≤i<L,0≤j<M,k=N-1; h)循环f)、g)步骤,直至所有XY单元被循环处理; 上述运算中,运算符号/表示除后取整,%表示除后取余数。 所述浮点数压缩算法是将真实值与其预测值分成符号位、指数、尾数,并将其分别投影成整数;然后对各个部分分别做差并在各自的上下文中编码;并且在对尾数进行处理的时候,要为每个指数对应的尾数构造一个上下文,在该上下文中独立编码尾数。 所述生成最小生成树的方法为以每个单元中任意两点之间的曼哈顿距离为两点间边的权值,采用Prim算法进行最小生成树的生成。 所述每个最小生成树进行编码时按宽度优先顺序。 所述编码时可用huffman编码对最小生成树中节点孩子的个数进行编码,编码方式为设r是最小生成树的根节点,对r的孩子个数根据huffman编码表的对应的码值进行编码;对r的每个孩子ci进行同样的过程。 所述在借助每个小单元的最小生成树进行预测时,以父节点作为所有子节点的预测值。 所述切分后的每个单元中的长度LengthZ[i,j,k]最佳范围为100-350。 本专利技术采用将点模型分别按X、Y、Z三个维度进行排序切分的方法,对三维空间进行切分。点模型表面被切割成多个小的单元,其中每个小单元都对应一个表面块。每个单元内的三维坐标在位置上都是相邻的。图4给出了一个三维切割过程的二维演示。在二维空间对X、Y值进行排序和切分后得到的是平面上的一个个矩形单元,如果加上z值,那么每个单元是一个长方体结构,每个长方体都有一个唯一的编号(i,j,k)。每个长方体内包含着其对应的表面信息,其中的点的几何坐标保持着自然的相邻关系。在后面进行最小生成树的生成时,以每个表面块为单位,而不再以全局所有点为单位。从而实现减小计算量和加快压缩速度的目的。 本专利技术的积极效果在于提出了一种高效的点模型无损压缩方法,该方法通过对点模型中的点在空间上进行分组处理,有效地减少了计算量,从而提高了算法的运行速度;同时,快速高效的浮点压缩方法也有效地提高了算法的运行速度和压缩率。实验表明本专利技术提出的方法在压缩率和压缩速度方面具有较高的压缩速度和压缩效果,较之以往的点模型无损压缩方法,该专利技术将bpp(bitsper point)平均降低了18.06%,压缩速度提高了近10倍。同时保证了压缩处理的精度。该方法可以作为点模型压缩算法的一个有益的补充,用来在对数据要求无损的应用背景下应用。 四附图说明 图1为本专利技术的无损压缩方法的流程图。 图2为本专利技术点模型表面切分过程流程图。 图3为IEEE 32位浮点数在不同指数下的不同精度。 图4为对三维点模型切分的二维演示。 五具体实施例方式 下面结合具体实施方式对本专利技术作进一步详细说明,但不限于具体实施例。 利用本专利技术处理点模型数据进行压缩的具体压缩流程如图1所示。 第一步按照如图2所示的流程将点模型表面切分成小单元。 步骤如下假设待处理的点模型共有Number个点; a)将Number个本文档来自技高网
...

【技术保护点】
基于局部最小生成树的点模型快速无损压缩处理方法,其特征是:首先通过数据采集系统将模型数据采集,输入处理系统进行处理,处理时首先将点模型表面切分成小单元;对每个单元中的点,以它们之间的距离为权值,进行最小生成树的生成;将每个最小生成树编码,并利用最小生成树的拓扑结构预测;然后将真实值与其预测值利用浮点数压缩算法进行压缩处理。

【技术特征摘要】
1、基于局部最小生成树的点模型快速无损压缩处理方法,其特征是首先通过数据采集系统将模型数据采集,输入处理系统进行处理,处理时首先将点模型表面切分成小单元;对每个单元中的点,以它们之间的距离为权值,进行最小生成树的生成;将每个最小生成树编码,并利用最小生成树的拓扑结构预测;然后将真实值与其预测值利用浮点数压缩算法进行压缩处理。2、根据权利要求1所述的基于局部最小生成树的点模型快速无损压缩处理方法,其特征是所述点模型表面切分的步骤如下假设待处理的点模型共有Number个点;a)将Number个点按其X坐标升序排列;b)将排列后的点等长切分为L段,每段的长度即每段包含的点的个数记为LengthX[i],按照如下公式计算LengthX[i]=Number/L,0≤i<L-1;最后一段的长度LengthX[i]的计算公式为LengthX[i]=Number/L+Number%L,i=L-1;其中,记X[i]为第i个X单元;c)对第i个X单元X[i]中的LengthX[i]个点按Y坐标值升序排列;d)将排列后的单元X[i]内等长切分M段,每段的长度即每段包含的点的个数记为LengthY[i,j],按照如下公式计算LengthY[i,j]=LengthX[i]/L 0≤i<L,0≤j<M-1;该X单元的最后一段的长度LengthY[i,M-1]为LengthY[i,j]=LengthX[i]/L+LengthX[i]%M 0≤i<L,j=M-1其中,记Y[i,j]为第[i,j]个XY单元;e)循环c)、d)步骤,直至所有X单元被循环处理;f)对第[i,j]个XY单元Y[i,j]中的LengthY[i,j]个点按Z坐标值升序排列;g)将排列后的单元Y[i,j]中的点等长切分为N段,每段的长度即每段包含的点的个数记为LengthZ[i,j,k]按照如下公式计算Length...

【专利技术属性】
技术研发人员:王鹏杰宋海玉
申请(专利权)人:大连民族学院
类型:发明
国别省市:91[中国|大连]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1