CN1681330B - 自适应2n叉树生成方法及3D体数据编码和解码方法和设备 - Google Patents
自适应2n叉树生成方法及3D体数据编码和解码方法和设备 Download PDFInfo
- Publication number
- CN1681330B CN1681330B CN200510076254.2A CN200510076254A CN1681330B CN 1681330 B CN1681330 B CN 1681330B CN 200510076254 A CN200510076254 A CN 200510076254A CN 1681330 B CN1681330 B CN 1681330B
- Authority
- CN
- China
- Prior art keywords
- node
- data
- information
- decoding
- volume elements
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
提供了一种用于编码和/或解码基于深度图像的表示(DIBR)数据的方法和设备。该编码方法包括:把3维(3D)体数据转换为向节点提供了预定标签的可调整八叉树数据;通过参考这些标签,按照在子节点之间分配了优先级的改进宽度优先搜索(BFS)方法从根节点到叶节点来编码可调整八叉树的节点;以及使用预定的首标信息和所编码的节点数据来生成位流。该解码方法包括:从位流中提取至少包含对象分辨率信息的首标信息,并且解码该首标信息;通过使用该首标的分辨率信息来计算节点数目,并且按照在子节点之间分配了优先级的改进BFS方法,从根节点到叶节点解码树的每个节点;以及通过使用所解码的节点来恢复可调整树。依照该方法和设备,可以高效率地编码大量的3D体数据,并且可以高效率地编码具有任意分辨率的体数据以及具有固定分辨率的体数据。因此,使用少量数据,就可以恢复具有高画面质量的3D体数据。另外,因为生成渐进的位流,所以当执行解码时可以渐进地显示3D体数据。
Description
技术领域
本发明涉及3维(3D)数据编码和解码,具体而言,涉及用于编码和/或解码3D体数据(volume data)的方法和设备。
背景技术
在表示3D对象的方法当中,使用多边形网格模型的方法被广泛使用。同时,基于深度图像的表示(DIBR)是使用一组包括真实图像或者合成图像的基准图像而不是多边形网格模型来表示3D对象的方法,该基于深度图像的表示被采用为2003年的MPEG-4动画框架扩展(AFX)标准。如图1所示,基准图像包括在围绕3D对象的六面体的表面处看见的图像。每个基准图像包括对应的彩色图像和深度图像。彩色图像表示3D对象表面上各点的色彩,而深度图像表示3D对象表面上的各点到六面体的对应表面的距离值。在图1中,示出了总共12个基准图像,包括在各个表面看见的6个深度图像和6个彩色图像。
DIBR方法的优点在于它不需要使用复杂的多边形网格模型,并且3D对象可以用高画面质量可视化,这是因为它使用图像。对于DIBR存在三种格式:SimpleTexture(简单纹理)、PointTexture(点纹理)和OctreeImage(八叉树图像)格式。在它们当中,如图2所示,PointTexture格式通过把采样3D对象的所有点布置到一个平面上的每个扫描行来表示该3D对象。由色彩和深度来表示该PointTexture的每个点。该深度是从该平面到该点的距离。另外,可以包括该点的其它属性。
如图2所示,由于构成3D对象表面的点可以沿着平面的每条深度线来布置,其中已经把这些点投射到该平面上,所以PointTexture格式通常由多个层形成。照此,PointTexture格式具有可以表示用多个面形成的复杂3D对象的优点。然而,当应该以高采样密度来逼真地表示空间对象时,数据量变得巨大,并且需要一种能够高效地压缩数据的方法。另外,需要一种用于压缩PointTexture格式数据的方法。
常规的压缩方法需要优化待传送的信息量并且还可以减少该信息量。当恢复已压缩的位流时,需要用于更自然的可视化的方法。
在2003年7月举行的MPEG会议中,为MPEG-4AFX标准中的PointTexture压缩提出了通过部分匹配方法使用预测的八叉树压缩方法。然而,当读取渐进(progressive)的位流并且恢复图像时,这种方法不能流畅地可视化图像。同样,由于这种方法使用了八叉树压缩方法,所以其具有下列缺点,关于体数据的分辨率,只有具有固定分辨率的数据才可以被压缩,在该固定分辨率中,宽度、高度和深度的值应该是相同的。也就是说,不能压缩具有任意分辨率的数据,在该任意分辨率中,宽度、高度和深度的值彼此不同。
因此,需要一种能够进行渐进传送并且在恢复中进行更自然的可视化,以及有效地压缩具有任意分辨率的3D对象数据的方法。
发明内容
本发明提供了一种可调整的四叉树、八叉树和2n叉树生成方法,其用于生成用来编码具有任意分辨率的3D体数据的树。
本发明还提供了一种3D体数据编码方法和设备,其支持这样的功能,即能够高效地编码3D体数据,并编码具有任意分辨率的3D体数据,并且支持渐进编码。
本发明还提供了一种3D体数据解码方法和设备,其能够支持这样的功能,即通过使用可调整的八叉树,能够解码具有任意分辨率的3D体数据而不管3D体数据的分辨率,并且支持从渐进编码的恢复。
根据本发明的一方面,提供了一种可调整四叉树生成方法,包括:把2维(2D)数据划分为由4个区域组成的四叉树;以及把被划分成该四叉树的数据的每个节点划分为亚四叉树,直到该节点的大小变为一个像素为止,其中对于划分该2D数据和把每个节点划分为亚四叉树中的四叉树划分,当该2D数据的宽度和长度中的每一个的像素数目是偶数时,把该2D数据分成两半,而当该数目是奇数时,划分该2D数据以便使所划分部分的差异是一个像素,并且如果4个所划分区域中的每一个没有变为4个像素,那么增加虚拟像素,使得生成具有4个像素的区域,并且对于具有一个像素差异的所划分部分执行该2D数据的划分,使得当把该数据划分成左手方和右手方时,该左手方和右手方中的任何一个始终比另一方多一个像素,并且当把该数据分成上方和下方时,该上方和下方中的任何一个始终比另一方多一个像素。
根据本发明的另一方面,提供了一种可调整的八叉树生成方法,包括:把3维(3D)数据划分为由8个区域组成的八叉树;并且把被划分成该八叉树的数据的每个节点划分为亚八叉树,直到该节点的大小变为一个体元为止,其中对于划分该3D数据和把每个节点划分为亚八叉树中的八叉树划分,当该3D数据的宽度、长度和高度中的每一个的体元数目是偶数时,把该3D数据分成两半,而当该数目是奇数时,划分该3D数据以便使所划分部分的差异是一个体元,并且如果8个所划分区域中的每一个没有变为8个体元,那么增加虚拟体元,使得生成具有8个体元的区域,并且对于具有一个体元差异的所划分部分执行该3D数据的划分,使得在前后方向、左右方向和上下方向的每一个方向上,两个所划分部分中的任何一个始终比另一个部分多一个体元。
根据本发明的又一方面,提供了一种可调整的2n叉树生成方法,包括:把n维(nD)数据划分为由2n个区域组成的2n叉树;以及把被划分成该2n叉树的数据的每个节点划分为亚八叉树,直到该节点的大小变为一个单元部分为止,其中对于划分该nD数据和把每个节点划分为亚2n叉树中的2n叉树划分,当该nD数据在每个方向上的单元部分数目是偶数时,把该nD数据分成两半,而当该数目是奇数时,划分该nD数据以便使所划分部分的差异是一个单元部分,并且如果2n个所划分区域中的每一个没有变为2n个单元部分,则增加虚拟单元部分,使得生成具有2n个单元部分的区域,并且对于具有一个单元部分差异的所划分部分执行该nD数据的划分,使得在每个方向上,任何一个所划分部分始终比另一个部分多一个单元部分。
根据本发明的再一方面,提供了一种3D体数据编码方法,包括:把3D体数据转换为向节点提供了预定标签的可调整八叉树数据;通过参考这些标签,按照在子节点之间分配了优先级的改进宽度优先搜索(BFS)方法,从根节点到叶节点来编码可调整八叉树的节点;以及使用预定的首标信息和所编码的节点数据来生成位流。
转换3D体数据可以包括:如果该3D体数据是PointTexture数据,那么通过使用3D绑定体(bounding volume)来转换为体元数据;并且把该体元数据或八叉树数据转换为向节点提供了预定标签的可调整八叉树。
转换为向节点提供了预定标签的可调整八叉树数据可以包括:把该3D数据划分为8个区域并且生成八叉树;并且当把预定的标签提供给八叉树的每个节点时,把由该八叉树的每个节点表明的3D区域划分为8个区域,并且如果子节点的数目不是8,那么增加虚拟体元以便使该数目为8,并且在形成由节点表明的3D区域的更低层中的体元由不具有对象的体元形成的情况(W)下,以及在形成由节点表明的3D区域的更低层中的体元由具有对象的体元形成的情况(B)下,预先把更低层中的所有体元当作具有对象的体元,并且在DIB信息中定义关于这些体元的该节点是S节点或P节点,其中对于该划分,当该3D数据的宽度、高度和深度的每一个中的体元数目是偶数时,把该3D数据分成两半,并且如果该数目是奇数,划分该3D数据,使得两个所划分部分具有一个体元差异,并且在有规则的方向上执行该划分,使得在前后、左右和上下方向的每一个方向上,任何一个所划分部分始终比另一个所划分部分多一个体元。
当由八叉树表示3D数据并且由该八叉树的每个节点表明的3D区域被称为节点区域时,预定标签可以区分下列情况:节点情况(W),其中该节点区域的更低层中的体元全都用不具有对象的体元形成;节点情况(B),其中该节点区域的更低层中的体元由具有对象的体元形成;节点情况(P),其中该节点区域的更低层中的体元值按照部分匹配预测(PPM)算法来编码;节点情况(S),该节点具有由标签标记的亚节点;以及虚拟体元情况(E),当子节点的数目不是8时增加该虚拟体元以便使该数目为8。
可以不编码具有标签‘E’的节点。
编码该八叉树的节点数据可以包括:通过选择该编码是S节点编码还是P节点编码,生成编码类型信息(SOP);如果该编码类型信息是S节点编码,那么编码S节点的详细信息;以及如果该编码类型信息是P节点编码,那么编码P节点的详细信息。
该S节点详细信息可以包括:子节点色彩信息的平均值;和表明子节点存在的标志信息(Ch1-Ch8)。可以差分脉码调制(DPCM)编码并且熵编码该色彩信息的平均值。可以熵编码该标志信息。
该P节点详细信息可以包括:对应节点的体元的色彩信息;和通过使用预定数目的上下文的该节点体元的深度信息。可以DPCM编码并熵编码该色彩信息。可以PPM编码该深度信息。
该位流可以包括:包含分辨率信息的首标,该分辨率信息包括3D对象的宽度、高度和深度信息;和八叉树的编码节点数据。该首标还可以包括:解码百分比信息(PercentOfDecoding),表明当编码节点时从根节点到最后节点编码所有节点的无损编码,和从起始节点到预定节点编码的有损编码。该首标还可以包括:基于深度图像的表示数据的版本信息。
根据本发明的另一方面,提供了一种3D体数据编码设备,包括:可调整八叉树转换单元,用于把体元数据或八叉树数据转换为向节点提供了预定标签的可调整八叉树数据;节点编码单元,用于按照在子节点之间分配了优先级的改进宽度优先搜索(BFS)方法,通过参考这些标签,从根节点到叶节点编码可调整八叉树的节点;以及位流生成单元,用于使用预定的首标信息和所编码的节点数据来生成位流。
如果该3D体数据是PointTexture数据,那么该设备还可以包括体元生成单元,用于通过使用3D绑定体来转换为体元数据。
该可调整八叉树转换单元可以包括:八叉树生成单元,用于把该3D数据划分为8个区域并且生成八叉树;和可调整八叉树生成单元,用于当把由该八叉树的每个节点表明的3D区域划分为8个区域时,向该八叉树的每个节点提供预定的标签,并且如果子节点的数目不是8时,那么增加虚拟体元以便使该数目为8,并且在形成由节点表明的3D区域的更低层中的所有体元由不具有对象的体元形成的情况(W)下,以及在形成由节点表明的3D区域的更低层中的体元由具有对象的体元形成的情况(B)下,预先把更低层中的所有体元当作具有对象的体元,并且在DIB信息中定义关于这些体元的该节点是S节点或P节点,其中对于该划分,当该3D数据的宽度、高度和深度的每一个中的体元数目是偶数时,把该3D数据分成两半,并且如果该数目是奇数,划分该3D数据,使得两个所划分部分具有一个体元差异,并且在有规则的方向上执行该划分,使得在前后、左右和上下方向的每一个方向上,任何一个所划分部分始终比另一个所划分部分多一个体元。
当由八叉树表示3D数据并且由该八叉树的每个节点表明的3D区域被称为节点区域时,这些预定的标签可以区分下列情况:节点情况(W),其中该节点区域的更低层中的体元全都用不具有对象的体元形成;节点情况(B),其中该节点区域的更低层中的体元由具有对象的体元形成;节点情况(P),其中该节点区域的更低层中的体元值按照部分匹配预测(PPM)算法来编码;节点情况(S),该节点具有由标签标记的亚节点;以及虚拟体元情况(E),当子节点的数目不是8时增加该虚拟体元以便使该数目为8。可以不编码具有标签‘E’的节点。
该节点编码单元可以包括:SOP信息选择单元,用于通过选择该编码是S节点编码还是P节点编码来生成编码类型信息(SOP);S节点编码单元,用于如果该编码类型信息是S节点编码来编码S节点的详细信息;和P节点编码单元,用于如果该编码类型信息是P节点编码来编码P节点的详细信息。该S节点编码单元可以编码:子节点色彩信息的平均值;和表明子节点是否存在的标志信息(Ch1-Ch8)。可以差分脉码调制(DPCM)编码并熵编码该色彩信息的平均值。可以熵编码该标志信息。该P节点编码单元可以编码:对应节点的体元的色彩信息;和通过使用预定数目的上下文的该节点体元的深度信息。可以DPCM编码并熵编码该色彩信息。可以PPM编码该深度信息。
该位流生成单元可以生成:包含分辨率信息的首标,该分辨率信息包括3D对象的宽度、高度和深度信息;和八叉树的编码节点数据。该首标还可以包括:解码百分比信息(PercentOfDecoding),表明当编码节点时从根节点到最后节点编码所有节点的无损编码,和从起始节点到预定节点编码的有损编码。该首标还可以包括:基于深度图像的表示数据的版本信息。根据本发明的另一方面,提供了一种基于深度图像的表示数据的解码方法,包括:从位流中提取至少包含对象分辨率信息的首标信息,并且解码该首标信息;通过使用该首标的分辨率信息来计算节点数目,并且按照在子节点之间分配了优先级的改进BFS方法,从根节点到叶节点解码树的每个节点;以及通过使用所解码的节点来恢复可调整树。
所提取的首标信息中的分辨率信息可以包括3D对象的宽度、高度和深度数据。
提取并解码首标信息还可以包括:提取解码百分比信息(PercentOfDecoding),其表明当解码节点时从根节点到预定节点解码的有损解码度,以及从根节点到最后节点解码所有节点的无损解码,并且解码该信息。
在提取并解码该首标信息中,可以从该位流中提取至少包括对象的分辨率信息和基于深度图像的表示数据的版本信息的首标信息并且将其解码。在计算节点数目并且解码每个节点中,通过使用由使用该分辨率信息和解码百分比信息计算的节点数目,计算将要解码的节点数目,并且按照在子节点之间分配了优先级的改进BFS方法,在从根节点开始朝向叶节点的方向上,可以解码其数目与将要解码的节点数目相同的树节点。通过使用优先级队列,通过把将要解码的节点索引推入该优先级队列并且把该索引从该队列弹出来执行该改进BFS方法。就优先级而言,节点的第一子节点的优先级可以比第二子节点的优先级高,第二子节点的优先级可以比第三子节点的优先级高,并且采用相同的方式,最后子节点可以具有最低的优先级。
解码树节点可以包括:解码编码类型信息(SOP),其表明该树节点是按照S节点编码还是P节点编码来编码;如果该SOP表明是S节点编码,那么确定想要解码的节点是S节点,并且解码该S节点;而如果该SOP表明P节点编码,那么确定想要解码的节点是P节点并且解码该P节点。
该S节点解码可以包括:熵解码该S节点的色彩信息;确定在该S节点的每个子节点中节点的标签是W还是B;如果该子节点的标签是W,那么计算亚树节点的数目并且跳过对与该亚树节点一样多的子节点的解码;并且如果该子节点的标签是B,那么把该子节点的索引推入该优先级队列。该P节点解码可以包括:根据树节点的索引来计算包括宽度、高度和深度数据的3D体区域;以及检查在该体区域中是否存在体元,并且如果存在体元,那么熵解码该体元的色彩信息。
该解码方法还可以包括把所恢复的可调整树数据转换为体元数据。
根据本发明的另一方面,提供了一种3D体数据解码设备,包括:首标解码单元,用于从位流中提取至少包含对象分辨率信息的首标信息,并且解码该首标信息;节点解码单元,用于通过使用该首标的分辨率信息来计算节点数目,并且按照在子节点之间分配了优先级的改进BFS方法,从根节点到叶节点来解码树的每个节点;和可调整树恢复单元,用于通过使用解码的节点来恢复可调整树。
所提取的首标信息中的分辨率信息可以包括3D对象的宽度、高度和深度数据。当该首标还包括解码百分比信息(PercentOfDecoding)时,该首标解码单元可以从该位流中提取该解码百分比信息并且解码该信息,其中该解码百分比信息表明当解码节点时从根节点到预定节点解码的有损解码度和从根节点到最后节点解码所有节点的无损解码。该首标解码单元可以从该位流中提取首标信息并且解码该首标信息,其中该首标信息至少包括对象的分辨率信息和基于深度图像的表示数据的版本信息。
通过使用由使用该分辨率信息和解码百分比信息而计算的节点数目,该节点解码单元可以计算将要解码的节点数目,并且按照在子节点之间分配了优先级的改进BFS方法,在从根节点开始朝向叶节点的方向上,解码其数目与将要解码的节点数目相同的树节点。使用优先级队列,通过把将要解码的节点索引推入该优先级队列并且把该索引从该队列弹出,可以执行该改进BFS方法。对优先级而言,节点的第一子节点的优先级可以比第二子节点的优先级高,第二子节点的优先级可以比第三子节点的优先级高,并且采用相同的方式,最后子节点可以具有最低的优先级。
该节点解码单元可以包括:SOP恢复单元,用于提取并恢复编码类型信息(SOP),该编码类型信息(SOP)表明该树节点是按照S节点编码还是P节点编码来编码;S节点解码单元,用于如果该SOP表明是S节点编码,那么确定想要解码的节点是S节点,并且解码该S节点;和P节点解码单元,用于如果该SOP表明为P节点编码,那么确定想要解码的节点是P节点,并且解码该P节点。该S节点解码单元可以包括:色彩信息解码单元,用于熵解码该S节点的色彩信息;WOB确定单元,用于确定在该S节点的每个子节点中节点的标签是W还是B;W节点处理单元,用于如果该子节点的标签是W,那么计算亚树节点的数目并且跳过对与该亚树节点一样多的子节点的解码;和B节点处理单元,用于如果该子节点的标签是B,那么把该子节点的索引推入该优先级队列。该P节点解码单元可以包括:体元PPM解码单元,用于使用树节点的索引来计算由宽度、高度和深度数据表示的3D体区域,并且检查在该体区域中是否存在体元;体元色彩解码单元,用于如果存在体元,那么熵解码该体元的色彩信息。
该解码设备还可以包括:体元数据恢复单元,用于通过使用所恢复的可调整树来恢复体元数据。
可以提供一种在其上实施有用于这些方法的计算机程序的计算机可读记录介质。
附图说明
通过参考附图来详细描述本发明的示例性实施例,本发明的上述及其它特征和优点将变得更加清楚,其中:
图1图示了围绕3D对象的六面体的各个表面中示出的基准图像;
图2图示了形成3D对象表面的点,这些点沿着平面的各条线布置;
图3(a)-(b)图示了树结构中的父子关系;
图4图示了在八叉树情况下把父节点划分为具有相同大小的8个子节点的例子;
图5(a)-(c)和6(a)-(c)图示了可调整四叉树以便更容易说明可调整八叉树的原理;
图7A是根据本发明的3D对象数据编码设备的结构的框图;
图7B是根据本发明的3D对象数据编码方法执行的操作的流程图;
图8是可调整八叉树转换单元的详细结构的框图;
图9图示了用于编码在图5(C)中示出的四叉树节点的节点访问次序;
图10图示了用于编码在图6(C)中示出的四叉树节点的节点访问次序;
图11是节点编码单元的详细结构的框图;
图12(a)-(b)图示了当把根节点编码为S节点时低层子节点的标签;
图13(a)-(c)图示了当PPM编码体元时所使用的上下文;
图14(a)-(d)图示了作为编码结果而生成的位流的格式;
图15是根据本发明的3D对象数据解码设备的框图;
图16是节点解码单元的详细内部结构的框图;
图17是S节点解码单元的详细结构的框图;
图18是P节点解码单元的详细结构的框图;
图19是根据本发明的3D对象数据解码方法所执行的操作的流程图;
图20是节点解码单元中的节点解码过程的流程图;
图21(a)-(f)图示了采用3×4分辨率恢复可调整八叉树的简单例子;
图22图示了8PointTexture测试模型,该测试模型用于测试根据本发明的3D体数据编码和解码方法和设备的性能;
图23示出了表明相对于所传送位流的失真度的速率-失真(RD)曲线;以及
图24图示了由画面质量表示的天使数据的失真度。
具体实施方式
以下将参考附图更全面地描述根据本发明的用于编码和/或解码3D体数据的方法和设备,该3D体数据包括PointTexture、体元和八叉树数据中的任何一个,其中附图示出了本发明的示例性实施例。
首先,现在将说明根据本发明的可调整2n叉树生成方法。把N维数据分成由2n个区域组成的2n叉树。然后,把被分成2n叉树的数据的每个节点分成更低层的2n叉树,直到该节点的大小变为一个单元部分。对于2n叉树划分而言,如果N维数据的每个方向上的单元部分的数目是偶数,那么把该2n叉树分成两半,并且如果该数目是奇数,那么划分该2n叉树以便一个划分部分比另一个划分部分多一个单元部分。在这时候,如果2n划分区域中的每个没有变为2n单元部分,那么增加虚拟单元部分以便使该区域为2n单元部分。在两个划分部分之间存在一个单元部分的差异的情况下的每个方向上的划分在预定方向上执行,使得在每个方向上只有一边始终比另一边大一个单元部分。
作为可调整2n叉树生成方法的例子,现在将说明n=3的情况,即可调整八叉树。为了生成可调整八叉树,首先,把3D数据分成由8个区域组成的八叉树。把被分成八叉树的数据的每个节点又划分为更低层的八叉树,直到节点大小变为一个单元部分即一个体元为止。在该八叉树划分中,如果3D数据的宽度、高度和深度中的每个的体元数目是偶数,那么把该八叉树分成两半,而如果是奇数,那么划分该八叉树以便一个划分部分比另一个划分部分长一个体元。在这时候,如果8个划分区域中的每个没有变为8个体元,则增加虚拟体元以便使该区域为8个体元。在两个划分部分之间存在一个体元差异的情况下的前-后、左-右和上-下方向的每一个方向上的划分在预定方向上执行,使得在每个方向上只有一边始终比另一边长一个体元。
图3图示了树结构中的父子关系。图3(A)示出了四叉树的例子,而图3(B)示出了八叉树的例子。八叉树从一个根节点具有8个子节点,并且每一子节点可以具有另外的8个子节点或叶节点。
现在将说明可调整八叉树的生成。可调整八叉树从根节点具有8个子节点,并且每一子节点可以具有另外的8个更低层子节点或叶节点。对于这些节点,附上5种标签。
可调整八叉树具有与普通八叉树相似的结构,但是它不同于普通的八叉树之处在于把标签附于中间节点。这5种标签被定义为S节点(分裂),P节点(PPM)、B节点(黑色)、W节点(白色)和E节点(空)。
假定把由八叉树的每个节点表示的3D区域称为节点区域,如果节点区域由不具有对象的更低层体元形成,那么把该节点称为W节点,而如果节点区域由全都具有对象的更低层体元形成,那么把该节点称为B节点。如果节点区域中更低层体元的值按照PPM算法来编码,那么把该节点称为P节点,而如果节点区域具有由标签标记的亚节点(sub node),那么把该节点称为S节点。如果存在为了当子节点的数目不是8时使该数目为8而增加的虚拟体元,那么把该节点称为E节点。表1示出了八叉树节点的5种标签。
表1
标签 | 说明 |
S | 分裂:把该节点分成8个亚节点。 |
P | PPM:按照PPM算法来编码该节点中的体元。 |
W | 白色:该节点不包括体元。 |
B | 填充黑色:该节点的所有或几乎所有部分都以体元填充。 |
E | 空:该节点没有空间来包括体元。 |
如果3D对象的绑定体(bounding volume)包括对象,那么可以把根节点表示为S节点并且把该体再分成8个亚体。如果所再分的体只包括白色体元,那么把相应的节点表示为W节点,而如果所再分的体包括至少一个黑色体元,那么把相应的节点预先表示为B节点。如果所再分的体不只包括白色体元或不是PPM编码的,那么把该节点表示为S节点。也就是说,如果节点具有其节点由诸如S、W、B、P和E的标签表示的子节点,那么把该节点的标签设置为S。同样,把S节点的体再分成8个更小的体。重复该过程直到该树达到预定的深度为止。在该深度中,如果采用PPM方法来编码预定的节点是高效的,那么把该标签设置为P。
同时,当把绑定体分成8个体时,如果一个轴上的长度不能被分成同样大小的两个部分,那么有规则地划分该体,使得一个划分部分比另一个划分部分长一个体元。然而,如果对于另一部分中的体元,即短一个体元的部分中的体元没有空间,例如,如果更低层中的体元数目在八叉树中不是8,那么确定空白空间并且把空节点定义为空体元,并且把该空节点的标签标记为E节点。即使当节点包括E节点并且只由B节点和W节点形成时,也可以把该节点视为P节点,并且可以按照PPM方法来编码该体元值。
在八叉树的情况下,如果可能的话,把父节点分成同样大小的8个子节点。划分父节点的次序可以被确定为前左上方、前右上方、前左下方、前右下方、后左上方、后右上方、后左下方、后右下方,如图4所示。
为了更清楚的说明,现在将采用使用四叉树的特定例子来说明上述方法。
图5和6图示了可调整四叉树以便更容易地说明可调整八叉树的概念。图5(A)是具有宽度3和高度4的2D图像并且示出了具有3×4分辨率的2D图像的四叉树。没有色彩的白色像素(点)表明空像素,并且具有色彩的体元表明满体元。图5(C)中具有色彩的节点对应于在图5(A)中具有相同色彩的体元。
当从根节点划分4个亚节点时,因为宽度是3,所以执行划分,使得一个划分部分是2而另一个划分部分是1。因为高度是4,所以每个划分部分是2。在图5(C)的可调整四叉树中,根节点是S的原因是该亚节点包括对象。该根节点的4个直接亚节点是S、S、W和B节点。第一和第二节点是S节点的原因是由更低层中的子节点来表示像素信息。第一S节点的子节点是W、B、B和B节点,并且对应于图5(B)左上角的4个像素区域。第二S节点的子节点是W、E、B和E节点,并且对应于图5(B)的右上角的4个像素区域。B节点表明该像素是满的而W节点表明该节点是空的。作为编码对象的信息是表示为B节点和W节点的像素。E节点表明对于像素没有空间,并且是不作为编码对象而包括的信息。因此,E节点是虚拟节点,其位置可以通过使用整个绑定体的分辨率信息来识别。图5(B)右上角的4个像素中以虚线表示的2个像素是E节点,并且表明原本不在图5(A)中的区域。这样表示虚拟E节点的原因是使第一S节点为虚拟四叉树,好像该S节点具有4个子节点。
同样,还是在可调整八叉树中,当采用S节点来表示更低层中的8个子节点时,如果子节点具有用于体元的空间,那么把该节点表示为B节点或W节点,并且如果子节点没有用于体元的空间,那么把该节点表示为E节点。当把空间分成更低层中的8个子节点时,如同在可调整四叉树中,有规则地执行划分,使得一个划分边比另一个划分边长一个体元。也就是说,当以3个轴X、Y和Z表示3D体空间时,-X边、-Y边和-Z边分别被分配成比+X边、+Y边和+Z边多一个体元。反之亦然,但是在本实施例中,使用前面的规则并且对所有节点应用相同的规则。
在图5(C)中,作为根节点的第三子节点的W节点对应于图5(B)左下角的4个像素区域,并且因为所有像素是空的,所以把它表示为W节点。作为图5(C)中根节点的第四子节点的B节点对应于图5(B)右下角的4个像素区域,并且因为除虚拟E节点之外所有像素是满的,所以把其表示为B节点。图6也示出了可调整树的例子并且图6(A)图示了具有5x7分辨率的2D图像。在图6(B)中,在X轴上,把该区域分成3-列点长度以及2-列点长度,并且在Y轴上,把该区域分成4-行点长度以及3-行点长度。比另一个划分部分短1个点长度的所划分部分的行和列被确定为可以用E节点填充的区域。通过使用这种方法,与常规方法不同,可以把具有诸如352×288×15和123×456×512之类的任意分辨率的3D对象数据形成为可调整八叉树。图6(C)图示了对应于图6(A)的可调整四叉树。
接下来,通过使用上述可调整八叉树生成方法,现在将说明根据本发明的3D对象数据编码设备和方法。图7A是根据本发明的3D对象数据编码设备的结构框图,其包括体元生成单元700、可调整八叉树转换单元720、节点编码单元740和位流生成单元760。图7B是通过根据本发明的3D对象数据编码方法来执行的操作的流程图。
如果3D对象数据是PointTexture,那么体元生成单元700通过使用3D绑定体来把该PointTexture转换为体元数据。
被采用作为MPEG-4AFX标准的PointTexture格式如下:
PointTexture{
field SFInt32 width 512 //宽度
field SFInt32 height 512 //高度
field MFInt32 depth[] //深度
field MFColor color[] //色彩
field SFInt32 depthNbBits 7
//深度分辨率信息=2depthNbBits+1
如果输入PointTexture数据,那么在操作70,由体元数据生成单元700把该数据转换为体元数据。为了转换PointTexture的深度信息,首先,生成绑定体。该绑定体具有与PointTexture相同的分辨率。例如,如果该PointTexture具有X×Y分辨率的图像,并且每个像素的深度信息的分辨率是Z,那么生成X×Y×Z的绑定体。绑定体的原点位于左下前角。在右手方的体元具有大于左手方体元的x值,并且在上方的体元具有大于下方体元的y值,并且后方体元具有大于前方体元的z值。把在该体数据中的所有体元初始化为白色(0)。然后,如果依照PointTexture中的体元,体元的位置是满的,那么把该体元设置为黑色(1)。
八叉树从根节点具有8个子节点,并且每一子节点可以具有另外的8个更低层子节点或叶节点。节点可以具有黑色或白色值,并且如果叶节点是黑色,那么它表明该体元是满的,而如果叶节点是白色,那么它表明该体元是空的。如果中间节点而非叶节点是黑色,那么它表明存在具有满体元的更低层节点,而如果中间节点是白色,那么它表明所有更低层都是空的。这种八叉树是用于表示3D体数据的典型结构。
可调整八叉树转换单元720把该体数据或八叉树数据转换为具有向节点提供的预定标签的可调整八叉树。通过输入由体元生成单元700从被表示为PointTexture的3D对象数据转换的体元,或者通过按原样输入八叉树数据,在操作72中,生成可调整八叉树。
图8是可调整八叉树转换单元720的详细结构的框图,其包括八叉树生成单元800和可调整八叉树生成单元850。
八叉树生成单元800接收3D体元数据并将其划分为8个区域并且生成八叉树。可调整八叉树生成单元850把预定的标签分配给该八叉树的每个节点,并且分成8个区域直到节点的大小是一个体元为止,以便生成分配有预定标签的八叉树。在这时候,在W节点的情况下,停止通过划分为体元的8个更低层区域的八叉树生成。
在8个区域划分中,如果3D数据的宽度、高度和深度中的每一个的体元数目是偶数,那么把它分成两半,并且如果该数目是奇数,那么执行划分,使得在所划分部分之间存在一个体元差异。如果8个划分区域中的每个没有变为8个体元,那么增加虚拟体元以便使该区域为8个体元。存在一个体元差异的情况下的前后、左右和上下方向的每一个方向上的划分在预定方向上执行,使得前后、左右和上下方向的每一个方向上的只有一个划分边始终长一个体元。可调整八叉树的详细说明与上面关于根据本发明的可调整八叉树生成方法的说明相同,并且在这里将其省略。
在操作74,节点编码单元740通过参考节点的标签来编码在可调整八叉树转换单元720中生成的可调整八叉树的节点。当在节点编码单元740中执行节点编码时,通过使用改进的宽度优先搜索(以下简称MBFS)来确定节点的编码次序。
在使用MBFS的编码中,按照BFS方法从根节点到叶节点采用由顶向下的方法、通过参考可调整八叉树结构中的节点的标签来执行编码,并且在子节点之间,给出优先级并且依照该优先级来执行编码。这里,不编码具有E标签的节点。依照该MBFS方法,在图5(C)中示出的四叉树的节点中,依照在图9中示出的次序访问这些节点,并且依照该次序来编码每个节点。即在子节点之间给出优先级,并且这里使左手方节点具有在子节点之间较高的优先级。此外,不访问E节点。同样,依照在图10中示出的次序编码在图6(C)中示出的四叉树的节点。
节点编码单元740包括SOP信息生成单元1100、S节点编码单元1120和P节点编码单元1140,如图11所示。
SOP信息生成单元1100选择把按照MBFS方法确定的节点编码为S节点还是P节点,并且生成编码类型信息(SOP)。也就是说,SOP信息生成单元1100确定把将要编码的节点编码为S节点还是P节点。计算当把节点编码为S节点时的熵和当把该节点编码为P节点时的熵中的每一个,并且选择具有较小熵的情况,继而所选择S或P节点的标签被自适应算术编码(AAC)编码。
S节点编码单元1120执行分裂节点编码。也就是说,S节点编码单元1120编码标志信息(Ch1-Ch8),该标志信息表明子节点的色彩信息平均值和子节点的存在性。也就是说,计算将要编码的S节点的色彩信息平均值,继而按照差分脉码调制(DPCM)和熵编码并且优选地是按照AAC编码来编码。另外,熵编码将要编码的S节点的标志信息。这里,当必要时,可以省略DPCM和熵编码中的至少之一。
在图12(A)中,当把根节点编码为S节点时,更低层子节点的标签是S、S、W和B,并且这些是将要编码的实际值。在更低层子节点的标签之间,用B来代替S继而进行编码。因此,作为图12(B)的实线矩形中的节点,用B、B、W和B来执行编码。这些值与在解码器中恢复的值相同。
P节点编码单元1140执行PPM节点编码。P节点编码单元1140通过使用预定数目的上下文来编码相应节点的体元的深度信息和色彩信息。优选地,对色彩信息进行DPCM和熵编码。必要时,可以省略DPCM和熵编码中的至少之一。优选地,对深度信息进行PPM编码。也就是说,对于P节点编码,首先,对该节点的体区域中的深度信息进行PPM编码,继而对该节点的色彩信息进行DPCM和AAC编码。
图13图示了当PPM编码体元时所使用的上下文。在右手方具有深度k的2D平面是其中存在先前编码的体元和当前要编码的体元的部分。在左手方具有深度k-1的2D平面是其中存在先前编码的体元的相邻部分。为了高效地执行编码,在以X标记的位置的体元不被用作上下文,并且均为环形的其余10个体元被用作上下文并且执行PPM编码。因此在这种情况下,该上下文从‘0011101000011’减到‘0111000011’。该上下文的排列次序按照栅扫描次序。
同时,在图7A中示出的位流生成单元760在操作76通过使用首标信息和在节点编码单元740中编码的节点来生成位流,并且包括首标编码单元762和熵编码单元764。首标编码单元762编码预定的首标信息。熵编码单元764熵编码所编码的节点数据。当可调整八叉树的每个节点是S节点时,生成分裂节点编码的位流,并且当每个节点是P节点时,生成PPM节点编码的位流。
图14(A)的首标包括分辨率信息,该分辨率信息包括3D对象上的宽度、高度和深度信息。此外,优选的是,该首标还包括解码百分比信息(PercentOfDecoding),其表明从根节点到最后节点编码所有节点的无损编码,以及从起始节点到预定节点编码的有损编码。另外,优选的是,该首标还包括基于深度图像的表示数据的版本信息。例如,可以用标志表示该版本信息,并且如果该标志的值是0,那么该版本是1;而如果该值是1,那么该版本是2。
通过依照采用MBFS方法确定的次序来编码该首标信息并且从根节点逐一地编码节点来生成位流。如果将要编码的全部节点数目是N,那么该节点可以被表示为节点-1、节点-2、...、节点-N,如图14(A)所示。用SOP(‘S’或‘P’)和详细信息位(DIB)来形成这些节点中的每一个的位流。
如果该SOP表明该节点是S节点,那么用该节点区域的平均色彩和用于表明子节点是否是W节点的最大8个标志来形成DIB,如图14(C)所示。可以把该8个标志表示为Ch1、Ch2、...、Ch8,并且这表明所有8个体元空间都存在的情况。如果存在缺乏体元空间的节点,那么与缺乏体元空间的节点数目相同的标志数目被降低,并且从编码对象列表中省略。可以AAC编码将要编码的标志值。
如果该SOP表明该节点是P节点,那么PPM编码该节点区域中的体元值,即深度信息,如图14(D)所示,并且依次DPCM并AAC编码B体元的色彩信息。
现在将说明PPM编码。如上所述,由二进制体元值来表示深度信息。W体元表示透明背景,而B体元表明3D对象的体元。P节点中的二进制体元值通过使用相邻的体元值作为上下文来PPM编码。如果依照栅扫描次序,把相邻13个体元的上下文用于计算并且处理该数据,那么数据量太大。因此,需要有效地降低上下文的数目,并且删除几乎不影响整体熵的3个体元。所删除的体元用‘X’来标记,如图13所示。通过使用该上下文,通过基于上下文的AAC编码来编码这些体元。
在编码深度信息之后,依照栅扫描次序来DPCM和AAC编码该节点区域中B体元的RGB色彩值。分别根据先前编码的B体元的R、G、B值来预测将要编码的B体元的R、G、B值,并且AAC编码该预测剩余值。
接下来,将说明根据本发明的用于解码3D对象的方法和设备。图15是根据本发明的3D对象数据解码设备的框图。该3D对象数据解码设备包括位流读取单元150、节点解码单元1520和可调整树恢复单元1540。另外,位流读取单元150可以包括首标解码部件1500。该3D对象数据解码设备还可以包括体元数据恢复单元1560。
基本上,根据本发明的3D对象数据解码设备接收位流并且解码树节点信息。为了读取位流,基于上下文的自适应算术解码器可以被用作熵解码单元1510。
首标解码单元1500从该位流中提取首标信息并且解码该信息,该首标信息至少包含对象的分辨率信息。优选的是,该分辨率信息包括3D对象的宽度、高度和深度数据。当该首标还包括解码百分比信息(PercentOfDecoding)时,首标解码单元1500从该位流中提取该解码百分比信息并且解码该信息。该解码百分比信息(PercentOfDecoding)表明当解码节点时从根节点到预定节点解码的有损解码度,以及从根节点到最后节点解码所有节点的无损解码。此外,该首标可以包括基于深度图像的表示数据的版本信息。
当输入经过熵编码以便编码的位流时,熵解码单元1510熵解码该位流并且优选地使用算术解码。
当该首标不包括解码百分比信息时,节点解码单元1520通过使用该首标的分辨率信息来计算节点数目,并且使用熵解码的节点数据,按照在子节点之间给出了优先级的MBFS方法从根节点到叶节点依次解码每个节点。
此外,当该首标包括解码百分比信息时,节点解码单元1520通过使用节点数目来计算将要解码的节点数目,其中该节点数目通过使用分辨率信息和解码百分比信息来计算,并且按照该MBFS方法从根节点到叶节点方向依次解码其数目与算出的将要解码的节点数目相同的树节点。
优选的是,通过使用优先级队列把将要解码的节点的索引推入优先级队列或从该队列弹出该索引来执行该MBFS方法。另外优选的是,就优先级而言,节点的第一子节点具有高于第二子节点的优先级,第二子节点具有高于第三子节点的优先级,并且采用相同的方式,最后子节点具有最低的优先级。
可以把MBFS表示为如下算法:
//把根节点(0)推入优先级队列
Queue.push(0);
//重复直到该优先级队列为空
while(Queue.isEmpty()==false)
{
//从该优先级队列提取索引
Index=Queue.pop();
//对8个孩子(从1到8)重复
for(Child=1;Child<=8;Child++)
{
//如果存在的所解码孩子为1
if(DecodedChild[Index*8+Child]==1)
//把子索引推入该队列
Queue.push(Index*8+Child);
}
}
图16是节点解码单元1520的详细内部结构的框图,其包括SOP提取单元1600、S节点解码单元1620和P节点解码单元1640。SOP提取单元1600提取用于表明树节点是按照S节点编码还是P节点编码来编码的编码类型信息(SOP),并且恢复该信息。
如果该SOP表明S节点编码,那么S节点解码单元1620确定想要解码的节点是S节点,并且解码该S节点。图17是S节点解码单元1620的详细结构的框图,其包括色彩信息解码单元1700、WOB确定单元1720、W节点处理单元1740和B节点处理单元1760。色彩信息解码单元1700熵解码该S节点的色彩信息。WOB确定单元1720相关于该S节点的所有子节点来确定节点的标签是W还是B。如果该节点的标签是W,那么W节点处理单元1740计算亚树节点的数目,并且跳过解码与亚树节点一样多的子节点。如果该子节点的标签是B,那么B节点处理单元1760把该子节点的索引推入优先级队列。
如果该SOP表明P节点编码,那么P节点解码单元1640确定想要解码的节点是P节点并且解码该P节点。图18是P节点解码单元1620的详细结构的框图,其包括体元PPM解码单元1800和体元色彩解码单元1820。体元PPM解码单元1800使用该树节点的索引来计算包括宽度、高度和深度数据的3D体区域,并且检查在该体区域中是否存在体元。如果检查结果表明存在体元,那么体元图像解码单元1820熵解码该体元的色彩信息。
在图15中示出的可调整树恢复单元1540通过使用所解码的节点恢复可调整树。体元数据恢复单元1560通过使用所恢复的可调整树来恢复体元数据。
图19是通过根据本发明的3D对象数据解码方法来执行的操作的流程图。参照图19,现在将说明根据本发明的3D对象数据解码方法和设备的操作。
首先,在操作1900,输入位流,由首标解码单元1500来恢复首标信息。该首标信息具有分辨率信息,并且优选地还包括解码百分比信息。另外,该首标信息还可以包括基于深度图像的表示数据的版本信息。例如,可以把该版本信息表示为一个标志,并且如果该标志值是0,那么其可以表明版本1;并且如果该标志值是1,那么其可以表明版本2。
例如,可以把用于读取PointTexture位流的顶层类的语法如下表示为:
class PointTexture()
{
PointTextureHeader();
PointTextureTreeNodes();
}
这里,PointTextureHeader是用于从该位流读取首标信息的类。PointTextureTreeNodes是用于从低分辨率到高分辨率渐进地读取树节点的类。
此外,可以把PointTextureHeader类的语法如下表示为:
class PointTextureHeader()
{
unsigned int(5)nBitSizeOfWidth;
unsigned int(nBitSizeOfWidth)nWidth;
unsigned int(5)nBitSizeOfHeight;
unsigned int(nBitSizeOfHeight)nHeight;
unsigned int(5)nDepthNbBits;
unsigned int(7)nPercentOfDeeoding;
}
这里,nBitSizeOfWidth表明nWidth的位大小,并且nWidth表明PointTexture的宽度。nBitSizeOfHeight表明nHeight的位大小,并且nHeight表明PointTexture的高度。nDepthNbBits表明用于表示原始深度数据的位数,并且nDepthNbBits值具有从0到31的范围。此外,用于表明原始深度数据的位数是nDepthNbBits+1。nPercentOfDecoding表明将要解码的树节点的百分比。如果该值是最大值(100),那么执行无损解码,否则执行有损解码。
同时,可以把PointTextureTreeNodes类的语法如下表示为:
class PointTextureTreeNodes()
{
nNumberOfTreeNodes=initializeOctree(nWidth,nHeight,nDepthNbBits);
nNumberLimit=nNumberOfTreeNodes*nPercentOfDecoding/100;
pushQ(O);//0:根
nCount=0;
while(nCount<nNumberLimit)
{
if(isQueueEmpty()==true)//如果队列为空,则中断
break;
nIndex=popQ();
nCount++;
nSOP=decodeAAC(contextSOP);
if(nSOP==0)//分裂节点解码
{
nRegionRed=decodeAAC(contextRedOfRegion);
nRegionGreen=decodeAAC(contextGreenOfRegion);
nRegionBlue=decodeAAC(contextBlueOfRegion);
for(nChild=1;nChild<=8;nChild++)//8个子节点
{
nBOW=decodeAAC(contextB OW);//黑或白
if(nBOW==0)//0:白节点
nCount+=getCountOfTreeSize(nIndex*8+nChild);
else //1:黑节点
pushQ(nIndex*8+nChild);
}
}
else//PPM节点解码
{
getRegion(nIndex,nStartX,nStartY,nStartZ,nEndX,nEndY,nEndZ);
for(k=nStartZ;k<nEndZ;k++)
{
for(j=nStartY;j<nEndY;j++)
{
for(i=nStartX;i<nEndX;i++)
{
nIndexOfContext=getIndexOfContext(i,j,k);
nVoxel=decodeAAC(contextTreeNodes[nIndexOfContext]);
if(nVoxel==1)//1:黑节点
{
nDeltaRed=decodeAAC(contextColorDifference);
nDeltaGreen=decodeAAC(contextColorDifference);
nDeltaBlue=decodeAAC(contextColorDifference);
}
}
}
}
nCount+=getCountOfTreeSize(nIndex)-1;
}
}
}
这里,nNumberOfTreeNodes表明八叉树中树节点的数目。initializeOctree函数初始化由nWidth、nHeight和nDepthNbBits表示的分辨率值,并且获得该八叉树中树节点的数目。
nNumberLimit表明将要解码的树节点的限制。pushQ函数在队列中插入值。nCount表明将要解码的树节点的当前数目。
isQueueEmpty函数检查队列是否为空,nIndex表明将要解码的树节点的索引。popQ函数从队列中提取值。
nSOP表明树节点是分裂节点还是PPM节点。如果该值是0,那么该节点是分裂节点,否则其表明是PPM节点。decodeAAC函数执行具有给定上下文的AAC解码。
nRegionRed表明体元区域中的红色范围,nRegionGreen表明绿色范围,并且nRegionBlue表明蓝色范围。nChild表明用于解码分裂节点的8个子节点的索引。nBOW表明子节点是黑还是白。
getCountOfTreeSize函数根据树节点来计算亚树节点的数目。getRegion函数根据该树节点的索引来计算体区域(起始x,y,z和结束x,y,z)。nStartX、nStartY和nStartZ分别表明体区域的起始点,并且nEndX、nEndY和nEndZ分别表明体区域的结束点。
nIndexOfContext表明根据x,y,z值的树节点的索引上下文,并且getIndexOfContent函数根据x,y,z值来获得树节点上下文的索引。nVoxel表明体元节点是黑还是白。
nDeltaRed表明体元中红色的差分值,nDeltaGreen表明体元中绿色的差分值,并且nDeltaBlue表明体元中蓝色的差分值。
同时,如果首标信息只包括分辨率信息而不具有解码百分比信息,那么节点解码单元1520通过使用该分辨率信息来计算将要解码的节点数目,并且在操作1920中,按照MBFS方法从根节点到叶节点依次解码该树的每个节点。
如果首标信息包括分辨率信息和解码百分比信息,那么该节点解码单元1520按照MBFS方法从根节点到叶节点方向来解码其数目与算出的将要解码的节点数目相同的树节点。通过使用优先级队列把将要解码的节点的索引推入优先级队列或从该队列弹出该索引来执行该MBFS方法。
更具体地说,节点解码单元1620首先通过使用3D对象的宽度×高度×深度分辨率信息来生成初始的完整八叉树节点,继而用值0(白色)来初始化这些节点。如果树节点的数目是N,那么将要解码的节点是节点-1、节点-2、节点-3、...、节点-N。
因为如果接收了通过使用该MBFS方法而生成的位流,那么可以得知从根节点到叶节点的解码次序,所以可以容易地识别由编码设备传送的节点位置。另外,因为通过使用该分辨率信息可以得知全部节点的数目,所以可以确认所传送的节点是否为最后节点。当解码3D对象时,如果该解码设备使用BFS算法,那么渐进的解码是不可能的并且只能执行顺序解码。在这种情况下,存在对象可视化是不自然的缺点。因此,如果使用MBFS,那么存在可以渐进地可视化3D对象并且支持更自然的表示的优点。
当通过使用MBFS方法来确定将要解码的节点次序时,在子节点之间每个第一子节点具有高于其它子节点的优先级。每个第二子节点具有高于第三子节点到第八子节点的次高优先级。通过这种方式,作为最后节点的每个第八子节点具有与前面那些子节点相比最低的优先级。解码器可以依照子节点的这些优先级,从父节点得知将要编码和解码的节点的当前次序。
E节点不是编码和解码的对象。图20是节点解码单元1520中的节点解码过程的流程图。首先,如果在操作2000,由SOP提取单元1600解码SOP标志信息,那么在操作2020,检查树节点是S节点还是P节点。如果检查结果表明该节点是S节点,那么在操作2040,该节点由S节点解码单元1620进行S节点解码。如果检查结果表明该节点是P节点,那么在操作2060,该节点由P节点解码单元1640进行P节点解码。
在S节点解码中,读取S节点DIB并且执行熵解码(优选的是,AAC解码),并且通过这样做,可以得知子节点的色彩信息和存在情况。在S节点的情况下,通过使用由编码设备设置的平均色彩信息来执行表示。每当在当前节点之后接收到每个子节点的色彩时,把该色彩用于更新并且将其反映到该节点。也就是说,如果SOP表明S节点,那么采用DIB,解码该节点区域的平均色彩和表明子节点是否为W节点的标志值。如果存在没有体元空间的节点,那么减少与缺乏的体元相同数目的标志,并且将其从解码对象列表上省略。该E节点是虚拟节点,并且通过使用整个绑定体的分辨率信息进行计算,可以得到该E节点的位置。
在P节点解码中,通过使用逆向PPM算法来恢复具有将要解码的P节点的体元区域的深度信息。通过使用熵解码(优选地是,AAC解码)和逆向DPCM来恢复P节点的色彩信息。更具体地说,如果SOP表明P节点,那么PPM解码节点区域中的体元值,即深度信息,并且按照逆向AAC和逆向DPCM依次解码B体元的色彩信息。例如,依照与图13中示出的编码相同的方式,通过把已经解码的10个相邻体元值用作上下文来PPM解码该P节点中将要解码的二进制体元值。在解码深度信息之后,按照反向AAC和反向DPCM采用栅扫描次序来解码该节点区域中B体元的RGB色彩值。分别根据先前解码的B体元的R、G、B值、通过逆向地预测用逆向AAC解码的预测剩余值,获得将要解码的B体元的R、G、B值。
如果采用该方法以节点为单元解码该位流,那么在操作1940执行附有标签的可调整八叉树的恢复。
图21图示了采用3×4分辨率恢复可调整八叉树的简单例子。图21(B)、(D)和(F)相对于解码示出了重构过程,而图21(A)、(C)和(E)相对于编码示出了构造过程。在图(B)、(D)和(F)中,蓝矩形表明当前解码的节点,并且绿矩形表明当前解码的子节点。在图21(B)中,当前解码的节点表明分裂节点,并且子节点是B、B、W和B。在图21(D)中,当前解码的节点表明PPM节点,并且子节点是W、B、B和B。在图21(F)中,当前解码的节点表明分裂节点,并且子节点是W和B。在这种情况下,不解码E节点。
如果恢复附有标签的可调整八叉树,那么在操作1960把该八叉树转换为体元数据。该体元数据的分辨率是宽度×高度×深度。如果恢复该体元数据,那么可以将其容易地转换为原始的PointTexture数据。也就是说,所转换的PointTexture通过使用深度信息和色彩信息来表示所恢复的3D对象。从而,通过八叉树和高效的压缩方法,支持渐进的恢复。
本发明还可以被实施为计算机可读记录介质上的计算机可读代码。该计算机可读记录介质是可以储存数据的任何数据存储装置,该数据可以在以后由计算机系统读取。计算机可读记录介质的例子包括只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘、光数据存储器装置和载波(诸如通过因特网的数据传输)。该计算机可读记录介质还可以通过连网的计算机系统来分发,以便以分布式方式存储和执行该计算机可读代码。
虽然参考本发明的示例性实施例具体示出并描述了本发明,但是本领域内普通技术人员应当理解,在不脱离由所附权利要求限定的本发明的精神和范围的情况下,可以进行各种形式和细节的变化。该优选实施例只应该被认为是描述性的而不是为了限制的目的。因此,本发明的范围不由本发明的详细描述来限定而是由所附权利要求来限定,并且该范围内的所有差异都将被解释为包括在本发明中。
如上所述,根据本发明的3D体数据编码和解码方法和设备可以高效率地编码大量的3D体数据,并且高效率地编码具有任意分辨率的体数据以及具有固定分辨率的体数据。因此,使用少量数据,就可以恢复具有高画面质量的3D体数据。另外,因为生成渐进的位流,故而当执行解码时可以渐进地显示3D体数据。
为了测试根据本发明的3D体数据编码和解码方法和设备的性能,使用了如图22所示的8个PointTexture测试模型。
表2到4把根据本发明的方法与WinZip和在常规方法中所使用的压缩方法的压缩性能相比较,其中该WinZip是通用的Lempel-Ziv压缩方法:
表2
表3
表4
相对于数据的大小,化身数据是最小的,其具有152,128字节,而机器人数据是最大的,其具有2,426,538字节。此外,大多数数据项具有类似大小的深度信息和色彩信息。依照测试结果,当与Winzip相比较时,花数据的性能改进了60%。此外,可以看出,当与常规方法相比较时,飞机数据的性能改进了52%。
在深度信息中,根据本发明的方法与常规方法相比在压缩比率方面显示了32~52%的改进。也就是说,根据本发明的方法删除了不必要的信息并且为了对此进行补偿,使用MBFS算法,使得可以改进压缩比率。虽然WinZip压缩方法不能支持渐进传送和解码,但是可以看出根据本发明的方法支持渐进传送和解码,并且在压缩性能方面也是优秀的。
图23示出了表明相对于所传送位流的失真度的速率-失真(RD)曲线。通过使用作为下列方程式1的汉明距离公式来获得所传送位流的失真度:
这里,V(x,y,z)原来表明3D对象点的存在,并且当它是0时,它表明没有点,而当它是1时,它表明存在点。
本文的结果示出了当传送相同的位时,本发明的方法相对于失真率有很大的改进。图24图示了由画面质量表示的天使数据的失真度。
可以确认,当传送类似量的位流时,根据本发明的方法相对于图像质量来说更好。可以得知,在根据本发明的方法的情况下,当传送159,736位信息时,失真率是0,而在常规方法的情况下,即使当传送170,504位时,仍然会出现大约1,114,438位的失真。在常规方法中,编码最小化RD曲线中的失真的节点并且按优先级传送。为此,选择并传送能够减小斜率的节点,并且与该节点一起,传送该节点的位置信息。在本发明中,删除了这些附加信息项,使得改进了RD曲线并且可以获得改进的结果。
从而,编码和解码测试的结果示出了根据本发明的方法改进了压缩比率和画面质量。当生成位流时,删除了位置信息和表明节点是否继续的信息,并且通过使用采用优先级队列的MBFS算法来补偿这一删除,可以获得在压缩比率方面改进的结果。因此,与常规方法相比较,即使当传送相同量的位时,也降低了失真度,以致可以获得较好的结果。
因此,根据本发明的方法可以比常规方法更高效地压缩PointTexture深度数据,另外,当渐进地传送位流时,本发明的方法可以用更自然的可视化来表示3D对象。本发明提出了这样一种方法,该方法能够减少形成位流的信息量以便实现更高效的压缩,并且即使当删除了信息时,此后通过使用MBFS或分辨率信息还可以执行解码和表示而没有任何问题。测试结果示出了就深度数据而言,按照该方法有32~52%的改进。同样,因为该MBFS算法支持渐进的可视化,由此可以获得相对于3D对象的可视质量来说更自然的结果。
Claims (48)
1.一种2维(2D)数据编码方法,包括:
把2D数据转换为向节点提供了预定标签的可调整四叉树数据;
通过参考这些标签,按照在子节点之间分配了优先级的改进宽度优先搜索(BFS)方法从根节点到叶节点来编码可调整四叉树的节点;以及
使用预定的首标信息和所编码的节点数据来生成位流,
其中四叉树生成包括:
把2维(2D)数据划分为由4个区域组成的四叉树;以及
把被划分成该四叉树的数据的每个节点划分为亚四叉树,直到该节点的大小变为一个像素为止,
其中对于划分该2D数据和把每个节点划分为亚四叉树中的四叉树划分,当该2D数据的宽度和长度中的每一个的像素数目是偶数时,把该2D数据分成两半,而当该数目是奇数时,划分该2D数据以便使所划分部分的差异是一个像素,并且如果4个所划分区域中的每一个没有变为4个像素,那么增加虚拟像素,使得生成具有4个像素的区域,并且对于具有一个像素差异的所划分部分执行该2D数据的划分,使得当把该数据划分成左手方和右手方时,该左手方和右手方中的任何一个始终比另一方多一个像素,并且当把该数据分成上方和下方时,该上方和下方中的任何一个始终比另一方多一个像素,
其中当由四叉树表示2D数据并且由该四叉树的每个节点表明的2D区域被称为节点区域时,这些预定的标签区分下列情况:
节点情况(W),其中该节点区域的更低层中的像素全都用不具有对象的像素形成;
节点情况(B),其中该节点区域的更低层中的像素由具有对象的像素形成;
节点情况(P),其中该节点区域的更低层中的像素值按照部分匹配预测(PPM)算法来编码;
节点情况(S),该节点具有由标签标记的亚节点;以及
虚拟像素情况(E),当子节点的数目不是4时增加该虚拟像素以便使该数目为4。
2.一种1维(1D)数据编码方法,包括:
把1D数据转换为向节点提供了预定标签的可调整二叉树数据;
通过参考这些标签,按照在子节点之间分配了优先级的改进宽度优先搜索(BFS)方法从根节点到叶节点来编码可调整二叉树的节点;以及
使用预定的首标信息和所编码的节点数据来生成位流,
其中二叉树生成包括:
把1维(1D)数据划分为由2个区域组成的二叉树;以及
把被划分成该二叉树的数据的每个节点划分为亚二叉树,直到该节点的大小变为一个像素为止,
其中对于划分该1D数据和把每个节点划分为亚二叉树中的二叉树划分,当该1D数据的长度中的像素数目是偶数时,把该1D数据分成两半,而当该数目是奇数时,划分该1D数据以便使所划分部分的差异是一个像素,并且如果2个所划分区域中的每一个没有变为2个像素,那么增加虚拟像素,使得生成具有2个像素的区域,
其中当由二叉树表示1D数据并且由该二叉树的每个节点表明的1D区域被称为节点区域时,这些预定的标签区分下列情况:
节点情况(W),其中该节点区域的更低层中的像素全都用不具有对象的像素形成;
节点情况(B),其中该节点区域的更低层中的像素由具有对象的像素形成;
节点情况(P),其中该节点区域的更低层中的像素值按照部分匹配预测(PPM)算法来编码;
节点情况(S),该节点具有由标签标记的亚节点;以及
虚拟像素情况(E),当子节点的数目不是2时增加该虚拟像素以便使该数目为2。
3.一种3D体数据编码方法,包括:
把3D体数据转换为向节点提供了预定标签的可调整八叉树数据;
通过参考这些标签,按照在子节点之间分配了优先级的改进宽度优先搜索(BFS)方法从根节点到叶节点来编码可调整八叉树的节点;以及
使用预定的首标信息和所编码的节点数据来生成位流,
其中转换为向节点提供了预定标签的可调整八叉树数据包括:
把该3D数据划分为8个区域并且生成八叉树;并且
当把预定的标签提供给八叉树的每个节点时,把由该八叉树的每个节点表明的3D区域划分为8个区域,并且如果子节点的数目不是8,那么增加虚拟体元以便使该数目为8,并且在形成由节点表明的3D区域的更低层中的体元由不具有对象的体元形成的情况(W)下,以及在形成由节点表明的3D区域的更低层中的体元由具有对象的体元形成的情况(B)下,预先把更低层中的所有体元当作具有对象的体元,并且在DIB信息中定义关于这些体元的该节点是S节点或P节点,其中对于该划分,当该3D数据的宽度、高度和深度的每一个中的体元数目是偶数时,把该3D数据分成两半,并且如果该数目是奇数,划分该3D数据,使得两个所划分部分具有一个体元差异,并且在有规则的方向上执行该划分,使得在前后、左右和上下方向的每一个方向上,任何一个所划分部分始终比另一个所划分部分多一个体元,
其中当由八叉树表示3D数据并且由该八叉树的每个节点表明的3D区域被称为节点区域时,预定标签区分下列情况:
节点情况(W),其中该节点区域的更低层中的体元全都用不具有对象的体元形成;
节点情况(B),其中该节点区域的更低层中的体元由具有对象的体元形成;
节点情况(P),其中该节点区域的更低层中的体元值按照部分匹配预测(PPM)算法来编码;
节点情况(S),该节点具有由标签标记的亚节点;以及
虚拟体元情况(E),当子节点的数目不是8时增加该虚拟体元以便使该数目为8。
4.如权利要求3所述的方法,其中转换3D体数据包括:
如果该3D体数据是PointTexture数据,那么通过使用3D绑定体来转换为体元数据;并且
把该体元数据或八叉树数据转换为向节点提供了预定标签的可调整八叉树。
5.如权利要求3所述的方法,其中不编码具有标签‘E’的节点。
6.如权利要求3所述的方法,其中编码该八叉树的节点数据包括:
通过选择该编码是S节点编码还是P节点编码,生成编码类型信息(SOP);
如果该编码类型信息是S节点编码,那么编码S节点的详细信息;并且
如果该编码类型信息是P节点编码,那么编码P节点的详细信息。
7.如权利要求6所述的方法,其中该S节点详细信息包括:
子节点的色彩信息的平均值;和
表明子节点是否存在的标志信息(Ch1-Ch8)。
8.如权利要求7所述的方法,其中差分脉码调制(DPCM)编码并熵编码色彩信息的平均值。
9.如权利要求7所述的方法,其中熵编码该标志信息。
10.如权利要求6所述的方法,其中该P节点详细信息包括:
节点体元的色彩信息;和
通过使用预定数目的上下文的节点体元的深度信息。
11.如权利要求10所述的方法,其中DPCM编码和熵编码该色彩信息。
12.如权利要求11所述的方法,其中PPM编码该深度信息。
13.如权利要求3所述的方法,其中该位流的生成包括熵编码所编码的节点数据并且编码预定的首标信息。
14.如权利要求3所述的方法,其中该位流包括:
包含分辨率信息的首标,该分辨率信息包括3D对象的宽度、高度和深度信息;和
八叉树的编码节点数据。
15.如权利要求14所述的方法,其中该首标还包括:
解码百分比信息(PercentOfDecoding),表明当编码节点时从根节点到最后节点编码所有节点的无损编码,和从起始节点到预定节点编码的有损编码。
16.如权利要求14所述的方法,其中该首标还包括:
基于深度图像的表示数据的版本信息。
17.一种3D体数据编码设备,包括:
可调整八叉树转换单元,用于把体元数据或八叉树数据转换为向节点提供了预定标签的可调整八叉树数据;
节点编码单元,用于按照在子节点之间分配了优先级的改进宽度优先搜索(BFS)方法,通过参考这些标签,从根节点到叶节点编码可调整八叉树的节点;和
位流生成单元,用于使用预定的首标信息和所编码的节点数据来生成位流,
其中该可调整八叉树转换单元包括:
八叉树生成单元,用于把该3D数据划分为8个区域并且生成八叉树;和
可调整八叉树生成单元,用于当把由该八叉树的每个节点表明的3D区域划分为8个区域时,向该八叉树的每个节点提供预定的标签,并且如果子节点的数目不是8时,那么增加虚拟体元以便使该数目为8,并且在形成由节点表明的3D区域的更低层中的所有体元由不具有对象的体元形成的情况(W)下,以及在形成由节点表明的3D区域的更低层中的体元由具有对象的体元形成的情况(B)下,预先把更低层中的所有体元当作具有对象的体元,并且在DIB信息中定义关于这些体元的该节点是S节点或P节点,
其中对于该划分,当该3D数据的宽度、高度和深度的每一个中的体元数目是偶数时,把该3D数据分成两半,并且如果该数目是奇数,划分该3D数据,使得两个所划分部分具有一个体元差异,并且在有规则的方向上执行该划分,使得在前后、左右和上下方向的每一个方向上,任何一个所划分部分始终比另一个所划分部分多一个体元,
其中当由八叉树表示3D数据并且由该八叉树的每个节点表明的3D区域被称为节点区域时,这些预定的标签区分下列情况:
节点情况(W),其中该节点区域的更低层中的体元全都用不具有对象的体元形成;
节点情况(B),其中该节点区域的更低层中的体元由具有对象的体元形成;
节点情况(P),其中该节点区域的更低层中的体元值按照部分匹配预测(PPM)算法来编码;
节点情况(S),该节点具有由标签标记的亚节点;以及
虚拟体元情况(E),当子节点的数目不是8时增加该虚拟体元以便使该数目为8。
18.如权利要求17所述的设备,其中如果该3D体数据是PointTexture数据,那么该设备还包括体元生成单元,用于通过使用3D绑定体来转换为体元数据。
19.如权利要求17所述的设备,其中不编码具有标签‘E’的节点。
20.如权利要求17所述的设备,其中该节点编码单元包括:
SOP信息选择单元,用于通过选择该编码是S节点编码还是P节点编码来生成编码类型信息(SOP);
S节点编码单元,用于如果该编码类型信息是S节点编码,那么编码S节点的详细信息;和
P节点编码单元,用于如果该编码类型信息是P节点编码,那么编码P节点的详细信息。
21.如权利要求20所述的设备,其中该S节点编码单元编码:
子节点的色彩信息的平均值;和
表明子节点是否存在的标志信息(Ch1-Ch8)。
22.如权利要求21所述的设备,其中差分脉码调制(DPCM)编码和熵编码色彩信息的平均值。
23.如权利要求21所述的设备,其中熵编码该标志信息。
24.如权利要求20所述的设备,其中该P节点编码单元编码:
该节点的体元的色彩信息;和
通过使用预定数目的上下文的该节点的体元的深度信息。
25.如权利要求24所述的设备,其中DPCM编码和熵编码该色彩信息。
26.如权利要求24所述的设备,其中PPM编码该深度信息。
27.如权利要求17所述的设备,其中该位流生成单元包括:
熵编码单元,用于熵编码该节点数据;和
首标编码单元,用于编码预定的首标信息。
28.如权利要求17所述的设备,其中该位流生成单元生成:
包含分辨率信息的首标,该分辨率信息包括3D对象的宽度、高度和深度信息;和
八叉树的编码节点数据。
29.如权利要求28所述的设备,其中该首标还包括:
解码百分比信息(PercentOfDecoding),表明当编码节点时从根节点到最后节点编码所有节点的无损编码,和从起始节点到预定节点编码的有损编码。
30.如权利要求29所述的设备,其中该首标还包括:
基于深度图像的表示数据的版本信息。
31.一种3D体数据解码方法,包括:
从位流中提取至少包含对象的分辨率信息的首标信息,并且解码该首标信息;
通过使用该首标的分辨率信息来计算节点数目,并且按照在子节点之间分配了优先级的改进BFS方法,从根节点到叶节点解码树的每个节点;以及
通过使用所解码的节点来恢复可调整树,
其中解码树节点包括:
解码编码类型信息(SOP),其表明该树节点是按照S节点编码还是P节点编码来编码;
如果该SOP表明S节点编码,那么确定想要解码的节点是S节点,并且解码该S节点;并且
如果该SOP表明P节点编码,那么确定想要解码的节点是P节点并且解码该P节点,
其中该S节点解码包括:
熵解码该S节点的色彩信息;
确定在该S节点的每个子节点中节点的标签是W还是B;
如果该子节点的标签是W,那么计算亚树节点的数目并且跳过对与该亚树节点一样多的子节点的解码;并且
如果该子节点的标签是B,那么把该子节点的索引推入该优先级队列,
其中该P节点解码包括:
根据树节点的索引来计算由宽度、高度和深度数据表示的3D体区域;并且
检查在该体区域中是否存在体元,并且如果存在体元,那么熵解码该体元的色彩信息。
32.如权利要求31所述的方法,其中所提取的首标信息中的分辨率信息包括3D对象的宽度、高度和深度数据。
33.如权利要求31所述的方法,其中提取并解码首标信息还包括:
提取解码百分比信息(PercentOfDecoding),其表明当解码节点时从根节点到预定节点解码的有损解码度,以及从根节点到最后节点解码所有节点的无损解码,并且解码该信息。
34.如权利要求31所述的方法,其中在提取并解码该首标信息中,首标信息至少包括对象的分辨率信息,并且从该位流中提取基于深度图像的表示数据的版本信息并且将其解码。
35.如权利要求31所述的方法,其中提取并解码首标信息还包括从该位流中提取节点信息并且熵编码所提取的节点信息。
36.如权利要求31所述的方法,其中在计算节点数目并且解码每个节点中,通过使用由使用该分辨率信息和解码百分比信息计算的节点数目,计算将要解码的节点数目,并且按照在子节点之间分配了优先级的改进BFS方法,在从根节点开始朝向叶节点的方向上,解码其数目与将要解码的节点数目相同的树节点。
37.如权利要求32或34所述的方法,其中通过使用优先级队列,并且通过把将要解码的节点索引推入该优先级队列并且把该索引从该队列弹出来执行该改进BFS方法。
38.如权利要求37所述的方法,其中相对于优先级,节点的第一子节点的优先级比第二子节点的优先级高,第二子节点的优先级比第三子节点的优先级高,并且采用相同的方式,最后子节点具有最低的优先级。
39.如权利要求31所述的方法,还包括把所恢复的可调整树数据转换为体元数据。
40.一种3D体数据解码设备,包括:
首标解码单元,用于从位流中提取至少包含对象分辨率信息的首标信息,并且解码该首标信息;
节点解码单元,用于通过使用该首标的分辨率信息来计算节点数目,并且按照在子节点之间分配了优先级的改进BFS方法,从根节点到叶节点来解码树的每个节点;和
可调整树恢复单元,用于通过使用解码的节点来恢复可调整树,
其中该节点解码单元包括:
SOP恢复单元,用于提取并恢复编码类型信息(SOP),该编码类型信息(SOP)表明该树节点是按照S节点编码还是P节点编码来编码;
S节点解码单元,用于如果该SOP表明S节点编码,那么确定想要解码的节点是S节点,并且解码该S节点;并且
P节点解码单元,用于如果该SOP表明P节点编码,那么确定想要解码的节点是P节点,并且解码该P节点,
其中该S节点解码单元包括:
色彩信息解码单元,用于熵解码该S节点的色彩信息;
WOB确定单元,用于确定在该S节点的每个子节点中节点的标签是W还是B;
W节点处理单元,用于如果该子节点的标签是W,那么计算亚树节点的数目并且跳过对与该亚树节点一样多的子节点的解码;和
B节点处理单元,用于如果该子节点的标签是B,那么把该子节点的索引推入该优先级队列,
其中该P节点解码单元包括:
体元PPM解码单元,用于根据树节点的索引来计算由宽度、高度和深度数据表示的3D体区域,并且检查在该体区域中是否存在体元;和
体元色彩解码单元,用于如果存在体元,那么熵解码该体元的色彩信息。
41.如权利要求40所述的设备,其中所提取的首标信息中的分辨率信息包括3D对象的宽度、高度和深度数据。
42.如权利要求41所述的设备,其中当该首标还包括解码百分比信息(PercentOfDecoding)时,该首标解码单元从该位流中提取该解码百分比信息并且解码该信息,其中该解码百分比信息表明当解码节点时从根节点到预定节点解码的有损解码度和从根节点到最后节点解码所有节点的无损解码。
43.如权利要求40所述的设备,其中该首标解码单元从该位流中提取首标信息并且解码该首标信息,该首标信息至少包括对象的分辨率信息和基于深度图像的表示数据的版本信息。
44.如权利要求40所述的设备,还包括熵解码部件,用于从该位流中提取节点信息并且熵解码所提取的节点信息。
45.如权利要求42所述的设备,其中通过使用由使用该分辨率信息和解码百分比信息而计算的节点数目,该节点解码单元计算将要解码的节点数目,并且按照在子节点之间分配了优先级的改进BFS方法,在从根节点开始朝向叶节点的方向上,解码其数目与将要解码的节点数目相同的树节点。
46.如权利要求40或44所述的设备,其中通过使用优先级队列,并且通过把将要解码的节点索引推入该优先级队列并且把该索引从该队列弹出来执行该改进BFS方法。
47.如权利要求45所述的设备,其中相对于优先级,节点的第一子节点的优先级比第二子节点的优先级高,第二子节点的优先级比第三子节点的优先级高,并且采用相同的方式最后子节点具有最低的优先级。
48.如权利要求40所述的设备,还包括体元数据恢复单元,用于通过使用所恢复的可调整树来恢复体元数据。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US55073504P | 2004-03-08 | 2004-03-08 | |
US60/550,735 | 2004-03-08 | ||
US58673404P | 2004-07-12 | 2004-07-12 | |
US60/586,734 | 2004-07-12 | ||
KR1020050012424A KR100695142B1 (ko) | 2004-03-08 | 2005-02-15 | 적응적 2의 n 제곱 진트리 생성방법 및 이를 이용한 3차원 체적 데이터 부호화/복호화 방법 및 장치 |
KR12424/05 | 2005-02-15 | ||
KR12424/2005 | 2005-02-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1681330A CN1681330A (zh) | 2005-10-12 |
CN1681330B true CN1681330B (zh) | 2010-07-21 |
Family
ID=34831007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200510076254.2A Expired - Fee Related CN1681330B (zh) | 2004-03-08 | 2005-03-08 | 自适应2n叉树生成方法及3D体数据编码和解码方法和设备 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP1574996A3 (zh) |
JP (1) | JP4759291B2 (zh) |
CN (1) | CN1681330B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103209326A (zh) * | 2013-03-29 | 2013-07-17 | 惠州学院 | 一种png图片的压缩方法 |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BRPI0822032A2 (pt) * | 2007-12-20 | 2015-07-21 | Koninkl Philips Electronics Nv | Método de codificação de imagem que permite renderização estereoscópica, portador de dados, codificador de imagem, decodificador de imagem, e, produto de programa de computador |
CN101499122B (zh) * | 2008-02-03 | 2011-03-02 | 中兴通讯股份有限公司 | 利用防碰撞实现射频接入的方法 |
CN101499121B (zh) * | 2008-02-03 | 2011-03-02 | 中兴通讯股份有限公司 | 一种用于射频识别的防碰撞方法 |
CN102577442B (zh) * | 2009-10-15 | 2015-06-03 | 汤姆森特许公司 | 编码网格模型的方法和装置、编码的网格模型、以及解码网格模型的方法和装置 |
KR20120035096A (ko) | 2010-10-04 | 2012-04-13 | 한국전자통신연구원 | 쿼드 트리 변환 구조에서 부가 정보의 시그널링 방법 및 장치 |
CN102592293A (zh) * | 2011-01-07 | 2012-07-18 | 北京四维图新科技股份有限公司 | 一种真彩色图像的降色方法及装置 |
CN102437855B (zh) * | 2011-11-02 | 2014-03-12 | 桂林理工大学 | 一种八叉树三维模型等级归并数据压缩方法 |
KR102366842B1 (ko) | 2013-04-08 | 2022-02-24 | 돌비 인터네셔널 에이비 | Lut를 인코딩하는 방법, lut를 디코딩하는 방법 및 대응하는 장치들 |
US20140368504A1 (en) * | 2013-06-12 | 2014-12-18 | Microsoft Corporation | Scalable volumetric 3d reconstruction |
WO2015135169A1 (en) * | 2014-03-13 | 2015-09-17 | Qualcomm Incorporated | Constrained depth intra mode coding for 3d video coding |
EP3082109A1 (en) * | 2015-04-16 | 2016-10-19 | 3D Slash | Three dimensional modeling |
WO2016171673A1 (en) * | 2015-04-21 | 2016-10-27 | Hewlett-Packard Development Company, L.P. | Octree serialization |
US9544608B1 (en) | 2015-07-03 | 2017-01-10 | Microsoft Technology Licensing, Llc | Lossless image compression for few-colored images |
EP3392840A4 (en) * | 2015-12-14 | 2019-02-06 | Panasonic Intellectual Property Corporation of America | THREE-DIMENSIONAL DATA ENCODING METHOD, THREE-DIMENSIONAL DATA DECODING METHOD, THREE-DIMENSIONAL DATA ENCODING DEVICE, AND THREE-DIMENSIONAL DATA DECODING DEVICE |
WO2018022011A1 (en) * | 2016-07-26 | 2018-02-01 | Hewlett-Packard Development Company, L.P. | Indexing voxels for 3d printing |
US10891786B2 (en) | 2016-10-11 | 2021-01-12 | Hewlett-Packard Development Company, L.P. | Generating data for a three-dimensional (3D) printable object, including a truss structure |
WO2018071011A1 (en) * | 2016-10-12 | 2018-04-19 | Hewlett-Packard Development Company, Lp | Serialising a representation of a three dimensional object |
EP3467778A1 (en) * | 2017-10-06 | 2019-04-10 | Thomson Licensing | A method and apparatus for encoding/decoding the geometry of a point cloud representing a 3d object |
KR20200069307A (ko) * | 2017-10-24 | 2020-06-16 | 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 | 삼차원 데이터 부호화 방법, 삼차원 데이터 복호 방법, 삼차원 데이터 부호화 장치 및 삼차원 데이터 복호 장치 |
CN109788442B (zh) * | 2017-11-15 | 2021-04-27 | 展讯通信(上海)有限公司 | 接纳等级发送、接收方法及装置、存储介质、基站、用户设备 |
CN111373447A (zh) * | 2017-11-22 | 2020-07-03 | 松下电器(美国)知识产权公司 | 三维数据编码方法、三维数据解码方法、三维数据编码装置、以及三维数据解码装置 |
EP3742403A4 (en) | 2018-01-19 | 2021-03-17 | Panasonic Intellectual Property Corporation of America | METHOD FOR CODING THREE-DIMENSIONAL DATA, METHOD FOR DECODING THREE-DIMENSIONAL DATA, DEVICE FOR CODING THREE-DIMENSIONAL DATA AND DEVICE FOR DECODING THREE-DIMENSIONAL DATA |
JP7168591B2 (ja) * | 2018-01-26 | 2022-11-09 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
CA3090465A1 (en) * | 2018-02-08 | 2019-08-15 | Panasonic Intellectual Property Corporation Of America | Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device |
WO2019174567A1 (zh) * | 2018-03-16 | 2019-09-19 | 华为技术有限公司 | 划分标志位的上下文建模方法及装置 |
JP7434148B2 (ja) * | 2018-04-19 | 2024-02-20 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
BR112020026567A2 (pt) * | 2018-06-25 | 2021-03-23 | Huawei Technologies Co., Ltd. | Aparelho e método para obtenção de códigos geométricos híbridos de nuvens de pontos |
CA3104630A1 (en) * | 2018-06-27 | 2020-01-02 | Panasonic Intellectual Property Corporation Of America | Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device |
WO2020032248A1 (ja) * | 2018-08-10 | 2020-02-13 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
CA3111340A1 (en) * | 2018-09-03 | 2020-03-12 | Huawei Technologies Co., Ltd. | A video encoder, a video decoder and corresponding methods |
US11910026B2 (en) | 2018-09-28 | 2024-02-20 | Sony Corporation | Image processing apparatus and method |
WO2020075861A1 (ja) * | 2018-10-12 | 2020-04-16 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
WO2020145668A1 (ko) | 2019-01-08 | 2020-07-16 | 삼성전자주식회사 | 3차원 컨텐츠의 처리 및 전송 방법 |
CN111247802B (zh) * | 2019-01-10 | 2023-07-07 | 深圳市大疆创新科技有限公司 | 用于三维数据点集处理的方法和设备 |
WO2020143063A1 (zh) * | 2019-01-11 | 2020-07-16 | 深圳市大疆创新科技有限公司 | 三维数据点的编解码方法和装置 |
WO2020248187A1 (zh) * | 2019-06-13 | 2020-12-17 | 深圳市大疆创新科技有限公司 | 一种点云编码方法、点云解码方法及相关设备 |
CN111699684B (zh) * | 2019-06-14 | 2022-05-06 | 深圳市大疆创新科技有限公司 | 三维数据点的编解码方法和装置 |
US20220358684A1 (en) * | 2019-06-24 | 2022-11-10 | Nippon Telegraph And Telephone Corporation | Encoding apparatus, encoding method, and program |
JP7506085B2 (ja) | 2019-10-03 | 2024-06-25 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
JPWO2021066162A1 (zh) * | 2019-10-03 | 2021-04-08 | ||
JP7322970B2 (ja) * | 2019-11-26 | 2023-08-08 | 日本電信電話株式会社 | 復号方法、符号化方法、復号装置、及びプログラム |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1395221A (zh) * | 2001-06-29 | 2003-02-05 | 三星电子株式会社 | 三维物体的分层表示及利用其绘制物体的方法和装置 |
EP1321894A2 (en) * | 2001-11-27 | 2003-06-25 | Samsung Electronics Co., Ltd. | Apparatus and method for representing 3-dimensional objects unsing depth images |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4694404A (en) * | 1984-01-12 | 1987-09-15 | Key Bank N.A. | High-speed image generation of complex solid objects using octree encoding |
JP3243476B2 (ja) * | 1997-03-18 | 2002-01-07 | 独立行政法人産業技術総合研究所 | 多次元データの構造化に基づく符号化方法 |
JPH11234678A (ja) * | 1998-02-18 | 1999-08-27 | Victor Co Of Japan Ltd | 画像分割伝送方法 |
JP2001034783A (ja) * | 1999-07-16 | 2001-02-09 | Victor Co Of Japan Ltd | 画像データ処理装置 |
KR100611999B1 (ko) * | 1999-08-27 | 2006-08-11 | 삼성전자주식회사 | 그리디 알고리듬을 이용한 객체 기반 콰드 트리 메쉬 움직임 보상방법 |
US6959114B2 (en) * | 2001-02-28 | 2005-10-25 | Samsung Electronics Co., Ltd. | Encoding method and apparatus of deformation information of 3D object |
CA2413058C (en) * | 2001-11-27 | 2012-01-17 | Samsung Electronics Co., Ltd. | Node structure for representing 3-dimensional objects using depth image |
-
2005
- 2005-03-08 EP EP05251374A patent/EP1574996A3/en not_active Ceased
- 2005-03-08 JP JP2005064221A patent/JP4759291B2/ja not_active Expired - Fee Related
- 2005-03-08 CN CN200510076254.2A patent/CN1681330B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1395221A (zh) * | 2001-06-29 | 2003-02-05 | 三星电子株式会社 | 三维物体的分层表示及利用其绘制物体的方法和装置 |
EP1321894A2 (en) * | 2001-11-27 | 2003-06-25 | Samsung Electronics Co., Ltd. | Apparatus and method for representing 3-dimensional objects unsing depth images |
Non-Patent Citations (1)
Title |
---|
In-Wook Song,Chang-Su Kim,and Sang-Uk Lee.Progressive Compression of PointTexture Images.SPIE5308.2004,53081159-1168. * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103209326A (zh) * | 2013-03-29 | 2013-07-17 | 惠州学院 | 一种png图片的压缩方法 |
CN103209326B (zh) * | 2013-03-29 | 2017-04-12 | 惠州学院 | 一种png图片的压缩方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4759291B2 (ja) | 2011-08-31 |
EP1574996A2 (en) | 2005-09-14 |
CN1681330A (zh) | 2005-10-12 |
EP1574996A3 (en) | 2007-03-21 |
JP2005259139A (ja) | 2005-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1681330B (zh) | 自适应2n叉树生成方法及3D体数据编码和解码方法和设备 | |
US11889113B2 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
US7925103B2 (en) | Adaptive 2n-ary tree generating method, and method and apparatus for encoding and decoding 3D volume data using it | |
JP7431742B2 (ja) | 三次元物体を表すポイントクラウドを符号化/復号する方法及び装置 | |
CN1684109B (zh) | 用于编码和解码三维数据的方法和装置 | |
EP1431919B1 (en) | Method and apparatus for encoding and decoding three-dimensional object data by using octrees | |
CN104378644B (zh) | 定宽度变长度像素样值串匹配增强的图像压缩方法和装置 | |
WO2021116838A1 (en) | Mesh compression via point cloud representation | |
US7263236B2 (en) | Method and apparatus for encoding and decoding three-dimensional object data | |
CN101742349B (zh) | 一种对三维场景的表达方法及其电视系统 | |
JP7389751B2 (ja) | 三次元物体を表すポイントクラウドを符号化/復号する方法及び装置 | |
EP3614672A1 (en) | A method and apparatus for encoding/decoding a point cloud representing a 3d object | |
EP3699867A1 (en) | An apparatus, a method and a computer program for volumetric video | |
EP3614673A1 (en) | A method and apparatus for encoding/decoding a point cloud representing a 3d object | |
CN114554175B (zh) | 一种基于分类重排的二维点云距离图像的无损压缩方法 | |
WO2024084316A1 (en) | V3c syntax extension for mesh compression | |
Wai et al. | GIS Data Compression Based On Block-Encoding and Quadtree Approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100721 Termination date: 20160308 |
|
CF01 | Termination of patent right due to non-payment of annual fee |