CN112740277A - 图像处理装置和图像处理方法 - Google Patents

图像处理装置和图像处理方法 Download PDF

Info

Publication number
CN112740277A
CN112740277A CN201980061734.1A CN201980061734A CN112740277A CN 112740277 A CN112740277 A CN 112740277A CN 201980061734 A CN201980061734 A CN 201980061734A CN 112740277 A CN112740277 A CN 112740277A
Authority
CN
China
Prior art keywords
encoding
node
octree
decoding
type
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.)
Withdrawn
Application number
CN201980061734.1A
Other languages
English (en)
Inventor
矢野幸司
加藤毅
隈智
中神央二
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Publication of CN112740277A publication Critical patent/CN112740277A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/70Type of the data to be coded, other than image and sound
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods 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/96Tree coding, e.g. quad-tree coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3077Sorting
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • H04N19/21Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding with binary alpha-plane coding for video objects, e.g. context-based arithmetic encoding [CAE]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods 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/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)

Abstract

本公开内容涉及允许以各种处理顺序对八叉树的编码数据进行解码的图像处理装置和图像处理方法。通过针对与点云数据相对应的八叉树的每层初始化上下文来对八叉树进行编码。另外,选择宽度优先顺序或深度优先顺序作为与点云数据相对应的八叉树的编码数据的解码顺序,并且以选择的解码顺序对编码数据进行解码。本公开内容可应用于例如图像处理装置、电子装置、图像处理方法或程序。

Description

图像处理装置和图像处理方法
技术领域
本公开内容涉及图像处理装置和方法,并且更具体地,涉及能够以各种处理顺序对八叉树的编码数据进行解码的图像处理装置和方法。
背景技术
作为对表示诸如点云的三维结构的3D数据进行编码的方法,例如,已经存在使用八叉树的编码(例如,参见非专利文献1)。
在这种使用八叉树的编码中,搜索关于八叉树的每个节点的信息,并且以宽度优先顺序对其进行编码。作为这种编码,例如执行使用上下文的编码例如算术编码。因此,依赖关系以处理顺序出现,并且在解码时以相同的顺序(宽度优先顺序)处理各个节点的编码数据。
引用列表
非专利文献
非专利文献1:R.Mekuria,Student Member IEEE,K.Blom和P.Cesar,MembersIEEE,“Design,Implementation and Evaluation of a Point Cloud Codec for Tele-Immersive Video”,tcsvt_paper_submitted_february.pdf
发明内容
本发明要解决的问题
然而,如果以宽度优先顺序执行解码,则存储数据所需的存储器容量可能变得更大,并且处理顺序可能不是最佳的,这取决于解码器的硬件性能。
考虑到这样的情况而做出本公开内容,并且本公开内容旨在使得能够以各种处理顺序对八叉树的编码数据进行解码。
问题的解决方案
本技术的一个方面的图像处理装置是一种图像处理装置,该图像处理装置包括编码单元,该编码单元在针对与点云数据相对应的八叉树的每层初始化上下文之后,对八叉树进行编码。
本技术的一个方面的图像处理方法是一种图像处理方法,该图像处理方法包括在针对与点云数据相对应的八叉树的每层初始化上下文之后对八叉树进行编码。
本技术的另一方面的图像处理装置是一种图像处理装置,该图像处理装置包括解码单元,该解码单元选择宽度优先顺序或深度优先顺序作为与点云数据相对应的八叉树的编码数据的解码顺序,并且以选择的解码顺序对编码数据进行解码。
本技术的另一方面的图像处理方法是一种图像处理方法,该图像处理方法包括选择宽度优先顺序或深度优先顺序作为与点云数据相对应的八叉树的编码数据的解码顺序,并且以选择的解码顺序对编码数据进行解码。
在本技术的一个方面的图像处理装置和方法中,在针对与点云数据相对应的八叉树的每层初始化上下文之后,对八叉树进行编码。
在本技术的另一方面的图像处理装置和方法中,选择宽度优先顺序或深度优先顺序作为与点云数据相对应的八叉树的编码数据的解码顺序,并且以选择的解码顺序对编码数据进行解码。
附图说明
图1是示出了生成八叉树的示例的图。
图2是用于说明八叉树的示例结构的图。
图3是用于说明编码的示例类型的图。
图4是用于说明宽度优先搜索的图。
图5是用于说明以宽度优先顺序处理的示例的图。
图6是用于说明深度优先搜索的图。
图7是用于说明以深度优先顺序处理的示例的图。
图8是示出存储器使用的比较示例的图。
图9是用于说明类型1的搜索顺序的图。
图10是用于说明以类型1的搜索顺序处理的示例的图。
图11是用于说明类型2的搜索顺序的图。
图12是用于说明以类型2的搜索顺序处理的示例的图。
图13是用于说明以类型3的搜索顺序处理的示例的图。
图14是用于说明以类型3的搜索顺序处理的示例的图。
图15是用于说明以类型3的搜索顺序处理的示例的图。
图16是用于说明以类型3的搜索顺序处理的示例的图。
图17是用于说明以类型4的搜索顺序处理的示例的图。
图18是用于说明以类型4的搜索顺序处理的示例的图。
图19是示出报头信息的示例的图。
图20是示出编码装置的典型示例配置的框图。
图21是示出无损编码单元的典型示例配置的框图。
图22是用于说明编码处理中的示例流程的流程图。
图23是从图22继续的用于说明编码处理中的示例流程的流程图。
图24是用于说明类型0编码处理中的示例流程的流程图。
图25是用于说明类型1编码处理中的示例流程的流程图。
图26是用于说明类型2编码处理中的示例流程的流程图。
图27是用于说明类型3编码处理中的示例流程的流程图。
图28是示出解码装置的典型示例配置的框图。
图29是示出无损解码单元的典型示例配置的框图。
图30是用于说明解码处理中的示例流程的流程图。
图31是从图30继续的用于说明解码处理中的示例流程的流程图。
图32是示出计算机的典型示例配置的框图。
具体实施方式
以下是用于执行本公开内容的模式的描述(这些模式在下文中将被称为实施方式)。注意,将按以下顺序进行说明。
1.八叉树编码和解码顺序
2.第一实施方式(编码装置)
3.第二实施方式(解码装置)
4.注意
<1.八叉树编码和解码顺序>
<支持技术内容和术语的文献等>
本技术公开的范围不仅包括实施方式中公开的内容,而且包括在提交时已知的以下非专利文献中公开的内容。
非专利文献1:(上述)
非专利文献2:Ohji Nakagami,Phil Chou,Maja Krivokuca,Khaled Mammou,Robert Cohen,Vladyslav Zakharchenko,and Gaelle Martin-Cocher,“Second WorkingDraft for PCC Categories 1,3”,ISO/IEC JTC1/SC29/WG11,MPEG 2018/N17533,April2018,San Diego,US
非专利文献3:TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU(International Telecommunication Union),“Advanced video coding for genericaudiovisual services”,H.264,04/2017
非专利文献4:TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU(International Telecommunication Union),“High efficiency video coding”,H.265,12/2016
非专利文献5:Jianle Chen,Elena Alshina,Gary J.Sullivan,Jens-Rainer,andJill Boyce,“Algorithm Description of Joint Exploration Test Model 4”,JVET-G1001_v1,Joint Video Exploration Team(JVET)of ITU-T SG 16WP 3and ISO/IEC JTC1/SC 29/WG 11 7th Meeting:Torino,IT,13-21 July 2017
也就是说,上面列出的非专利文献中公开的内容也是用于确定支持要求的基础。例如,即使在实施方式中没有直接公开非专利文献4中公开的四叉树块结构和非专利文献5中公开的四叉树加二叉树(QTBT)块结构的情况下,这些结构也在本技术的范围内,并且满足权利要求的支持要求。此外,例如,即使在没有直接描述这些技术术语的情况下,诸如解析、语法和语义的技术术语也在本技术的公开内容的范围内,并且满足权利要求的支持要求。
<点云>
已经有了诸如点云和网格的3D数据,点云表示具有关于点云的位置信息、属性信息等的三维结构,网格由顶点、边和平面形成并且使用多边形表示来限定三维形状。
例如,在点云的情况下,三维结构(三维对象)被表示为大量点的集合(点云)。也就是说,点云的数据(也被称为点云数据)由关于该点组中的各个点的位置信息和属性信息(例如,颜色等)形成。因此,数据结构相对简单,并且可以通过使用足够多的点以足够高的准确度来表示任何期望的三维结构。
<使用体素的位置信息的量化>
由于这样的点云数据的数据量相对大,因此已经提出了使用体素的编码方法以通过编码等来减少数据量。体素是用于对关于编码目标的位置信息进行量化的三维区域。
也就是说,将包含点云的三维区域划分为被称为体素的小的三维区域,并且每个体素表示其中是否包含点。例如,在图1的左侧所示的示例的情况下,在三维空间中设置210×210×210体素10,并且每个体素表示点的存在/不存在(其中是否包含点)。在图1所示的示例的情况下,灰色体素表示包含点的体素,并且白色体素表示不包含点的体素。
利用这种布置,以体素为单位量化各个点的位置。因此,将点云数据变换为这样的体素的数据(也称为体素数据),使得能够防止信息量的增加(通常能够减少信息量)。
<八叉树>
此外,已经提出了使用这样的体素数据来构造八叉树。例如,如图2所示,八叉树是体素数据的树结构版本。该八叉树的最低节点的每个位的值表示在每个体素中点的存在或不存在。例如,值“1”表示包含点的体素,而值“0”表示不包含点的体素。在八叉树中,一个节点对应于八个体素。也就是说,八叉树的每个节点由8位数据形成,并且八个位表示八个体素中的点的存在或不存在。
然后,八叉树的较高节点表示在与属于该节点的较低节点相对应的八个体素被组合成一个的区域中点的存在或不存在。也就是说,通过收集关于较低节点的体素信息来生成较高节点。
例如,对于图1中左侧的体素10的组中由粗线表示的区域11,收集关于2×2×2体素10的信息以生成八叉树的最低节点,如区域11A所示。也就是说,生成最低节点,每个最低节点表示八个体素10中的点的存在或不存在。
例如,在这样的最低节点的值不是“0”的情况下,或者在八个对应体素中的至少一个包含点的情况下,生成节点的较高节点。例如,生成组合八个体素的区域(较低分辨率体素)(例如区域11B),并且将表示低分辨率体素中的点的存在或不存在的2×2×2条信息组合成较高节点。也就是说,生成表示八个低分辨率体素中的点的存在或不存在的较高节点。
例如,在该较高节点的值不是“0”的情况下,以类似的方式生成诸如区域11C的更高节点。
另一方面,在节点的值为“0”的情况下,或者在所有八个对应体素都不包含点的情况下,删除该节点。
以这种方式,如图2所示,构造由值不为“0”的节点形成的树结构(八叉树)。也就是说,八叉树可以表示在每个分辨率下体素中点的存在或不存在。因此,体素数据被变换为八叉树,然后被编码,使得在解码时可以更容易地恢复各种分辨率下的体素数据。也就是说,可以更容易地实现体素缩放性。
此外,由于如上所述省略了具有值“0”的节点,因此可以降低没有点的区域中的体素的分辨率。因此,可以进一步防止信息量的增加(通常可以减少信息量)。
<八叉树的编码>
对八叉树的数据进行编码,使得可以进一步防止信息量的增加(通常可以减少信息量)。在这种情况下,对关于八叉树的每个节点的信息(8位数据)进行编码(例如,算术编码)。在算术编码中,将紧接在当前节点之前处理的节点的编码结果用作上下文以选择概率表,并且利用选择的概率表执行编码。也就是说,每个节点的编码具有对处理顺序(搜索顺序)的依赖性。
<宽度优先顺序>
例如,所提出的用于编码八叉树数据的方法是一种用于以宽度优先顺序搜索八叉树的各个节点并且以宽度优先顺序编码每个节点的数据的方法(图3中的类型0)。宽度优先顺序是从八叉树的最高节点开始一次一层(也称为LoD)地搜索各个节点的顺序,例如,如图4中示出的带虚线的箭头所示。也就是说,在图4所示的示例的情况下,按照以下顺序搜索各个节点:N、G、U、D、K、R、X、B、F、I、M、P、T、W、Z、A、C、E、H、J、L、O、Q、S、V和Y。因此,如图5所示,以与搜索顺序相同的顺序执行各个节点的数据的编码。
如上所述,在编码时将紧接在当前节点之前处理的节点的编码结果用作上下文的情况下,依赖关系以编码顺序出现。在这种情况下,解码顺序也受到依赖关系的限制。也就是说,在以宽度优先顺序执行编码的情况下,也需要以宽度优先顺序执行解码。
此外,在解码中还需要关于父节点(该节点(也称为当前节点)所属的高一级的节点)的信息。因此,当对图4所示的八叉树中的节点A执行解码时,例如,需要关于作为节点A的父节点的节点B的信息。此外,当对在节点A之后处理的节点C至Y执行解码时,需要关于作为节点C至Y的父节点的节点F至Z的信息。也就是说,在解码节点A时必须保存关于节点B至Z的信息。换言之,在以宽度优先顺序执行解码的情况下,在解码处理目标层中第一个要处理的节点(也称为第一节点)时必须保存关于高一级的LoD的所有节点的信息。
<深度优先顺序>
例如,除了宽度优先顺序之外的示例搜索顺序是深度优先顺序。深度优先顺序是其中尽快搜索八叉树的最低节点的顺序,例如,如图6中示出的带虚线的箭头所示。在图6所示的示例的情况下,按照以下顺序搜索各个节点:例如,N、G、D、B、A、C、F、E、K、I、H、J、M、L、U、R、P、O、Q、T、S、X、W、V、Z和Y。因此,如图7所示,以与搜索顺序相同的顺序执行各个节点的数据的编码。
例如,在如算术编码中那样编码时将紧接在当前节点之前处理的节点的编码结果用作上下文的情况下,需要以相同的顺序执行解码。也就是说,必须以深度优先顺序执行解码。
此外,在这种情况下,在解码中也需要关于父节点的信息。因此,当解码图6中的节点A时,例如需要关于节点B的信息。此外,当对节点A之后处理的节点F、节点K和节点U进行解码时,需要关于节点D、节点G和节点N的信息。也就是说,在解码节点A时必须保存关于节点N、节点G、节点D和节点D的信息。换言之,在以宽度优先顺序执行解码的情况下,在解码处理目标层中的第一节点时,必须保存关于从最高层的节点(也称为最高节点或根节点)到当前节点的路径中存在的所有节点的信息。
<宽度优先顺序与深度优先顺序之间的比较>
尽管它取决于八叉树的结构(分支的数目或LoD的数目(层的数目)),但八叉树通常是宽的(最低LoD中的节点的数目大于LoD的数目)。因此,在以宽度优先顺序执行解码的情况下,与以深度优先顺序执行解码的情况相比,用于解码的存储器容量(用于数据保持)增加的可能性更高。
图8示出了在宽度优先顺序的情况与深度优先顺序的情况之间的解码时要使用的存储器容量的比较的示例。图8所示的图表比较了当解码具有5百万个点和20个LoD(深度)的八叉树(5百万个点,20个LoD)的编码数据时要使用的存储器的容量。图表的左边的条集合表示在解码从顶部开始的10个LoD(10层)的数据的情况下的存储器的容量(lod10),图表的中间的条集合表示在解码从顶部开始的15个LoD(15层)的数据的情况下的存储器的容量(lod15),并且图表的右边的条集合表示在解码从顶部开始的20个LoD(20层)的数据的情况下的存储器的容量(lod20)。此外,在每个集合中左侧的白条表示在深度优先顺序的情况下的存储器的容量,并且右侧的灰条表示在宽度优先顺序的情况下的存储器的容量。
从图8的图表中可以明显看出,在每种情况下,用于解码的存储器的容量在宽度优先顺序的情况下比在深度优先顺序的情况下更大。此外,八叉树越大(节点的数目越大),则差异越大。
当解码所需的存储器的容量以这种方式增加时,解码器必须配备有大容量的存储器,这可能导致解码器的生产成本增加。除此之外,还存在将难以减小解码器的大小的可能性。此外,除了保存关于处理节点的信息之外,可以用于处理的存储器的容量变小,因此,存在解码速度将变低的可能性。
然而,这些方面的影响程度取决于八叉树的结构(例如,LoD的数目、节点的数目等)和解码器的硬件的性能(例如,存储器容量等)。例如,在解码器的存储器容量充分大于解码时要使用的存储器的容量的情况下,取决于搜索顺序的处理负荷的波动的影响则小。
此外,与以深度优先顺序执行编码的情况相比,在以宽度优先顺序执行编码的情况下,可以更有效地防止编码效率的降低(通常可以提高编码效率)。
<最佳搜索顺序>
也就是说,最佳搜索顺序取决于八叉树的结构、解码器硬件的性能(例如存储器容量)、优先考虑什么(例如优先考虑编码效率的提高,或者优先考虑解码器的存储器容量的降低)等。也就是说,使得以宽度优先顺序进行解码并不总是最佳的。换言之,使得以宽度优先顺序进行解码不一定是最佳的。
因此,如在图3所示的表中从顶部开始的第二行中所描述的,对八叉树进行编码,使得可以通过除宽度优先方法之外的方法来解码八叉树的编码数据。也就是说,对八叉树进行编码,使得可以以各种各样的处理顺序对八叉树的编码数据进行解码。
更具体地,例如,在针对与点云数据相对应的八叉树的每层初始化(重置)上下文之后,对八叉树进行编码。例如,对八叉树进行编码的图像处理装置包括编码单元,该编码单元在针对与点云数据相对应的八叉树的每层初始化(重置)上下文之后对八叉树进行编码。
以这种方式,可以允许解码器以各种各样的处理顺序来解码八叉树的编码数据。因此,可以使解码器以更适当的处理顺序解码八叉树的编码数据。
此外,例如,选择宽度优先顺序或深度优先顺序作为与点云数据相对应的八叉树的编码数据的解码顺序,并且以选择的解码顺序对该编码数据进行解码。例如,解码八叉树的编码数据的图像处理装置包括解码单元,该解码单元选择宽度优先顺序或深度优先顺序作为与点云数据相对应的八叉树的编码数据的解码顺序,并且以选择的解码顺序对编码数据进行解码。
利用这种布置,解码器可以以各种各样的处理顺序解码八叉树的编码数据。也就是说,解码器可以选择更适当的处理顺序,并且以更适当的处理顺序对八叉树的编码数据进行解码。
<类型1>
例如,如在图3中从顶部开始的第三行中所描述的(类型1),在针对与点云数据相对应的八叉树的每层初始化上下文之后对八叉树进行编码的方法可以是彼此独立地编码八叉树的各个层的方法。
例如,如图9中的带虚线的箭头所示,在八叉树的LoD之间不进行参考的情况下执行编码。也就是说,每个LoD被独立地编码。更具体地,如图10所示,例如,以与宽度优先顺序相同的顺序执行算术编码,并且进一步,在每个LoD的第一节点处初始化算术编码(上下文)。
也就是说,在该示例的情况下,按以下顺序对各个节点的数据执行算术编码:N、G、U、D、K、R、X、B、F、I、M、P、T、W、Z、A、C、E、H、J、L、O、Q、S、V和Y。在算术编码中,从前一节点的编码结果获得上下文,根据上下文选择概率表,并利用选择的概率表执行算术编码处理。然而,在这种类型1的情况下,在节点N、节点G、节点D、节点B和节点A处初始化算术编码(上下文)。
在这种类型1的情况下,可以如以上参照图4和图5描述的宽度优先顺序的情况那样逐个LoD地对各个节点进行编码。因此,编码器可以防止编码效率的降低(或者通常提高编码效率)。
此外,在这种类型1的情况下,在每个LoD的第一节点处初始化算术编码。因此,编码器可以对第一节点执行算术编码,而不参考高一级的LoD的最后节点的处理结果。也就是说,编码器可以独立地处理每个LoD。因此,例如,编码器可以并行化用于各个LoD的编码处理(彼此并行地编码各个LoD)。例如,在可以并行执行多个处理的情况下,编码器可以通过以这种方式并行地对各个LoD进行算术编码来以更高的速度执行编码。
此外,由于如上所述彼此独立地对各个LoD执行算术编码(在每个LoD的第一节点与高一级的LoD的最后节点之间,不存在算术编码中的依赖关系),因此,在这种类型1的情况下,与该算术编码兼容的解码(或算术解码)中的处理顺序(也称为解码顺序)不一定是宽度优先顺序。例如,解码器可以选择宽度优先顺序(图5)或深度优先顺序(图7)作为通过这种类型1的编码而生成的八叉树编码数据的解码顺序。也就是说,解码器可以以各种各样的处理顺序来解码八叉树的编码数据。因此,解码器可以选择更适当的处理顺序,并且以更适当的处理顺序解码八叉树的编码数据。
注意,在这种类型1的情况下,父节点与子节点之间的依赖关系对于恢复位置是必要的。也就是说,关于处理目标节点的父节点的信息是必要的。此外,在比特流中,报头信息可以包含表示每个LoD的第一节点的数据位置的信息,使得可以直接访问处理目标LoD的第一节点的编码数据。利用这种布置,通过参考报头信息,可以更容易地访问(或读出)比特流中的期望LoD的第一节点的编码数据。也就是说,可以以更高的速度执行解码(或者防止解码处理的负荷的增加(或者通常降低解码处理的负荷))。
<类型2>
例如,如图3中从顶部开始的第四行所示(类型2),在针对与点云数据相对应的八叉树的每层初始化上下文之后对八叉树进行编码的方法可以是通过使用其父节点的概率表来编码八叉树的每个LoD的第一节点的方法。
例如,如图11中的带虚线的箭头所示,在对八叉树的每个LoD的第一节点编码时,使用其父节点的概率表。更具体地,如图12所示,例如,以与宽度优先顺序相同的顺序执行算术编码,并且进一步,在每个LoD的第一节点处初始化算术编码(上下文)。此外,在每个LoD的第一节点处继承(复制)父节点的概率表,并利用概率表执行算术编码。
也就是说,在该示例的情况下,按以下顺序对各个节点的数据执行算术编码:N、G、U、D、K、R、X、B、F、I、M、P、T、W、Z、A、C、E、H、J、L、O、Q、S、V和Y。然而,在这种类型2的情况下,在节点N、节点G、节点D、节点B和节点A处初始化算术编码(上下文)。此外,在节点N、节点G、节点D、节点B和节点A处,各个父节点(在节点G的情况下是节点N,在节点D的情况下是节点G,在节点B的情况下是节点D,在节点A的情况下是节点B)的概率表被复制(拷贝),并且在算术编码中使用复制的概率表。
通过这种布置,可以如类型1的情况那样逐个LoD地对各个节点进行编码。因此,编码器可以防止编码效率的降低(或者通常提高编码效率)。
此外,在这种类型2的情况下,如在类型1的情况下那样,在每个LoD的第一节点处初始化算术编码。因此,编码器可以对第一节点执行算术编码,而不参考高一级的LoD的最后节点的处理结果。
此外,在这种类型2的情况下,在每个LoD的第一节点的算术编码中使用父节点的概率表。因此,与类型1的情况相比,编码器可以更有效地防止编码效率的降低(或者通常提高编码效率)。
此外,在这种类型2的情况下,在各个LoD的第一节点之间存在依赖关系,但是其他节点在LoD之间彼此独立。因此,对于除了各个LoD的第一节点之外的节点,编码器可以彼此并行地对各个LoD执行算术编码。例如,在可以并行执行多个处理的情况下,编码器可以通过以这种方式并行地对各个LoD进行算术编码来以更高的速度执行编码。
此外,如类型1的情况那样,在每个LoD的第一节点与高一级的LoD的最后节点之间没有算术编码依赖性。因此,在这种类型2的情况下的算术解码中的解码顺序也不一定是宽度优先顺序。例如,解码器可以选择宽度优先顺序(图5)或深度优先顺序(图7)作为通过这种类型2的编码而生成的八叉树编码数据的解码顺序。也就是说,解码器可以以各种各样的处理顺序来解码八叉树的编码数据。因此,解码器可以选择更适当的处理顺序,并且以更适当的处理顺序对八叉树的编码数据进行解码。
注意,在这种类型2的情况下,父节点与子节点之间的依赖关系对于恢复位置是必要的。也就是说,关于处理目标节点的父节点的信息是必要的。此外,在比特流中,报头信息可以包含表示每个LoD的第一节点的数据位置的信息,使得可以直接访问处理目标LoD的第一节点的编码数据。利用这种布置,通过参考报头信息,可以更容易地访问(或读出)比特流中的期望LoD的第一节点的编码数据。也就是说,可以以更高的速度执行解码(或者防止解码处理的负荷的增加(或者通常降低解码处理的负荷))。
<类型3>
例如,如图3中从顶部开始的第五行所示(类型3),在针对与点云数据相对应的八叉树的每层初始化上下文之后对八叉树进行编码的方法可以是通过使用先前帧的预定节点的概率表来编码八叉树的每个LoD的第一节点的方法。
例如,如图13中的带虚线的箭头所示,在对帧1的八叉树的每个LoD的第一节点进行编码时,使用先前帧(帧0)的八叉树的预定节点的概率表。更具体地,如图14所示,例如,以与宽度优先顺序相同的顺序对帧1的各个节点执行算术编码。此外,在每个LoD的第一节点处初始化算术编码(上下文)。此外,在每个LoD的第一节点处,继承(拷贝)帧0的预定节点的概率表,并且利用概率表执行算术编码。
例如,如图13所示的示例中那样,可以复制(拷贝)帧0中与处理目标节点相同的LoD的最后节点的概率表。
也就是说,在该示例的情况下,按以下顺序对帧1的各个节点的数据执行算术编码:N、G、U、D、K、R、X、B、F、I、M、P、T、W、Z、A、C、E、H、J、L、O、Q、S、V和Y。然而,在这种类型3的情况下,在节点N、节点G、节点D、节点B和节点A处初始化算术编码(上下文)。此外,在帧1中的节点N是处理目标的情况下,复制(拷贝)帧0中的节点N的概率表,并利用复制的概率表执行算术编码。此外,在帧1中的节点G是处理目标的情况下,复制(拷贝)帧0中的节点U的概率表,并利用复制的概率表执行算术编码。此外,在帧1中的节点D是处理目标的情况下,复制(拷贝)帧0中的节点X的概率表,并利用复制的概率表执行算术编码。此外,在帧1中的节点B是处理目标的情况下,复制(拷贝)帧0中的节点Z的概率表,并利用复制的概率表执行算术编码。此外,在帧1中的节点A是处理目标的情况下,复制(拷贝)帧0中的节点Y的概率表,并利用复制的概率表执行算术编码。
通过这种布置,如类型1的情况那样,可以逐个LoD地对各个节点进行编码。因此,编码器可以防止编码效率的降低(或者通常提高编码效率)。
此外,在这种类型3的情况下,如类型1的情况下那样,在每个LoD的第一节点处初始化算术编码。因此,编码器可以对第一节点执行算术编码,而不参考高一级的LoD的最后节点的处理结果。
此外,在这种类型3的情况下,在每个LoD的第一节点的算术编码中使用先前帧中的相同LoD的最后节点的概率表,如图13和图14所示的示例中那样。因此,与类型2的情况相比,编码器可以使用更新了更多次的概率表来执行算术编码。因此,与类型2的情况相比,编码器可以更有效地防止编码效率的降低(或者通常提高编码效率)。
另外,在这种类型3的情况下,如在类型1的情况下那样,彼此独立地对各个LoD执行算术编码,并且因此,编码器可以彼此并行地执行各个LoD的算术编码。例如,在编码器能够并行处理多个处理的情况下,编码器能够通过以这种方式并行地对各个LoD进行算术编码来以更高的速度执行编码。
此外,在类型3的情况下,如类型1的情况下那样,在每个LoD的第一节点与高一级的LoD的最后节点之间没有算术编码依赖性。因此,与该算术编码相对应的解码(其为算术解码)中的处理顺序(也称为解码顺序)可以是宽度优先顺序或深度优先顺序。也就是说,解码器可以以图5所示的处理顺序对各个节点的编码数据执行算术解码,或者可以以图7所示的处理顺序对各个节点的编码数据执行算术解码。也就是说,解码器可以以各种各样的处理顺序来解码八叉树的编码数据。因此,解码器可以选择更适当的处理顺序,并且以更适当的处理顺序对八叉树的编码数据进行解码。
注意,在这种类型3的情况下,父节点与子节点之间的依赖关系对于恢复位置是必要的。也就是说,关于处理目标节点的父节点的信息是必要的。此外,在比特流中,报头信息可以包含表示每个LoD的第一节点的数据位置的信息,使得可以直接访问处理目标LoD的第一节点的编码数据。利用这种布置,通过参考头信息,可以更容易地访问(或读出)比特流中的期望LoD的第一节点的编码数据。也就是说,可以以更高的速度执行解码(或者防止解码处理的负荷的增加(或者通常降低解码处理的负荷))。
注意,要参考其概率表的节点(要参考的节点)是先前帧中的任何节点(任何期望节点的概率表可以被继承并在算术解码中使用)。例如,如图15所示的示例中那样,帧0中的最后节点的概率表可以被复制(拷贝)。例如,如图16所示,在帧1中的节点N、节点G、节点D、节点B或节点A是处理目标的情况下,可以初始化算术编码,可以复制(拷贝)作为帧0中的最后节点的节点Y的概率表,并且进一步,可以利用复制的概率表执行算术编码。
利用这种布置,与以上参照图13和图14描述的其他示例的情况相比,可以利用更新了更多次的概率表来执行算术编码。因此,编码器可以更有效地防止编码效率的降低(或通常提高编码效率)。
注意,在上面的描述中,参考紧接在当前帧之前处理的先前帧的概率表。然而,用于该概率表的参考帧是任何适当的帧。例如,可以参考当前帧之前两个或更多个帧被处理的帧中的期望节点的概率表。
<类型4>
此外,如图3中从顶部开始的的第六行所示,例如,可以组合使用上述类型0至3(类型4)。
例如,如图17所示,可以组合使用类型1至3中的任何一种和类型0。也就是说,对于八叉树的一些层,针对每层初始化上下文,并且执行编码。对于其他层,可以利用紧接在当前节点之前处理的节点的处理结果作为上下文对每个节点进行编码。
在图17所示的示例的情况下,对于从最高层到节点D至X的层的每个LoD,使用类型0,其是使用紧接在当前节点之前的节点的处理结果来编码每个节点的方法。同时,对于从节点B至Z的层到最低层的每个LoD,使用类型1,其是彼此独立地编码八叉树的各个层的方法。
由于类型0具有比类型1更高的编码效率,因此可以以这种方式防止上层中的编码效率的降低,并且可以在下层的解码中以各种各样的处理顺序来解码八叉树的编码数据。例如,解码器以深度优先顺序对层执行解码,并且与以宽度优先顺序对所有层进行解码的情况相比,这可以更有效地防止存储器使用的增加。
注意,可以采用任何组合。例如,不一定采用以上示例,而是可以在期望的层中切换类型。此外,类型1可以用在上层中,而类型0可以用在下层中。利用这种布置,与上述示例相反,可以防止下层中的编码效率的降低,并且可以在上层的解码中以各种各样的处理顺序解码八叉树的编码数据。
解码频率通常在上层节点中比在下层节点中更高。因此,例如,类型1被用于上层,而类型0被用于下层,从而可以为具有较高解码频率的上层设置各种各样的解码顺序,并且可以防止具有较低解码频率的下层中的编码效率的降低。
此外,由于在八叉树中上层中的节点数目较少,因此上层中的存储器使用比下层中的少。因此,例如,在上层中,解码顺序对存储器使用的影响较小。因此,类型0用在上层中,而类型1用在下层中,使得可以为其中解码顺序对存储器使用的影响相对大的下层设置各种各样的解码顺序,并且可以防止其中影响相对小的上层中的编码效率的降低。
此外,在以上描述中,已经说明了类型0和类型1的组合。然而,类型2或类型3也可以与类型0组合,如在类型1的以上情况中那样。换言之,类型1到3可以仅用于一些LoD中。
此外,如图18所示,例如,可以组合使用类型1至3中的一些。也就是说,可以使用以下方法中的至少两种来编码八叉树:独立于其他层对处理目标层进行编码的方法;使用高一级的层的第一节点的概率表对处理目标层的第一节点进行编码的方法;以及使用先前帧的预定节点的概率表对处理目标层的第一节点进行编码的方法。
在图18所示的示例的情况下,对于从最高层到节点D至X的层的每个LoD,使用类型2,其是利用高一级的层的第一节点的概率表对处理目标层的第一节点进行编码的方法。同时,对于从节点B至Z的层到最低层的每个LoD,使用类型1,其是独立于其他层对处理目标层进行编码的方法。
由于类型2具有比类型1更高的编码效率,因此与在所有层中使用类型1的情况相比,可以以这种方式更有效地防止上层中的编码效率的降低。此外,由于类型1可以比类型2更有效地彼此独立地对各个LoD进行编码,因此与在所有层中使用类型2的情况相比,可以以更高的速度以这种方式执行下层的编码。
注意,可以采用任何组合。例如,不一定采用以上示例,而是可以在期望的层中切换类型。此外,类型2可以用在上层中,而类型1可以用在下层中。此外,可以使用除了类型1和类型2的以上组合之外的组合。例如,可以使用类型2和类型3的组合、类型1和类型3的组合等。此外,可以组合三种或更多种类型。而且,相同类型可以与另一类型组合使用多次。例如,类型0、类型1和类型0可以从最高层开始以这种顺序使用。当然,可以将类型0与这些类型的组合进一步组合。例如,可以组合类型0、类型1、类型2和类型3中的全部。在任何情况下,如在类型1和类型2的以上示例组合的情况下那样,可以实现取决于各个类型的特征的效果。换言之,类型1至4可以仅用于一些LoD。
应当使用哪种示例组合取决于使用情况。例如,可以根据数据使用频率来确定对每个LoD的处理量和资源使用的分配。
注意,在类型1的情况下,每个LoD被独立地编码。也就是说,在这种情况下,每个LoD被转变成切片。不一定对每个LoD执行这样的切片。也就是说,可以在除了每个LoD的第一个节点(或最后节点)之外的位置处执行切片(消除编码依赖关系)。也就是说,可以在除了每个LoD的第一节点之外的节点处重置算术编码。
例如,多个LoD可以被转变成一个切片。例如,类型0和类型1如上所述被组合,从而可以形成包含多个LoD的这样的切片。
而且,例如,可以在位于LoD中间的节点处执行切片。例如,类型1被应用于切片中间的类型0,从而可以执行这样的切片。也就是说,上述多种类型的组合不必基于LoD,而是可以在LoD中间的节点处组合类型。
如上所述,可以采用任何适当的切片方法(任何适当的切片配置)。例如,编码器可以形成每个切片,使得各个切片的处理量变得更均匀。例如,编码器可以形成每个切片,使得各个切片中的节点的数目变得更均匀。由于以这种方式使得各个切片的处理量更均匀,所以在编码器或解码器并行处理各个切片的情况下,负荷可以更均匀地分布。
替选地,编码器可以形成每个切片,使得例如在解码各个切片时的资源使用(例如,存储器使用)的量变得更均匀。此外,编码器可以形成每个切片,使得例如各个切片的代码量(比特流大小)变得更均匀。
<类型的选择>
此外,可以选择包括以上类型0至4中的至少一个的多个类型作为候选,并且编码器可以从多个候选中选择期望的类型并使用该类型进行编码。例如,编码器可以从包括以下方法中的至少一个的多个候选中选择至少一个方法:彼此独立地编码八叉树的各个层的方法;使用高一级的层的第一节点的概率表对八叉树的每层的第一节点进行编码的方法;以及使用先前帧的预定节点的概率表来编码八叉树的每层的第一节点的方法。然后,编码器可以使用选择的方法对八叉树进行编码。
例如,编码器可以从诸如用户的外部接收类型指定(编码参数),基于该指定从多个候选中选择类型,并且使用选择的方法进行编码。通过这样做,编码器可以以各种各样的方法编码八叉树。因此,编码器可以通过与各种各样规格的解码器兼容的方法来编码八叉树。
<类型信息的信号>
注意,可以将关于上述编码类型的信息发送到解码器侧。例如,编码器可以生成比特流,该比特流包含表示从如上所述的多个候选中选择的编码类型的信息以及通过编码生成的八叉树编码数据。例如,编码器可以发送(用信号发送)关于编码类型的信息作为比特流中的报头信息。例如,如图19所示,可以在作为关于每个帧的报头信息的帧报头(FrameHeader)或者作为关于每个LoD的报头信息的LoD报头(LoD Header)中发送(用信号发送)关于编码类型的信息,该报头信息被包括在比特流中。
在图19所示的示例的情况下,在帧报头中用信号发送诸如类型(Type)、切片数目(SliceNum)和偏移(Offset)的信息。类型(Type)是表示应用于帧的编码类型的标识信息。例如,在如上所述可以应用类型0至4的情况下,设置“0”至“4”中的一个。这种类型(Type)的值当然是任何适当的值。通过参考这种类型(Type),解码器可以更容易地识别应用于帧的编码类型。因此,可以更容易地选择用于比特流的适当解码方法(解码顺序)。
切片数目(SliceNum)是表示包含在帧中的切片的数目的信息。例如,在应用类型1的情况下,在中间的节点处重置算术编码,并且形成切片。在切片数目(SliceNum)中设置表示以这种方式形成的切片数目的值。通过参考该切片数目(SliceNum),解码器能够更容易地识别切片数目,并且因此能够更容易且更适当地使各个切片的解码并行化。注意,可以仅在形成多个切片的情况下,或者在执行类型1的编码的情况(Type=1或4的情况)下,用信号发送切片数目(SliceNum),但是在其他情况下可以跳过。
偏移(Offset)是表示帧的比特流中包含在帧中的每个切片的数据的位置的信息。例如,在偏移(Offset)中设置表示帧中包括的每个切片的数据的开始地址的值。通过参考该偏移(Offset),解码器可以更容易地访问期望的切片的编码数据(比特流)。注意,该偏移(Offset)可以仅在形成多个切片的情况下或者在执行类型1的编码的情况(Type=1或4的情况)下用信号发送,但是在其他情况下可以跳过。
此外,在图19所示的示例的情况下,在LoD报头中用信号发送诸如类型(Type)和大小(Size)的信息。类型(Type)是表示应用于LoD的编码类型的标识信息。例如,在如上所述可以应用类型0至4的情况下,设置“0”至“4”中的一个。这种类型(Type)的值当然是任何适当的值。通过参考这种类型(Type),解码器可以更容易地识别应用于LoD的编码类型。因此,可以更容易地选择用于LoD的比特流的适当的解码方法(解码顺序)。注意,这种类型(Type)可以仅在编码类型随LoD变化的情况下用信号发送,或者在帧报头中Type=4的情况下用信号发送,但是在其他情况下可以跳过。
大小(Size)是表示LoD的编码数据(比特流)的大小(代码量)的信息。通过参考该信息,解码器可以更容易地从比特流中提取LoD的编码数据。
当然,可以在除上述示例之外的报头信息中用信号发送以上信息。此外,以上信息可以存储在比特流中的任何适当位置。此外,以上信息可以作为不同于八叉树的比特流的数据(例如,该信息与八叉树的比特流相关联)被发送(用信号发送)到解码器侧。
<其他方面>
注意,在上述示例中,已经描述了使用上下文的算术编码(例如,基于上下文的自适应二进制算术编码(CABAC))作为八叉树数据的编码方法。然而,八叉树数据的编码方法仅需要是使用上下文的无损编码(熵编码),而不必是上述算术编码。例如,编码方法可以是非二进制编码方法。此外,编码方法可以是使用多个上下文的编码方法。
<2.第一实施方式>
<编码装置>
接下来,描述实现所述编码的配置。图20是示出作为应用了本技术的图像处理装置的实施方式的编码装置的示例配置的框图。图20所示的编码装置300是使用体素和八叉树来编码诸如点云的3D数据的装置。
注意,图20示出了处理单元、数据流等中的主要部分,并且不一定示出了它们中的全部。也就是说,在编码装置300中,可以存在在图20中未示出为块的处理单元,或者可以存在在图20中未示出为箭头等的处理或数据流。这也适用于用于说明编码装置300中的处理单元等的其他附图。
如图20所示,编码装置300包括体素生成单元311、八叉树生成单元312和无损编码单元313。
体素生成单元311执行与体素的生成相关的处理。例如,体素生成单元311获取输入到编码装置300的点云数据。此外,体素生成单元311还针对包括所获取的点云数据的区域设置边界框。体素生成单元311还划分边界框,并设置体素,以量化关于点云数据的位置信息。体素生成单元311将以这种方式生成的体素数据提供给八叉树生成单元312。
八叉树生成单元312执行与八叉树生成相关的处理。例如,八叉树生成单元312获取从体素生成单元311提供的体素数据。此外,八叉树生成单元312还根据该体素数据生成八叉树。八叉树生成单元312将所生成的八叉树数据提供给无损编码单元313。
无损编码单元313执行与八叉树数据的无损编码相关的处理。例如,无损编码单元313获取从八叉树生成单元312提供的八叉树数据。此外,无损编码单元313还获取从编码装置300的外部输入的编码参数。该编码参数是指定应用的编码类型的信息,并且例如通过用户操作输入或从外部装置等提供。无损编码单元313利用由该编码参数指定的类型对八叉树数据进行编码,并且生成八叉树的编码数据。无损编码单元313生成包含八叉树的编码数据的比特流,并且将该比特流输出到编码装置300的外部(将该比特流发送到解码侧)。
注意,这些处理单元(体素生成单元311、八叉树生成单元312和无损编码单元313)具有任何适当的配置。例如,每个处理单元可以形成有实现上述处理的逻辑电路。替选地,每个处理单元可以例如包括中央处理单元(CPU)、只读存储器(ROM)、随机存取存储器(RAM)等,并且使用这些部件执行程序,以执行上述处理。每个处理单元当然可以具有这两种配置,并且通过逻辑电路执行上述处理中的一些处理,并且通过执行程序来执行其他处理。各个处理单元的配置可以彼此独立。例如,一个处理单元可以利用逻辑电路执行上述处理中的一些处理,而其他处理单元通过执行程序来执行上述处理。此外,某个其他处理单元可以利用逻辑电路并且通过执行程序来执行上述处理。
如上所述,无损编码单元313与多种类型的编码兼容,并且因此可以通过各种各样的方法对八叉树进行编码。特别地,无损编码单元313与通过针对八叉树的每层初始化上下文来执行编码的类型兼容。因此,无损编码单元313(编码装置300)可以执行编码,使得解码器可以以各种各样的处理顺序来解码八叉树的编码数据。除此之外,当无损编码单元313(编码装置300)执行这样的类型的编码时,解码器可以选择更适当的处理顺序,并且以更适当的处理顺序对八叉树的编码数据进行解码。
<无损编码单元>
图21是示出无损编码单元313的典型示例配置的框图。在该示例的情况下,无损编码单元313准备多种类型——包括通过针对每个八叉树层初始化上下文来执行编码的类型——的编码作为候选,从多个候选中选择由编码参数指定的编码类型,并且通过选择的类型对八叉树进行编码。
如图21所示,无损编码单元313包括编码控制单元321、类型选择单元322、类型0编码单元323、类型1编码单元324、类型2编码单元325、类型3编码单元326和比特流生成单元327。
编码控制单元321执行与编码控制相关的处理。例如,编码控制单元321获取从编码装置300的外部提供的编码参数。此外,编码控制单元321还向类型选择单元322通知由编码参数指定的类型。此外,编码控制单元321还控制从类型0编码单元323至类型3编码单元326的处理单元中的与由编码参数指定的类型兼容的处理单元,使得该类型的编码被执行。此外,编码控制单元321还生成包括如上参照图19所述的信息的帧报头和LoD报头,并且将帧报头和LoD报头提供给比特流生成单元327。
类型选择单元322执行与编码类型的选择相关的处理。例如,类型选择单元322获取从八叉树生成单元312提供的八叉树数据。此外,在编码控制单元321的控制下,类型选择单元322还将八叉树数据提供给从类型0编码单元323至类型3编码单元326的处理单元中的与应用的编码类型兼容的处理单元(或切换八叉树数据提供目的地)。例如,类型选择单元322可以选择要应用于八叉树数据的每个LoD的编码类型(或者针对每个LoD切换八叉树数据提供目的地)。
例如,类型0编码单元323执行与如以上参照图4、图5所述的类型0编码相关的处理,以及执行在<1.八叉树编码和解码顺序>中的<宽度优先顺序>中的其他处理。例如,类型0编码单元323获取从类型选择单元322提供的八叉树数据。类型0编码单元323还对八叉树数据执行类型0编码,以生成编码数据。也就是说,类型0编码单元323以宽度优先顺序对八叉树数据的每个节点的数据进行编码。类型0编码单元323将通过类型0编码生成的编码数据提供给比特流生成单元327。类型0编码单元323在编码控制单元321的控制下执行这些处理。
例如,类型1编码单元324执行与如以上参照图9、图10所述的类型1编码相关的处理,以及执行在<1.八叉树编码和解码顺序>中的<类型1>中的其他处理。例如,类型1编码单元324获取从类型选择单元322提供的八叉树数据。此外,类型1编码单元324还对八叉树数据执行类型1编码,以生成编码数据。也就是说,类型1编码单元324彼此独立地对各个八叉树层进行编码。类型1编码单元324将通过类型1编码生成的编码数据提供给比特流生成单元327。类型1编码单元324在编码控制单元321的控制下执行这些处理。
例如,类型2编码单元325执行与如以上参照图11、图12所述的类型2编码相关的处理,以及执行在<1.八叉树编码和解码顺序>中的<类型2>中的其他处理。例如,类型2编码单元325获取从类型选择单元322提供的八叉树数据。此外,类型2编码单元325还对八叉树数据执行类型2编码,以生成编码数据。也就是说,类型2编码单元325使用其父节点的概率表对八叉树的每个LoD的第一节点进行编码。类型2编码单元325将通过类型2编码生成的编码数据提供给比特流生成单元327。类型2编码单元325在编码控制单元321的控制下执行这些处理。
例如,类型3编码单元326执行与如以上参照图13、图14所述的类型3编码相关的处理,以及执行在<1.八叉树编码和解码顺序>中的<类型3>中的其他处理。例如,类型3编码单元326获取从类型选择单元322提供的八叉树数据。此外,类型3编码单元326还对八叉树数据执行类型3编码,以生成编码数据。也就是说,类型3编码单元326使用先前帧的预定节点的概率表对八叉树的每个LoD的第一节点进行编码。类型3编码单元326将通过类型3编码生成的编码数据提供给比特流生成单元327。类型3编码单元326在编码控制单元321的控制下执行这些处理。
比特流生成单元327执行与比特流的生成相关的处理。例如,比特流生成单元327获取从类型0编码单元323至类型3编码单元326的编码单元提供的八叉树的编码数据。此外,比特流生成单元327还获取从编码控制单元321提供的报头信息(例如,帧报头和LoD报头)。此外,比特流生成单元327还生成包含从类型0编码单元323至类型3编码单元326的编码单元提供的编码数据以及从编码控制单元321提供的报头信息的比特流。然后,比特流生成单元327将生成的比特流输出到编码装置300的外部。
注意,这些处理单元(编码控制单元321至比特流生成单元327)各自具有任何适当的配置。例如,每个处理单元可以形成有实现上述处理的逻辑电路。替选地,每个处理单元可以例如包括中央处理单元(CPU)、只读存储器(ROM)、随机存取存储器(RAM)等,并且使用这些部件执行程序,以执行上述处理。每个处理单元当然可以具有这两种配置,并且通过逻辑电路执行上述处理中的一些处理,并且通过执行程序来执行其他处理。各个处理单元的配置可以彼此独立。例如,一个处理单元可以通过逻辑电路执行上述处理中的一些处理,而其他处理单元通过执行程序来执行上述处理。此外,某个其他处理单元可以通过逻辑电路并且通过执行程序来执行上述处理。
注意,由于在八叉树的中间切换要应用的编码类型,因此无损编码单元313可以采用类型4。编码控制单元321切换编码类型。
如上所述,无损编码单元313可以执行类型0至类型4的编码。因此,无损编码单元313(编码装置300)可以实现如以上在<1.八叉树编码和解码顺序>中描述的各个类型的效果。因此,解码器可以选择更适当的处理顺序,并且以更适当的处理顺序对八叉树的编码数据进行解码。
注意,在以上描述中,无损编码单元313包括类型0编码单元323至类型3编码单元326的编码单元。也就是说,上述编码装置300可以执行类型0至类型3(此处不包括类型4)的四种类型的编码。然而,编码装置300能够执行任何适当类型的编码。例如,编码装置300能够执行除了上述示例之外的类型的编码。
此外,编码装置300兼容的类型的数目是任何适当的数目,并且不限于以上示例。换言之,例如,编码装置300能够执行三种或更少类型的编码,或者能够执行五种或更多类型的编码。
在任一情况下,仅要求无损编码单元313并行地包括编码装置300能够执行的类型的编码单元,如类型0编码单元323至类型3编码单元326的编码单元。也就是说,在图21中示出的示例中,无损编码单元313包括类型0编码单元323至类型3编码单元326的四个编码单元。然而,无损编码单元313不限于该示例,并且可以包括三个或更少编码单元,或者五个或更多编码单元。
<编码处理的流程>
接下来,参照图22和图23中示出的流程图,描述要由编码装置300执行的编码处理的示例流程。
当编码处理开始时,在步骤S301中,编码装置300的体素生成单元311从输入到编码装置300的点云数据生成体素数据。
在步骤S302中,八叉树生成单元312从在步骤S301中生成的体素数据构造八叉树,以宽度优先顺序搜索八叉树,并且生成八叉树数据。
在步骤S303中,无损编码单元313的编码控制单元321接收从编码装置300的外部输入的编码参数。
在步骤S304中,无损编码单元313从在步骤S302中构造的八叉树中选择一个处理目标LoD。无损编码单元313的编码控制单元321以从最高层到最低层的顺序在每一层中选择处理目标LoD。也就是说,在编码控制单元321的控制下,无损编码单元313的类型选择单元322针对从顶部开始的每一个LoD从八叉树生成单元312读取八叉树数据,并且将LoD设置为处理目标。
在步骤S305中,无损编码单元313的编码控制单元321基于在步骤S303中获取的编码参数,确定是否以类型0对处理目标LoD的数据进行编码。如果确定要以类型0执行编码,则类型选择单元322将处理目标LoD的数据提供给类型0编码单元323。然后,处理行进到步骤S306。
在步骤S306中,无损编码单元313执行类型0编码处理,以类型0对处理目标LoD的数据进行编码。稍后将详细描述该类型0编码处理。
当类型0编码处理完成时,处理行进到图23中的步骤S324。此外,另一方面,如果在图22的步骤S305中确定将不以类型0执行编码,则处理行进到步骤S307。
在步骤S307中,无损编码单元313的编码控制单元321基于在步骤S303中获取的编码参数,确定是否以类型1对处理目标LoD的数据进行编码。如果确定要以类型1执行编码,则类型选择单元322将处理目标LoD的数据提供给类型1编码单元324。然后,处理行进到步骤S308。
在步骤S308中,无损编码单元313执行类型1编码处理,以类型1对处理目标LoD的数据进行编码。稍后将详细描述该类型1编码处理。
当类型1编码处理完成时,处理行进到图23中的步骤S324。此外,另一方面,如果在图22的步骤S307中确定将不以类型1执行编码,则处理行进到图23中的步骤S321。
在图23中的步骤S321中,无损编码单元313的编码控制单元321基于在步骤S303中获取的编码参数,确定是否以类型2对处理目标LoD的数据进行编码。如果确定要以类型2执行编码,则类型选择单元322将处理目标LoD的数据提供给类型2编码单元325。然后,处理行进到步骤S322。
在步骤S322中,无损编码单元313执行类型2编码处理,以类型2对处理目标LoD的数据进行编码。稍后将详细描述该类型2编码处理。
当类型2编码处理完成时,处理行进到步骤S324。此外,另一方面,如果在步骤S321中确定将不以类型2执行编码,则类型选择单元322将处理目标LoD的数据提供给类型3编码单元326。然后,处理行进到步骤S323。
在步骤S323中,无损编码单元313执行类型3编码处理,以类型3对处理目标LoD的数据进行编码。稍后将详细描述该类型3编码处理。当类型3编码处理完成时,处理行进到步骤S324。
在步骤S324中,无损编码单元313的编码控制单元321确定是否已经处理了所有LoD。如果确定存在未处理的LoD,则处理返回到图22中的步骤S304,并且重复步骤S304和随后的步骤中的处理。也就是说,在步骤S304中选择新的LoD(未处理的LoD)作为处理目标,并且适当地对处理目标LoD执行步骤S305至S323中的各个处理。
如上所述,适当地对每个LoD执行步骤S304至S324中的处理,并且,如果在步骤S324中确定已经处理了所有LoD,则处理行进到步骤S325。
在步骤S325中,无损编码单元313的编码控制单元321生成帧报头。
在步骤S326中,无损编码单元313(类型0编码单元323至类型3编码单元326的编码单元中之一)生成并编码与上述八叉树数据相对应的属性信息。
在步骤S327中,比特流生成单元327生成包含八叉树数据的编码数据和报头信息的比特流,并且将比特流输出到编码装置300的外部(将比特流发送到解码侧)。
当步骤S327中的处理完成时,编码处理结束。编码装置300对每个帧执行这样的编码处理,以生成每个帧的八叉树数据的比特流。
<类型0编码处理的流程>
接下来,参照图24中示出的流程图来描述要在图22的步骤S306中执行的类型0编码处理的示例流程。
当类型0编码处理开始时,在步骤S341中,编码控制单元321确定处理目标LoD是否是最高级LoD(最高层的LoD)。如果确定处理目标LoD为最高级LoD,则处理行进到步骤S342。
在步骤S342中,类型0编码单元323重置算术编码(的上下文)。
在步骤S343中,类型0编码单元323对处理目标LoD的第一节点进行编码。
当步骤S343中的处理完成时,处理行进到步骤S345。此外,另一方面,如果在步骤S341中确定处理目标LoD不是最高级LoD,则处理行进到步骤S344。
在步骤S344中,类型0编码单元323使用高一级的LoD的最后节点的处理的上下文,对处理目标LoD的第一节点执行算术编码。当步骤S344中的处理完成时,处理行进到步骤S345。
在步骤S345中,类型0编码单元323选择下一节点作为处理目标。
在步骤S346中,类型0编码单元323使用前一节点的处理的上下文对处理目标节点执行算术编码。
在步骤S347中,类型0编码单元323确定处理目标节点是否是处理目标LoD的最后节点。如果确定处理目标节点不是处理目标LoD的最后节点,或者在处理目标LoD中存在未处理的节点,则处理返回到步骤S345。
如果已经对处理目标LoD的每个节点执行了步骤S345至步骤S347中的各个处理,并且在步骤S347中确定处理目标节点是处理目标LoD的最后节点,或者已经处理了处理目标LoD的所有节点,则处理行进到步骤S348。
在步骤S348中,编码控制单元321生成处理目标LoD的LoD报头。编码控制单元321将生成的LoD报头提供给比特流生成单元327。
当步骤S348中的处理完成时,类型0编码处理结束,并且处理返回到图22。
通过以以上方式执行类型0编码处理,无损编码单元313(的编码控制单元321和类型0编码单元323)可以以类型0对处理目标LoD进行编码。因此,可以获得与<1.用于呈现的相机参数的信号>中描述的类型0编码相关联的效果。
<类型1编码处理的流程>
接下来,参照图25中示出的流程图来描述要在图22的步骤S308中执行的类型1编码处理的示例流程。
当类型1编码处理开始时,在步骤S361中,类型1编码单元324重置算术编码(的上下文)。
在步骤S362中,类型1编码单元324对处理目标LoD的第一节点进行编码。
在步骤S363中,类型1编码单元324选择下一节点作为处理目标。
在步骤S364中,类型1编码单元324使用前一节点的处理的上下文对处理目标节点执行算术编码。
在步骤S365中,类型1编码单元324确定处理目标节点是否是处理目标LoD的最后节点。如果确定处理目标节点不是处理目标LoD的最后节点,或者在处理目标LoD中存在未处理的节点,则处理返回到步骤S363。
如果已经对处理目标LoD的每个节点执行了步骤S363至步骤S365中的各个处理,并且在步骤S365中确定处理目标节点是处理目标LoD的最后节点,或者已经处理了处理目标LoD的所有节点,则处理行进到步骤S366。
在步骤S366中,编码控制单元321生成处理目标LoD的LoD报头。编码控制单元321将生成的LoD报头提供给比特流生成单元327。
当步骤S366中的处理完成时,类型1编码处理结束,并且处理返回到图22。
通过以以上方式执行类型1编码处理,无损编码单元313(的编码控制单元321和类型1编码单元324)可以以类型1对处理目标LoD进行编码。因此,可以获得与<1.用于呈现的相机参数的信号>中描述的类型1编码相关联的效果。
<类型2编码处理的流程>
接下来,参照图26中示出的流程图来描述要在图23的步骤S322中执行的类型2编码处理的示例流程。
当类型2编码处理开始时,在步骤S381中,编码控制单元321确定处理目标LoD是否是最高级LoD。如果确定处理目标LoD为最高级LoD,则处理行进到步骤S382。
在步骤S382中,类型2编码单元325重置算术编码(的上下文)。
在步骤S383中,类型2编码单元325对处理目标LoD的第一节点进行编码。
当步骤S383中的处理完成时,处理行进到步骤S387。此外,另一方面,如果在步骤S381中确定处理目标LoD不是最高级LoD,则处理行进到步骤S384。
在步骤S384中,类型2编码单元325从作为处理目标节点的处理目标LoD的第一节点的父节点继承(拷贝)概率表。
在步骤S382中,类型2编码单元325重置算术编码(的上下文)。
在步骤S386中,类型2编码单元325使用在步骤S384中继承的概率表来对处理目标LoD的第一节点进行编码。当步骤S386中的处理完成时,处理行进到步骤S387。
在步骤S387中,类型2编码单元325在第一节点的处理之后保存概率表。该概率表将用于处理低一级的LoD的第一节点。
在步骤S388中,类型2编码单元325选择下一节点作为处理目标。
在步骤S389中,类型2编码单元325使用前一节点的处理的上下文对处理目标节点执行算术编码。
在步骤S390中,类型2编码单元325确定处理目标节点是否是处理目标LoD的最后节点。如果确定处理目标节点不是处理目标LoD的最后节点,或者在处理目标LoD中存在未处理的节点,则处理返回到步骤S388。
如果已经对处理目标LoD的每个节点执行了步骤S388至步骤S390中的各个处理,并且在步骤S390中确定处理目标节点是处理目标LoD的最后节点,或者已经处理了处理目标LoD的所有节点,则处理行进到步骤S391。
在步骤S391中,编码控制单元321生成处理目标LoD的LoD报头。编码控制单元321将生成的LoD报头提供给比特流生成单元327。
当步骤S391中的处理完成时,类型2编码处理结束,并且处理返回到图23。
通过以以上方式执行类型2编码处理,无损编码单元313(的编码控制单元321和类型2编码单元325)可以以类型2对处理目标LoD进行编码。因此,可以获得与<1.用于呈现的相机参数的信号>中描述的类型2编码相关联的效果。
<类型3编码处理的流程>
接下来,参照图27中示出的流程图来描述要在图23的步骤S323中执行的类型3编码处理的示例流程。
当类型3编码处理开始时,在步骤S411中,类型3编码单元326从紧接在处理目标帧之前处理的帧(也被称为先前帧)的预定节点继承(拷贝)概率表。
在步骤S412中,类型3编码单元326重置算术编码(的上下文)。
在步骤S413中,类型3编码单元326使用在步骤S411中继承的概率表来对处理目标LoD的第一节点进行编码。
在步骤S414中,类型3编码单元326选择下一节点作为处理目标。
在步骤S415中,类型3编码单元326使用前一节点的处理的上下文对处理目标节点执行算术编码。
在步骤S416中,类型3编码单元326确定处理目标节点是否是处理目标LoD的最后节点。如果确定处理目标节点不是处理目标LoD的最后节点,或者在处理目标LoD中存在未处理的节点,则处理返回到步骤S414。
如果已经对处理目标LoD的每个节点执行了步骤S414至步骤S416中的各个处理,并且在步骤S416中确定处理目标节点是处理目标LoD的最后节点,或者已经处理了处理目标LoD的所有节点,则处理行进到步骤S417。
在步骤S417中,类型3编码单元326在处理目标LoD的“预定节点”的编码之后保存概率表。该“预定节点”是在下一帧的编码中要参考其概率表的预定节点。例如,如以上在<1.用于呈现的相机参数的信号>中所述,每个LoD的最后节点、帧的最后节点等被设置为“预定节点”。注意,在处理目标LoD中不存在这样的“预定节点”的情况下,跳过步骤S417中的处理。以这种方式保存的概率表在下一帧的处理中被继承(拷贝)。
在步骤S418中,编码控制单元321生成处理目标LoD的LoD报头。编码控制单元321将生成的LoD报头提供给比特流生成单元327。
当步骤S418中的处理完成时,类型3编码处理结束,并且处理返回到图23。
通过以以上方式执行类型3编码处理,无损编码单元313(的编码控制单元321和类型3编码单元326)可以以类型3对处理目标LoD进行编码。因此,可以获得与<1.用于呈现的相机参数的信号>中描述的类型3编码相关联的效果。
通过执行如上所述的每个处理,无损编码单元313可以执行类型0至类型4的编码。因此,无损编码单元313(编码装置300)可以实现如以上在<1.八叉树编码和解码顺序>中描述的各个类型的效果。也就是说,编码装置300在针对与点云数据相对应的八叉树的每层初始化上下文之后对八叉树进行编码。因此,解码器可以选择更适当的处理顺序,并且以更适当的处理顺序对八叉树的编码数据进行解码。
<3.第二实施方式>
<解码装置>
图28是示出作为应用了本技术的图像处理装置的实施方式的解码装置的示例配置的框图。图28中示出的解码装置500是与图20中示出的编码装置300兼容的解码装置。例如,解码装置500是对由编码装置300生成的点云的编码数据(比特流)进行解码并且恢复点云的数据的装置。
注意,图28示出了处理单元、数据流等中的主要部分,并不一定示出它们中的全部。也就是说,在解码装置500中,可以存在在图20中未示出为块的处理单元,或者可以存在在图20中未由箭头等表示的处理或数据流。这也适用于用于说明解码装置500中的处理单元等的其他附图。
如图28所示,解码装置500包括无损解码单元511、八叉树解码单元512和体素解码单元513。
无损解码单元511执行与八叉树数据的编码数据的无损解码相关的处理。例如,无损解码单元511获取输入到解码装置500的(与)点云数据(对应的八叉树数据)的比特流。此外,无损解码单元511还获取从解码装置500的外部输入的解码参数。该解码参数是指定解码顺序的信息,并且例如通过用户操作输入或者从外部装置等提供。无损解码单元511以该解码参数所指定的类型对比特流进行解码,以生成八叉树数据。无损解码单元511将八叉树数据提供给八叉树解码单元512。
八叉树解码单元512执行与八叉树的解码相关的处理。例如,八叉树解码单元512获取从无损解码单元511提供的八叉树数据。此外,八叉树解码单元512还从八叉树数据构造八叉树,并且从八叉树生成体素数据。八叉树解码单元512将生成的体素数据提供给体素解码单元513。
体素解码单元513执行与体素数据的解码相关的处理。例如,体素解码单元513获取从八叉树解码单元512提供的体素数据。此外,体素解码单元513还从获取的体素数据恢复点云。体素解码单元513将以这种方式生成的点云数据输出到解码装置500的外部。
注意,这些处理单元(无损解码单元511、八叉树解码单元512和体素解码单元513)具有任何适当的配置。例如,每个处理单元可以形成有实现上述处理的逻辑电路。此外,每个处理单元还可以例如包括CPU、ROM、RAM等,并且使用它们执行程序,以执行上述处理。每个处理单元当然可以具有这两种配置,并且通过逻辑电路执行上述处理中的一些处理,并且通过执行程序来执行其他处理。各个处理单元的配置可以彼此独立。例如,一个处理单元可以通过逻辑电路执行上述处理中的一些处理,而其他处理单元通过执行程序来执行上述处理。此外,某个其他处理单元可以通过逻辑电路并且通过执行程序来执行上述处理。
如上所述,无损解码单元511与多个解码顺序(宽度优先顺序和深度优先顺序)兼容,选择宽度优先顺序或深度优先顺序作为与点云数据相对应的八叉树的编码数据的解码顺序,并且以选择的解码顺序对编码数据进行解码。因此,解码装置500可以以各种各样的处理顺序对八叉树的编码数据进行解码。因此,解码装置500可以选择更适当的处理顺序,并且以更适当的处理顺序对八叉树的编码数据进行解码。
<无损解码单元>
图29是示出无损解码单元511的典型示例配置的框图。在该示例的情况下,无损解码单元511可以以与针对八叉树的每层初始化上下文之后执行编码的类型相对应的类型来对八叉树的编码数据进行解码。也就是说,无损解码单元511可以正确地解码针对每层初始化上下文之后编码的八叉树的编码数据。此外,无损解码单元511还可以以宽度优先顺序或深度优先顺序对八叉树的编码数据进行解码。
如图29所示,无损解码单元511包括解码控制单元521、报头分析单元522、类型选择单元523、类型0解码单元524、类型1解码单元525、类型2解码单元526和类型3解码单元527。
解码控制单元521执行与解码控制相关的处理。例如,解码控制单元521获取从解码装置500的外部提供的解码参数。此外,解码控制单元521还获取由报头分析单元522分析的报头信息(作为帧报头、LoD报头等用信号发送的各种信息)。此外,解码控制单元521还基于报头信息控制类型选择单元523至类型3解码单元527的各个处理单元,并且以解码参数所指定的解码顺序(宽度优先顺序或深度优先顺序)对八叉树的每个节点的编码数据进行解码。
报头分析单元522执行与报头分析相关的处理。例如,报头分析单元522获取输入到解码装置500的比特流,并且将比特流提供给类型选择单元523。此外,报头分析单元522还分析获取的比特流中包含的报头,并且将报头信息(特别是如以上参照图19所述的关于类型的信息)提供给解码控制单元521。
类型选择单元523执行与编码类型的选择相关的处理。例如,类型选择单元523获取从报头分析单元522提供的比特流。此外,在解码控制单元521的控制下,类型选择单元523还将比特流提供给类型0解码单元524至类型3解码单元527的处理单元中的与应用的编码类型兼容的处理单元(切换比特流提供目的地)。例如,类型选择单元523可以选择要应用于每个节点的编码类型(解码类型)(或者针对每个节点切换比特流提供目的地)。
例如,类型0解码单元524执行与对应于以上参照图4、图5描述的“类型0编码”的类型0解码相关的处理,以及执行在<1.八叉树编码和解码顺序>中的<宽度优先顺序>中的其他处理。例如,类型0解码单元524获取从类型选择单元523提供的比特流。此外,类型0解码单元524还对比特流执行类型0解码,以生成八叉树数据。也就是说,类型0解码单元524使用上下文对处理目标节点的比特流进行算术解码,该上下文是紧接在当前处理目标节点之前处理的节点的处理结果。类型0解码单元524将通过这样的解码获得的八叉树数据提供给八叉树解码单元512。在解码控制单元521的控制下,类型0解码单元524执行这些处理。
例如,类型1解码单元525执行与对应于以上参照图9、图10描述的“类型1编码”的类型1解码相关的处理,以及执行在<1.八叉树编码和解码顺序>中的<类型1>中的其他处理。例如,类型1解码单元525获取从类型选择单元523提供的比特流。此外,类型1解码单元525还对比特流执行类型1解码,以生成八叉树数据。也就是说,类型1解码单元525独立于其他分级层(LoD)的节点对处理目标节点的比特流进行算术解码。类型1解码单元525将通过这样的解码获得的八叉树数据提供给八叉树解码单元512。在解码控制单元521的控制下,类型1解码单元525执行这些处理。
例如,类型2解码单元526执行与对应于以上参照图11、图12描述的“类型2编码”的类型2解码相关的处理,以及执行在<1.八叉树编码和解码顺序>中的<类型2>中的其他处理。例如,类型2解码单元526获取从类型选择单元523提供的比特流。此外,类型2解码单元526还对比特流执行类型2解码,以生成八叉树数据。也就是说,在处理目标节点是处理目标LoD的第一节点的情况下,类型2解码单元526通过使用父节点的概率表来对处理目标节点的比特流进行解码。在处理目标节点是某个其他节点的情况下,类型2解码单元526独立于其他分级层(LoD)的节点对处理目标节点执行算术解码。类型2解码单元526将通过这样的解码获得的八叉树数据提供给八叉树解码单元512。在解码控制单元521的控制下,类型2解码单元526执行这些处理。
例如,类型3解码单元527执行与对应于以上参照图13、图14描述的“类型3编码”的类型3解码相关的处理,以及执行在<1.八叉树编码和解码顺序>中的<类型3>中的其他处理。例如,类型3解码单元527获取从类型选择单元523提供的比特流。此外,类型3解码单元527还对比特流执行类型3解码,以生成八叉树数据。也就是说,在处理目标节点是处理目标LoD的第一节点的情况下,类型3解码单元527通过使用先前帧的预定节点的概率表来对处理目标节点的比特流进行解码。在处理目标节点是某个其他节点的情况下,类型3解码单元527独立于其他分级层(LoD)的节点对处理目标节点执行算术解码。类型3解码单元527将通过这样的解码获得的八叉树数据提供给八叉树解码单元512。在解码控制单元521的控制下,类型3解码单元527执行这些处理。
注意,这些处理单元(解码控制单元521至类型3解码单元527)具有任何适当的配置。例如,每个处理单元可以形成有实现上述处理的逻辑电路。替选地,每个处理单元可以例如包括中央处理单元(CPU)、只读存储器(ROM)、随机存取存储器(RAM)等,并且使用这些部件执行程序,以执行上述处理。每个处理单元当然可以具有这两种配置,并且通过逻辑电路执行上述处理中的一些处理,并且通过执行程序来执行其他处理。各个处理单元的配置可以彼此独立。例如,一个处理单元可以通过逻辑电路执行上述处理中的一些处理,而其他处理单元通过执行程序来执行上述处理。此外,某个其他处理单元可以通过逻辑电路并且通过执行程序来执行上述处理。
在具有以上配置的解码装置500中,无损解码单元511选择宽度优先顺序或深度优先顺序作为与点云数据相对应的八叉树的编码数据的解码顺序,并且以选择的解码顺序对编码数据进行解码。例如,解码控制单元521选择宽度优先顺序或深度优先顺序作为解码顺序,并且根据解码顺序选择处理目标节点。因此,解码装置500可以以各种各样的处理顺序对八叉树编码数据(比特流)进行解码。因此,解码装置500可以选择更适当的处理顺序,并且以更适当的处理顺序对八叉树编码数据进行解码。
如上所述,在图29中示出的示例的情况下,解码控制单元521基于从外部提供的解码参数来选择解码顺序。也就是说,无损解码单元511(解码控制单元521)可以根据外部指令来选择解码顺序。以这种方式,可以从解码装置500的外部指定解码顺序。也就是说,例如,用户等可以指定解码顺序。
注意,实施方式不限于该示例,并且解码控制单元521可以取决于情况来指定解码顺序。例如,解码控制单元521可以基于针对编码数据的解码处理的负荷来选择解码顺序。以这种方式,解码装置500可以在没有来自用户等的任何外部指令的情况下选择解码顺序。
在该时间点,与要用作用于选择解码顺序的参考的解码处理的负荷相关的参数是任何适当的参数。例如,解码控制单元521可以基于解码处理的速度来选择解码顺序。替选地,例如,解码控制单元521可以基于要在解码处理中使用的存储器的容量来选择解码顺序。
同时,在针对要解码的编码数据(比特流)中的八叉树的每层初始化上下文之后未执行编码的情况下,由于每个节点的数据依赖性,不能选择深度优先顺序作为解码顺序。因此,在这样的情况下,解码控制单元521可以选择宽度优先顺序作为解码顺序。
更具体地,在未通过彼此独立地对八叉树的各个层进行编码的方法、使用高一级的层的第一节点的概率表对八叉树的每层的第一节点进行编码的方法、使用先前帧的预定节点的概率表对八叉树的每层的第一节点进行编码的方法、或者作为这些方法的组合的方法来执行编码的情况下,解码控制单元521可以选择宽度优先顺序作为解码顺序。
以这种方式,可以防止处理失败的发生。因此,可以防止由于不必要的处理而导致的负荷的增加。换言之,可以以更高的速度执行解码处理。
注意,可以基于编码数据中的指示八叉树编码方法的信息来确定在针对八叉树的每层初始化上下文之后是否已经执行了编码。例如,基于以上参照图19描述的帧报头或LoD报头中包含的类型,解码控制单元521可以确定在针对八叉树的每层初始化上下文之后是否已经执行了编码。以这种方式,解码装置500可以更容易地确定在针对八叉树的每层初始化上下文之后是否已经执行了编码。
注意,解码控制单元521基于由报头分析单元522分析的报头信息(例如,关于切片数目、偏移、大小等)来控制类型选择单元523,并且使类型选择单元523从比特流中提取与处理目标节点相对应的部分。此外,解码控制单元521还基于报头信息(例如,关于类型等)来指定处理目标节点的编码类型。解码控制单元521控制类型选择单元523,并且使类型选择单元523将提取的处理目标节点的比特流提供给类型0解码单元524至类型3解码单元527的解码单元中的与指定的编码类型兼容的解码单元。此外,解码控制单元521还控制被提供比特流的解码单元(类型0解码单元524至类型3解码单元527的解码单元中之一),并且使解码单元对比特流进行解码。
也就是说,解码装置500可以针对节点的编码类型以适当类型对每个节点的比特流进行解码。因此,解码装置500可以更准确地解码八叉树数据的比特流。
注意,在编码类型是类型4的情况下,每个节点的数据也由类型0至类型3中之一进行编码。此外,在解码中,如上所述,至少可以在逐个节点的基础上控制解码类型。因此,在编码类型是类型4的情况下,解码装置500可以以与编码类型是类型0至类型3中之一的情况下的方式类似的方式执行处理。
注意,在以上描述中,无损解码单元511包括类型0解码单元524至类型3解码单元527的解码单元。也就是说,上述解码装置500可以执行类型0至类型3(此处不包括类型4)的四种类型的解码。然而,解码装置500能够执行任何适当类型的解码。例如,解码装置500能够执行除了上述示例之外的类型的解码。
此外,解码装置500兼容的类型的数目是任何适当的数目,并且不限于以上示例。换言之,例如,解码装置500能够执行三种或更少类型的解码,或者能够执行五种或更多类型的解码。
在任一情况下,仅要求无损解码单元511并行地包括解码装置500能够执行的类型的解码单元,如类型0解码单元524至类型3解码单元527的解码单元。也就是说,在图29中示出的示例中,无损解码单元511包括类型0解码单元524至类型3解码单元527的四个解码单元。然而,无损解码单元511不限于该示例,并且可以包括三个或更少解码单元,或者五个或更多解码单元。
<解码处理的流程>
接下来,参照图30和图31中示出的流程图,描述要由解码装置500执行的解码处理的示例流程。
当解码处理开始时,在步骤S501中,解码装置500的无损解码单元511的报头分析单元522分析输入到解码装置500的比特流中包括的报头(例如,帧报头或LoD报头)。
在步骤S502中,无损解码单元511的解码控制单元521接收解码参数。
在步骤S503中,解码控制单元521基于在步骤S502中获取的解码参数来确定是否以深度优先顺序执行解码。如果确定深度优先顺序将是解码顺序,则处理行进到步骤S504。
在步骤S504中,解码控制单元521基于在步骤S501中分析的报头来确定比特流是否已经以类型1至类型3中之一编码。如果确定已经以类型1至类型3中之一执行编码,则处理行进到步骤S505。
在步骤S505中,解码控制单元521以深度优先顺序选择下一节点。
在步骤S506中,解码控制单元521控制类型选择单元523至类型3解码单元527的处理单元,并且通过适合于编码类型和节点位置的方法对处理目标节点进行解码。
在步骤S507中,八叉树解码单元512以深度优先顺序从通过步骤S506中的处理生成的八叉树数据构造八叉树。当步骤S507中的处理完成时,处理行进到图31中的步骤S521。
此外,另一方面,如果在图30的步骤S503中确定将以宽度优先顺序执行解码,则处理行进到步骤S508。此外,另一方面,如果在步骤S504中确定比特流未以类型1至类型3中的任一种编码(或者例如,已经以类型0编码),则处理行进到步骤S508。
在步骤S508中,解码控制单元521以宽度优先顺序选择下一节点。
在步骤S509中,解码控制单元521控制类型选择单元523至类型3解码单元527的处理单元,并且通过适合于编码类型和节点位置的方法对处理目标节点进行解码。
在步骤S510中,八叉树解码单元512以宽度优先顺序从通过步骤S508中的处理生成的八叉树数据构造八叉树。当步骤S507中的处理完成时,处理行进到图31中的步骤S521。
在图31的步骤S521中,解码控制单元521确定处理目标节点是否是叶节点(任何其他节点(或子节点)不属于的终端节点)。如果确定处理目标节点具有子节点并且处理目标节点不是叶节点,则处理返回到图30中的步骤S503,并且重复步骤S503和随后的步骤中的处理。
此外,另一方面,如果在图31中的步骤S521中确定处理目标节点不具有子节点并且处理目标节点是叶节点,则处理行进到步骤S522。
在步骤S522中,八叉树解码单元512生成与叶节点相对应的体素数据。
在步骤S523中,解码控制单元521确定是否已经处理了所有叶节点。如果确定存在未处理的叶节点,则处理返回到图30中的步骤S503,并且重复步骤S503和随后的步骤中的处理。
此外,另一方面,如果在图31中的步骤S523中确定已经处理了所有叶节点,则处理行进到步骤S524。
在步骤S524中,体素解码单元513从在步骤S522中生成的体素数据生成点云数据。
在步骤S525中,无损解码单元511至体素解码单元513的解码单元处理属性信息,并且将属性信息与上述位置信息组合。当以以上方式恢复点云数据时,体素解码单元513将生成的点云数据输出到解码装置500的外部。
当步骤S525中的处理完成时,解码处理结束。
通过如上所述执行各个处理,解码装置500可以以各种各样的处理顺序对八叉树编码数据(比特流)进行编码。因此,解码装置500可以选择更适当的处理顺序,并且以更适当的处理顺序对八叉树编码数据进行解码。
<4.注意>
<计算机>
上述一系列处理可以由硬件来执行或者可以由软件来执行。在要由软件执行一系列处理的情况下,将形成软件的程序安装到计算机中。这里,例如,计算机可以是结合到专用硬件中的计算机,或者可以是通用个人计算机等,其可以在安装有各种程序时执行各种功能。
图32是示出根据程序执行上述一系列处理的计算机的硬件的示例配置的框图。
在图32中示出的计算机900中,中央处理单元(CPU)901、只读存储器(ROM)902和随机存取存储器(RAM)903通过总线904彼此连接。
输入/输出接口910也连接到总线904。输入单元911、输出单元912、存储单元913、通信单元914和驱动器915连接到输入/输出接口910。
输入单元911例如由键盘、鼠标、麦克风、触摸面板、输入终端等形成。输出单元912例如由显示器、扬声器、输出终端等形成。存储单元913例如由硬盘、RAM盘、非易失性存储器等形成。通信单元914例如由网络接口形成。驱动器915驱动诸如磁盘、光盘、磁光盘或半导体存储器的可移除介质921。
在具有上述配置的计算机中,CPU 901例如经由输入/输出接口910和总线904将存储在存储单元913中的程序加载到RAM 903中,并且执行程序,使得上述一系列处理被执行。RAM 903还根据需要存储CPU 901执行各种处理等所需的数据。
例如,要由计算机(CPU 901)执行的程序可以被记录在作为要使用的封装介质等的可移除介质921上。在这种情况下,当可移除介质921被安装在驱动器915上时,程序可以经由输入/输出接口910安装到存储单元913中。
替选地,该程序可以经由诸如局域网、因特网或数字卫星广播的有线或无线传输介质来提供。在这种情况下,程序可以由通信单元914接收,并且被安装到存储单元913中。
此外,该程序可以被预先安装到ROM 902或存储单元913中。
<应用本技术的目标>
尽管到目前为止已经描述了将本技术应用于点云数据的编码和解码的情况,但是本技术不限于这些示例,而是可以应用于任何标准的3D数据的编码和解码。也就是说,可以采用诸如编码和解码处理的各种处理以及诸如3D数据和元数据的各种数据的任何规范,只要上述本技术不矛盾即可。此外,只要本技术不矛盾,可以省略上述一些处理和规范。
本技术可以应用于任何适当的配置。例如,本技术可以应用于各种电子装置例如卫星广播、诸如有线电视的有线广播、经由因特网的分发、经由蜂窝通信向终端的分发等中的发送器和接收器(例如,电视接收器或便携式电话装置);以及例如在诸如光盘、磁盘和闪存的介质上记录图像并从这些存储介质再现图像的装置(例如,硬盘记录器或相机)。
此外,本技术还可以实现为装置的部件,例如用作系统LSI(大规模集成)等的处理器(例如,视频处理器)、使用多个处理器等的模块(例如,视频模块)、使用多个模块等的单元(例如,视频单元)、或具有添加到单元的其他功能的集合(例如,视频集合)。
此外,本技术还可以应用于例如由多个装置形成的网络系统。例如,本技术可以实现为经由网络由多个装置共享和联合处理的云计算。例如,本技术可以在云服务中实现,该云服务向诸如计算机、视听(AV)装置、便携式信息处理终端和IoT(物联网)装置的任何种类的终端提供与图像(视频图像)相关的服务。
注意,在本说明书中,系统是指多个部件(装置、模块(零件)等)的组件,并且并非所有部件均需要设置在同一壳体中。鉴于此,容纳在不同壳体中并且经由网络彼此连接的多个装置形成系统,并且具有容纳在一个壳体中的多个模块的一个装置也是系统。
<可以应用本技术的领域和用途>
例如,应用本技术的系统、装置、处理单元等可以用在任何适当的领域中,例如用在运输、医疗、犯罪预防、农业、畜牧业、采矿、美容护理、工厂、家用电器、气象学或自然观察中。此外,本技术也可以用于任何适当的目的。
<其他方面>
注意,在本说明书中,“标志”是用于标识多个状态的信息,并且其不仅包括要用于标识真(1)或假(0)这两个状态的信息,而且还包括用于标识三个或更多个状态的信息。因此,该“标志”可以具有的值可以是例如“1”和“0”这两个值,或者三个或更多个值。也就是说,该“标志”可以由任何数目的比特形成,并且可以由一个比特或多个比特形成。此外,关于标识信息(包括标志),不仅标识信息而且关于标识信息相对于参考信息的差异信息均可以被包括在比特流中。因此,在本说明书中,“标志”和“标识信息”不仅包括信息,而且还包括相对于参考信息的差异信息。
此外,可以以与编码数据相关联的任何模式来发送或记录关于编码数据(比特流)的各种信息(例如元数据)。这里,术语“关联”是指例如在处理数据时能够使用其他数据(或链接到其他数据)。也就是说,彼此相关联的数据片段可以被整合为一个数据片段,或者可以被视为分开的数据片段。例如,可以通过与编码数据(图像)不同的传输路径发送与编码数据(图像)相关联的信息。此外,例如,与编码数据(图像)相关联的信息可以记录在与编码数据(图像)不同的记录介质中(或者记录在同一记录介质的不同记录区域中)。注意,该“关联”可以适用于某些数据,而不是整个数据。例如,对于任何适当的单元,例如对于多个帧、每个帧或每个帧中的某个部分,图像和与图像相对应的信息可以彼此相关联。
注意,在本说明书中,例如,术语“组合”、“复用”、“添加”、“整合”、“包括”、“存储”、“包含”、“合并”、“插入”等是指将多个对象组合成一个对象,例如将编码数据和元数据组合成一个数据片段,并且是指上述“关联”的方法。
此外,本技术的实施方式不限于上述实施方式,并且可以在不脱离本技术的范围的情况下对实施方式进行各种修改。
例如,以上描述为一个装置(或一个处理单元)的任何配置可以被划分成多个装置(或处理单元)。相反,以上描述为多个装置(或处理单元)的任何配置可以被组合成一个装置(或一个处理单元)。此外,当然可以将除了上述部件之外的部件添加到每个装置(或每个处理单元)的配置。此外,装置(或处理单元)的一些部件可以并入另一装置(或处理单元)的配置中,只要整个系统的配置和功能保持基本相同即可。
此外,例如,上述程序可以在任何装置中执行。在这种情况下,仅要求装置具有必要的功能(功能块等),使得可以获得必要的信息。
此外,例如,一个装置可以执行一个流程图中的每个步骤,或者多个装置可以执行每个步骤。此外,在一个步骤包括多个处理的情况下,多个处理可以由一个装置执行或者可以由多个装置执行。换言之,一个步骤中包括的多个处理可以作为多个步骤中的处理来执行。相反,被描述为多个步骤的处理可以作为一个步骤共同执行。
此外,例如,由计算机执行的程序可以是用于根据本说明书中描述的顺序按时间顺序根据程序执行步骤中的处理的程序,或者可以是用于并行执行处理或在必要时(例如,存在调用时)执行处理的程序。也就是说,只要不存在矛盾,则可以以与上述顺序不同的顺序执行各个步骤中的处理。此外,根据该程序的步骤中的处理可以与根据另一程序的处理并行执行,或者可以与根据另一程序的处理组合执行。
此外,例如,只要不存在矛盾,则可以独立地实现根据本技术的多种技术中的每一种。当然也可以实现根据本技术的多种技术中的一些技术的组合。例如,在实施方式中之一描述的本技术的部分或全部可以与在实施方式中的另一实施方式中描述的本技术的部分或全部组合实现。此外,上述本技术的部分或全部可以与以上未描述的一些其他技术组合实现。
注意,本技术还可以以下面描述的配置实现。
(1)一种图像处理装置,包括:
编码单元,所述编码单元在针对与点云数据相对应的八叉树的每层初始化上下文之后,对所述八叉树进行编码。
(2)根据(1)所述的图像处理装置,其中,
所述编码单元彼此独立地对所述八叉树的各个层进行编码。
(3)根据(1)或(2)所述的图像处理装置,其中,
所述编码单元使用高一级的层的第一节点的概率表对所述八叉树的每层的第一节点进行编码。
(4)根据(1)至(3)中任一项所述的图像处理装置,其中,
所述编码单元使用先前帧的预定节点的概率表对所述八叉树的每层的第一节点进行编码。
(5)根据(4)所述的图像处理装置,其中,
所述预定节点是与处理目标节点相同层的最后节点。
(6)根据(4)所述的图像处理装置,其中,
所述预定节点是所述先前帧的最后节点。
(7)根据(1)至(6)中任一项所述的图像处理装置,其中,
所述编码单元使用以下中的至少两个来对所述八叉树进行编码:
独立于其他层对处理目标层进行编码的方法;
使用高一级的层的第一节点的概率表对处理目标层的第一节点进行编码的方法;以及
使用先前帧的预定节点的概率表对处理目标层的第一节点进行编码的方法。
(8)根据(1)至(7)中任一项所述的图像处理装置,其中,
所述编码单元
针对所述八叉树的一些层,在针对每层初始化上下文之后,对所述八叉树的一些层执行编码,以及
针对所述八叉树的其他层,利用前一次处理的节点的处理结果作为上下文,对所述八叉树的其他层的每个节点进行编码。
(9)根据(1)至(8)中任一项所述的图像处理装置,其中,
所述编码单元选择包括以下中的至少一个的多个候选中的至少一个,并使用所选择的至少一个方法对所述八叉树进行编码:
彼此独立地对所述八叉树的各个层进行编码的方法;
使用高一级的层的第一节点的概率表对所述八叉树的每层的第一节点进行编码的方法;以及
使用先前帧的预定节点的概率表对所述八叉树的每层的第一节点进行编码的方法。
(10)根据(9)所述的图像处理装置,其中,
所述编码单元生成包含表示所选择的至少一个方法的信息和所述八叉树的编码数据的比特流。
(11)一种图像处理方法,包括:
在针对与点云数据相对应的八叉树的每层初始化上下文之后,对所述八叉树进行编码。
(12)一种图像处理装置,包括:
解码单元,所述解码单元选择宽度优先顺序或深度优先顺序作为与点云数据相对应的八叉树的编码数据的解码顺序,并且以选择的解码顺序对所述编码数据进行解码。
(13)根据(12)所述的图像处理装置,其中,
所述解码单元根据外部指令选择所述解码顺序。
(14)根据(12)或(13)所述的图像处理装置,其中,
所述解码单元基于对所述编码数据的解码处理的负荷来选择所述解码顺序。
(15)根据(14)所述的图像处理装置,其中,
所述解码单元基于所述解码处理的速度来选择所述解码顺序。
(16)根据(14)或(15)所述的图像处理装置,其中,
所述解码单元基于所述解码处理要使用的存储器的容量来选择所述解码顺序。
(17)根据(12)至(16)中任一项所述的图像处理装置,其中,
当针对所述八叉树的每层初始化上下文之后,所述编码数据中的所述八叉树还没有被编码时,所述解码单元选择所述宽度优先顺序作为所述解码顺序。
(18)根据(17)所述的图像处理装置,其中,
当所述编码数据中的所述八叉树还没有通过以下之一或至少两个的组合进行编码时,所述解码单元选择所述宽度优先顺序作为所述解码顺序:
彼此独立地对所述八叉树的各个层进行编码的方法;
使用高一级的层的第一节点的概率表对所述八叉树的每层的第一节点进行编码的方法;以及
使用先前帧的预定节点的概率表对所述八叉树的每层的第一节点进行编码的方法。
(19)根据(17)或(18)所述的图像处理装置,其中,
所述解码单元基于表示在所述编码数据中对所述八叉树进行编码的方法的信息,确定在针对所述八叉树的每层初始化上下文之后是否已经执行了编码。
(20)一种图像处理方法,包括:
选择宽度优先顺序或深度优先顺序作为与点云数据相对应的八叉树的编码数据的解码顺序,并且以选择的解码顺序对所述编码数据进行解码。
参考标记列表
300 编码装置
311 体素生成单元
312 八叉树生成单元
321 编码控制单元
322 类型选择单元
323 类型0编码单元
324 类型1编码单元
325 类型2编码单元
326 类型3编码单元
327 比特流生成单元
500 解码装置
511 无损解码单元
512 八叉树解码单元
513 体素解码单元
521 解码控制单元
522 报头分析单元
523 类型选择单元
524 类型0解码单元
525 类型1解码单元
526 类型2解码单元
527 类型3解码单元。

Claims (20)

1.一种图像处理装置,包括:
编码单元,所述编码单元在针对与点云数据相对应的八叉树的每层初始化上下文之后,对所述八叉树进行编码。
2.根据权利要求1所述的图像处理装置,其中,
所述编码单元彼此独立地对所述八叉树的各个层进行编码。
3.根据权利要求1所述的图像处理装置,其中,
所述编码单元使用高一级的层的第一节点的概率表对所述八叉树的每层的第一节点进行编码。
4.根据权利要求1所述的图像处理装置,其中,
所述编码单元使用先前帧的预定节点的概率表对所述八叉树的每层的第一节点进行编码。
5.根据权利要求4所述的图像处理装置,其中,
所述预定节点是与处理目标节点相同层的最后节点。
6.根据权利要求4所述的图像处理装置,其中,
所述预定节点是所述先前帧的最后节点。
7.根据权利要求1所述的图像处理装置,其中,
所述编码单元使用以下中的至少两个来对所述八叉树进行编码:
独立于其他层对处理目标层进行编码的方法;
使用高一级的层的第一节点的概率表对处理目标层的第一节点进行编码的方法;以及
使用先前帧的预定节点的概率表对处理目标层的第一节点进行编码的方法。
8.根据权利要求1所述的图像处理装置,其中,
所述编码单元
针对所述八叉树的一些层,在针对每层初始化上下文之后,对所述八叉树的一些层执行编码,以及
针对所述八叉树的其他层,利用前一次处理的节点的处理结果作为上下文,对所述八叉树的其他层的每个节点进行编码。
9.根据权利要求1所述的图像处理装置,其中,
所述编码单元选择包括以下中的至少一个的多个候选中的至少一个,并使用所选择的至少一个方法对所述八叉树进行编码:
彼此独立地对所述八叉树的各个层进行编码的方法;
使用高一级的层的第一节点的概率表对所述八叉树的每层的第一节点进行编码的方法;以及
使用先前帧的预定节点的概率表对所述八叉树的每层的第一节点进行编码的方法。
10.根据权利要求9所述的图像处理装置,其中,
所述编码单元生成包含表示所选择的至少一个方法的信息和所述八叉树的编码数据的比特流。
11.一种图像处理方法,包括:
在针对与点云数据相对应的八叉树的每层初始化上下文之后,对所述八叉树进行编码。
12.一种图像处理装置,包括:
解码单元,所述解码单元选择宽度优先顺序或深度优先顺序作为与点云数据相对应的八叉树的编码数据的解码顺序,并且以选择的解码顺序对所述编码数据进行解码。
13.根据权利要求12所述的图像处理装置,其中,
所述解码单元根据外部指令选择所述解码顺序。
14.根据权利要求12所述的图像处理装置,其中,
所述解码单元基于对所述编码数据的解码处理的负荷来选择所述解码顺序。
15.根据权利要求14所述的图像处理装置,其中,
所述解码单元基于所述解码处理的速度来选择所述解码顺序。
16.根据权利要求14所述的图像处理装置,其中,
所述解码单元基于所述解码处理要使用的存储器的容量来选择所述解码顺序。
17.根据权利要求12所述的图像处理装置,其中,
当针对所述八叉树的每层初始化上下文之后,所述编码数据中的所述八叉树还没有被编码时,所述解码单元选择所述宽度优先顺序作为所述解码顺序。
18.根据权利要求17所述的图像处理装置,其中,
当所述编码数据中的所述八叉树还没有通过以下之一或至少两个的组合进行编码时,所述解码单元选择所述宽度优先顺序作为所述解码顺序:
彼此独立地对所述八叉树的各个层进行编码的方法;
使用高一级的层的第一节点的概率表对所述八叉树的每层的第一节点进行编码的方法;以及
使用先前帧的预定节点的概率表对所述八叉树的每层的第一节点进行编码的方法。
19.根据权利要求17所述的图像处理装置,其中,
所述解码单元基于表示在所述编码数据中对所述八叉树进行编码的方法的信息,确定在针对所述八叉树的每层初始化上下文之后是否已经执行了编码。
20.一种图像处理方法,包括:
选择宽度优先顺序或深度优先顺序作为与点云数据相对应的八叉树的编码数据的解码顺序,并且以选择的解码顺序对所述编码数据进行解码。
CN201980061734.1A 2018-09-28 2019-09-13 图像处理装置和图像处理方法 Withdrawn CN112740277A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018183912 2018-09-28
JP2018-183912 2018-09-28
PCT/JP2019/036031 WO2020066680A1 (ja) 2018-09-28 2019-09-13 画像処理装置および方法

Publications (1)

Publication Number Publication Date
CN112740277A true CN112740277A (zh) 2021-04-30

Family

ID=69952647

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980061734.1A Withdrawn CN112740277A (zh) 2018-09-28 2019-09-13 图像处理装置和图像处理方法

Country Status (5)

Country Link
US (2) US11910026B2 (zh)
EP (1) EP3859679A4 (zh)
JP (1) JP7359153B2 (zh)
CN (1) CN112740277A (zh)
WO (1) WO2020066680A1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10897269B2 (en) 2017-09-14 2021-01-19 Apple Inc. Hierarchical point cloud compression
US11818401B2 (en) 2017-09-14 2023-11-14 Apple Inc. Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables
US10861196B2 (en) 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
US11113845B2 (en) 2017-09-18 2021-09-07 Apple Inc. Point cloud compression using non-cubic projections and masks
US10909725B2 (en) 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
US10607373B2 (en) 2017-11-22 2020-03-31 Apple Inc. Point cloud compression with closed-loop color conversion
US10909726B2 (en) 2018-04-10 2021-02-02 Apple Inc. Point cloud compression
US10939129B2 (en) 2018-04-10 2021-03-02 Apple Inc. Point cloud compression
US10909727B2 (en) 2018-04-10 2021-02-02 Apple Inc. Hierarchical point cloud compression with smoothing
US11010928B2 (en) 2018-04-10 2021-05-18 Apple Inc. Adaptive distance based point cloud compression
US11017566B1 (en) 2018-07-02 2021-05-25 Apple Inc. Point cloud compression with adaptive filtering
US11202098B2 (en) 2018-07-05 2021-12-14 Apple Inc. Point cloud compression with multi-resolution video encoding
US11012713B2 (en) 2018-07-12 2021-05-18 Apple Inc. Bit stream structure for compressed point cloud data
US11367224B2 (en) 2018-10-02 2022-06-21 Apple Inc. Occupancy map block-to-patch information compression
US11057564B2 (en) 2019-03-28 2021-07-06 Apple Inc. Multiple layer flexure for supporting a moving image sensor
US11711544B2 (en) 2019-07-02 2023-07-25 Apple Inc. Point cloud compression with supplemental information messages
US11562507B2 (en) 2019-09-27 2023-01-24 Apple Inc. Point cloud compression using video encoding with time consistent patches
US11627314B2 (en) 2019-09-27 2023-04-11 Apple Inc. Video-based point cloud compression with non-normative smoothing
US11538196B2 (en) 2019-10-02 2022-12-27 Apple Inc. Predictive coding for point cloud compression
US11895307B2 (en) 2019-10-04 2024-02-06 Apple Inc. Block-based predictive coding for point cloud compression
US11798196B2 (en) 2020-01-08 2023-10-24 Apple Inc. Video-based point cloud compression with predicted patches
US11625866B2 (en) 2020-01-09 2023-04-11 Apple Inc. Geometry encoding using octrees and predictive trees
WO2021243519A1 (zh) * 2020-06-01 2021-12-09 深圳市大疆创新科技有限公司 点云的编解码方法和装置
JP7505926B2 (ja) 2020-06-18 2024-06-25 Kddi株式会社 点群復号装置、点群復号方法及びプログラム
US11620768B2 (en) 2020-06-24 2023-04-04 Apple Inc. Point cloud geometry compression using octrees with multiple scan orders
US11615557B2 (en) * 2020-06-24 2023-03-28 Apple Inc. Point cloud compression using octrees with slicing
US11948338B1 (en) 2021-03-29 2024-04-02 Apple Inc. 3D volumetric content encoding using 2D videos and simplified 3D meshes
WO2022259944A1 (ja) * 2021-06-08 2022-12-15 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6563499B1 (en) 1998-07-20 2003-05-13 Geometrix, Inc. Method and apparatus for generating a 3D region from a surrounding imagery
US6483518B1 (en) 1999-08-06 2002-11-19 Mitsubishi Electric Research Laboratories, Inc. Representing a color gamut with a hierarchical distance field
KR100519780B1 (ko) * 2004-02-17 2005-10-07 삼성전자주식회사 3차원 체적 데이터 부호화/복호화 방법 및 장치
EP1574996A3 (en) 2004-03-08 2007-03-21 Samsung Electronics Co., Ltd. Adaptive 2n-ary tree generating method, and method and apparatus for encoding and decoding 3D volume data using it
KR102282803B1 (ko) * 2010-04-13 2021-07-28 지이 비디오 컴프레션, 엘엘씨 평면 간 예측
US8344917B2 (en) * 2010-09-30 2013-01-01 Sharp Laboratories Of America, Inc. Methods and systems for context initialization in video coding and decoding
CN103918009A (zh) 2011-11-07 2014-07-09 汤姆逊许可公司 预测位置编码
TWI534760B (zh) * 2011-11-28 2016-05-21 湯姆生特許公司 空間樹結構對輸入空間點編碼之方法及編碼器,以及空間樹結構位元流之解碼方法及解碼器
US20160286241A1 (en) * 2015-03-24 2016-09-29 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding
US10853998B2 (en) * 2016-10-12 2020-12-01 Hewlett-Packard Development Company, L.P.C Serialising a representation of a three dimensional object
WO2018071013A1 (en) * 2016-10-12 2018-04-19 Hewlett-Packard Development Company, Lp Sub-volume octrees
US10861196B2 (en) * 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
WO2019156141A1 (ja) * 2018-02-08 2019-08-15 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置

Also Published As

Publication number Publication date
EP3859679A4 (en) 2022-11-02
WO2020066680A1 (ja) 2020-04-02
JPWO2020066680A1 (ja) 2021-08-30
US20220038751A1 (en) 2022-02-03
US20240129555A1 (en) 2024-04-18
JP7359153B2 (ja) 2023-10-11
EP3859679A1 (en) 2021-08-04
US11910026B2 (en) 2024-02-20

Similar Documents

Publication Publication Date Title
CN112740277A (zh) 图像处理装置和图像处理方法
US11200703B2 (en) Information processing device and method
US11315320B2 (en) Information processing apparatus and method
US11943457B2 (en) Information processing apparatus and method
CN108810540B (zh) 从视频数据的位流解码多个编码单位的方法
US20220414940A1 (en) Information processing apparatus and method
EP4071715A1 (en) Information processing device and method
KR20220035041A (ko) 정보 처리 장치 및 방법
US20220353492A1 (en) Information processing device and method
US20220044448A1 (en) Image processing device and method
EP3996045A1 (en) Information processing device and method
JP7415937B2 (ja) 画像処理装置および方法
KR20230125186A (ko) 정보 처리 장치 및 방법
US20220358685A1 (en) Image encoding method and image decoding method
US20220353493A1 (en) Information processing apparatus and method
EP4170597A1 (en) Information processing device and method
JP2022051968A (ja) 情報処理装置および方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication

Application publication date: 20210430

WW01 Invention patent application withdrawn after publication