编码网格模型的方法、已编码网格模型和解码网格模型的方法

文档序号:7977873阅读:274来源:国知局
编码网格模型的方法、已编码网格模型和解码网格模型的方法
【专利摘要】许多3D网格模型具有大量小的在不同的位置、规模和方向上重复的连接组件。相应的位置由每个组件的至少一个参考点的位置来定义。为了增强编码相应的参考点的位置,给定的空间被划分成段(Q1-Q4、r1-r3、sq1-sq3)并确定位于每个特定的段中的点的数量。当至少具有n个点的单元格(Q2)被细分为子单元格(r1)时,添加指示父单元格的所有点是否只在一个子单元格中的指示符。如果是这样,则编码唯一非空的子节点的索引,而否则,两个子单元格之一中是的点的数量被递减和编码。本发明避免了单元格的无效细分,并因此提高了压缩效率。
【专利说明】编码网格模型的方法、已编码网格模型和解码网格模型的 方法【技术领域】[0001]本发明涉及一种编码网格模型的方法、相应的编码装置、已编码网格模型、解码网 格模型的方法和相应的解码装置。【背景技术】[0002]20世纪90年代初以来已经提出了各种算法来高效地压缩3D网格。然而,早期的 工作但大多集中在压缩具有光滑表面和小三角形的单一连接的3D模型。在大多数今天的 大型3D工程模型中有大量的小到中型尺寸的连接组件,每个组件具有平均高达数百个多 边形。通常这种类型的模型具有多种几何特征或在不同的位置、规模和方向上重复的组件。 这种模型被称为多连接的。分别地压缩组件导致相对低效的压缩。通过去除不同的相连接 的组件之间的冗余可以大大地提高压缩性能。已知用于在大型3D工程模型中自动发现重 复的几何特征的各种方法。他们各自的位置由每个组件的至少一个参考点的3D位置来定 义。然而,有一个问题是如何编码所述相应参考点的位置。[0003]大多数用于空间点的高效压缩算法是基于空间树的,例如,基于kd_树(如 [0G02]:0.Devillers, P.Gandoin 在 2OOO 年的 IEEE Visualization 第 319-326 页的 “Geometric compression for interactive transmission,,)或基于八叉树(如[PK05]: J.L.Peng、C._C.Jay Kuo在2005年的ACM计算机绘图专业组/ACM学报上关于图形学的第 24 (3),第 609-606 页的 “Geometry-guided progressive lossless3D mesh coding with octree (OT) decomposition,,)。[0004]这些算法将给定空间划分成段,并将输入空间点的数量设置放在每个特定的分段 中。因此,他们通过隐含的空间树组织输入空间点。然后,他们遍历该树结构并记录用于稍 后重构输入点的必要信息。建立空间树时,单元格被递归地细分直到每个非空单元格足够 小到只包含一个顶点和使得能够足够精确地重构点位置。[0005]单元格对应于节点。初始地,将所有3D点的整个边界框视为一个单元格或节点。 由于可以从相应单元格的边界框重构点位置,基于空间树的算法可以以与单一分辨率压缩 算法相同的压缩比实现多分辨率压缩。[0006][0G02]中所使用的方法的示例示于图1。每当父单元格被细分为两个子单元格 时,编码两个子单元格中的一个(例如左或上)中的点的数量。如果父单元格包含P个点,可 以利用算术编码器使用1g2 (P+1)比特来编码一个子单元格中的点的数量。[0007]与上述不同,[PK05]将一个非空单元格细分为八个单元格,并且在每次单元格细 分后只编码非空子单元格的索引。为了提高编码效率,[PK05]估计将成为非空子单元格的 分组的各种T-元组的伪概率。子单元格的遍历顺序是依照概率降序的。[0008]然而,为了实现紧凑存储和快速传输,如何提高压缩算法的效率是一个持续的问 题。
【发明内容】
[0009]本发明是基于对以下事实的认识:通过空间树组织和压缩空间点的效率主要取决于每个子树节点是否比其父树节点包括更少的数据点。如果子节点包含与其父节点相同的数据点(或者分别与其父节点相同数量的数据点),则相应的细分不是有效的。这种无效的细分增加了已编码数据的量,从而降低了压缩效率。无效的细分越多,压缩比就越低。[0010]本发明的一个优点是它可避免由无效的细分导致的压缩效率的降低是,从而改善压缩。[0011]根据本发明,首先根据其空间位置来聚类网格模型的输入点。每个聚类包含已空间聚集的一组点。然后,使用空间树(例如kd-树或八叉树)压缩每个聚类。对于每次细分, 确定步骤确定两个条件--第一,父单元格中的点的数量,第二,该细分是否是有效的,即,所有的所生成的子节点是否具有比父节点少的数据点。在一个实施例中,如果父单元格总共拥有的点小于给定的点的最小数量,任何细分都被传统化编码,即,该代码指示在所定义的一个子单元格中的点的数量。然而,对具有至少所述点的最小数量的父单元格的细分是进行不同地编码的。[0012]用于决定使用传统编码或具有模式指示的编码模式之一的点的最小数量取决于每个父单元格和每次分割操作的子单元格的数量。为了将一个父单元格划分为两个子单元格,该最小数量为四。为了将一个父单元格划分为多于两个的子单元格,该最小数量大于四。因此,对于下面给出的所有示例,尽管在其上决定编码模式的点的最小数量(或编码模式决定极限值)是四,如果对于父单元格的划分导致产生多于两个子单元格,这个数量可以是不同的。[0013]如果父单元格一共有P个点,P至少是四,并且细分是有效的,使得在所定义的一个子单元格中有P1个点((Kp,P),则通过P1-1 (即,子单元格中点的数量减去一)的已编码值来编码该有效的细分。[0014]如果父单元格一共有P个点,P至少是四,并且细分是无效的,所有点只在一个子单元格中,则按照下面的方法对该细分进行编码:该代码使用预定义的索引方案指示非空子节点的索引,而不是点的数量。[0015]为了在父单元格具有至少四个点时对两种编码模式进行区分(即,有效或无效的细分),将每个树节点的附加模式指示符插入到结果代码或输出数据流。模式指示符指示相应的细分是否是有效的。[0016]编码产生了一种新的编码格式,其可被认为是空间树并包含每个具有至少四个点的树节点的指示相应的细分是否有效(即,已划分的父单元格的所有点是否仅在一个子单元格中)的指示符。对于每次细分,随后是上述格式中的压缩数据,即,一个子单元格中的点的数量(如果父单元格中的点的总数小于四),或子单元格中的点的数量减去一(如果父单元格中点的总数至少是四并且细分是有效的),或唯一非空子节点的索引(如果父单元格中点的总数至少是四并且细分是无效的)。有利地,如果点的数量至少是四,所述索引比编码的点的数量使用更少的比特。[0017]在解码根据本发明的编码格式的数据过程中,遍历空间树时,为每次细分计算或确定当前父单元格中的点的数量,并分析指示符(例如,I比特)以便检测当前细分`是否是有效的。[0018]在一个实施例中,本发明涉及一种编码网格模型的点的方法,该方法包括以下步 骤:确定点的总数并在代码中插入所确定的点的总数,其中,使用预定义的码字长度,根据 其空间坐标将各点聚类成一个或多个聚类,并使用分层的树来编码所聚类的点,其中,所述 编码包括以下步骤:定义所述聚类周围(即,模型的所有点的周围)的边界框,递归地划分该 边界框,其中,每个划分步骤将父单元格划分为预定义数量的子单元格(至少两个),并且对 于每个划分步骤,确定当前父单元格包含的点的数量,确定父单元格的所有点是否在单一 的子单元格中,并如下所示编码指示所述确定步骤的结果的指示符。[0019]如果所述确定得出父单元格中点的总数小于四,那么将在特定的(预定义的)一个 子单元格中的点的数量插入到代码中。[0020]如果所述确定得出父单元格中点的总数大于四并且父单元格中的点被分发给至 少两个子单元格,则划分步骤是有效的,并将指示划分的有效性(例如,通过设置为一的单 一比特)的指示符和在特定的(预定义的)一个子单元格中的点的数量插入到代码中。[0021]如果所述确定得出父单元格中点的总数大于四并且父单元格的所有点都在单一 的子单元格中,则划分步骤是无效的,并将指示划分的无效性(例如,通过设置为零的单一 比特)的第二指示符插入到代码中,确定包含父单元格的所有点的所述单一子单元格的索 弓丨,并将该索引插入到代码中。[0022]如果分割产生多于两个子单元格,编码模式决定极限值可以大于四,并在插入之 前编码所述索引。可从由分割步骤产生的子单元格的数量得到用于编码索引的比特的数量。[0023]在一方面,一种用于解码网格模型的点的方法包括以下步骤:从编码的数据集合 至少提取一个值和作为多个点的位置数据的第一数据,所述值表示点的总数并且所述第一 数据定义多个码字,其中,每个码字指的是将边界框划分为各单元格的多个递归划分之一, 并且每次划分将当前父单元格划分为两个或更多的子单元格,以及基于所述值和所述第一 数据来确定所述点的位置,其中,至少部分码字包含指示当前单元格划分步骤是否有效的 指示符(一个比特)。每个码字的长度是固定的或可变的;如果它是可变的,可在解码期间根 据给定的规则计算它的长度和值。[0024]对于每个当前的父单元格,它所包含的点的总数是确定的。在一个实施例中,它是 预先计算和存储的,并且可从存储器中检索到。此外,计算用于编码所确定的点的数量的比 特数计算;它被稍后用于确定码字长度。如果点的总数小于四,相应的码字不具有上述指示 符,并被解释为预定义的一个子单元格中的点的数量。如果点的总数至少是四,相应的码字 以所述指示符开始,并评价该指示符。根据所述指示符,码字的其余比特可以有两种含义: 他们或者是位于从对当前父单元格的当前划分所产生的子单元格中的预定义的一个中的 点的减小的数量。由于数量是减小的,因此需要对其加一来得到点的实际数量。码字的其 余比特或者是从对当前父单元格的当前划分所产生的子单元格的索引。该索引是包含父单 元格的所有点的一个子单元格的标识符。如果码字长度是可变的,则上述确定的比特数(力口 上一个比特作为标记符)是当前的码字长度。如果码字的长度是固定的,例如对于第一码字 (即,模型中点的总数),它是预定义的。在解码过程中,每个顶点的位置迭代地定位在更小 的子单元格中,直到到达终止解码的给定终止条件。[0025]本发明可以用于作为多组件模型中的组件的参考点并且表示该模型的顶点的聚类的点。原则上,本发明还可用于任何网格模型的顶点的点,或由坐标定义的任何其他大型 分组的点。[0026]一般来说,有必要记住父单元格,至少非空单元格中的点的数量。例如,存储非空 子单元格中的点的数量直到该子单元格成为父单元格的下一次划分之后。然后,在确定父 单元格中的点的数量时,从存储器检索该数量。[0027]本发明还涉及一种用于编码的装置,该装置包括用于根据点的空间坐标来将所述 点聚类成一个或多个聚类的聚类部件,以及用于编码所聚类的点的编码部件,其中,所述编 码部件包括用于定义所述聚类周围的边界框的初始化单元,用于递归划分所述边界框的递 归划分单元,其中所述递归划分的每个划分步骤将父单元格分割为预定义数量的子单元 格,点分布确定单元,用于为每个划分步骤和每个要被划分的当前父单元格确定点的数量, 并用于确定每个父单元格的点的数量是否至少是四,编码单元,用于如上所述当所述数量 小于四时对点的数量进行编码,并用于如上所述当所述数量至少是四时编码子单元格中的 点的减少的数量或子单元格索引。[0028]此外,本发明涉及用于解码网格模型的解码器,所述解码器包括用于从编码的数 据集合中提取至少第一数据和指示点的总数的初始值的提取部件,用于将边界框递归划分 为单元格的递归划分部件,其中,每个递归划分将当前父单元格划分为子单元格,以及用于 根据所述子单元格来确定所述点的位置的确定部件。所述确定部件包括用于确定当前父单 元格中的点的数量的单元,用于根据所确定的当前父单元格中的点的数量来检测编码模式 的编码模式检测单元,用于从当前父单元格中的点的数量来推断每个码字的长度的码字长 度检测单元,以及用于如上所述解码下一码字的解码单元。[0029]在一方面,本发明涉及一种在其上存储有导致计算机执行包含上述编码步骤的方 法的可执行指令的计算机可读介质。在一方面,本发明涉及一种在其上存储有导致计算机 执行包含上述解码步骤的方法的可执行指令的计算机可读介质。[0030]在一个实施例中,本发明涉及一种包含多个重复相连接的组件的编码的网格模 型,其中,所述编码的网格模型包含至少下列内容的编码数据:[0031]每个重复相连接的组件的实例,[0032]编码的相连接的组件的总数,[0033]所述重复相连接的组件的多个副本的位置,所述位置被编码为树结构(例如, kd-树),以及定义网格模型的边界区域的数据。边界区域是所述树结构所指代的初始父单 元格。被编码为树的位置使用上述编码,即,该编码包括树结构的每个节点的码字,其中,对 于具有至少四个点的节点,如果当前父单元格的点被分发给至少两个子单元格,所述码字 以具有第一值的指示符开始,如果当前父单元格的点在单一的子单元格中,所述码字以具 有不同的第二值的指示符开始,并且其中,所述码字的剩余比特或者表示位于预定义的一 个子单元格中的点的数量(如果指示符具有第一值)减去一,或者表示当前父单元格的包括 父单元格的所有点的子单元格的索引(如果指示符具有第二值)。[0034]在从属权利要求、下面的描述和附图中公开本发明的有利实施例。【专利附图】

【附图说明】[0035]参照附图描述本发明的示例性实施例,附图中,[0036]图1示出2D示例中的kd-树编码的原理;[0037]图2示出使用有效和无效细分的kd-树中数据点的组织;[0038]图3a)示出在不同维度上对3D父单元格的划分,而b)示出在水平、垂直和深度的 维度上对3D父单元格的连续划分;[0039]图4示出a)编码决定步骤的流程图,b)编码方法的流程图和c)解码方法的流程 图;[0040]图5示出a)网格模型的编码方法的流程图和b)网格模型的解码方法的流程图;[0041]图6示出编码示例的细节;以及[0042]图7示出代码树。【具体实施方式】[0043]图1示出在2D情况下的传统kd-树编码的原理。边界框10包围2D模型的点。七 个点位于父单元格之内。kd树编码算法从使用预定义的比特数来编码点的总数开始,然后 递归地细分单元格。每次将父单元格细分为两个子单元格后,它就对两个子单元格中的一 个中的点的数量进行编码。下面示例编码了左侧子单元格(垂直分割之后)或上部子单元格 (水平分割之后)中的点的数量。可以彼此独立地改变这些惯例。如果父单元格包含P个点, 则利用算术编码器使用1g2 (P+1)比特来编码一个子单元格中的点的数量。递归地应用这 种细分直到每个非空单元格足够小到只包含一个点并且使得能够足够精确地重构点位置。 为了压缩网格模型的所有点的位置(无论所述点是顶点或聚类参考点),该算法以被视为第 一划分步骤的当前父单元格的所有位置的整体边界框10开始。[0044]在图1的示例中,第一个编码值是使用32比特编码的点的总数(7)。然后,应用垂 直分割使得获得左侧子单元格Vl和右侧子单元格V2。在下一编码步骤中,编码左侧子单 元格Vl中的为四的点的数量。由父单元格中点的数量确定用于编码的比特数:它是1g2 (7+1)=3比特。由此,第二码字是数字四,使用三个比特对其进行编码。从父单元格中点的 数量和左侧子单元格Vl中点的数量可以计算出右侧子单元格V2中点的数量为7-4=3。[0045]在下一步骤中,对前一步骤的子单元格应用水平分割。此时作为当前父单元格Vl 的左侧子单兀格Vl被分割为上部子单兀格VlHl和下部子单兀格V1H2。类似地,此时作为 父单元格V2的右侧子单元格V2被分割为上部子单元格V2H1和下部子单元格V2H2。该算 法以具有两个点的上部左侧子单元格VlHl继续。由此,接下来编码数字2,其中在算术编码 器中使用1g2 (4+1)=2.3比特(或在舍入后为三比特)。如上所述,不需要对下部左侧子单 元格V1H2中点的数量进行编码,因为它可以从左侧单元格Vl和上部左侧子单元格VlHl中 点的数量推断出来。然后,对右侧单元格V2应用同样的步骤导致使用两个比特来编码零。 如图1所示,还需要两个分割步骤直到每个点在单独的单元格中,并且还需要更多的步骤 直到每个点充分位于其单元格之内。每个步骤都增加了点位置编码的精度,但需要编码越 来越多的I或O。根据所需的精度,附加步骤的数量可能会很高。[0046]所述点可以是顶点或聚类参考点。即,本发明可以应用增强的kd_树编码算法至 少用于编码顶点位置或用于编码重复相连接的组件的位置。此外,增强的kd_树算法原则 上也可用于编码在给定的1D、2D或3D空间中的任何一种空间位置。[0047]图2示出了 kd-树的示例,其中,几个点21-25位于2D网格模型的边界框20之内。本发明也可以应用于ID模型或3D模型。在下面进一步描述应用该原理来编码3D网格模型。下面所述的步骤也示于图6。与许多大型网状模型中的情况一样,各点的位置在边界框中是很不均匀地分布的。在这个示例中,将增强kd-树编码算法应用于编码点的位置,并且假定所要求的精度使得在充分定位聚类之前需要五个初始划分或分割步骤。可以通过增加分割步骤的数量来提高精度,或通过减少分割步骤的数量来降低精度。另外,根据传统定义在本示例中,通过“ I”( 1=有效,O=无效)来编码有效划分的有效性指示符,并且通过将 “I”分别用于上部或左侧子单元格和将“O”分别用于下部或右侧子单元格来对子单元格索引进行编码。注意,可以不同地定义这些传统,而不会影响本发明或代码的效率。[0048]第一码字是使用预定义的比特数(例如,32比特,取决于点的潜在总数)的点的总数。此外,确定模型中点的总数是十三并且确定点的总数大于三。在第一划分步骤中,作为父单元格的边界框20被垂直划分为两个矩形,左侧(Q1+Q3)和右侧(Q2+Q4),参见图6b)。 由于点的总数至少是四,使用根据本发明的编码模式比特(“有效”比特),并且由于所产生的两个矩形都包含点,因此该划分是有效的。因此,第二码字是有效指示符(1=“有效”),后面接上值五,该值五是左侧子单元格中点的数量减去一。使用四个比特对其进行编码,因为编码父单元格中的点的总数需要四个比特(int(l0g)2(13)=4)。也就是说,在图3的示例中, 代码的起始部分如下:13 (点的总数,32比特),1 (有效比特),5 (第一阶段(generation)左侧子单元格中点的数量减去一,4比特)。
[0049]第二划分步骤对所述矩形进行水平划分,使得产生四个正方形Q1,……,Q4,参见图6cl)和c2)。从前一步骤已知两个矩形父单元格中的每一个包含至少四个点。考虑左侧矩形,划分是无效的,因为所产生的正方形子单元格Ql、Q3中的单一的一个包含所有点。 传统kd-树编码将要求编码上部子单元格Ql中的点的数量(使用3比特),而根据本发明的增强编码算法只使用表示该划分是无效的指示符和包含所有点的子单元格的索引。[0050]子单元格使用索引n=log2 (m)个比特。其中m是父单元格所产生的子单元格的数量。由于在本示例中有两个子单元格,所述索引只使用1g2 (2)=1比特。在另一实施例中,每个划分步骤将父单元格分割为m个相等尺寸的子单元格使得使用更多的比特来表示子单元格索引。在数字m是2的更高次幂的情况下,例如4、8、16等,这种情况提供了比m不是2的幂时更有效的代码,该划分可以被视为若干简单划分步骤的累加(在相同的维度上)。 然而,如果同时进行这些若干步骤,可以提高处理速度。例如,在各点是稀疏分布(与要实现的空间分辨率相比)使得非常可能出现若干无效划分序列时这种累加是有用的。在其他情况下,可能更好选择n=2。[0051]返回到图2的示例,其中父单元格被分割为两个子单元格,有效指示符只有一个比特,从而使接下来的左侧矩形Q1+Q3的码字只包含两个比特,即“01”(0=无效指示符,I 比特,并且1=子单元格索引,I比特)。有效性指示符(有效/无效)及随后定义子单元格索引或一个子单元格中点的数量的比特,一般可被视为一个单一码字。因此,码字具有可变长度。有利地,包含子单元格索引的码字通常短于包含代表点的数量的值的码字。[0052]对右侧矩形的划分是有效的,因此,如图6c2)所示,通过“I”(有效指示符,I比特) 和“3”(上部子单元格Q2中点的数量减去一,使用3个比特(因为1g2 (父单元格中点的数量)=1g2 (7) =3))来对其进行编码。[0053]在下文中,使用短的书写形式“值”。例如,通过三个比特编码的值五被写作53b°[0054]在下一步骤中,新一阶段子单元格开始并改变分割维度。垂直分割每个正方形 Q1-Q4使得生成大小为rl的矩形,参见图6dl) -d3)。对于Ql和Q2中的每一个,点的总数至少是4并且划分是有效的(图6dl)、d2))。左侧矩形中点的数量分别是2和3。分别通过 Ilb-13b和llb_22b来对它们进行编码。跳过Q3,因为根据上述对Q1+Q3的垂直划分是无效的事实和该划分的索引,很显然Q3是空的。剩余单元格Q4只有三(B卩,小于四)个点24,使得通过O2b对其进行编码(因为“所有点都在右边的子单元格中”),参见图6d3)。[0055]也就是说,在图3的示例中,此时代码的起始部分将如下:[0056]1332b (点的总数)-1lb (有效指示符)_54b (第一阶段左侧子单元格)-Olb-1lb (无效指示符和上部子单元格的索引)_llb (有效指示符)_33b (Q2中点的数量)-llb-l3b-llb-22b (无效比特和矩形子单元格Ql和Q2中点的数量)_02b(所有点都在右边的矩形子单元格Q4中)。[0057]在下面的划分步骤中,每个尺寸为rl的(非空)矩形被水平划分为尺寸为sql的正方形,如图6el) -e5)所示。因此,从上部左侧开始,接下来边界框上半部分的码字是 22b-0lb0lb-02b-llb,并且(跳过空的Q3和Q4空的左半部分)边界框下半部分的码字是02b。例如,最后的值O2b是指在对Q4的右半部分进行水平划分后,它所有的点都在下部子单元格中,参见图6e5),因为划分前点的总数小于四。[0058]在下面的划分步骤中,每个尺寸为sql的(非空)正方形被垂直划分为尺寸为r2的矩形,如图6fl)-f5)所示。因此,从上部左侧开始,接下来的码字是22b-0lbllb(Ql中)_02b-0lb (Q2中)-32b (Q4中)。例如,了解到当前父单元格中点的总数已被先前确定为至少是四,值 OlbIlb (参见图6f2))是指对尺寸为sql的正方形的划分是无效的(即,“O”)并且唯一占用的尺寸为r2的矩形在左边(即,“I”)。[0059]在下面的划分步骤中,每个尺寸为r2的(非空)矩形被水平划分为尺寸为sq2的正方形,如图6gl)-g5)所示。从上部左侧开始,接下来的码字是22b-0lb-0lb (Ql中)_32b-llb (Q2中)-02b (Q4中)。注意,只在图6g2)所示的划分中父单元格中点的数量大于三,使得使用了有效性指示符。图6中,通过(p=4 )或(p>4 )来标记这些情况。[0060]在下面的划分步骤中,每个尺寸为sq2的(非空)正方形被垂直划分为尺寸为r3 的矩形,如图6hl)-h5)所示。从上部左侧开始,接下来的码字是I2b-1lbI2b (Ql*)-l2b-0lb (Q2 中)-12b (Q4 中)。[0061]最后,在最后一个划分步骤中,每个尺寸为r3的(非空)矩形被水平划分为尺寸为 sq3的正方形,如图6il)_i9)所示。从上部左侧开始,接下来的码字是Olb-Olb-12b-12b (Ql 中)?Α (Q2 Φ) -1lb-12b (Q4 中)。[0062]具有相同尺寸的所有子单元格被视为一个子单元格阶段。例如,图2中,如果边界框20被视为第一阶段(父阶段),则正方形Q1,……,Q4属于第三阶段。尺寸为sql的所有正方形(例如,Ql的左侧上部正方形和右侧下部正方形,Q2的右侧上部正方形和左侧下部正方形,以及Q4的右侧下部正方形)都属于相同的子单元格阶段,即第五阶段。注意,对任何特定阶段的单元格的处理顺序是依赖`于惯例的(见下文),并可以改变,而无需修改代码效率。[0063]使用上述编码,所有点都被定位在尺寸为sq3的正方形的精度范围内的边界框中。对于完整的模型,该编码使用了 102比特:[0064]1332b-llb54b-0lbllb-llb33b-llb-l3b-lib_22b-02b-22b-0lb0lb-02b-llb-02b-22b-0lbllb-02b-0lb-32b_22b_0ib0ib_32b-llb-02b-l2b-llbl2b-l2b-0lb-l2b-0lb-0lb-l2b-l2b-llb-l2b-llb-llb-l2b。[0065]这个简单示例的传统编码(S卩,使用已知的kd-树算法)将需要更多的一个比特。 因此,本发明提高了编码效率。[0066]做出的无效细分越多,相较传统方法的压缩比改进越高,并且本发明越有利。无效 细分通常在两种情况下发生:一种是当空间数据点显示如上述的示例中的显著的多个空间 聚集。即使对于具有单一空间聚集(即,单一点)的空间点集合,一些无效的细分也是不可避 免的。这是真实的,特别是当单元格中只包含一个点,但对于重构点位置来说还是太大,使 得要求进一步的无效细分来增加空间分辨率。因此,点的数量越大而且点的聚类(即,空间 聚集)越显著并且目标空间分辨率越高,则根据本发明的编码所保存的比特越多。换言之, 当点的空间分布欠均匀时,即,更多的无效细分发生时,编码效率增加。当点的数量增加时, 这变得更加可能。[0067]有利地,本发明为平均或高复杂度的3D网格模型实现了相当大的比特节约。[0068]本发明的进一步的优点是步骤和所生成的代码都与现有方法相比大大缩短了。[0069]本发明的进一步的优点是,它考虑了分层编码的所有层级。[0070]虽然上面的示例使用了 2维(2D)模型,相同的原理可以很容易地用于3维(3D) 模型。如图3a)所示,3D实施方式的边界框和单元格是立方体或箱体,S卩,具有正方形或 矩形表面的3D对象。差异是在3D实施方式中父单元格不仅被沿水平和垂直方向划分, 也可在第三个维度,例如深度上进行划分。因此,取代上述2D示例中使用的划分序列h-v-h-v......(h=水平,V =垂直),或等效的划分序列v-h-v-h......,3D模型的划分序列可以是 h-v-d-h-v-d-h-v-d-......(d=深度),或 h-d-v-h-d-v-......或 v-d-h-v-d-h-......。在任何情况下,递归分割涉及以交替方式对所有所考虑的维度(每个维度一个新的阶段)。[0071]在一个实施例中,还编码和解码定义边界框的数据,例如,尺寸数据和/或位置数 据,以便允许在解码过程中重构边界框。[0072]图3a)示出3D箱体的示例性的后续细分,从该箱体的水平分割ssdl产生第一阶 段子单元格的任意一个的垂直分割ssd2,以及第二阶段子单元格的任意一个的深度分割 ssd3。这里应当注意,术语“划分”、“细分”和“分割”在本文中等效地使用。图3b)示出一 般的水平分割sdl、垂直分割sd2和深度分割sd3。本发明的有利效果是不依赖于分割维度 的顺序次序的(K V用于2D,而h、V、d用于3D)。因此,次序可以是不同的。[0073]图4a)示出在编码点分组的位置(例如,网格模型的顶点位置)时要采取的方法步 骤的流程图。在第一确定步骤40中,确定当前父单元格和该当前父单元格中点的总数。在 第一编码模式决定步骤50中,确定当前父单元格中点的总数是否至少是四。如果当前父单 元格中点的总数不是至少为四(即,三或更少),如上所述,下一步骤是用于编码点的数量的 第一编码步骤60。也就是说,在特定的预定义的一个子单元格(例如,垂直细分后的左侧子 单元格,或水平细分后的上部子单元格,或在3D情况下在深度细分后的前部子单元格)中的 点的数量被插入到代码中。[0074]如果当前父单元格中点的总数至少为四,那么接下来进行第二编码模式决定步骤 70。在第二编码模式决定步骤70中,确定细分是否有效。如果细分是有效的,即,每个子单 元格具有至少一个点并且没有单元格是空的,则第二编码步骤80确定所述特定的预定义的一个子单元格中的点的数量,将其减去一,并将“有效的”标记和减少的点的数量插入到 代码中。所述减少是有利的,因为在对具有P个点的父单元格进行有效细分后,每个子单元 格可以具有不多于P-1个点,而对P-1而不是P进行编码可以在每次细分中节省一个比特。[0075]否则,如果细分是无效的,S卩,至少一个子单元格是空的,则在第三编码步骤90中 将“无效的”比特和非空子单元格的子单元格索引插入到代码中。所述索引是预定义的,例 如,“I”用于左侧、上部或后部子单元格,而“O”用于右侧、下部或前部子单元格。当细分产 生k个子单元格时,它使用1g2 (k)比特。[0076]在每个第一、第二和第三编码步骤之后,如下所述,确定40下一个父单元格。[0077]注意,对于每个维度,特定的预定义的一个子单元格(例如,左侧、上部和前部子单 元格)和上述子单元格索引在整个编码和解码过程中保持不变。[0078]一般说来,有必要记住各父单元格内,至少是非空的单元格内的点的数量。例如, 存储非空子单元格内点的数量直到下次划分该子单元格成为父单元格之后。然后,在确定 该父单元格中点的数量时从存储器检索该数量。[0079]图4b)示出根据本发明的一个实施例的编码网格模型的方法的流程图。该方法包 括以下步骤:根据点的空间坐标将其聚类410为一个或多个聚类,并使用分层的树来编码 420-450所述聚类的点,其中,所述编码包括以下步骤:定义420所述聚类周围(S卩,模型的 所有点的周围)的边界框,递归地划分430该边界框,其中,每个划分步骤将父单元格划分 为预定义数量的子单元格,对于每个划分步骤,确定440要被划分的当前父单元格的点的 数量,确定该数量是否至少是四,并且如果该数量是三或更少,如上面相对于图4a)的步骤 40、50、60所描述地来编码点的数量,然后,如上面相对于图4a)的步骤70、80、90所描述地 来编码450各父单兀格。[0080]在本发明的一个实施例中,如果所述确定得出父单元格中点的数量至少是四并且 父单元格中的点被分发给至少两个子单元格,则划分步骤是有效的,并将第一指示符插入 到代码中,并且将在特定的(预定义的)一个子单元格中的点的数量插入到代码中,所述第 一指示符指示划分的有效性(例如,设置为一的单一比特)。否则,如果所述确定得出父单 元格中的所有点都在单一的子单元格中,则划分步骤是无效的,并将指示划分的无效性(例 如,设置为零的单一比特)的第二指示符插入到代码中。然后,确定包含所有点的所述单一 子单元格的索引,并将该索引插入到代码中。[0081]在划分步骤产生多于两个子单元格的情况下,根据有效性或无效性的不同定义的 不同实施例是可能的。然而,两者是互补的,并且每个划分步骤不是有效的就是无效的。[0082]在一个实施例中,如果父单元格的点被分发给至少两个子单元格(使得所产生的 所有子节点具有少于父节点的数据点),则划分步骤被认为是有效的,并且如果所有点都只 在一个子单元格中,则划分步骤被认为是无效的。在这种情况下,需要除了一个子单元格之 外的每个子单元格中的点的数量来用于有效划分(例如,如果划分产生四个子单元格则是 指示三个子单元格中点的数量的三个值)。[0083]在另一实施例中,如果没有子单元格是空的,则划分步骤是有效的,并且如果至少 一个子单元格是空的,则划分步骤是无效的。在这种情况下,依赖于惯例,可以为无效划分 编码空的子单元格或非空子单元格的索引。[0084]如果划分步骤产生两个子单元格,上述两个实施例导致相同的结果。[0085]返回图4b),递归划分步骤430大体上具有两个功能:在一个功能中,它处理所有 非空的当前父单元格。除了作为第一父单元格的边界框,所有父单元格都是已成为父阶段 的前一划分步骤的子单元格。在图2b)的示例中,这是指当前阶段的所有非空子单元格,例 如,阶段r2,都是如上所述顺序地处理的。处理了当前父阶段的所有非空子单元格后,满足 第一停止条件SCl,并且执行所述递归划分步骤430的第二功能。在第二功能中,改变435 分割维度,这导致下一子单元格阶段,并且开始处理非空子单元格的下一阶段。例如,如果 当前阶段是图2b)中的r2,则下一阶段是sq2。因此,迭代地编码点的位置。在满足例如最 小子单元格尺寸(即,所需的空间分辨率)或递归的最大数量(即,最大处理时间)的第二停 止条件SC2时,所述递归划分终止。预定义的最小子单元格尺寸对应于编码处理的目标空 间分辨率。[0086]这里,具有相同尺寸的单元格被称为一个阶段。如上所述,以轮换(即,交替)方式 对子单元格的每一阶段执行改变435分割维度,例如,水平分割单元格以获得第一阶段子 单元格,垂直分割该第一阶段子单元格以获得第二阶段子单元格,并且深度划分该第二阶 段子单元格以获得第三阶段子单元格。[0087]最后,所生成的代码可以被熵编码460。在一个实施例中,任何一个划分步骤的所 有子单元格具有相同的尺寸。[0088]对应于图4b )示出的上述方法步骤,在本发明的一个实施例中,一种编码网格模型 的编码器包括用于根据点的空间坐标来将所述点聚类成一个或多个聚类的聚类部件,以及 用于使用分层树来编码所聚类的点的编码部件,其中,所述编码部件包括用于定义所述聚 类周围的边界框的初始化单元,用于递归划分所述边界框的递归划分单元,其中每个划分 步骤将父单元格划分为预定义数量的子单元格,点分布确定单元,用于为每个划分步骤和 每个要被划分的当前父单元格确定点的数量,并用于确定每个父单元格的点的数量是否至 少是最小数量(如果每个父单元格被分割为两个子单元格,则该数量是四),以及编码单元, 当所述数量小于最小数量时,用于如上面相对于图4a)的步骤40、50、60所描述地对点的数 量进行编码,并用于如上面相对于图4a)的步骤70、80、90所描述地来编码父单元格。[0089]在本发明的一个实施例中,图4c)示出一种解码网格模型的方法。它包括以下步 骤:从编码的数据集合至少提取470包括多个码字的第一数据和指示点的总数的初始值, 递归地将边界框划分475为单元格,其中,每次递归划分将当前父单元格划分为预定义数 量的(两个或更多的)子单元格,以及根据所述子单元格来确定480所述点的位置,其中,确 定当前父单元格中点的数量,根据所确定的当前父单元格中点的数量来检测编码模式,并 解码k-Ι个下一码字(其中,k是划分步骤的子单元格的数量)。从当前父单元格中点的数 量推断出每个码字的长度。如果所确定的当前父单元格中点的数量小于四,则使用第一解 码模式。在第一解码模式中,每个码字包含m比特,其中,m—般是1g2(父单元格中点的数 量),或是根据int (1g2 (父单元格中点的数量))的整数。在第一解码模式中,如上所述, 长度为m的码字表示特定的预定义的一个子单元格中点的数量。[0090]如果所确定的当前父单元格中点的数量至少是四,则码字包含指示该码字的剩余 比特的意义的指示符,并且如果所述指示符具有第一值,该码字的剩余比特定义位于从当 前父单元格的当前划分产生的预定义的一个子单元格中的点的数量;或者该码字的剩余比 特定义指示从当前父单元格的当前划分产生的并包括所述父单元格的所有点的子单元格的索引。根据子单元格确定480所述点的位置的步骤包含确定编码模式和评价码字中的指 示符。因此,迭代地解码点的位置。[0091]对应于图4c)中示出的上述方法步骤,在本发明的一个实施例中,一种解码网格模 型的解码器包括用于从编码的数据集合中提取至少第一数据和指示点的总数的初始值的 所述步骤的提取部件,用于将边界框递归划分为单元格的所述步骤的递归划分部件(例如, 控制部件),其中,每个递归划分将当前父单元格划分为预定义数量(两个或更多的)的子单 元格,以及用于根据所述子单元格来确定所述点的位置的所述步骤的确定部件。所述确定 部件包括用于确定当前父单元格中的点的数量的单元(例如,计数器),用于根据所确定的 当前父单元格中的点的数量来检测编码模式的编码模式检测单元,以及用于解码k-Ι个下 一码字的解码单元(其中,k是划分步骤的子单元格的数量)。码字长度检测单元(例如,计 算器)如上所述从当前父单元格中的点的数量推断每个码字的长度。[0092]图5a)示出本发明的一个实施例,其中,一种编码网格模型的方法包括以下步骤: 建立通用的空间树110 (这是可能被隐式包括在下一步骤中的合乎逻辑的步骤),根据所述 通用的空间树分析120网格模型,如上面相对于图4b)的方框410-450、SC1、SC2所描述地 遍历130空间树,其中,获得网格模型的第一编码表示,并执行对网格模型的第一编码表示 的熵编码460,其中,获得网格模型的第二编码表示。[0093]图5b)示出了本发明的实施例,其中,一种用于解码编码的网格模型的方法包括以 下步骤:对编码的网格模型执行熵解码150,其中,获得熵解码的网格模型,重建通用的空 间树160,根据熵解码的网格模型重建空间点聚类170,其中如上面相对于图4c)所描述,将 空间点聚类映射到空间树的分支和叶子,并且重建网格模型的空间点180,其中,空间位置 与网格模型的每个点相关联。[0094]本发明还可用于作为多组件或多连接(MC)模型(B卩,具有多个重复组件的网格模 型)中组件的参考点、并表示该模型的顶点的聚类的点。下面两个实施例对于这种MC模型 特别有利。在这种情况下,将重复组件的副本的各种位置与只需被编码或解码一次的重复 组件分开编码/解码。解码过程中,重复组件被复制到它的每个解码的位置上。例如,在机 器的3D工程模型中,可将使用多次的螺丝作为重复组件进行编码。[0095]在一个实施例中,本发明是一种用于编码网格模型,特别是MC网格模型的组件的 参考点的方法,其中,每个参考点代表一个组件并且使用分层树对各点编码,并且其中,所 述编码包括以下步骤:定义要被编码的点的周围的边界框,递归地划分该边界框,其中,每 个划分步骤将父单元格划分为预定义数量的子单元格(至少两个,其中,在一个实施例中, 任何一个划分步骤的所有子单元格具有相等的尺寸),对于每个划分步骤,为当前父单元格 确定点的总数以及该父单元格的所有点是否在单一的子单元格中,并如上所述至少为包括 四个或更多点的父单元格编码指示所述确定的结果的指示符。[0096]在一个实施例中,本发明是一种用于从编码的数据集合来解码网格模型,特别是 MC网格模型的重复组件的参考点的方法,并且其中,所述解码包括以下步骤:从编码的数 据集合至少提取一个值和作为多个点的位置数据的第一数据,所述值代表点的总数并且所 述第一数据定义多个码字,其中,每个码字指的是将边界框划分为各单元格的多个递归划 分之一,并且每次划分将当前父单元格划分为两个或更多的子单元格,以及基于所述值和 所述第一数据来确定所述点的位置,其中,至少部分码字包含指示当前单元格划分步骤是否有效的指示符(一个比特)。此外,所述解码方法包含使用重复组件替换每个点。[0097]在一个实施例中,本发明涉及一种包含多个重复相连接的组件的编码的网格模 型,其中,所述编码的网格模型包含至少下列内容的编码数据:[0098]每个重复相连接的组件的实例,[0099]编码的相连接的组件的总数,[0100]所述重复相连接的组件的多个副本的位置,所述位置被编码为树结构(例如, kd-树),以及网格模型内的边界区域,其中,所述边界区域是所述树结构所指代的初始父单 元格。被编码为树的位置使用上述编码。即,该编码包括树结构的每个节点的码字,其中, 对于具有至少四个点的节点,如果当前父单元格的点被分发给至少两个子单元格,所述码 字以具有第一值的指示符开始,如果当前父单元格的点在单一的子单元格中,所述码字以 具有不同的第二值的指示符开始,并且其中,所述码字的剩余比特或者表示位于预定义的 一个子单元格中的点的数量(如果指示符具有第一值)减去一,或者表示当前父单元格的子 单元格的索引,所述子单元格是包括父单元格的所有点的子单元格(如果指示符具有第二 值)。[0101]图7示出如上面相对于图6所描述的随后划分步骤的树型表示的一部分。在该 树的根部711,编码对应于图6b)的对父单元格的垂直分割。如上所述,在这种情况下第一 划分是垂直的是一种预定义的惯例。在节点711、712中,如图6cl)和c2)所示,编码对所 生成的子单元格的水平分割。一个划分步骤是无效的,使得它的一个子单元格732 (或Q3) 是空的。如上所述,不分割空的子单元格并且只隐式地对其编码。在下一节点731-734中, 如图6dl)和d3)所示,编码第三阶段单元格的垂直分割。该单元格对应于图2中的正方形 Q1-Q4。后面的节点741-746对应于图6el)-e6),其中,再次地,一个划分是无效的并且因此 产生空的子单元格745。可以相应地构建该树的剩余部分(未示出)。每条线710、720、730、 740、750指的是单元格的阶段。在初始地插入点的总数后,可从线710、720、730等获得根据 本发明的代表编码的网格模型的代码。[0102]一般地,第一码字的长度(点的总数)是固定的,因为无法在解码期间推断出其长 度。其他码字的长度是可变的并且可以如上所述在解码期间计算他们的长度。此外,通常 从对父单元格的单一划分步骤所产生的所有子单元格都具有实质上相等的尺寸。[0103]注意,对点的编码/解码在这里一般意味着对它们的坐标的编码/解码。[0104]下列示例性实施例是特别有利的:[0105]在编码方法的一个实施例中,如果指示符具有第一值,根据η=取整(1g2 (m+1)), 码字的剩余比特的数量依赖于当前父单元格中点的数量,其中,η是码字的剩余比特的数 量,m是当前父单元格中点的数量。[0106]在一个实施例中,编码方法还包括根据输入点的空间坐标将输入点聚类成一个或 多个聚类的初始步骤,并且每个点是输入点的聚类的参考点。[0107]在编码方法的一个实施例中,网格模型是具有多连接组件的3D网格模型,并且聚 类中的每个点代表一个组件。[0108]在编码方法的一个实施例中,从对父单元格的单一划分步骤产生的所有子单元格 具有相等的尺寸。[0109]在编码方法的一个实施例中,递归的最大数或最小单元格尺寸被定义为递归划分步骤的终止条件。[0110]在用于2D的编码方法的一个实施例中,划分当前父单元格的递归划分步骤以轮 换方式执行水平和垂直分割,并且预定义的一个子单元格不是水平分割的上部或下部子单 元格,就是垂直分割的左侧或右侧子单元格。[0111]在用于3D的编码方法的一个实施例中,划分当前父单元格的递归划分步骤以轮 换方式执行水平、垂直和深度分割,其中,预定义的一个子单元格或者是水平分割的上部或 下部子单元格,或者是垂直分割的左侧或右侧子单元格,或者是深度分割的前部或后部子 单元格。[0112]在一个实施例中,其中,每个码字的长度是可变的,所述解码方法还包括根据给 定的规则计算码字的长度的步骤。根据该规则,根据η=取整(1g2 (m+Ι))或根据n=l0g2 (m+1),从当前父单元格中点的数量计算码字的所述剩余比特的数量,其中,η是码字的剩余 比特的数量,m是当前父单元格中点的数量。[0113]在解码方法的一个实施例中,网格模型是包含多个重复连接组件的实例的3D网 格模型,并且每个所述点是指示一个所述实例的位置的参考点,并且该方法还包含生成重 复组件的多个实例和根据各自参考点的位置来定位每个副本的最终步骤。[0114]在解码方法的一个实施例中,从对父单元格的单一划分步骤产生的所有子单元格 具有相等的尺寸。[0115]在解码方法的一个实施例中,递归的最大数或最小单元格尺寸被定义为递归划分 步骤的终止条件。[0116]在用于2D的解码方法的一个实施例中,划分当前父单元格的递归划分步骤以轮 换方式执行水平和垂直分割,并且预定义的一个子单元格不是水平分割的上部或下部子单 元格,就是垂直分割的左侧或右侧子单元格。[0117]在用于3D的解码方法的一个实施例中,划分当前父单元格的递归划分步骤以轮 换方式执行水平、垂直和深度分割,并且预定义的一个子单元格或者是水平分割的上部或 下部子单元格,或者是垂直分割的左侧或右侧子单元格,或者是深度分割的前部或后部子 单元格。[0118]在一个实施例中,编码的网格模型包含多个重复相连接的组件,其中,编码的网格 模型包含每个重复相连接的组件的至少一个实例的编码数据,所述重复相连接的组件的多 个副本的位置,所述位置被编码为kd_树,以及[0119]网格模型内的边界区域,其中,所述边界区域是kd_树所指代的初始父单元格,其 中,被编码为kd_树的位置使用包括kd_树的每个节点的码字的编码,如果当前父单元格 的点被分发给至少两个子单元格,所述码字以具有第一值的指示符开始,如果当前父单元 格的点在单一的子单元格中,所述码字以具有不同的第二值的指示符开始,并且其中,所述 码字的剩余比特或者表示位于预定义的一个子单元格中的点的数量(如果指示符具有第一 值),或者表示当前父单元格的子单元格的索引,所述子单元格是包括父单元格的所有点的 子单元格(如果指示符具有第二值)。[0120]尽管已经通过将其应用到本发明的示例性实施例来示出、描述并指出了本发明的 基本的新颖特征,应理解,本领域技术人员可以在不脱离本发明的精神的情况下作出所描 述的装置和设备的在所公开的设备的形式和细节方面、以及其操作方面的各种省略、替换和变化。例如,虽然已经关于具有正方形的两倍尺寸的矩形的边界框公开了本发明,本领域 技术人员将认识到本文所描述的方法和设备可应用于任何矩形边界框,即使它们的划分导 致不是正方形的矩形。所有上述惯例可在不脱离本发明的范围的情况下自由修改。虽然在 上述示例中,对边界框的第一划分步骤是垂直的,它也可以是水平的。因此,修改给定数量 的水平和垂直划分步骤的顺序次序是可能的。[0121 ] 此外,可以修改示例中使用的任何隐式惯例。例如,相对于图2b)和上述相关示例, 惯例可以是不论其祖父单元格地逐线或逐列顺序处理一个阶段的所有当前父单元格(例 如,QDo另一惯例可以是在一个阶段的下一祖父单元格进入之前,在任何先前阶段j-χ的 它们的相应祖父单元格之内(例如,在Ql之内)逐线或逐列顺序处理该阶段j的所有当前父 单元格(例如,sql)。此外,另一惯例可以是如在上述示例中所作出的那样在处理的某一点 上在上述两个惯例之间进行切换。[0122]特别地表明,以基本相同的方式来执行基本相同的功能以实现相同的结果的那些 元件的所有组合是在本发明的范围之内的。也完全涉及和考虑从一个描述的实施例到另一 个的元件的替换。[0123]应理解,已经通过示例的方式全面地描述了本发明,并且可以作出不脱离本发明 范围的对细节的修改。可以独立地或以任何适当的组合的方式提供在说明书和(适用的地 方)权利要求以及附图中公开的每个特征。所述特征在适当的情况下可以实现在硬件、软 件、或两者的组合中。[0124]权利要求中出现的标号只是为了说明,并且不应对权利要求的范围有任何限制作用。
【权利要求】
1.一种使用分层树来编码网格模型的点的方法,其中,所述方法包括以下步骤:-编码作为点的总数的值;-递归地划分网格模型的点的周围的边界框,其中,每个划分步骤将当前父单元格划分为预定义数量的子单元格,并且对于每个划分步骤执行以下步骤:-确定当前父单元格和所述当前父单元格中包含的点的总数;-确定当前父单元格是否包含至少最小数量的点;-如果当前父单元格不包含至少所述最小数量的点,编码包含预定义的一个子单元格中的点的数量的码字,并且,否则-确定点分布,其中,根据当前划分步骤,确定当前父单元格的所有点是否在单一的子单元格中;并且-编码一个码字,其中,所述码字以一个指示符开始,并且其中如果根据所述确定的点分布,当前父单元格的所有点并不都是在单一的子单元格中, 该指示符具有第一值并且该码字的剩余比特表示点的数量,该数量是预定义的一个子单元格中点的数量减去一,并且其中如果根据所述确定的点分布,当前父单元格的所有点都在单一的子单元格中,该指示符具有不同的第二值并且该码字的剩余比特表示标识包含父单元格的所有点的所述单一子单元格的索引。
2.根据权利要求1所述的方法,其中,如果指示符具有第一值,根据η=取整(1g2 (m+Ι))或n=log2 (m),码字的剩余比特的数量依赖于当前父单元格中点的数量,其中,η是码字的剩余比特的数量,m是当前父单元格中点的数量。
3.根据权利要求1或2所述的方法,还包括根据输入点的空间坐标将输入点聚类成一个或多个聚类的初始步骤,并且每个点是多个输入点的聚类的参考点。
4.根据权利要求3所述的方法,其中,所述网格模型是具有多连接组件的3D网格模型, 并且其中,聚类的每个参考点代表一个组件。
5.一种解码网格模型的点的方法,该方法包括以下步骤:-从编码的数据集合提取至少第一数据和初始值,所述第一数据包含多个码字,所述初始值指示点的总数;-基于默认数据基于从编码的数据集合提取的边界框数据,生成边界框;-递归地将边界框划分为单元格,其中,每次递归划分将当前父单元格划分为两个或更多的子单元格,并且其中,码字为父单元格定义子单元格之一;以及 -根据所述子单元格确定所述点的位置,其中,多个码字中的每一个包含指示该码字的剩余比特的含义的指示符,其中,评价该指示符,并且其中,所述码字的剩余比特定义-或者是位于从当前父单元格的当前划分产生的预定义的一个子单元格中的点的数量,如果所述指示符具有第一值;-或者是指示从当前父单元格的当前划分产生的子单元格的索引,其中,所述子单元格包含所述父单元格的所有点。
6.根据权利要求5所述的方法,其中`,每个码字的长度是可变的,还包括根据给定的规则计算码字的长度的步骤,其中,根据η=取整(1g2 (m+1)),从当前父单元格中点的数量计算码字的所述剩余比特的数量,其中,η是码字的剩余比特的数量,m是当前父单元格中点的数量。
7.根据权利要求5或6所述的方法,其中,所述网格模型是包含重复相连接的组件的多个实例的3D网格模型,并且其中,所述点中的每一个是指示所述实例中的一个的位置的参考点,还包括生成重复组件的多个实例和根据各自参考点的位置来定位每个副本的最终步骤。
8.根据权利要求1-7任一项所述的方法,其中,如果所述网格模型和所述边界框是二维的,划分当前父单元格的所述递归划分步骤以轮换方式执行水平和垂直分割,或者如果所述网格模型和所述边界框是三维的,划分当前父单元格的所述递归划分步骤以轮换方式执行水平、垂直和深度分割,并且其中,预定义的一个子单元格或者是水平分割的上部或下部子单元格,或者是垂直分割的左侧或右侧子单元格,或者是深度分割的前部或后部子单元格。
9.根据权利要求1-8任一项所述的方法,其中,从对父单元格的单一划分步骤所产生的所有子单元格具有相等的尺寸。
10.根据权利要求1-9任一项所述的方法,其中,递归的最大数量或最小单元格尺寸被定义为递归划分步骤的终止条件。
11.一种包含适于在涉及权利要求1-4中的一项时执行根据权利要求1-4或8-10中的一项的使用分层树来编码网格模型的点的方法的处理元件的装置。
12.—种包含适于在涉及权利要求5-7中的一项时执行根据权利要求5-7中的一项或权利要求8-10中的一项的使用分层树来解码网格模型的点的方法的处理元件的装置。
13.一种在其上存储有导致计算机在涉及权利要求1-4中的一项时执行根据权利要求 1-4或8-10中任一项的编码网格模型的方法、或在涉及权利要求5-7中的一项时执行根据权利要求5-7中的一项或权利要求8-10中的一项的解码网格模型的方法的可执行指令的计算机可读介质。
14.一种包含多个重复相连接的组件的编码的网格模型,其中,所述编码的网格模型包含至少下列内容的编码数据:-每个重复相连接的组件的一个实例;-编码的相连接的组件的总数;-所述重复相连接的组件的多个副本的位置,所述位置被编码在树结构中,其中,所述树结构中的节点定义当前父单元格的空间划分;以及-边界区域,其中,所述边界区域是所述树结构所指代的初始父单元格并包含所述编码的相连接的组件的总数,并且其中,被编码为树结构的位置使用包括该树结构的每个节点的码字的编码格式,如果当前父单元格的点被分发给至少两个子单元格,所述码字以具有第一值的指示符开始,否则,所述码字以具有不同的第二值的指示符开始,并且其中,如果该指示符具有第一值,所述码字的剩余比特表示位于预定义的一个子单元格中的点的数量,或者如果该指示符具有第二值,所述码字的剩余比特表示当前父单元格的子单元格的索引,所述子单元格包括父单元格的所有点。
15.根据权利要求14所述的编码的网格模型,其中,如果所述网格模型和所述边界框是二维的,树结构中的后续节点定义以轮换方式水平地和垂直地划分当前父单元格的递 归空间划分步骤,如果所述网格模型和所述边界框是三维的,树结构中的后续节点定义以轮换方行水平地、垂直地和深度维度地划分当前父单元格的递归空间划分步骤,并且其中,预定义的一个子单元格或者是水平划分的上部或下部子单元格,或者是垂直划分的左侧或右侧子单元格,或者是深度划分的前部或后部子单元格。`
【文档编号】H04W4/00GK103518387SQ201180070071
【公开日】2014年1月15日 申请日期:2011年4月12日 优先权日:2011年4月12日
【发明者】蔡康颖, 田疆, 孟维亮 申请人:汤姆逊许可公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1