WO2020066680A1 - 画像処理装置および方法 - Google Patents

画像処理装置および方法 Download PDF

Info

Publication number
WO2020066680A1
WO2020066680A1 PCT/JP2019/036031 JP2019036031W WO2020066680A1 WO 2020066680 A1 WO2020066680 A1 WO 2020066680A1 JP 2019036031 W JP2019036031 W JP 2019036031W WO 2020066680 A1 WO2020066680 A1 WO 2020066680A1
Authority
WO
WIPO (PCT)
Prior art keywords
encoding
octree
node
type
decoding
Prior art date
Application number
PCT/JP2019/036031
Other languages
English (en)
French (fr)
Inventor
幸司 矢野
加藤 毅
智 隈
央二 中神
Original Assignee
ソニー株式会社
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 ソニー株式会社 filed Critical ソニー株式会社
Priority to EP19864158.1A priority Critical patent/EP3859679A4/en
Priority to JP2020548453A priority patent/JP7359153B2/ja
Priority to CN201980061734.1A priority patent/CN112740277A/zh
Priority to US17/277,291 priority patent/US11910026B2/en
Publication of WO2020066680A1 publication Critical patent/WO2020066680A1/ja
Priority to US18/397,989 priority patent/US20240129555A1/en

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

Definitions

  • the present disclosure relates to an image processing apparatus and method, and more particularly, to an image processing apparatus and method capable of decoding Octree encoded data in various processing orders.
  • the information of each node of the octree is searched and encoded in the order of breadth priority.
  • this encoding for example, encoding using a context such as arithmetic encoding has been performed. For this reason, since a dependency occurs in the processing order, the encoded data of each node is also processed in the same order (that is, the width priority order) in decoding.
  • the memory capacity required for holding data may increase, and the processing order may not be optimal depending on the hardware performance of the decoder.
  • the present disclosure has been made in view of such a situation, and is intended to enable decoding of coded Octree data in various processing orders.
  • the image processing device is an image processing device including an encoding unit that encodes an Octree corresponding to point cloud data by initializing a context for each Octree layer.
  • the image processing method is an image processing method that encodes an Octree corresponding to point cloud data by initializing a context for each Octree layer.
  • An image processing apparatus selects a breadth-first order or a depth-first order as a decoding order of Octtree encoded data corresponding to point cloud data, and decodes the encoded data according to the selected decoding order. It is an image processing device including a decoding unit.
  • An image processing method selects a breadth-first order or a depth-first order as a decoding order of encoded data of Octree corresponding to point cloud data, and decodes the encoded data according to the selected decoding order. This is an image processing method.
  • an Octree corresponding to point cloud data is encoded by initializing a context for each Octree layer.
  • a width-first order or a depth-first order is selected as the decoding order of the encoded data of the Octree corresponding to the point cloud data, and the encoded data is selected according to the selected decoding order. Is decrypted.
  • FIG. 3 is a diagram illustrating an example of an encoding type. It is a figure explaining search of breadth order.
  • FIG. 9 is a diagram illustrating an example of a state of processing in a width priority order. It is a figure explaining search of a depth priority order. It is a figure explaining an example of a situation of processing of the order of depth priority.
  • FIG. 9 is a diagram illustrating a comparative example of memory usage.
  • FIG. 5 is a diagram illustrating a search order of type 1.
  • FIG. 8 is a diagram for describing an example of a state of a process in a search order of type 1; It is a figure explaining the search order of type 2.
  • FIG. 9 is a diagram for describing an example of a state of a process in a type 2 search order. It is a figure explaining the example of a mode of the processing of the search order of type 3. It is a figure explaining the example of a mode of the processing of the search order of type 3. It is a figure explaining the example of a mode of the processing of the search order of type 3. It is a figure explaining the example of a mode of the processing of the search order of type 3. It is a figure explaining the example of a mode of the processing of the search order of type 3.
  • FIG. 8 is a diagram for describing an example of a state of processing in a search order of type 4; FIG.
  • FIG. 8 is a diagram for describing an example of a state of processing in a search order of type 4; It is a figure showing an example of header information.
  • FIG. 35 is a block diagram illustrating a main configuration example of an encoding device.
  • FIG. 39 is a block diagram illustrating a main configuration example of a lossless encoding unit. It is a flowchart explaining the example of the flow of an encoding process.
  • 23 is a flowchart for describing an example of the flow of an encoding process, following FIG. 22. 29 is a flowchart for describing an example of the flow of a type 0 encoding process. It is a flowchart explaining the example of the flow of a type 1 encoding process.
  • 35 is a flowchart for describing an example of the flow of a type 2 encoding process. 35 is a flowchart for describing an example of the flow of a type 3 encoding process. It is a block diagram which shows the main structural examples of a decoding device.
  • FIG. 39 is a block diagram illustrating a main configuration example of a lossless decoding unit. It is a flowchart explaining the example of the flow of a decoding process.
  • 31 is a flowchart for describing an example of the flow of a decoding process, following FIG. 30.
  • FIG. 18 is a block diagram illustrating a main configuration example of a computer.
  • Non-patent document 1 (described above)
  • Non-Patent Document 2 Ohji Nakagami, Phil Chou, Maja Krivokuca, Khaled Mammou, Robert Cohen, Vladyslav Zakharchenko, Gaelle Martin-Cocher, "Second Working Draft for PCC Categories 1, 3", ISO / IEC JTC1 / SC29 / WG11, MPEG 2018 / N17533, April 2018, San Diego, US
  • Non-Patent Document 3 TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU (International Telecommunication Union), "Advanced video coding for generic audiovisual services", H.264, 04/2017
  • Non-Patent Document 4 TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU (International Telecommunication Union), "High efficiency video coding", H.265, 12/2016
  • Non-Patent Document 5 Jianle Chen, Maria Alshina, Gary J.
  • Non-Patent Document 4 Quad-Tree ⁇ Block ⁇ Structure described in Non-Patent Document 4 and QTBT (Quad ⁇ Tree ⁇ Binary Tree) ⁇ Block ⁇ Structure described in Non-Patent Document 5 are not directly described in the embodiment, It is within the disclosure range of the present technology and satisfies the support requirements of the claims. Also, for example, technical terms such as parsing, syntax, and semantics are also within the disclosure range of the present technology even when there is no direct description in the embodiment. Satisfy the support requirements of the claims.
  • a three-dimensional structure (three-dimensional object) is represented as a set (point group) of many points. That is, the data of the point cloud (also referred to as point cloud data) is configured by position information and attribute information (for example, color and the like) of each point of the point cloud. Therefore, the data structure is relatively simple, and an arbitrary three-dimensional structure can be expressed with sufficient accuracy by using sufficiently many points.
  • a voxel is a three-dimensional area for quantizing position information to be encoded.
  • the three-dimensional area including the point cloud is divided into small three-dimensional areas called voxels, and each voxel indicates whether or not a point is included.
  • each voxel indicates whether or not a point is included.
  • 2 10 ⁇ 2 10 ⁇ 2 10 voxels 10 are set in a three-dimensional space, and the presence or absence of a point (whether or not a point is included) is indicated for each voxel. Have been.
  • gray voxels indicate voxels that include points
  • white voxels indicate voxels that do not include points.
  • Octree is a tree structure of voxel data, for example, as shown in FIG.
  • the value of each bit of the lowest node of this Octree indicates whether or not each voxel has a point. For example, a value “1” indicates a voxel including a point, and a value “0” indicates a voxel not including a point.
  • one node corresponds to eight voxels. That is, each node of the Octree is composed of 8-bit data, and the 8 bits indicate the presence or absence of points of eight voxels.
  • the upper node of the Octree indicates whether or not there is a point in an area where eight voxels corresponding to lower nodes belonging to the node are combined into one. That is, an upper node is generated by collecting information of voxels of lower nodes.
  • the higher node is generated. For example, an area (lower-resolution voxel) in which the eight voxels are grouped is generated as in the range 11B, and information indicating the presence or absence of points of the low-resolution voxel is grouped by 2 ⁇ 2 ⁇ 2, and the higher A node is created. That is, an upper node indicating whether or not there are points of eight low-resolution voxels is generated.
  • a tree structure composed of nodes whose values are not “0” is constructed. That is, the Octree can indicate the presence or absence of voxel points at each resolution. Therefore, by converting the voxel data into an Octree and encoding, voxel data having various resolutions can be more easily restored at the time of decoding. That is, voxel scalability can be realized more easily.
  • the resolution of the voxel in the area where the point does not exist can be reduced, so that the increase in the amount of information can be further suppressed (typically, Reduction).
  • ⁇ Octree encoding> By encoding Octree data, an increase in the amount of information can be further suppressed (typically, the amount of information can be reduced).
  • information (8-bit data) of each node of the Octree is encoded (for example, arithmetically encoded).
  • a probability table is selected using the coding result of the node processed immediately before as a context, and coding is performed using the selected probability table. That is, the encoding of each node has a dependency in the processing order (search order).
  • ⁇ Width priority> As a method of encoding Octree's data, for example, a method was considered in which each node of the Octree is searched in a breadth-first order and the data of each node is encoded in the breadth-first order (type 0 in FIG. 3).
  • the breadth-first order is an order in which each node is searched for one layer (also referred to as LoD) from the top node of the Octree, for example, as indicated by a dotted arrow in FIG. That is, in the example of FIG.
  • a dependency occurs in the encoding order.
  • the decoding order is also limited by the dependency. That is, when encoding is performed in the breadth-first order, decoding must also be performed in the breadth-first order.
  • information of a parent node (a node one level higher than the node to which the node (also referred to as the own node) belongs) is also required for decoding. Therefore, for example, when decoding the node A in the Octree of FIG. 4, information on the parent node B is required. Further, when decoding the nodes C to Y processed after the node A, information on the parent nodes, ie, the nodes F to Z, is required. That is, when decoding the node A, it is necessary to hold information on the nodes B to Z. That is, when decoding in the breadth-first order, when decoding the first node (also referred to as the head node) of the processing target hierarchy, it is necessary to hold information on all the nodes of the LoD one rank higher.
  • a search order other than the breadth-first order includes, for example, a depth-first order.
  • the depth priority order is, for example, an order in which the lowest node of the Octree is searched as early as possible, as indicated by a dotted arrow in FIG.
  • 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, and Y in this order. Therefore, the encoding of the data of each node is also performed in the same order as the search order, as shown in FIG.
  • decoding when encoding is performed using the encoding result of a node processed immediately before as a context, such as arithmetic encoding, decoding must be performed in the same order. That is, it is necessary to perform decoding in the depth priority order.
  • the information of the parent node is also required for decryption. Therefore, for example, when decoding the node A in FIG. 6, information on the node B is required. Further, when decoding the nodes F, K, and U that are processed after the node A, information on the nodes D, G, and N is required, respectively. That is, when decoding the node A, it is necessary to hold information on the nodes N, G, D, and D. That is, when decoding in the breadth-first order, when decoding the first node of the processing target hierarchy, information of all nodes on the path from the node of the highest hierarchy (also referred to as the highest node or the root node) to the own node is held. There is a need to.
  • Octrees are generally wide (the number of nodes of the lowest LoD is larger than the number of LoDs). Therefore, there is a possibility that the memory capacity used for decoding (necessary for data retention) is larger when decoding is performed in the width priority order than when decoding is performed in the depth priority order.
  • FIG. 8 shows a comparison example of the memory capacity used in decoding between the case of the width priority and the case of the depth priority.
  • the graph of FIG. 8 compares the memory capacity used when decoding the coded data (5MPointLoD20) of Octree having 5 million points and 20 LoDs (depth).
  • the set of bar graphs on the left in the figure shows the memory capacity (lod10) when the data for 10 LoD (10 layers) from the top is decoded, and the set of bar graphs in the center of the figure shows 15 LoD (15 layers) from the top.
  • the memory capacity (lod15) when decoding the data for one minute is shown, and the set of bar graphs on the right side in the figure shows the memory capacity (lod20) when the data for 20 LoD (20 layers) from the top is decoded.
  • the white bar graph on the left side of each set indicates the memory capacity in the case of the depth priority order, and the gray bar graph on the right side indicates the memory capacity in the case of the width priority order.
  • the memory capacity used for decoding is larger in the case of the width priority than in the case of the depth priority.
  • the difference increases as the Octree increases (the number of nodes increases).
  • the degree of the effect depends on the structure of the Octree (for example, the number of LoDs and the number of nodes) and the hardware performance of the decoder (for example, memory capacity). For example, when the memory capacity of the decoder is sufficiently larger than the memory capacity used for decoding, the influence of the processing load on the search order is small.
  • ⁇ Optimal search order> is determined by the structure of the Octree, the hardware performance of the decoder (memory capacity, etc.), and what priority is given (for example, whether to give priority to improvement of coding efficiency). Alternatively, priority is given to reducing the memory capacity of the decoder). That is, it is not always optimal to perform decoding in the breadth-first order. In other words, it is not always optimal to perform decoding in the breadth-first order.
  • the Octree is encoded so that the encoded Octree data can be decoded by a method other than the breadth-first method. That is, Octree encoding is performed so that the Octree encoded data can be decoded in more various processing orders.
  • an octree corresponding to the point cloud data is encoded by initializing (resetting) a context for each octree hierarchy.
  • an image processing apparatus that encodes an Octree may include an encoding unit that encodes an Octree corresponding to point cloud data by initializing (resetting) a context for each layer of the Octree.
  • the decoder can decode the encoded data of the Octree in a more appropriate processing order.
  • a breadth-first order or a depth-first order is selected as the decoding order of the Octree encoded data corresponding to the point cloud data, and the encoded data is decoded according to the selected decoding order.
  • a breadth-first order or a depth-first order is selected as the decoding order of the Octree coded data corresponding to the point cloud data, and the coded data is selected according to the selected decoding order.
  • the decoder can decode the coded data of the Octree in more various processing orders. That is, the decoder can select a more appropriate processing order, and decode the coded Octree data in the more appropriate processing order.
  • ⁇ Type 1> As a method of encoding an octree corresponding to point cloud data by initializing a context for each octree hierarchy, for example, as shown in the third row from the top in FIG. 3, each octree hierarchy is encoded independently of each other. (Type 1).
  • encoding is performed so as not to be referred to between LoDs of Octree. That is, encoding is performed independently for each LoD. More specifically, for example, as shown in FIG. 10, arithmetic coding is performed in the same order as the breadth-first order, and further, the arithmetic coding (context) is initialized at the head node of each LoD. I do.
  • a context is obtained using the coding result of the immediately preceding node, a probability table is selected according to the context, and arithmetic coding processing is performed using the selected probability table.
  • arithmetic coding (context) is initialized in the nodes N, G, D, B, and A.
  • each node can be encoded for each LoD, so that the encoder suppresses a decrease in encoding efficiency. (Typically improving coding efficiency).
  • the encoder since the arithmetic coding is initialized at the head node of each LoD, the encoder does not refer to the processing result of the last node of the LoD on the one layer, and refers to the arithmetic operation of the head node. Encoding can be performed. That is, the encoder can independently process each LoD. Therefore, the encoder can, for example, parallelize the encoding process for each LoD (perform encoding of each LoD in parallel with each other). For example, when a plurality of processes can be executed in parallel, the encoder can perform encoding at higher speed by arithmetically encoding each LoD in parallel in this way.
  • the processing order (also referred to as decoding order) of decoding (that is, arithmetic decoding) corresponding to this arithmetic coding is not limited to the breadth-first order.
  • the decoder can set the decoding order of the Octree encoded data generated by this type 1 encoding to the breadth-first order (FIG. 5) or the depth-first order (FIG. 7). it can. That is, the decoder can decode the encoded data of the Octree in more various processing orders. Therefore, the decoder can select a more appropriate processing order, and decode the encoded Octree data in the more appropriate processing order.
  • the dependency between the parent and the child to restore the position is necessary. That is, information on the parent node of the node to be processed is required.
  • information indicating the data position of the head node of each LoD may be included in the header information so that the encoded data of the head node of the processing target LoD can be directly accessed. Good. By doing so, by referring to the header information, it is possible to more easily access (read out the encoded data) the encoded data of the desired first node of the LoD in the bit stream. In other words, decoding can be performed at higher speed (that is, increase in decoding processing load can be suppressed (typically, decoding processing load can be reduced)).
  • ⁇ Type 2> As a method of encoding an octree corresponding to point cloud data by initializing a context for each octree hierarchy, for example, as shown in the fourth line from the top in FIG. Encoding may be performed using the probability table of the parent node (type 2).
  • the probability table of the parent node is used. More specifically, for example, as shown in FIG. 12, arithmetic coding is performed in the same order as the breadth-first order, and the arithmetic coding (context) is initialized at the head node of each LoD. . Further, at the head node of each LoD, the probability table of the parent node is taken over (copied), and arithmetic coding is performed using the probability table.
  • 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, and Y the data of each node is arithmetically encoded.
  • arithmetic coding (context) is initialized in the nodes N, G, D, B, and A.
  • the respective parent nodes (node N for node G, node G for node D, node D for node B, node D for node A,
  • the probability table of the node B) is copied (copied), and arithmetic coding is performed using the copied probability table.
  • each node can be encoded for each LoD, as in the case of type 1, so that the encoder suppresses a decrease in the encoding efficiency (typically, the encoding efficiency is improved). Let it do).
  • arithmetic coding is initialized at the head node of each LoD, so that the encoder refers to the processing result of the last node of the LoD on that one layer. Without that, the arithmetic coding of the first node can be performed.
  • the encoder can suppress a decrease in coding efficiency as compared with the case of the type 1 ( Typically, coding efficiency can be improved).
  • the encoder can perform arithmetic coding of each LoD in parallel with each other for nodes other than the head node of each LoD. For example, when a plurality of processes can be executed in parallel, the encoder can perform encoding at higher speed by arithmetically encoding each LoD in parallel in this way.
  • the decoding order of the arithmetic decoding in type 2 also Are not limited to the breadth-first order.
  • the decoder can set the decoding order of the encoded data of the Octree generated by this type 2 coding to the breadth-first order (FIG. 5) or the depth-first order (FIG. 7). it can. That is, the decoder can decode the encoded data of the Octree in more various processing orders. Therefore, the decoder can select a more appropriate processing order, and decode the encoded Octree data in the more appropriate processing order.
  • ⁇ Type 3> As a method of encoding an octree corresponding to point cloud data by initializing a context for each octree hierarchy, for example, as shown in the fifth row from the top in FIG. Encoding may be performed using a probability table of a predetermined node in the previous frame (type 3).
  • each node of frame 1 is subjected to arithmetic coding in the same order as the breadth-first order, and further, the arithmetic coding (context) is performed at the head node of each LoD. Is initialized, and at the head node of each LoD, the probability table of a predetermined node of frame 0 is taken over (copied), and arithmetic coding is performed using the probability table.
  • the probability table of the last node of the same LoD as the processing target node of frame 0 may be copied (copied).
  • N, G, U, D, K, R, X, B, F, I, M, P, T, W, Z, A, C, E, H, J of frame 1 , L, O, Q, S, V, and Y the data of each node is arithmetically encoded.
  • arithmetic coding (context) is initialized in the nodes N, G, D, B, and A.
  • the probability table of node N of frame 0 is copied (copied), and arithmetic coding is performed using the copied probability table.
  • the probability table of the node U of the frame 0 is copied (copied), and arithmetic coding is performed using the copied probability table.
  • the probability table of node X of frame 0 is copied (copied), and arithmetic coding is performed using the copied probability table.
  • the probability table of node Z of frame 0 is copied (copied), and arithmetic coding is performed using the copied probability table.
  • the probability table of node Y of frame 0 is copied (copied), and arithmetic coding is performed using the copied probability table.
  • each node can be encoded for each LoD, as in the case of type 1, so that the encoder suppresses a decrease in the encoding efficiency (typically, the encoding efficiency is improved). Let it do).
  • arithmetic coding is initialized at the head node of each LoD, so that the encoder refers to the processing result of the last node of the LoD on that one layer. Without that, the arithmetic coding of the first node can be performed.
  • the encoder can perform arithmetic coding using the probability table updated more times than in the case of type 2. Therefore, the encoder can suppress a decrease in coding efficiency more than in the case of type 2 (typically, it can improve coding efficiency).
  • the arithmetic coding of each LoD is independent of each other as in the case of type 1, and the encoder can perform the arithmetic coding of each LoD in parallel with each other. For example, when the encoder can execute a plurality of processes in parallel, the encoder can perform encoding at higher speed by arithmetically encoding each LoD in parallel in this way.
  • the processing order (also referred to as decoding order) of decoding (that is, arithmetic decoding) corresponding to the arithmetic coding can be in the breadth-first order or the depth-first order. That is, the decoder can arithmetically decode the encoded data of each node in the processing order as shown in FIG. 5, or can arithmetically decode the encoded data of each node in the processing order as shown in FIG. That is, the decoder can decode the encoded data of the Octree in more various processing orders. Therefore, the decoder can select a more appropriate processing order, and decode the encoded Octree data in the more appropriate processing order.
  • the node that refers to the probability table is arbitrary as long as it is a node in the previous frame (the probability decoding can be performed by inheriting the probability table of an arbitrary node).
  • the probability table of the last node of frame 0 may be copied (copied).
  • the arithmetic coding is initialized, and further, the last of the frame 0
  • the probability table of the node Y which is a node, may be copied (copied), and arithmetic coding may be performed using the copied probability table.
  • the encoder can further suppress a decrease in coding efficiency (typically, can further improve coding efficiency).
  • the probability table of the previous frame processed immediately before is referred to, but the reference frame of the probability table is arbitrary.
  • a probability table of an arbitrary node of a frame processed two or more times ago may be referred to.
  • ⁇ Type 4> Further, as shown in the sixth line from the top in FIG. 3, for example, the above-described types 0 to 3 may be used in combination (type 4).
  • type 0 may be used in combination with any of types 1 to 3. That is, for some layers of the Octree, the context is initialized and coded for each layer, and for the other layers, each node is coded using the processing result of the node processed immediately before as the context. You may do so.
  • the decoder can suppress an increase in the memory capacity to be used, by performing decoding in a depth-first order with respect to the decoding of the layers, as compared with the case of decoding all the layers in a width-first order.
  • the type is not limited to the example described above, and the type may be switched in an arbitrary hierarchy.
  • type 1 may be applied to an upper layer and type 0 may be applied to a lower layer.
  • the frequency of decoding is higher at nodes in the upper layer than in nodes in the lower layer. Therefore, for example, by applying type 1 to the upper layer and applying type 0 to the lower layer, the decoding order of the upper layer with a higher decoding frequency is diversified, and the lower layer with a lower decoding frequency is diversified. It is possible to suppress a decrease in the coding efficiency of the layer.
  • the memory usage of the upper layer is smaller than that of the lower layer. Therefore, for example, the influence on the memory usage by the decoding order is smaller in the upper layer. Therefore, applying type 0 to the upper layer and applying type 1 to the lower layer diversifies the decoding order of the lower layer, which has a relatively large effect on the memory usage due to the decoding order, and It is possible to suppress a decrease in the coding efficiency of the upper layer, which is relatively less affected.
  • type 2 and type 3 can be combined with type 0 as in the case of type 1 described above.
  • types 1 to 3 can be applied only to some LoDs.
  • a plurality of types 1 to 3 may be used in combination. That is, a method of encoding the processing target layer independently of other layers, a method of encoding the head node of the processing target layer using the probability table of the head node on one layer, and a method of coding the head node of the processing target hierarchy
  • the Octree may be encoded using any one of a plurality of encoding methods using the probability table of a predetermined node in the previous frame.
  • type 2 that is, the top node of the processing target layer is determined using the probability table of the top node on the first layer.
  • An encoding method has been applied.
  • a type 1 that is, a method of encoding the processing target layer independently of the other layers is applied.
  • type 2 Since type 2 has better coding efficiency than type 1, by doing so, it is possible to suppress a reduction in the coding efficiency of the upper layer as compared with the case where type 1 is applied to all layers.
  • the type 1 can encode each LoD independently of each other than the type 2, the encoding of the lower layer can be performed in this manner as compared with the case where the type 2 is applied to all layers. It can be done faster.
  • the type is not limited to the example described above, and the type may be switched in an arbitrary hierarchy.
  • type 2 may be applied to an upper layer
  • type 1 may be applied to a lower layer.
  • combinations other than the above-described type 1 and type 2 may be used, such as type 2 and type 3, type 1 and type 3, and the like.
  • three or more types may be combined.
  • the same type may be combined a plurality of times, such as combining type 0, type 1, and type 0 in order from the upper layer.
  • type 0 may be further combined with the combination of these types.
  • type 0, type 1, type 2, and type 3 may be all combined.
  • types 1 to 4 can be applied only to some LoDs.
  • the processing amount of each LoD and the distribution of the resource usage amount may be determined according to the data use frequency.
  • encoding is performed independently for each LoD.
  • each LoD is sliced.
  • Such slicing may not be performed for each LoD.
  • slices may be cut at positions other than the head node (last node) of each LoD (elimination of encoding dependency). That is, arithmetic coding may be reset at nodes other than the head node of each LoD.
  • a plurality of LoDs may be made into one slice. For example, by combining type 0 and type 1 as described above, such a slice including a plurality of LoDs can be realized.
  • a slice may be cut at a node in the middle of LoD.
  • type 1 to type 0 in the middle of a slice, such a slice cutting method can be realized.
  • the above-described combinations of a plurality of types need not be in units of LoD, and may be combined in a node in the middle of LoD.
  • the method of cutting the slice is arbitrary.
  • the encoder may form each slice so that the processing amount of each slice is more uniform.
  • the encoder may form each slice so that the number of nodes in each slice is more uniform.
  • the encoder may form each slice so that the resource usage (for example, the memory usage) when decoding each slice is more uniform.
  • the encoder may form each slice so that the code amount (bit stream size) of each slice becomes more uniform.
  • ⁇ Select type> a plurality of types including at least one of the above-described types 0 to 4 may be set as candidates, and the encoder may select a desired type from the plurality of candidates and apply the selected type to encoding. .
  • a method in which the encoder encodes each layer of the Octree independently of each other, a method in which the first node of each layer of the Octree is encoded using the probability table of the first node on the next layer, and a method of encoding each layer of the Octree A method of encoding the first node using a probability table of a predetermined node in the previous frame, selecting one or more from a plurality of candidates including at least one of the above, and using the selected method to generate an Octree It may be encoded.
  • the encoder may receive specification of a type (encoding parameter) from the outside such as a user, select a type from a plurality of candidates based on the specification, and apply the selected type to encoding.
  • a type encoding parameter
  • the encoder can encode the Octree in more various ways. Therefore, the encoder can encode the Octree in a manner corresponding to a decoder having more various specifications.
  • the encoder may generate a bit stream including the information indicating the type of encoding selected from the plurality of candidates as described above and the encoded data of the Octree generated by the encoding. .
  • an encoder may transmit (signal) information on the type of encoding as header information of the bitstream.
  • a coding type is included in a frame header (Frame Header) which is header information for each frame and a LoD header (LoD Header) which is header information for each LoD included in a bit stream. May be transmitted (signaled).
  • Type is identification information indicating the type of encoding applied to the frame. For example, when types 0 to 4 are applicable as described above, any one of “0” to “4” is set (set). Of course, the value of this type is arbitrary. By referring to this type, the decoder can more easily identify the type of coding applied to the frame. Therefore, an appropriate decoding method (decoding order) for the bit stream can be more easily selected.
  • the number of slices is information indicating the number of slices included in the frame. For example, when type 1 is applied, arithmetic coding is reset at an intermediate node, and a slice is formed. In the number of slices (SliceNum), a value indicating the number of slices thus formed is set (set). By referring to the number of slices (SliceNum), the decoder can more easily grasp the number of slices, so that parallel decoding of each slice can be performed more easily and more appropriately.
  • Type is identification information indicating the type of encoding applied to the LoD. For example, when types 0 to 4 are applicable as described above, any one of “0” to “4” is set (set). Of course, the value of this type is arbitrary.
  • the decoder can more easily identify the type of encoding applied to the LoD. Therefore, an appropriate decoding method (decoding order) for the LoD bit stream can be more easily selected.
  • Size is information indicating the size (code amount) of LoD encoded data (bit stream). By referring to this information, the decoder can more easily extract the encoded data of the LoD from the bit stream.
  • the information described above may be signaled in header information other than the example described above. Further, the above-described information can be stored at an arbitrary position in the bit stream. Further, the information described above may be transmitted (signaled) to the decoder side as data different from the Octree bit stream (for example, in association with the Octree bit stream).
  • arithmetic coding using context for example, CABAC (Context-based Adaptive Binary Arithmetic Coding)
  • CABAC Context-based Adaptive Binary Arithmetic Coding
  • the encoding is reversible encoding (entropy encoding), and is not limited to the arithmetic encoding described above.
  • a non-binary coding method may be used.
  • an encoding method using a plurality of contexts may be used.
  • FIG. 20 is a block diagram illustrating an example of a configuration of an encoding device that is an aspect of an image processing device to which the present technology is applied.
  • the encoding device 300 illustrated in FIG. 20 is an device that encodes 3D data such as a point cloud using voxels and octrees.
  • FIG. 20 shows main components such as a processing unit and a flow of data, and the components shown in FIG. 20 are not necessarily all. That is, in the encoding device 300, a processing unit not illustrated as a block in FIG. 20 may exist, or a process or data flow not illustrated as an arrow or the like in FIG. 20 may exist. This is the same in other drawings for explaining the processing unit and the like in the encoding device 300.
  • the encoding device 300 includes a Voxel generation unit 311, an Octree generation unit 312, and a lossless encoding unit 313.
  • the Voxel generation unit 311 performs a process related to generation of a voxel (Voxel). For example, the Voxel generation unit 311 acquires point cloud data (Point @ cloud) input to the encoding device 300. Also, the Voxel generation unit 311 sets a bounding box for the area including the acquired point cloud data, further divides the bounding box, and sets voxels, thereby quantizing the position information of the point cloud data. Become The Voxel generation unit 311 supplies the voxel (Voxel) data generated in this way to the Octree generation unit 312.
  • the treeOctree generation unit 312 performs a process related to the generation of the Octree. For example, the Octree generation unit 312 acquires the voxel data supplied from the Voxel generation unit 311. The Octree generating unit 312 generates an Octree from the voxel data. The Octree generation unit 312 supplies the generated Octree data to the lossless encoding unit 313.
  • the lossless encoding unit 313 performs processing related to lossless encoding of Octree data.
  • the lossless encoding unit 313 acquires Octree data supplied from the Octree generation unit 312.
  • the lossless encoding unit 313 acquires an encoding parameter input from outside the encoding device 300.
  • the encoding parameter is information for specifying the type of encoding to be applied, and is input, for example, by a user operation, or supplied from an external device or the like.
  • the lossless encoding unit 313 encodes Octree data with the type specified by the encoding parameter, and generates encoded Octree data.
  • the lossless encoding unit 313 generates a bit stream including the encoded data of the Octree, and outputs the bit stream to the outside of the encoding device 300 (transmits the bit stream to the decoding side).
  • each processing unit may be configured by a logic circuit that realizes the above-described processing.
  • each processing unit has, for example, a CPU (Central Processing Unit), a ROM (Read Only Memory), a RAM (Random Access Memory), and the like, and executes the program using them to realize the above-described processing. You may do so.
  • each processing unit may have both configurations, and a part of the above-described processing may be realized by a logic circuit, and the other may be realized by executing a program.
  • the configuration of each processing unit may be independent from each other.
  • some of the processing units may realize a part of the above-described processing by a logic circuit, and some of the other processing units may execute a program. May be implemented, and another processing unit may implement the above-described processing by both the logic circuit and the execution of the program.
  • the lossless encoding unit 313 supports a plurality of types of encoding, and can encode an Octree by more various methods.
  • the lossless encoding unit 313 corresponds to a type in which a context is initialized and encoded for each layer of the Octree. Therefore, the lossless encoding unit 313 (that is, the encoding device 300) can perform encoding such that the decoder can decode the encoded data of the Octree in more various processing orders.
  • the lossless encoding unit 313 (that is, the encoding device 300) performs such a type of encoding, so that the decoder selects a more appropriate processing order, and performs the processing of the Octree in the more appropriate processing order.
  • the encoded data can be decoded.
  • FIG. 21 is a block diagram illustrating a main configuration example of the lossless encoding unit 313.
  • the lossless encoding unit 313 prepares a plurality of types of encoding including a type of initialization and encoding for each octree hierarchy as candidates, and performs encoding from among the plurality of candidates. Select the type of encoding specified by the parameter and encode the Octree with the selected type.
  • the lossless encoding unit 313 includes an encoding control unit 321, a type selection unit 322, a type 0 encoding unit 323, a type 1 encoding unit 324, a type 2 encoding unit 325, and a type 3 encoding. And a bit stream generation unit 327.
  • the coding control unit 321 performs processing related to coding control. For example, the encoding control unit 321 acquires an encoding parameter supplied from outside the encoding device 300. Also, the encoding control unit 321 notifies the type selection unit 322 of the type specified by the encoding parameter. Further, the encoding control unit 321 controls a processing unit corresponding to the type specified by the encoding parameter, out of the type 0 encoding unit 323 to the type 3 encoding unit 326, and causes the type to be encoded. . In addition, the encoding control unit 321 generates a frame header or LoD header including the information described with reference to FIG. 19, and supplies the generated header to the bit stream generation unit 327.
  • the type selection unit 322 performs a process related to selection of an encoding type. For example, the type selection unit 322 acquires Octree data supplied from the Octree generation unit 312. Further, the type selection unit 322 is controlled by the encoding control unit 321 and converts the Octree data into a processing unit corresponding to the applied encoding type among the type 0 encoding unit 323 to the type 3 encoding unit 326. (Octree data supply destination is switched). For example, the type selection unit 322 can select an encoding type to be applied for each LoD of Octree data (that is, switch the supply destination of the Octree data for each LoD).
  • the type 0 encoding unit 323 is, for example, ⁇ 1. In the ⁇ width priority order> of the Octree encoding / decoding order, the processing related to the type 0 encoding as described with reference to FIGS. For example, the type 0 encoding unit 323 acquires Octree data supplied from the type selection unit 322. Further, the type 0 encoding unit 323 performs type 0 encoding on the Octree data to generate encoded data. That is, the type 0 encoding unit 323 encodes the data of each node of the Octree data in the breadth-first order. The type 0 encoding unit 323 supplies the encoded data generated by the type 0 encoding to the bit stream generation unit 327. The type 0 encoding unit 323 performs these processes under the control of the encoding control unit 321.
  • the type 1 encoding unit 324 may, for example, select ⁇ 1. In ⁇ Type 1> of Octree's encoding / decoding order, processing related to Type 1 encoding as described with reference to FIGS. 9 and 10 and the like is performed. For example, the type 1 encoding unit 324 acquires Octree data supplied from the type selection unit 322. Further, the type 1 encoding unit 324 performs type 1 encoding on the Octree data to generate encoded data. That is, the type 1 encoding unit 324 encodes each layer of the Octree independently of each other. The type 1 encoding unit 324 supplies the encoded data generated by the type 1 encoding to the bit stream generation unit 327. The type-1 encoding unit 324 performs these processes under the control of the encoding control unit 321.
  • the type 2 encoding unit 325 is, for example, ⁇ 1.
  • ⁇ Type 2> of Octree's encoding / decoding order processing related to Type 2 encoding as described with reference to FIGS. 11 and 12 and the like is performed.
  • the type-2 encoding unit 325 acquires Octree data supplied from the type selection unit 322.
  • the type-2 encoding unit 325 performs type-2 encoding on the Octree data to generate encoded data. That is, the type-2 encoding unit 325 encodes the head node of each LoD of the Octree using the probability table of the parent node.
  • the type 2 encoding unit 325 supplies the encoded data generated by the type 2 encoding to the bit stream generation unit 327.
  • the type 2 encoding unit 325 performs these processes under the control of the encoding control unit 321.
  • the type 3 encoding unit 326 is, for example, ⁇ 1.
  • ⁇ Type 3> of Octree's encoding / decoding order processing related to Type 3 encoding as described with reference to FIGS.
  • the type 3 encoding unit 326 acquires Octree data supplied from the type selection unit 322.
  • the type 3 encoding unit 326 performs type 3 encoding on the Octree data to generate encoded data. That is, the type 3 encoding unit 326 encodes the head node of each LoD of the Octree using the probability table of a predetermined node in the previous frame.
  • the type 3 encoding unit 326 supplies the encoded data generated by the type 3 encoding to the bit stream generation unit 327.
  • the type 3 encoding unit 326 performs these processes under the control of the encoding control unit 321.
  • the bit stream generation unit 327 performs a process related to generation of a bit stream. For example, the bit stream generation unit 327 acquires the Octree encoded data supplied from the type 0 encoding unit 323 to the type 3 encoding unit 326. In addition, the bit stream generation unit 327 acquires the header information (for example, a frame header and a LoD header) supplied from the encoding control unit 321. Further, the bit stream generation unit 327 generates a bit stream including the encoded data supplied from the type 0 encoding unit 323 to the type 3 encoding unit 326 and the header information supplied from the encoding control unit 321. I do. Then, bit stream generating section 327 outputs the generated bit stream to the outside of encoding apparatus 300.
  • the header information for example, a frame header and a LoD header
  • each processing unit may be configured by a logic circuit that realizes the above-described processing.
  • each processing unit has, for example, a CPU (Central Processing Unit), a ROM (Read Only Memory), a RAM (Random Access Memory), and the like, and executes the program using them to realize the above-described processing. You may do so.
  • each processing unit may have both configurations, and a part of the above-described processing may be realized by a logic circuit, and the other may be realized by executing a program.
  • the configuration of each processing unit may be independent from each other.
  • some of the processing units may realize a part of the above-described processing by a logic circuit, and some of the other processing units may execute a program. May be implemented, and another processing unit may implement the above-described processing by both the logic circuit and the execution of the program.
  • the lossless encoding unit 313 can apply Type 4.
  • the encoding control unit 321 performs this switching of the encoding type.
  • the lossless encoding unit 313 can perform type 0 to type 4 encoding. Therefore, the lossless encoding unit 313 (the encoding device 300) performs the operations of ⁇ 1. Each type of effect can be obtained as described above in ⁇ Encoding / Decoding Order of Octree>. Therefore, the decoder can select a more appropriate processing order, and decode the encoded Octree data in the more appropriate processing order.
  • the lossless encoding unit 313 includes the type 0 encoding unit 323 to the type 3 encoding unit 326. That is, it has been described that the encoding device 300 can perform the four types of encoding from Type 0 to Type 3 (the description of Type 4 is omitted). However, the encoding device 300 may be capable of performing any type of encoding. For example, the encoding device 300 may be capable of performing a type of encoding other than the example described above.
  • the number of types supported by the encoding device 300 is arbitrary, and is not limited to the above example. That is, for example, the encoding device 300 may be capable of performing three or less types of encoding, or may be capable of performing five or more types of encoding.
  • the lossless encoding unit 313 includes, in parallel, type encoding units that can be executed by the encoding device 300, such as the type 0 encoding unit 323 to the type 3 encoding unit 326.
  • type encoding units that can be executed by the encoding device 300, such as the type 0 encoding unit 323 to the type 3 encoding unit 326.
  • the lossless encoding unit 313 has four encoding units of the type 0 encoding unit 323 to the type 3 encoding unit 326, but is not limited to this example. It is possible to provide less than three encoding units, or to provide five or more encoding units.
  • the Voxel generation unit 311 of the encoding device 300 When the encoding process is started, the Voxel generation unit 311 of the encoding device 300 generates voxel data from the point cloud data input to the encoding device 300 in step S301.
  • step S302 the Octree generation unit 312 constructs an Octree from the voxel data generated in Step S301, searches the Octrees in width-first order, and generates Octree data.
  • step S303 the encoding control unit 321 of the lossless encoding unit 313 receives an encoding parameter input from outside the encoding device 300.
  • step S304 the lossless encoding unit 313 selects one LoD to be processed from the Octree constructed in step S302.
  • the encoding control unit 321 of the lossless encoding unit 313 selects the LoD to be processed one layer at a time in order from the highest layer to the lowest layer. That is, the type selection unit 322 of the lossless encoding unit 313 reads the Octree data from the Octree generation unit 312 by 1 LoD at the beginning according to the control of the encoding control unit 321, and sets it as a processing target.
  • step S305 the encoding control unit 321 of the lossless encoding unit 313 determines whether or not the data of the processing target LoD is to be encoded in type 0 based on the encoding parameter acquired in step S303. When it is determined that encoding is to be performed using type 0, the type selection unit 322 supplies the data of the processing target LoD to the type 0 encoding unit 323. Then, the process proceeds to step S306.
  • step S306 the lossless encoding unit 313 performs type 0 encoding processing, and encodes the LoD data to be processed in type 0. Details of the type 0 encoding process will be described later.
  • step S324 the process proceeds to step S324 in FIG. If it is determined in step S305 in FIG. 22 that encoding is not performed with type 0, the process proceeds to step S307.
  • step S307 the encoding control unit 321 of the lossless encoding unit 313 determines whether or not the data of the processing target LoD is to be encoded in type 1 based on the encoding parameter acquired in step S303. When it is determined that encoding is to be performed in type 1, the type selection unit 322 supplies the data of the processing target LoD to the type 1 encoding unit 324. Then, the process proceeds to step S308.
  • step S308 the lossless encoding unit 313 performs type 1 encoding processing, and encodes the processing target LoD data in type 1. Details of the type 1 encoding process will be described later.
  • step S324 the processing proceeds to step S324 in FIG.
  • step S307 in FIG. 22 it is determined in step S307 in FIG. 22 that encoding is not performed in type 1, the process proceeds to step S321 in FIG.
  • step S321 in FIG. 23 the encoding control unit 321 of the lossless encoding unit 313 determines whether to encode the processing target LoD data in type 2 based on the encoding parameter acquired in step S303. . If it is determined that encoding is to be performed in type 2, the type selection unit 322 supplies the data of the processing target LoD to the type 2 encoding unit 325. Then, the process proceeds to step S322.
  • step S322 the lossless encoding unit 313 performs type 2 encoding processing, and encodes the LoD data to be processed in type 2. Details of the type 2 encoding process will be described later.
  • step S324 If it is determined in step S321 that encoding is not performed in type 2, the type selection unit 322 supplies the data of the processing target LoD to the type 3 encoding unit 326. Then, the process proceeds to step S323.
  • step S323 the lossless encoding unit 313 performs type 3 encoding processing, and encodes the LoD data to be processed in type 3. Details of this type 3 encoding process will be described later.
  • the process proceeds to step S324.
  • step S324 the encoding control unit 321 of the lossless encoding unit 313 determines whether all LoDs have been processed. If it is determined that there is an unprocessed LoD, the process returns to step S304 in FIG. 22, and the subsequent processes are repeated. That is, in step S304, a new LoD (unprocessed LoD) is selected as a processing target, and the processing of steps S305 to S323 is appropriately performed on the processing target LoD.
  • a new LoD unprocessed LoD
  • steps S304 to S324 are appropriately performed for each LoD, and if it is determined in step S324 that all LoDs have been processed, the processing proceeds to step S325.
  • step S325 the encoding control unit 321 of the lossless encoding unit 313 generates a frame header.
  • step S326 the lossless encoding unit 313 (any one of the type 0 encoding unit 323 to the type 3 encoding unit 326) generates and encodes attribute information corresponding to the above Octree data.
  • step S327 the bit stream generation unit 327 generates a bit stream including coded data of Octree data and header information, and outputs the bit stream to the outside of the encoding device 300 (transmits the bit stream to the decoding side).
  • step S327 When the processing in step S327 ends, the encoding processing ends.
  • the encoding device 300 performs such encoding processing on each frame, and generates a bit stream of Octree data of each frame.
  • the encoding control unit 321 determines in step S341 whether or not the processing target LoD is the highest LoD (LoD of the highest layer). If it is determined that it is the highest-order LoD, the process proceeds to step S342.
  • step S342 the type 0 encoding unit 323 resets (context of) arithmetic coding.
  • step S343 the type 0 encoding unit 323 encodes the head node of the processing target LoD.
  • step S343 When the process in step S343 is completed, the process proceeds to step S345. If it is determined in step S341 that it is not the highest LoD, the process proceeds to step S344.
  • step S344 the type 0 encoding unit 323 performs arithmetic encoding of the first node of the processing target LoD using the context after the processing of the last node of the next higher LoD.
  • step S344 ends, the process proceeds to step S345.
  • step S345 the type-0 encoding unit 323 selects the next node as a processing target.
  • step S 346 the type 0 encoding unit 323 performs arithmetic encoding of the processing target node using the processed context of the immediately preceding node.
  • step S347 the type 0 encoding unit 323 determines whether the processing target node is the last node of the processing target LoD. If it is determined that the processing target node is not the last node of the processing target LoD, that is, if it is determined that there is an unprocessed node in the processing target LoD, the process returns to step S345.
  • Steps S345 to S347 are performed for each node of the processing target LoD.
  • the processing target node is the last node of the processing target LoD, that is, all the nodes of the processing target LoD are processed. If it is determined that there is a failure, the process proceeds to step S348.
  • step S348 the encoding control unit 321 generates a LoD header of the processing target LoD.
  • the encoding control unit 321 supplies the generated LoD header to the bit stream generation unit 327.
  • step S348 ends, the type 0 encoding process ends, and the process returns to FIG.
  • the lossless encoding unit 313 can encode the processing target LoD with the type 0. . Therefore, ⁇ 1. Effects of Type 0 Coding described in ⁇ Signal of Camera Parameters for Rendering>.
  • the type 1 encoding unit 324 resets the arithmetic encoding (context) in step S361.
  • step S362 the type 1 encoding unit 324 encodes the first node of the processing target LoD.
  • step S363 the type-1 encoding unit 324 selects the next node as a processing target.
  • step S364 the type-1 encoding unit 324 performs arithmetic encoding of the processing target node using the context after the processing of the immediately preceding node.
  • step S365 the type-1 encoding unit 324 determines whether the processing target node is the last node of the processing target LoD. If it is determined that the processing target node is not the last node of the processing target LoD, that is, if there is an unprocessed node in the processing target LoD, the process returns to step S363.
  • step S365 For each node of the processing target LoD, each processing from step S363 to step S365 is executed, and in step S365, the processing target node is the last node of the processing target LoD, that is, all the nodes of the processing target LoD are processed. If it is determined that there is a failure, the process proceeds to step S366.
  • step S366 the encoding control unit 321 generates a LoD header of the processing target LoD.
  • the encoding control unit 321 supplies the generated LoD header to the bit stream generation unit 327.
  • step S366 ends, the type 1 encoding process ends, and the process returns to FIG.
  • the lossless encoding unit 313 can encode the processing target LoD in type 1. . Therefore, ⁇ 1. Effects of Type 1 Coding described in Signal of Rendering Camera Parameter>.
  • step S381 determines in step S381 whether or not the processing target LoD is the highest LoD. If it is determined that it is the highest-order LoD, the process proceeds to step S382.
  • step S382 the type-2 encoding unit 325 resets (context of) arithmetic encoding.
  • step S383 the type-2 encoding unit 325 encodes the first node of the processing target LoD.
  • step S383 When the process in step S383 is completed, the process proceeds to step S387. If it is determined in step S381 that the received LoD is not the highest LoD, the process proceeds to step S384.
  • step S384 the type-2 encoding unit 325 takes over (copies) the probability table from the parent node of the head node of the processing target LoD, which is the processing target node.
  • step S385 the type-2 encoding unit 325 resets (context of) arithmetic encoding.
  • step S386 the type-2 encoding unit 325 encodes the first node of the processing target LoD using the probability table inherited in step S384.
  • step S387 the process proceeds to step S387.
  • step S387 the type-2 encoding unit 325 stores the probability table after the head node processing. This probability table is used for processing the head node of the next lower LoD.
  • step S388 the type-2 encoding unit 325 selects the next node as a processing target.
  • step S389 the type-2 coding unit 325 performs arithmetic coding of the processing target node using the processed context of the immediately preceding node.
  • step S390 the type-2 encoding unit 325 determines whether the processing target node is the last node of the processing target LoD. If it is determined that the processing target node is not the last node of the processing target LoD, that is, if there is an unprocessed node in the processing target LoD, the process returns to step S388.
  • step S390 For each node of the processing target LoD, each processing of steps S388 to S390 is executed, and in step S390, the processing target node is the last node of the processing target LoD, that is, all the nodes of the processing target LoD are processed. If it is determined that the error has occurred, the process proceeds to step S391.
  • step S391 the encoding control unit 321 generates a LoD header of the processing target LoD.
  • the encoding control unit 321 supplies the generated LoD header to the bit stream generation unit 327.
  • step S391 ends, the type 2 encoding process ends, and the process returns to FIG.
  • the lossless encoding unit 313 can encode the processing target LoD in type 2. . Therefore, ⁇ 1. Effects of Type 2 Coding described in ⁇ Signal of Rendering Camera Parameter>.
  • step S411 the type 3 encoding unit 326 takes over the probability table from a predetermined node of a frame processed immediately before the processing target frame (also referred to as a previous frame). (make a copy).
  • step S412 the type 3 encoding unit 326 resets (context of) arithmetic encoding.
  • step S413 the type 3 encoding unit 326 encodes the first node of the processing target LoD using the probability table inherited in step S411.
  • step S414 the type 3 encoding unit 326 selects the next node as a processing target.
  • step S415 the type 3 encoding unit 326 performs arithmetic encoding of the processing target node using the context after the processing of the immediately preceding node.
  • step S416 the type 3 encoding unit 326 determines whether the processing target node is the last node of the processing target LoD. If it is determined that the processing target node is not the last node of the processing target LoD, that is, if it is determined that there is an unprocessed node in the processing target LoD, the process returns to step S414.
  • Steps S414 to S416 are performed for each node of the processing target LoD.
  • the processing target node is the last node of the processing target LoD, that is, all the nodes of the processing target LoD are processed. If it is determined that it has been performed, the process proceeds to step S417.
  • the type 3 encoding unit 326 stores the encoded probability table of the “predetermined node” of the processing target LoD.
  • This “predetermined node” is a predetermined node to which the probability table is referred in encoding the next frame. For example, ⁇ 1. As described in ⁇ Signal of rendering camera parameter>, the last node of each LoD, the last node of the frame, and the like are set as the "predetermined node". If such a “predetermined node” does not exist in the processing target LoD, the processing in step S417 is omitted. The probability table thus saved is taken over (copied) in the processing of the next frame.
  • step S418, the encoding control unit 321 generates a LoD header of the processing target LoD.
  • the encoding control unit 321 supplies the generated LoD header to the bit stream generation unit 327.
  • step S418 ends, the type 3 encoding process ends, and the process returns to FIG.
  • the lossless encoding unit 313 can encode the processing target LoD in type 3. . Therefore, ⁇ 1. Effects of Type 3 Coding described in ⁇ Signal of Rendering Camera Parameter>.
  • the lossless encoding unit 313 can perform type 0 to type 4 encoding. Therefore, the lossless encoding unit 313 (the encoding device 300) performs the operations of ⁇ 1.
  • Each type of effect can be obtained as described above in ⁇ Encoding / Decoding Order of Octree>. That is, the encoding device 300 encodes the Octree corresponding to the point cloud data by initializing the context for each Octree layer. Therefore, the decoder can select a more appropriate processing order, and decode the encoded Octree data in the more appropriate processing order.
  • FIG. 28 is a block diagram illustrating an example of a configuration of a decoding device that is an aspect of an image processing device to which the present technology is applied.
  • the decoding device 500 illustrated in FIG. 28 is a decoding device corresponding to the encoding device 300 in FIG. 20.
  • the decoding device 500 decodes encoded data (bit stream) of a point cloud generated by the encoding device 300, and It is a device that restores data in the cloud.
  • FIG. 28 shows main components such as the processing unit and the flow of data, and the components shown in FIG. 28 are not necessarily all. That is, in the decoding device 500, a processing unit not illustrated as a block in FIG. 20 may exist, or a process or data flow not illustrated as an arrow or the like in FIG. 20 may exist. This is the same in other drawings for explaining the processing unit and the like in the decoding device 500.
  • the decoding device 500 includes a lossless decoding unit 511, an Octree decoding unit 512, and a Voxel decoding unit 513.
  • the lossless decoding unit 511 performs a process related to lossless decoding of the encoded data of the Octree data. For example, the lossless decoding unit 511 obtains a bit stream of (point-cloud) data (corresponding to Octtree data) input to the decoding device 500. In addition, the lossless decoding unit 511 acquires a decoding parameter input from outside the decoding device 500.
  • the decoding parameter is information for specifying a decoding order, and is input, for example, by a user operation, or supplied from an external device or the like.
  • the lossless decoding unit 511 decodes the bit stream with the type specified by the decoding parameter, and generates Octree data.
  • the lossless decoding unit 511 supplies the Octree data to the Octree decoding unit 512.
  • Octree decoding section 512 performs processing related to Octree decoding. For example, the Octree decoding unit 512 acquires Octree data supplied from the lossless decoding unit 511. Also, the Octree decoding unit 512 constructs an Octree from the Octree data, and generates Voxel data from the Octree. The Octree decoding unit 512 supplies the generated voxel data to the Voxel decoding unit 513.
  • the Voxel decoding unit 513 performs processing related to decoding of voxel (Voxel) data. For example, the Voxel decoding unit 513 acquires voxel data supplied from the Octree decoding unit 512. Further, the Voxel decoding unit 513 restores a point cloud (Point @ cloud) from the obtained voxel data. The Voxel decoding unit 513 outputs the point cloud data generated in this way to the outside of the decoding device 500.
  • each processing unit may be configured by a logic circuit that realizes the above-described processing.
  • each processing unit may include, for example, a CPU, a ROM, a RAM, and the like, and may execute the program by using the CPU, the ROM, the RAM, and the like, thereby realizing the above-described processing.
  • each processing unit may have both configurations, and a part of the above-described processing may be realized by a logic circuit, and the other may be realized by executing a program.
  • the configuration of each processing unit may be independent from each other.
  • some of the processing units may realize a part of the above-described processing by a logic circuit, and some of the other processing units may execute a program. May be implemented, and another processing unit may implement the above-described processing by both the logic circuit and the execution of the program.
  • the lossless decoding unit 511 supports a plurality of decoding orders (width-first order and depth-first order), and uses the width-first order or the depth-first order as the decoding order of the Octree encoded data corresponding to the point cloud data.
  • a priority order is selected, and the encoded data is decoded in the selected decoding order. Therefore, the decoding device 500 can decode the encoded data of the Octree in more various processing orders. Accordingly, the decoding device 500 can select a more appropriate processing order, and decode the octree encoded data in the more appropriate processing order.
  • FIG. 29 is a block diagram illustrating a main configuration example of the lossless decoding unit 511.
  • the lossless decoding unit 511 can decode the encoded data of the Octree by a type corresponding to the type of initializing and encoding the context for each Octree layer. That is, the lossless decoding unit 511 can correctly decode the coded Octree data by initializing the context for each layer. Further, the lossless decoding unit 511 can decode the encoded data of the Octree in either the breadth-first order or the depth-first order.
  • the lossless decoding unit 511 includes a decoding control unit 521, a header analysis unit 522, a type selection unit 523, a type 0 decoding unit 524, a type 1 decoding unit 525, a type 2 decoding unit 526, and a type 3 A decoding unit 527 is provided.
  • the decoding control unit 521 performs a process related to decoding control. For example, the decoding control unit 521 acquires a decoding parameter supplied from outside the decoding device 500. In addition, the decoding control unit 521 acquires header information (various information signaled in a frame header, a LoD header, and the like) analyzed by the header analysis unit 522. Further, the decoding control unit 521 controls each processing unit of the type selection unit 523 to the type 3 decoding unit 527 based on the header information, and converts the encoded data of each node of the Octree into the decoding order specified by the decoding parameter. (Width-first or depth-first).
  • the header analysis unit 522 performs a process related to header analysis. For example, the header analysis unit 522 obtains a bit stream input to the decoding device 500 and supplies it to the type selection unit 523. Also, the header analysis unit 522 analyzes the header included in the obtained bit stream, and supplies header information (particularly, information about the type as described with reference to FIG. 19) to the decoding control unit 521.
  • the type selection unit 523 performs processing relating to selection of the type of encoding. For example, the type selection unit 523 acquires the bit stream supplied from the header analysis unit 522. Also, the type selection unit 523 is controlled by the decoding control unit 521, and supplies the bit stream to the processing unit corresponding to the applied coding type among the type 0 decoding unit 524 to the type 3 decoding unit 527 ( Switch the destination of the bitstream). For example, the type selection unit 523 can select an encoding type (decoding type) to be applied for each node (that is, switch the bit stream supply destination for each node).
  • the type 0 decoding unit 524 may transmit, for example, ⁇ 1. In the ⁇ width priority order> of the Octree encoding / decoding order, processing relating to type 0 decoding corresponding to “type 0 encoding” as described with reference to FIGS. 4 and 5 and the like is performed. For example, the type 0 decoding unit 524 acquires the bit stream supplied from the type selection unit 523. Further, the type 0 decoding unit 524 performs type 0 decoding on the bit stream to generate Octree data. That is, the type 0 decoding unit 524 arithmetically decodes the bit stream of the processing target node using the processing result of the node processed immediately before as the context. The type 0 decoding unit 524 supplies the Octree data obtained by such decoding to the Octree decoding unit 512. The type 0 decoding unit 524 performs these processes under the control of the decoding control unit 521.
  • the type 1 decoding unit 525 is, for example, ⁇ 1. In ⁇ Type 1> of Octree's encoding / decoding order, processing related to Type 1 decoding corresponding to “Type 1 encoding” as described with reference to FIGS. 9 and 10 and the like is performed. For example, the type 1 decoding unit 525 acquires the bit stream supplied from the type selection unit 523. Also, the type 1 decoding unit 525 performs type 1 decoding on the bit stream to generate Octree data. That is, the type 1 decoding unit 525 arithmetically decodes the bit stream of the processing target node independently of the node of another layer (LoD). The type 1 decoding unit 525 supplies the Octree data obtained by such decoding to the Octree decoding unit 512. The type 1 decoding unit 525 performs these processes under the control of the decoding control unit 521.
  • the type 2 decoding unit 526 is, for example, ⁇ 1. In ⁇ Type 2> of Octree's encoding / decoding order, processing related to Type 2 decoding corresponding to “Type 2 encoding” as described with reference to FIGS. 11 and 12 and the like is performed. For example, the type 2 decoding unit 526 acquires the bit stream supplied from the type selection unit 523. Further, the type 2 decoding unit 526 performs type 2 decoding on the bit stream to generate Octree data. That is, when the processing target node is the head node of the processing target LoD, the type 2 decoding unit 526 decodes the bit stream of the processing target node by using the probability table of the parent node, and decodes the bit stream at the other nodes.
  • arithmetic decoding is performed independently of nodes in other layers (LoD).
  • the type-2 decoding unit 526 supplies the Octree data obtained by such decoding to the Octree decoding unit 512.
  • the type-2 decoding unit 526 performs these processes under the control of the decoding control unit 521.
  • the type 3 decoding unit 527 is, for example, ⁇ 1. In ⁇ Type 3> of Octree's encoding / decoding order, processing related to Type 3 decoding corresponding to “Type 3 encoding” as described with reference to FIGS. 13 and 14 and the like is performed. For example, the type 3 decoding unit 527 acquires the bit stream supplied from the type selection unit 523. In addition, the type 3 decoding unit 527 performs type 3 decoding on the bit stream to generate Octree data. That is, the type 3 decoding unit 527 decodes the bit stream of the processing target node using the probability table of the predetermined node in the previous frame when the processing target node is the head node of the processing target LoD.
  • the arithmetic decoding is performed independently of the nodes of the other layers (LoD).
  • the type 3 decoding unit 527 supplies the Octree data obtained by such decoding to the Octree decoding unit 512.
  • the type 3 decoding section 527 performs these processes under the control of the decoding control section 521.
  • each processing unit may be configured by a logic circuit that realizes the above-described processing.
  • each processing unit has, for example, a CPU (Central Processing Unit), a ROM (Read Only Memory), a RAM (Random Access Memory), and the like, and executes the program using them to realize the above-described processing. You may do so.
  • each processing unit may have both configurations, and a part of the above-described processing may be realized by a logic circuit, and the other may be realized by executing a program.
  • the configuration of each processing unit may be independent from each other.
  • some of the processing units may realize a part of the above-described processing by a logic circuit, and some of the other processing units may execute a program. May be implemented, and another processing unit may implement the above-described processing by both the logic circuit and the execution of the program.
  • the lossless decoding unit 511 selects the breadth-first order or the depth-first order as the decoding order of the encoded data of the Octree corresponding to the point cloud data, and performs coding according to the selected decoding order. Decrypt the encrypted data.
  • the decoding control unit 521 selects a width priority order or a depth priority order as the decoding order, and selects a processing target node according to the decoding order. Therefore, the decoding device 500 can decode the encoded data (bit stream) of the Octree in more various processing orders. Therefore, the decoding device 500 can select a more appropriate processing order, and decode the Octree encoded data in the more appropriate processing order.
  • the decoding control unit 521 selects a decoding order based on a decoding parameter supplied from the outside. That is, the lossless decoding unit 511 (the decoding control unit 521) may select the decoding order based on an external instruction. In this way, the decoding order can be designated from outside the decoding device 500. That is, for example, a user or the like can specify the decoding order.
  • the decoding order is not limited to this example, and the decoding control unit 521 may specify the decoding order according to the situation. For example, the decoding control unit 521 may select the decoding order based on the load of the decoding processing of the encoded data. By doing so, the decoding device 500 can select the decoding order without an external instruction such as a user.
  • the parameter relating to the load of the decoding process as a criterion for selecting the decoding order is arbitrary.
  • the decoding control unit 521 may select the decoding order based on the speed of the decoding process. Further, for example, the decoding control unit 521 may select the decoding order based on the capacity of the memory used in the decoding process.
  • the decoding control unit 521 may select the breadth-first order as the decoding order.
  • the decoding control unit 521 sets the decoding priority to the breadth-first. The order may be selected.
  • the determination as to whether the context is initialized and coded for each octree layer may be performed based on information indicating the octree coding method in the coded data. For example, based on the type (Type) included in the frame header or the LoD header described with reference to FIG. 19, the decoding control unit 521 determines whether or not the context is initialized and encoded for each Octree layer. May be determined. By doing so, the decoding device 500 can more easily determine whether the context is initialized and coded for each layer of the Octree.
  • the decoding control unit 521 controls the type selection unit 523 based on the header information (for example, the number of slices, offset, size, and the like) analyzed by the header analysis unit 522, and determines the correspondence between the bit stream and the processing target node. Let me extract the part to be done. Furthermore, the decoding control unit 521 specifies the type of encoding of the processing target node based on the header information (for example, type and the like). The decoding control unit 521 controls the type selection unit 523 to convert the extracted bit stream of the processing target node into a decoding unit corresponding to the specified encoding type among the type 0 decoding unit 524 to the type 3 decoding unit 527. To be supplied. Also, the decoding control unit 521 controls the decoding unit (any of the type 0 decoding unit 524 to the type 3 decoding unit 527) that has supplied the bit stream, and decodes the bit stream.
  • the header information for example, the number of slices, offset, size, and the like
  • the decoding apparatus 500 can decode the bit stream of each node by using an appropriate type according to the encoding type. Therefore, the decoding device 500 can decode the bitstream of the Octree data more accurately.
  • the decoding device 500 can perform the same processing when the encoding type is type 4 as in the case where the encoding type is type 0 to type 3.
  • the lossless decoding unit 511 includes the type 0 decoding unit 524 to the type 3 decoding unit 527. That is, it has been described that the decoding device 500 can perform four types of decoding, that is, type 0 to type 3 (the description of type 4 is omitted). However, the decoding device 500 may be capable of performing any type of decoding. For example, the decoding device 500 may be able to perform a type of decoding other than the example described above.
  • the number of types to which the decoding device 500 corresponds is arbitrary, and is not limited to the above-described example. That is, for example, the decoding device 500 may be capable of performing three or less types of decoding, or may be capable of performing five or more types of decoding.
  • the lossless decoding unit 511 may include a type of decoding unit that can be executed by the decoding device 500 in parallel, such as the type 0 decoding unit 524 to the type 3 decoding unit 527. That is, in the example of FIG. 29, the lossless decoding unit 511 has four decoding units of the type 0 decoding unit 524 to the type 3 decoding unit 527, but is not limited to this example and three or less decoding units are used. Unit, or five or more decoding units.
  • the header analysis unit 522 of the lossless decoding unit 511 of the decoding device 500 determines in step S501 the header (for example, a frame header or a LoD header) included in the bit stream input to the decoding device 500. To analyze.
  • the header for example, a frame header or a LoD header
  • step S502 the decoding control unit 521 of the lossless decoding unit 511 receives a decoding parameter.
  • step S503 the decoding control unit 521 determines whether to perform decoding in the order of depth priority based on the decoding parameters acquired in step S502. If it is determined that the decoding order is the depth priority order, the process proceeds to step S504.
  • step S504 the decoding control unit 521 determines whether or not the bit stream is coded by type 1 to type 3 based on the header analyzed in step S501. If it is determined that encoding has been performed using Type 1 to Type 3, the process proceeds to Step S505.
  • step S505 the decoding control unit 521 selects the next node in the order of depth priority.
  • step S506 the decoding control unit 521 controls the type selection unit 523 to the type 3 decoding unit 527 to decode the processing target node by a method according to the encoding type and the node position.
  • step S507 the Octree decoding unit 512 constructs Octrees in the depth-first order from the generated Octree data by the process of Step S506.
  • the process in step S507 ends, the process proceeds to step S521 in FIG.
  • step S503 in FIG. 30 If it is determined in step S503 in FIG. 30 that decoding is to be performed in the breadth-first order, the process proceeds to step S508. If it is determined in step S504 that the bit stream has not been coded by type 1 to type 3 (for example, coded by type 0), the process proceeds to step S508.
  • step S508 the decoding control unit 521 selects the next node in the breadth-first order.
  • step S509 the decoding control unit 521 controls the type selection unit 523 to the type 3 decoding unit 527, and decodes the processing target node by a method according to the encoding type and the node position.
  • step S510 the Octree decoding unit 512 constructs Octrees in the breadth-first order from the generated Octree data by the process of Step S508.
  • step S507 ends, the process proceeds to step S521 in FIG.
  • step S521 in FIG. 31 the decoding control unit 521 determines whether the processing target node is a leaf node (a terminal node having no other node (also referred to as a child node) belonging to the node). If it is determined that a child node exists and is not a leaf node, the process returns to step S503 in FIG. 30, and the subsequent processes are repeated.
  • a leaf node a terminal node having no other node (also referred to as a child node) belonging to the node. If it is determined that a child node exists and is not a leaf node, the process returns to step S503 in FIG. 30, and the subsequent processes are repeated.
  • step S521 in FIG. 31 when it is determined in step S521 in FIG. 31 that there is no child node and the processing target node is a leaf node, the process proceeds to step S522.
  • step S522 the Octree decoding unit 512 generates voxel data corresponding to the leaf node.
  • step S523 the decryption control unit 521 determines whether all leaf nodes have been processed. If it is determined that there is an unprocessed leaf node, the process returns to step S503 in FIG. 30, and the subsequent processes are repeated.
  • step S523 in FIG. 31 If it is determined in step S523 in FIG. 31 that all leaf nodes have been processed, the process proceeds to step S524.
  • step S524 the Voxel decoding unit 513 generates point cloud data from the voxel data generated in step S522.
  • step S525 the lossless decoding unit 511 to the Voxel decoding unit 513 process the attribute information and combine the attribute information with the above-described position information.
  • the Voxel decoding unit 513 outputs the generated point cloud data to the outside of the decoding device 500.
  • step S525 ends, the decoding process ends.
  • the decoding device 500 can decode the encoded data (bit stream) of the Octree in more various processing orders. Therefore, the decoding device 500 can select a more appropriate processing order, and decode the Octree encoded data in the more appropriate processing order.
  • FIG. 32 is a block diagram illustrating a configuration example of hardware of a computer that executes the series of processes described above by a program.
  • a CPU Central Processing Unit
  • ROM Read Only Memory
  • RAM Random Access Memory
  • the input / output interface 910 is also connected to the bus 904.
  • An input unit 911, an output unit 912, a storage unit 913, a communication unit 914, and a drive 915 are connected to the input / output interface 910.
  • the input unit 911 includes, for example, a keyboard, a mouse, a microphone, a touch panel, an input terminal, and the like.
  • the output unit 912 includes, for example, a display, a speaker, an output terminal, and the like.
  • the storage unit 913 includes, for example, a hard disk, a RAM disk, a nonvolatile memory, and the like.
  • the communication unit 914 includes, for example, a network interface.
  • the drive 915 drives a removable medium 921 such as a magnetic disk, an optical disk, a magneto-optical disk, or a semiconductor memory.
  • the CPU 901 loads a program stored in the storage unit 913 into the RAM 903 via the input / output interface 910 and the bus 904, and executes the program, for example. Is performed.
  • the RAM 903 also appropriately stores data necessary for the CPU 901 to execute various processes.
  • the program executed by the computer can be recorded on a removable medium 921 as a package medium or the like and applied.
  • the program can be installed in the storage unit 913 via the input / output interface 910 by attaching the removable medium 921 to the drive 915.
  • This program can also be provided via a wired or wireless transmission medium such as a local area network, the Internet, or digital satellite broadcasting. In that case, the program can be received by the communication unit 914 and installed in the storage unit 913.
  • a wired or wireless transmission medium such as a local area network, the Internet, or digital satellite broadcasting.
  • the program can be received by the communication unit 914 and installed in the storage unit 913.
  • this program can be installed in the ROM 902 or the storage unit 913 in advance.
  • the present technology can be applied to any configuration.
  • the present technology is applicable to a transmitter or a receiver (for example, a television receiver or a mobile phone) in satellite broadcasting, cable broadcasting such as cable TV, distribution on the Internet, and distribution to a terminal by cellular communication, or
  • the present invention can be applied to various electronic devices such as a device (for example, a hard disk recorder and a camera) that records an image on a medium such as an optical disk, a magnetic disk, and a flash memory and reproduces an image from the storage medium.
  • the present technology is applicable to a processor (for example, a video processor) as a system LSI (Large Scale Integration), a module (for example, a video module) using a plurality of processors, and a unit (for example, a video unit) using a plurality of modules.
  • a processor for example, a video processor
  • LSI Large Scale Integration
  • module for example, a video module
  • unit for example, a video unit
  • the present invention can be implemented as a part of the apparatus, such as a set (for example, a video set) in which other functions are added to the unit.
  • the present technology can be applied to a network system including a plurality of devices.
  • the present technology may be implemented as cloud computing in which a plurality of devices share and process in a shared manner via a network.
  • the present technology is implemented in a cloud service that provides a service relating to an image (moving image) to an arbitrary terminal such as a computer, an AV (Audio Visual) device, a portable information processing terminal, and an IoT (Internet of Things) device. You may make it.
  • a system means a set of a plurality of components (devices, modules (parts), etc.), and it does not matter whether all the components are in the same housing. Therefore, a plurality of devices housed in separate housings and connected via a network, and one device housing a plurality of modules in one housing are all systems. .
  • the system, device, processing unit, and the like to which the present technology is applied can be used in any field such as, for example, transportation, medical care, crime prevention, agriculture, livestock industry, mining, beauty, factories, home appliances, weather, and nature monitoring. . Further, its use is arbitrary.
  • “flag” is information for identifying a plurality of states, and is not limited to information used for identifying two states of true (1) or false (0), as well as three or more. Information that can identify the state is also included. Therefore, the value that the “flag” can take may be, for example, a binary value of 1/0 or a ternary value or more. That is, the number of bits constituting the "flag” is arbitrary, and may be 1 bit or a plurality of bits. Also, the identification information (including the flag) may include not only a form in which the identification information is included in the bit stream but also a form in which the difference information of the identification information with respect to a certain reference information is included in the bit stream. In the above, “flag” and “identification information” include not only the information but also difference information with respect to reference information.
  • association means, for example, that one data can be used (linked) when one data is processed. That is, the data associated with each other may be collected as one data, or may be individual data.
  • the information associated with the encoded data (image) may be transmitted on a different transmission path from the encoded data (image).
  • information associated with encoded data (image) may be recorded on a recording medium different from the encoded data (image) (or another recording area of the same recording medium).
  • the “association” may be a part of the data instead of the entire data. For example, an image and information corresponding to the image may be associated with each other in an arbitrary unit such as a plurality of frames, one frame, or a part of the frame.
  • the configuration described as one device (or processing unit) may be divided and configured as a plurality of devices (or processing units).
  • the configuration described above as a plurality of devices (or processing units) may be configured as one device (or processing unit).
  • a configuration other than those described above may be added to the configuration of each device (or each processing unit).
  • a part of the configuration of a certain device (or processing unit) may be included in the configuration of another device (or other processing unit).
  • the above-described program may be executed by an arbitrary device.
  • the device only has to have necessary functions (functional blocks and the like) and can obtain necessary information.
  • each step of one flowchart may be executed by one device, or a plurality of devices may share and execute the steps.
  • the plurality of processes may be executed by one device, or may be executed by a plurality of devices.
  • a plurality of processes included in one step can be executed as a plurality of steps.
  • the processing described as a plurality of steps can be collectively executed as one step.
  • a program executed by a computer may be configured so that processing of steps for describing a program is executed in chronological order according to the order described in this specification, or may be executed in parallel or when calls are executed. It may be executed individually at a necessary timing such as when it is touched. That is, as long as no contradiction occurs, the processing of each step may be performed in an order different from the order described above. Further, the processing of the steps for describing the program may be executed in parallel with the processing of another program, or may be executed in combination with the processing of another program.
  • a plurality of technologies related to the present technology can be independently and independently implemented unless inconsistency arises.
  • some or all of the present technology described in any of the embodiments may be combined with some or all of the present technology described in other embodiments.
  • some or all of the above-described arbitrary technology may be implemented in combination with another technology that is not described above.
  • An image processing apparatus including an encoding unit that encodes an Octree corresponding to point cloud data by initializing a context for each Octree layer.
  • the image processing device according to (1) wherein the encoding unit encodes each layer of the Octree independently of each other.
  • the encoding unit encodes a top node of each layer of the Octree using a probability table of a top node on one layer.
  • the encoding unit encodes a first node of each layer of the Octree using a probability table of a predetermined node in a previous frame.
  • the image processing device includes: A method of encoding the processing target layer independently of other layers, A method of encoding the head node of the processing target hierarchy using the probability table of the head node on one hierarchy, And a method of encoding the first node of the processing target hierarchy using a probability table of a predetermined node in the previous frame,
  • the image processing apparatus according to any one of (1) to (6), wherein the octree is encoded using any one of the above.
  • the encoding unit includes: For some layers of the Octree, the context is initialized and encoded for each layer, The image processing apparatus according to any one of (1) to (7), wherein each of the other layers of the Octree is encoded using a processing result of a node processed immediately before as a context.
  • the encoding unit includes: A method of encoding each layer of the Octree independently of each other, A method of encoding the first node of each layer of the Octree using a probability table of the first node on one layer, And, a method of encoding the first node of each layer of the Octree using a probability table of a predetermined node of the previous frame,
  • the image processing apparatus according to any one of (1) to (8), wherein one or more candidates are selected from a plurality of candidates including at least one of the above, and the Octree is encoded using the selected method.
  • the image processing device according to (9), wherein the encoding unit generates a bit stream including information indicating the selected method and encoded data of the Octree.
  • An image processing apparatus comprising: a decoding unit that selects a breadth-first order or a depth-first order as a decoding order of Octree encoded data corresponding to point cloud data, and decodes the encoded data in the selected decoding order.
  • a decoding unit selects the decoding order based on an external instruction.
  • the decoding unit selects the decoding order based on a load of a decoding process of the encoded data.
  • the decoding unit selects the decoding order based on a speed of the decoding process.
  • the image processing device according to (14) or (15), wherein the decoding unit selects the decoding order based on a capacity of a memory used in the decoding process.
  • the decoding unit selects the breadth-first order as the decoding order when the octree is not coded in the coded data when the context is initialized for each octree layer.
  • the image processing device according to any one of (16) and (17).
  • the decoding unit wherein the Octree in the encoded data, A method of encoding each layer of the Octree independently of each other, A method of encoding the first node of each layer of the Octree using a probability table of the first node on one layer, A method of encoding the first node of each layer of the Octree using a probability table of a predetermined node in the previous frame, Or a combination of several of these methods,
  • the decoding unit determines whether a context is initialized and encoded for each layer of the Octree based on information indicating a method of encoding the Octree in the encoded data.
  • 300 encoder ⁇ 311 ⁇ Voxel generator, ⁇ 312 ⁇ Octree generator, ⁇ 321 ⁇ encoder controller, ⁇ 322 ⁇ type selector, ⁇ 323 ⁇ type 0 encoder, ⁇ 324 ⁇ type 1 encoder, ⁇ 325 ⁇ type 2 encoder, ⁇ 326 ⁇ type 3 Coding unit, ⁇ 327 ⁇ bit stream generation unit, ⁇ 500 ⁇ decoding device, ⁇ 511 ⁇ lossless decoding unit, ⁇ 512 ⁇ Octree decoding unit, ⁇ 513 ⁇ Voxel decoding unit, ⁇ 521 ⁇ decoding control unit, ⁇ 522 ⁇ header analysis unit, ⁇ 523 ⁇ type selection unit, ⁇ 524 ⁇ type 0 decoding unit, 525 type 1 decoding section, ⁇ 526 ⁇ type 2 decoding section, ⁇ 527 ⁇ type 3 decoding section

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

本開示は、Octreeの符号化データを多様な処理順で復号することができるようにする画像処理装置および方法に関する。 ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する。また、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、その選択した復号順により符号化データを復号する。本開示は、例えば、画像処理装置、電子機器、画像処理方法、またはプログラム等に適用することができる。

Description

画像処理装置および方法
 本開示は、画像処理装置および方法に関し、特に、Octreeの符号化データを多様な処理順で復号することができるようにした画像処理装置および方法に関する。
 従来、例えばポイントクラウド(Point cloud)のような3次元構造を表す3Dデータの符号化方法として、例えばOctreeを用いた符号化があった(例えば非特許文献1参照)。
 このOctreeを用いた符号化では、Octreeの各ノードの情報が幅優先順に探索されて符号化されていた。この符号化として、例えば、算術符号化のようなコンテキストを用いた符号化が行われていた。そのため、処理順に依存関係が生じるため、復号においても各ノードの符号化データが同順(すなわち幅優先順)に処理されていた。
R. Mekuria, Student Member IEEE, K. Blom, P. Cesar., Member, IEEE, "Design, Implementation and Evaluation of a Point Cloud Codec for Tele-Immersive Video",tcsvt_paper_submitted_february.pdf
 しかしながら、復号を幅優先順に行うと、データの保持に必要なメモリ容量が増大するおそれがあり、デコーダのハードウエア性能によっては最適な処理順とならないおそれがあった。
 本開示は、このような状況に鑑みてなされたものであり、Octreeの符号化データを多様な処理順で復号することができるようにするものである。
 本技術の一側面の画像処理装置は、ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する符号化部を備える画像処理装置である。
 本技術の一側面の画像処理方法は、ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する画像処理方法である。
 本技術の他の側面の画像処理装置は、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する復号部を備える画像処理装置である。
 本技術の他の側面の画像処理方法は、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する画像処理方法である。
 本技術の一側面の画像処理装置および方法においては、ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する。
 本技術の他の側面の画像処理装置および方法においては、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順によりその符号化データを復号する。
Octreeの生成の様子の例を示す図である。 Octreeの構造の例を説明する図である。 符号化のタイプの例を説明する図である。 幅優先順の探索について説明する図である。 幅優先順の処理の様子の例について説明する図である。 深さ優先順の探索について説明する図である。 深さ優先順の処理の様子の例について説明する図である。 メモリ使用量の比較例を示す図である。 タイプ1の探索順について説明する図である。 タイプ1の探索順の処理の様子の例について説明する図である。 タイプ2の探索順について説明する図である。 タイプ2の探索順の処理の様子の例について説明する図である。 タイプ3の探索順の処理の様子の例について説明する図である。 タイプ3の探索順の処理の様子の例について説明する図である。 タイプ3の探索順の処理の様子の例について説明する図である。 タイプ3の探索順の処理の様子の例について説明する図である。 タイプ4の探索順の処理の様子の例について説明する図である。 タイプ4の探索順の処理の様子の例について説明する図である。 ヘッダ情報の例を示す図である。 符号化装置の主な構成例を示すブロック図である。 可逆符号化部の主な構成例を示すブロック図である。 符号化処理の流れの例を説明するフローチャートである。 符号化処理の流れの例を説明する、図22に続くフローチャートである。 タイプ0符号化処理の流れの例を説明するフローチャートである。 タイプ1符号化処理の流れの例を説明するフローチャートである。 タイプ2符号化処理の流れの例を説明するフローチャートである。 タイプ3符号化処理の流れの例を説明するフローチャートである。 復号装置の主な構成例を示すブロック図である。 可逆復号部の主な構成例を示すブロック図である。 復号処理の流れの例を説明するフローチャートである。 復号処理の流れの例を説明する、図30に続くフローチャートである。 コンピュータの主な構成例を示すブロック図である。
 以下、本開示を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
 1.Octreeの符号化・復号順
 2.第1の実施の形態(符号化装置)
 3.第2の実施の形態(復号装置)
 4.付記
 <1.Octreeの符号化・復号順>
  <技術内容・技術用語をサポートする文献等>
 本技術で開示される範囲は、実施の形態に記載されている内容だけではなく、出願当時において公知となっている以下の非特許文献に記載されている内容も含まれる。
 非特許文献1:(上述)
 非特許文献2:Ohji Nakagami, Phil Chou, Maja Krivokuca, Khaled Mammou, Robert Cohen, Vladyslav Zakharchenko, Gaelle Martin-Cocher, "Second Working Draft for PCC Categories 1, 3",ISO/IEC JTC1/SC29/WG11, MPEG 2018/N17533, April 2018, San Diego, US
 非特許文献3:TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU(International Telecommunication Union), "Advanced video coding for generic audiovisual 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, Jill Boyce, "Algorithm Description of Joint Exploration Test Model 4", JVET-G1001_v1, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 7th Meeting: Torino, IT, 13-21 July 2017
 つまり、上述の非特許文献に記載されている内容もサポート要件を判断する際の根拠となる。例えば、非特許文献4に記載されているQuad-Tree Block Structure、非特許文献5に記載されているQTBT(Quad Tree Plus Binary Tree) Block Structureが実施の形態において直接的な記載がない場合でも、本技術の開示範囲内であり、請求の範囲のサポート要件を満たすものとする。また、例えば、パース(Parsing)、シンタックス(Syntax)、セマンティクス(Semantics)等の技術用語についても同様に、実施の形態において直接的な記載がない場合でも、本技術の開示範囲内であり、請求の範囲のサポート要件を満たすものとする。
  <ポイントクラウド>
 従来、点群の位置情報や属性情報等により3次元構造を表すポイントクラウド(Point cloud)や、頂点、エッジ、面で構成され、多角形表現を使用して3次元形状を定義するメッシュ(Mesh)等の3Dデータが存在した。
 例えばポイントクラウドの場合、立体構造物(3次元形状のオブジェクト)を多数の点の集合(点群)として表現する。つまり、ポイントクラウドのデータ(ポイントクラウドデータとも称する)は、この点群の各点の位置情報や属性情報(例えば色等)により構成される。したがってデータ構造が比較的単純であるとともに、十分に多くの点を用いることにより任意の立体構造物を十分な精度で表現することができる。
  <ボクセルを用いた位置情報の量子化>
 このようなポイントクラウドデータはそのデータ量が比較的大きいので、符号化等によるデータ量を圧縮するために、ボクセル(Voxel)を用いた符号化方法が考えられた。ボクセルは、符号化対象の位置情報を量子化するための3次元領域である。
 つまり、ポイントクラウドを内包する3次元領域をボクセルと称する小さな3次元領域に分割し、そのボクセル毎に、ポイントを内包するか否かを示すようにする。例えば、図1の左側の例の場合、210×210×210のボクセル10が3次元空間に設定されており、そのボクセル毎にポイントの有無(ポイントを内包するか否か)が示されている。図1の例の場合、グレーのボクセルはポイントを内包するボクセルであることを示し、白色のボクセルはポイントを内包しないボクセルであることを示している。
 このようにすることにより、各ポイントの位置はボクセル単位に量子化される。したがって、ポイントクラウド(Point cloud)データをこのようなボクセルのデータ(ボクセル(Voxel)データとも称する)に変換することにより、情報量の増大を抑制する(典型的には情報量を削減する)ことができる。
  <Octree>
 さらに、このようなボクセル(Voxel)データを用いてOctreeを構築することが考えられた。Octreeは、例えば図2に示されるように、ボクセルデータを木構造化したものである。このOctreeの最下位のノードの各ビットの値が、各ボクセルのポイントの有無を示す。例えば、値「1」がポイントを内包するボクセルを示し、値「0」がポイントを内包しないボクセルを示す。Octreeでは、1ノードが8つのボクセルに対応する。つまり、Octreeの各ノードは、8ビットのデータにより構成され、その8ビットが8つのボクセルのポイントの有無を示す。
 そして、Octreeの上位のノードは、そのノードに属する下位ノードに対応する8つのボクセルを1つにまとめた領域のポイントの有無を示す。つまり、下位ノードのボクセルの情報をまとめることにより上位ノードが生成される。
 例えば、図1の左のボクセル10群における太線で示される範囲11について考えると、範囲11Aのように、2×2×2のボクセル10ずつ情報がまとめられてOctreeの最下位ノードが生成される。つまり、8つのボクセル10のポイントの有無を示す最下位ノードが生成される。
 例えば、この最下位ノードの値が「0」でない場合、すなわち、対応する8つのボクセルの内の少なくとも1つがポイントを内包する場合、その上位のノードが生成される。例えば、範囲11Bのように、その8つのボクセルをまとめた領域(より低解像度のボクセル)が生成され、その低解像度のボクセルのポイントの有無を示す情報が2×2×2ずつまとめられて上位ノードが生成される。つまり、8つの低解像度のボクセルのポイントの有無を示す上位ノードが生成される。
 例えば、この上位ノードの値が「0」でない場合、同様にして、例えば、範囲11Cのように、さらに上位のノードが生成される。
 これに対し、値が「0」のノード、すなわち、対応する8つのボクセルが全てポイントを内包しない場合、そのノードは削除される。
 このようにすることにより、図2に示されるように、値が「0」でないノードからなる木構造(Octree)が構築される。つまり、Octreeは、各解像度のボクセルのポイントの有無を示すことができる。したがって、ボクセルデータをOctree化して符号化することにより、復号の際により多様な解像度のボクセルデータをより容易に復元することができる。つまり、より容易にボクセルのスケーラビリティを実現することができる。
 また、上述のように値が「0」のノードを省略することにより、ポイントが存在しない領域のボクセルを低解像度化することができるので、さらなる情報量の増大の抑制(典型的には情報量の削減)を行うことができる。
  <Octreeの符号化>
 Octreeのデータを符号化することにより、さらなる情報量の増大の抑制(典型的には情報量の削減)を行うことができる。その場合、Octreeの各ノードの情報(8ビットのデータ)をそれぞれ符号化(例えば算術符号化)する。算術符号化では、直前に処理されたノードの符号化結果をコンテキストとして用いて確率テーブルを選択し、その選択した確率テーブルを用いて符号化を行う。つまり、各ノードの符号化は、その処理順(探索順)に依存関係が生じる。
  <幅優先順>
 Octreeのデータの符号化の方法として、例えば、Octreeの各ノードを幅優先順に探索し、その幅優先順に各ノードのデータを符号化する方法が考えられた(図3のタイプ0)。幅優先順とは、例えば図4に示される点線矢印のように、Octreeの最上位ノードから、1階層(LoDとも称する)ずつ各ノードを探索する順である。つまり、図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に示されるように、探索順と同順に行われる。
 上述したように、直前に処理されたノードの符号化結果をコンテキストとして利用して符号化を行う場合、その符号化順に依存関係が生じる。その場合、復号順もその依存関係により制限される。つまり、幅優先順に符号化が行われた場合、復号も、幅優先順に行う必要がある。
 また、復号には親ノード(当該ノード(自ノードとも称する)が属する1階層上位のノード)の情報も必要である。したがって、例えば、図4のOctreeにおけるノードAを復号する際には、その親ノードであるノードBの情報が必要になる。また、そのノードAの後に処理されるノードC乃至ノードYを復号する際には、それらの親ノードであるノードF乃至ノードZの情報が必要になる。つまり、ノードAを復号する際に、ノードB乃至ノードZの情報を保持する必要がある。すなわち、幅優先順で復号する場合、処理対象階層の最初に処理されるノード(先頭ノードとも称する)を復号する際に、その1階層上位のLoDの全ノードの情報を保持する必要がある。
  <深さ優先順>
 幅優先順以外の探索順として例えば深さ優先順がある。深さ優先順とは、例えば、図6に示される点線矢印のように、Octreeの最下位ノードをできるだけ早期に探索する順である。例えば、図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の情報を保持する必要がある。すなわち、幅優先順で復号する場合、処理対象階層の先頭ノードを復号する際に、最上位階層のノード(最上位ノードまたはルートノードとも称する)から自ノードまでの経路の全てのノードの情報を保持する必要がある。
  <幅優先順と深さ優先順の比較>
 Octreeの構造(枝数やLoD数(階層数))にもよるが、一般的にOctreeは、横に広い(LoD数よりも最下位のLoDのノード数の方が多い)。そのため、幅優先順で復号を行う場合の方が、深さ優先順で復号を行う場合よりも、復号の際に使用する(データ保持に必要な)メモリ容量が増大するおそれがあった。
 幅優先順の場合と深さ優先順の場合との、復号の際に使用されるメモリ容量の比較例を図8に示す。図8のグラフは、ポイント数が500万、LoD数(深さ)が20のOctreeの符号化データ(5MPointLoD20)を復号する際に使用されるメモリ容量を比較したものである。図中左の棒グラフの組は、最上位から10LoD(10階層)分のデータを復号した場合のメモリ容量(lod10)を示し、図中中央の棒グラフの組は、最上位から15LoD(15階層)分のデータを復号した場合のメモリ容量(lod15)を示し、図中右の棒グラフの組は、最上位から20LoD(20階層)分のデータを復号した場合のメモリ容量(lod20)を示す。また、各組の左側の白い棒グラフが深さ優先順の場合のメモリ容量を示し、右側のグレーの棒グラフが幅優先順の場合のメモリ容量を示している。
 図8のグラフに明らかなように、どの場合も、幅優先順の場合の方が、深さ優先順の場合よりも、復号の際に使用するメモリ容量が大きい。また、Octreeが大きくなる程(ノード数が増大する程)その差は大きくなる。
 このように復号に必要なメモリ容量が増大すると、デコーダにより大容量のメモリを搭載する必要が生じ、デコーダの製造コストが増大するおそれがあった。また、その分デコーダの小型化が困難になるおそれもあった。また、処理済みのノードの情報を保持する以外の処理に利用可能なメモリ容量が低減するため、復号の処理速度が低減するおそれもあった。
 ただし、どの程度影響があるかは、Octreeの構造(例えばLoD数やノード数等)やデコーダのハードウエア性能(例えばメモリ容量等)に依存する。例えば、デコーダのメモリ容量が、復号の際の使用されるメモリ容量に比べて十分に大きい場合、探索順による処理負荷の変動の影響は少ない。
 また、幅優先順で符号化する場合の方が、深さ優先順で符号化する場合よりも、符号化効率の低減を抑制する(典型的には符号化効率を向上させる)ことができる。
  <最適な探索順>
 つまり、どのような探索順とするのが最適であるかは、Octreeの構造、デコーダのハードウエア性能(メモリ容量等)、および、何を優先させるか(例えば符号化効率の向上を優先させるかまたはデコーダのメモリ容量の低減を優先させるか)等に依存する。つまり、幅優先順で復号を行わせるようにすることが必ず最適であるとは限らない。換言するに、幅優先順で復号を行わせるようにすることが必ず最適であるとは限らない。
 そこで、図3の表の上から2行目に記載のように、Octreeの符号化データを幅優先以外の方法により復号することができるようにOctreeの符号化を行うようにする。つまり、より多様な処理順でOctreeの符号化データを復号することができるように、Octreeの符号化を行うようにする。
 より具体的には、例えば、ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化(リセット)して符号化するようにする。例えば、Octreeを符号化する画像処理装置において、ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化(リセット)して符号化する符号化部を備えるようにする。
 このようにすることにより、デコーダに、より多様な処理順でOctreeの符号化データを復号させることができる。したがって、デコーダが、より適切な処理順でOctreeの符号化データを復号するようにすることができる。
 また、例えば、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、その選択した復号順により符号化データを復号するようにする。例えば、Octreeの符号化データを復号する画像処理装置において、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、その選択した復号順により符号化データを復号する復号部を備えるようにする。
 このようにすることにより、デコーダは、より多様な処理順でOctreeの符号化データを復号することができる。つまり、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
  <タイプ1>
 ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する方法として、例えば図3の上から3行目に示されるように、Octreeの各階層を互いに独立に符号化するようにしてもよい(タイプ1)。
 例えば、図9に示される点線矢印のように、Octreeの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の先頭ノードにおいて算術符号化が初期化されるので、エンコーダは、その1階層上のLoDの最後のノードの処理結果を参照せずにその先頭ノードの算術符号化を行うことができる。つまり、エンコーダは、LoD毎に独立に処理することができる。したがって、エンコーダは、例えば、LoD毎に符号化処理を並列化する(各LoDの符号化を互いに並列に行う)ことができる。例えば複数の処理を並列に実行することができる場合、エンコーダは、このように各LoDを並列に算術符号化することにより、より高速に符号化を行うことができる。
 さらに、このように各LoDの算術符号化が互いに独立している(各LoDの先頭ノードとその1階層上位のLoDの最後のノードとで算術符号化の依存関係が無い)ことから、このタイプ1の場合、この算術符号化に対応する復号(すなわち算術復号)の処理順(復号順とも称する)が幅優先順に限定されない。例えば、デコーダは、このタイプ1の符号化により生成されたOctreeの符号化データの復号順を、幅優先順(図5)とすることもできるし、深さ優先順(図7)とすることもできる。つまり、デコーダは、より多様な処理順でOctreeの符号化データを復号することができる。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
 なお、このタイプ1の場合も、位置を復元するための親子間の依存関係は必要である。つまり、処理対象のノードの親ノードの情報が必要である。また、ビットストリームにおいて、直接的に処理対象のLoDの先頭ノードの符号化データにアクセスすることができるように、各LoDの先頭ノードのデータ位置を示す情報を、ヘッダ情報に含めるようにしてもよい。このようにすることにより、そのヘッダ情報を参照することにより、ビットストリーム内の所望のLoDの先頭ノードの符号化データに、より容易にアクセスする(その符号化データを読み出す)ことができる。つまり、より高速に復号を行う(すなわち復号処理の負荷の増大を抑制する(典型的には復号処理の負荷を低減させる))ことができる。
  <タイプ2>
 ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する方法として、例えば図3の上から4行目に示されるように、Octreeの各LoDの先頭ノードは、その親ノードの確率テーブルを利用して符号化を行うようにしてもよい(タイプ2)。
 例えば、図11に示される点線矢印のように、Octreeの各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の先頭ノードにおいて算術符号化が初期化されるので、エンコーダは、その1階層上のLoDの最後のノードの処理結果を参照せずにその先頭ノードの算術符号化を行うことができる。
 さらに、このタイプ2の場合、各LoDの先頭ノードの算術符号化においてその親ノードの確率テーブルを利用するので、エンコーダは、タイプ1の場合よりも符号化効率の低減を抑制することができる(典型的には符号化効率を向上させることができる)。
 また、このタイプ2の場合、各LoDの先頭ノード同士で依存関係が存在するものの、それ以外のノードは、LoD間で互いに独立している。したがって、エンコーダは、各LoDの先頭ノード以外のノードについては、各LoDの算術符号化を互いに並列に行うことができる。例えば複数の処理を並列に実行することができる場合、エンコーダは、このように各LoDを並列に算術符号化することにより、より高速に符号化を行うことができる。
 さらに、タイプ1の場合と同様に各LoDの先頭ノードとその1階層上位のLoDの最後のノードとで算術符号化の依存関係が無いことから、このタイプ2の場合も、算術復号の復号順が幅優先順に限定されない。例えば、デコーダは、このタイプ2の符号化により生成されたOctreeの符号化データの復号順を、幅優先順(図5)とすることもできるし、深さ優先順(図7)とすることもできる。つまり、デコーダは、より多様な処理順でOctreeの符号化データを復号することができる。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
 なお、このタイプ2の場合も、位置を復元するための親子間の依存関係は必要である。つまり、処理対象のノードの親ノードの情報が必要である。また、ビットストリームにおいて、直接的に処理対象のLoDの先頭ノードの符号化データにアクセスすることができるように、各LoDの先頭ノードのデータ位置を示す情報を、ヘッダ情報に含めるようにしてもよい。このようにすることにより、そのヘッダ情報を参照することにより、ビットストリーム内の所望のLoDの先頭ノードの符号化データに、より容易にアクセスする(その符号化データを読み出す)ことができる。つまり、より高速に復号を行う(すなわち復号処理の負荷の増大を抑制する(典型的には復号処理の負荷を低減させる))ことができる。
  <タイプ3>
 ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する方法として、例えば図3の上から5行目に示されるように、Octreeの各LoDの先頭ノードは、その前フレームの所定のノードの確率テーブルを利用して符号化を行うようにしてもよい(タイプ3)。
 例えば、図13に示される点線矢印のように、フレーム1(Frame1)のOctreeの各LoDの先頭ノードの符号化において、その直前のフレーム(フレーム0(Frame0))のOctreeの所定のノードの確率テーブルを利用するようにする。より具体的には、例えば、図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の先頭ノードにおいて算術符号化が初期化されるので、エンコーダは、その1階層上のLoDの最後のノードの処理結果を参照せずにその先頭ノードの算術符号化を行うことができる。
 さらに、このタイプ3の場合、図13や図14の例のように、各LoDの先頭ノードの算術符号化において前フレームの同一LoDの最後のノードの確率テーブルが利用されるようにすることにより、エンコーダは、タイプ2の場合よりも多くの回数更新した確率テーブルを用いて算術符号化を行うことができる。したがって、エンコーダは、タイプ2の場合よりも符号化効率の低減を抑制することができる(典型的には符号化効率を向上させることができる)。
 また、このタイプ3の場合、タイプ1の場合と同様に各LoDの算術符号化が互いに独立しており、エンコーダは、各LoDの算術符号化を互いに並列に行うことができる。例えばエンコーダが複数の処理を並列に実行することができる場合、エンコーダは、このように各LoDを並列に算術符号化することにより、より高速に符号化を行うことができる。
 また、このタイプ3の場合も、タイプ1の場合と同様に、各LoDの先頭ノードとその1階層上位のLoDの最後のノードとで算術符号化の依存関係が無い。したがって、この算術符号化に対応する復号(すなわち算術復号)の処理順(復号順とも称する)は、幅優先順とすることもできるし、深さ優先順とすることもできる。つまり、デコーダは、図5のような処理順で各ノードの符号化データを算術復号することもできるし、図7のような処理順で各ノードの符号化データを算術復号することもできる。つまり、デコーダは、より多様な処理順でOctreeの符号化データを復号することができる。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
 なお、このタイプ3の場合も、位置を復元するための親子間の依存関係は必要である。つまり、処理対象のノードの親ノードの情報が必要である。また、ビットストリームにおいて、直接的に処理対象のLoDの先頭ノードの符号化データにアクセスすることができるように、各LoDの先頭ノードのデータ位置を示す情報を、ヘッダ情報に含めるようにしてもよい。このようにすることにより、そのヘッダ情報を参照することにより、ビットストリーム内の所望のLoDの先頭ノードの符号化データに、より容易にアクセスする(その符号化データを読み出す)ことができる。つまり、より高速に復号を行う(すなわち復号処理の負荷の増大を抑制する(典型的には復号処理の負荷を低減させる))ことができる。
 なお、確率テーブルを参照するノード(参照先のノード)は、前フレームのノードであれば任意である(任意のノードの確率テーブルを引き継いで算術復号することができる)。例えば、図15の例のように、フレーム0の最後のノードの確率テーブルが複製(コピー)されるようにしてもよい。例えば、図16に示されるように、フレーム1のノードN、ノードG、ノードD、ノードB、またはノードAを処理対象とする場合、算術符号化が初期化され、さらに、フレーム0の最後のノードであるノードYの確率テーブルが複製(コピー)され、その複製した確率テーブルを用いて算術符号化が行われるようにしてもよい。
 このようにすることにより、図13および図14を参照して説明した例の場合よりも多くの回数更新した確率テーブルを用いて算術符号化を行うことができる。したがって、エンコーダは、符号化効率の低減をより抑制することができる(典型的には符号化効率をより向上させることができる)。
 なお、以上においては1つ前に処理された前フレームの確率テーブルを参照するように説明したが、この確率テーブルの参照先のフレームは任意である。例えば、2つ以上前に処理されたフレームの任意のノードの確率テーブルを参照するようにしてもよい。
  <タイプ4>
 また、例えば図3の上から6行目に示されるように、上述したタイプ0乃至タイプ3を組み合わせて用いるようにしてもよい(タイプ4)。
 例えば、図17に示されるように、タイプ0と、タイプ1乃至タイプ3のいずれかとを組み合わせて用いるようにしてもよい。つまり、Octreeの一部の階層については、階層毎にコンテキストを初期化して符号化し、その他の階層については、1つ前に処理されたノードの処理結果をコンテキストとして用いて各ノードを符号化するようにしてもよい。
 図17の例の場合、最上位層からノードD乃至ノードXの階層までの各LoDに対して、タイプ0、すなわち、1つ前に処理されたノードの処理結果をコンテキストとして用いて各ノードを符号化する方法が適用されている。また、ノードB乃至ノードZの階層から最下位層の各LoDに対して、タイプ1、すなわち、Octreeの各階層を、互いに独立に符号化する方法が適用されている。
 タイプ0の方がタイプ1よりも符号化効率が良いので、このようにすることにより、上位層の符号化効率の低減を抑制することができるとともに、下位層のデコードに対して、より多様な処理順でOctreeの符号化データを復号することができる。例えば、デコーダは、階層のデコードに対して深さ優先順に復号を行うことにより、全階層を幅優先順で復号する場合に比べて、使用するメモリ容量の増大を抑制することができる。
 なお、組み合わせ方は任意である。例えば、上述した例に限らず、任意の階層においてタイプを切り替えるようにしてもよい。また、上位層に対してタイプ1を適用し、下位層に対してタイプ0を適用するようにしてもよい。このようにすることにより、上述の例とは逆に、下位層の符号化効率の低減を抑制することができるとともに、上位層のデコードに対して、より多様な処理順でOctreeの符号化データを復号することができる。
 一般的に復号の頻度は、下位層のノードよりも上位層のノードの方が多い。したがって、例えば、上位層に対してタイプ1を適用し、下位層に対してタイプ0を適用することにより、復号の頻度の多い上位層の復号順を多様化するとともに、復号の頻度の少ない下位層の符号化効率の低減を抑制することができる。
 また、Octreeは、上位層ほどノード数が少ないので、上位層の方が下位層に比べてメモリ使用量は少ない。したがって、例えば、復号順によるメモリ使用量への影響は、上位層ほど少ない。したがって、上位層に対してタイプ0を適用し、下位層に対してタイプ1を適用することにより、復号順によるメモリ使用量への影響が比較的大きい下位層の復号順を多様化するとともに、その影響が比較的少ない上位層の符号化効率の低減を抑制することができる。
 また、以上においては、タイプ0とタイプ1との組み合わせについて説明したが、タイプ2やタイプ3も、上述のタイプ1の場合と同様にタイプ0と組み合わせることができる。換言するに、タイプ1乃至タイプ3は、一部のLoDにのみ適用することができる。
 また、例えば、図18に示されるように、タイプ1乃至タイプ3の内の複数を組み合わせて用いるようにしてもよい。つまり、処理対象階層を他の階層と独立に符号化する方法、処理対象階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、および、処理対象階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、の内のいずれか複数を用いてOctreeを符号化するようにしてもよい。
 図18の例の場合、最上位層からノードD乃至ノードXの階層までの各LoDに対して、タイプ2、すなわち、処理対象階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法が適用されている。また、ノードB乃至ノードZの階層から最下位層の各LoDに対して、タイプ1、すなわち、処理対象階層を他の階層と独立に符号化する方法が適用されている。
 タイプ2の方がタイプ1よりも符号化効率が良いので、このようにすることにより、全階層にタイプ1を適用する場合よりも、上位層の符号化効率の低減を抑制することができる。また、タイプ1の方がタイプ2よりも各LoDを互いに独立に符号化することができるので、このようにすることにより、全階層にタイプ2を適用する場合よりも、下位層の符号化をより高速に行うことができる。
 なお、組み合わせ方は任意である。例えば、上述した例に限らず、任意の階層においてタイプを切り替えるようにしてもよい。また、上位層に対してタイプ2を適用し、下位層に対してタイプ1を適用するようにしてもよい。また、例えばタイプ2とタイプ3、タイプ1とタイプ3等のように、上述のタイプ1とタイプ2以外の組み合わせであってもよい。さらに、3種類以上のタイプを組み合わせるようにしてもよい。また、例えば、上位層から順にタイプ0、タイプ1、タイプ0を組み合わせる等、同じタイプを複数回組み合わせてもよい。もちろん、これらのタイプの組み合わせにさらにタイプ0を組み合わせてもよい。例えば、タイプ0、タイプ1、タイプ2、タイプ3を全て組み合わせてもよい。いずれの場合も、上述のタイプ1とタイプ2との組み合わせの例の場合と同様に、各タイプの特徴に応じた効果を得ることができる。換言するに、タイプ1乃至タイプ4は、一部のLoDにのみ適用することができる。
 いずれの組み合わせ例を適用する方が良いかはユースケースに依存する。例えば、データの使用頻度に応じて各LoDの処理量やリソース使用量の配分を決定するようにしてもよい。
 なお、タイプ1の場合、LoD毎に独立に符号化する。つまり、この場合、各LoDをスライス化しているとも言える。このようなスライス化は、LoD毎でなくてもよい。つまり、各LoDの先頭ノード(最後のノード)以外の位置において、スライスを切る(符号化の依存関係を無くす)ようにしてもよい。つまり、各LoDの先頭ノード以外のノードにおいて、算術符号化をリセットするようにしてもよい。
 例えば、複数のLoDを1つのスライスとするようにしてもよい。例えば、上述のようにタイプ0とタイプ1とを組み合わせることにより、このような複数のLoDを含むスライスを実現することができる。
 また、例えば、LoDの途中のノードにおいてスライスを切るようにしてもよい。例えば、タイプ0に、スライスの途中でタイプ1を適用することにより、このようなスライスの切り方を実現することができる。つまり、上述の複数タイプの組み合わせは、LoD単位でなくてもよく、LoDの途中のノードにおいて組み合わせるようにしてもよい。
 以上のように、スライスの切り方(スライス構成)は任意である。例えば、エンコーダが、各スライスの処理量がより均一となるように、各スライスを形成するようにしてもよい。例えば、エンコーダが、各スライスのノード数がより均一となるように、各スライスを形成するようにしてもよい。このように各スライスの処理量をより均一化することにより、エンコーダやデコーダが、各スライスを並列処理する場合に、負荷をより均一に分散することができる。
 また、例えば、エンコーダが、各スライスの復号の際のリソース使用量(例えばメモリ使用量)がより均一となるように、各スライスを形成するようにしてもよい。また、例えば、エンコーダが、各スライスの符号量(ビットストリームサイズ)がより均一となるように、各スライスを形成するようにしてもよい。
  <タイプの選択>
 また、上述のタイプ0乃至タイプ4の内の少なくとも1つを含む複数のタイプを候補とし、エンコーダがその複数の候補の中から所望のタイプを選択して符号化に適用するようにしてもよい。例えば、エンコーダが、Octreeの各階層を互いに独立に符号化する方法、Octreeの各階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、および、Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、の内の少なくとも1つを含む複数の候補の中から1つ以上を選択し、その選択した方法を用いてOctreeを符号化するようにしてもよい。
 例えば、エンコーダがユーザ等の外部からタイプの指定(エンコードパラメータ)を受け付け、その指定に基づいて複数の候補の中からタイプを選択し、符号化に適用するようにしてもよい。このようにすることにより、エンコーダは、より多様な方法でOctreeを符号化することができる。したがって、エンコーダは、より多様な仕様のデコーダに対応する方法でOctreeを符号化することができる。
  <タイプ情報のシグナル>
 なお、上述した符号化のタイプに関する情報を、デコーダ側に伝送するようにしてもよい。例えば、エンコーダが、上述のように複数の候補の中から選択した符号化のタイプを示す情報と、その符号化により生成したOctreeの符号化データとを含むビットストリームを生成するようにしてもよい。例えば、エンコーダが、そのビットストリームのヘッダ情報として、その符号化のタイプに関する情報を伝送する(シグナルする)ようにしてもよい。例えば、図19に示されるように、ビットストリームに含まれる、フレーム毎のヘッダ情報であるフレームヘッダ(Frame Header)や、LoD毎のヘッダ情報であるLoDヘッダ(LoD Header)において、符号化のタイプに関する情報を伝送する(シグナルする)ようにしてもよい。
 図19の例の場合、フレームヘッダにおいて、タイプ(Type)、スライス数(SliceNum)、オフセット(Offset)等の情報がシグナルされる。タイプ(Type)は、そのフレームに適用された符号化のタイプを示す識別情報である。例えば、上述のようにタイプ0乃至タイプ4が適用可能な場合、「0」乃至「4」のいずれかがセット(設定)される。もちろん、このタイプ(Type)の値は任意である。このタイプ(Type)を参照することにより、デコーダは、そのフレームに適用された符号化のタイプをより容易に識別することができる。したがって、そのビットストリームに対する適切な復号方法(復号順)をより容易に選択することができる。
 スライス数(SliceNum)は、そのフレームに含まれるスライスの数を示す情報である。例えば、タイプ1が適用された場合、途中のノードで算術符号化がリセットされ、スライスが形成される。スライス数(SliceNum)には、このように形成されたスライスの数を示す値がセット(設定)される。このスライス数(SliceNum)を参照することにより、デコーダは、より容易にスライス数を把握することができるので、各スライスの復号の並列化をより容易かつより適切に行うことができる。なお、このスライス数(SliceNum)は、複数のスライスが形成される場合、すなわち、タイプ1の符号化が適用される場合(Type=1または4の場合)にのみシグナルされ、その他の場合は省略されるようにしてもよい。
 オフセット(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の符号化データをより容易に抽出することができる。
 もちろん、上述した情報は、上述した例以外のヘッダ情報においてシグナルするようにしてもよい。また、上述した情報は、ビットストリームの任意の位置に格納することができる。さらに、上述した情報は、Octreeのビットストリームとは異なるデータとして(例えば、Octreeのビットストリームと関連付けて)デコーダ側に伝送される(シグナルされる)ようにしてもよい。
  <その他>
 なお、以上においては、Octreeのデータの符号化方法としてコンテキストを用いる算術符号化(例えばCABAC(Context-based Adaptive Binary Arithmetic Coding))を例に説明したが、Octreeのデータの符号化方法は、コンテキストを用いる可逆符号化(エントロピ符号化)であればよく、上述の算術符号化に限定されない。例えばNon-binaryの符号化方式であってもよい。また、複数のコンテキストを用いる符号化方式であってもよい。
 <2.第1の実施の形態>
  <符号化装置>
 次に、以上のような符号化を実現する構成について説明する。図20は、本技術を適用した画像処理装置の一態様である符号化装置の構成の一例を示すブロック図である。図20に示される符号化装置300は、ポイントクラウドのような3Dデータをボクセル(Voxel)およびOctreeを用いて符号化する装置である。
 なお、図20においては、処理部やデータの流れ等の主なものを示しており、図20に示されるものが全てとは限らない。つまり、符号化装置300において、図20においてブロックとして示されていない処理部が存在したり、図20において矢印等として示されていない処理やデータの流れが存在したりしてもよい。これは、符号化装置300内の処理部等を説明する他の図においても同様である。
 図20に示されるように符号化装置300は、Voxel生成部311、Octree生成部312、および可逆符号化部313を有する。
 Voxel生成部311は、ボクセル(Voxel)の生成に関する処理を行う。例えば、Voxel生成部311は、符号化装置300に入力されるポイントクラウド(Point cloud)データを取得する。また、Voxel生成部311は、その取得したポイントクラウドデータを含む領域に対してバウンディングボックスを設定し、さらにそのバウンディングボックスを分割し、ボクセルを設定することにより、そのポイントクラウドデータの位置情報を量子化する。Voxel生成部311は、このようにして生成したボクセル(Voxel)データをOctree生成部312に供給する。
 Octree生成部312は、Octreeの生成に関する処理を行う。例えば、Octree生成部312は、Voxel生成部311から供給されるボクセルデータを取得する。また、Octree生成部312は、そのボクセルデータからOctreeを生成する。Octree生成部312は、生成したOctreeデータを可逆符号化部313に供給する。
 可逆符号化部313は、Octreeデータの可逆符号化に関する処理を行う。例えば、可逆符号化部313は、Octree生成部312から供給されるOctreeデータを取得する。また、可逆符号化部313は、符号化装置300の外部から入力されるエンコードパラメータを取得する。このエンコードパラメータは、適用する符号化のタイプを指定する情報であり、例えばユーザ操作により入力されたり、外部の装置等から供給されたりする。可逆符号化部313は、このエンコードパラメータにより指定されるタイプでOctreeデータを符号化し、Octreeの符号化データを生成する。可逆符号化部313は、そのOctreeの符号化データを含むビットストリームを生成し、そのビットストリームを符号化装置300の外部に出力する(復号側に伝送させる)。
 なお、これらの処理部(Voxel生成部311、Octree生成部312、および可逆符号化部313)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
 以上のように、可逆符号化部313は、複数のタイプの符号化に対応しており、より多様な方法でOctreeを符号化することができる。特に、可逆符号化部313は、Octreeの階層毎にコンテキストを初期化して符号化するタイプに対応している。したがって、可逆符号化部313(すなわち符号化装置300)は、デコーダがより多様な処理順でOctreeの符号化データを復号することができるように符号化を行うことができる。付言するに、可逆符号化部313(すなわち符号化装置300)がこのようなタイプの符号化を行うことにより、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
  <可逆符号化部>
 図21は、可逆符号化部313の主な構成例を示すブロック図である。この例の場合、可逆符号化部313は、Octreeの階層毎にコンテキストを初期化して符号化するタイプを含む複数のタイプの符号化を候補として準備しており、その複数の候補の中からエンコードパラメータにより指定されるタイプの符号化を選択し、その選択したタイプによりOctreeを符号化する。
 図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ヘッダを生成し、それをビットストリーム生成部327に供給する。
 タイプ選択部322は、符号化のタイプの選択に関する処理を行う。例えば、タイプ選択部322は、Octree生成部312から供給されるOctreeデータを取得する。また、タイプ選択部322は、符号化制御部321により制御され、そのOctreeデータを、タイプ0符号化部323乃至タイプ3符号化部326の内、適用された符号化のタイプに対応する処理部に供給する(Octreeデータの供給先を切り替える)。例えば、タイプ選択部322は、適用する符号化のタイプをOctreeデータのLoD毎に選択する(すなわち、Octreeデータの供給先をLoD毎に切り替える)ことができる。
 タイプ0符号化部323は、例えば<1.Octreeの符号化・復号順>の<幅優先順>において図4および図5等を参照して説明したようなタイプ0の符号化に関する処理を行う。例えば、タイプ0符号化部323は、タイプ選択部322から供給されるOctreeデータを取得する。また、タイプ0符号化部323は、そのOctreeデータに対して、タイプ0の符号化を行い、符号化データを生成する。すなわち、タイプ0符号化部323は、Octreeデータの各ノードのデータを幅優先順で符号化する。タイプ0符号化部323は、タイプ0の符号化により生成した符号化データをビットストリーム生成部327に供給する。タイプ0符号化部323は、符号化制御部321により制御されて、これらの処理を行う。
 タイプ1符号化部324は、例えば<1.Octreeの符号化・復号順>の<タイプ1>において図9および図10等を参照して説明したようなタイプ1の符号化に関する処理を行う。例えば、タイプ1符号化部324は、タイプ選択部322から供給されるOctreeデータを取得する。また、タイプ1符号化部324は、そのOctreeデータに対して、タイプ1の符号化を行い、符号化データを生成する。すなわち、タイプ1符号化部324は、Octreeの各階層を互いに独立に符号化する。タイプ1符号化部324は、タイプ1の符号化により生成した符号化データをビットストリーム生成部327に供給する。タイプ1符号化部324は、符号化制御部321により制御されて、これらの処理を行う。
 タイプ2符号化部325は、例えば<1.Octreeの符号化・復号順>の<タイプ2>において図11および図12等を参照して説明したようなタイプ2の符号化に関する処理を行う。例えば、タイプ2符号化部325は、タイプ選択部322から供給されるOctreeデータを取得する。また、タイプ2符号化部325は、そのOctreeデータに対して、タイプ2の符号化を行い、符号化データを生成する。すなわち、タイプ2符号化部325は、Octreeの各LoDの先頭ノードを、その親ノードの確率テーブルを利用して符号化する。タイプ2符号化部325は、タイプ2の符号化により生成した符号化データをビットストリーム生成部327に供給する。タイプ2符号化部325は、符号化制御部321により制御されて、これらの処理を行う。
 タイプ3符号化部326は、例えば<1.Octreeの符号化・復号順>の<タイプ3>において図13および図14等を参照して説明したようなタイプ3の符号化に関する処理を行う。例えば、タイプ3符号化部326は、タイプ選択部322から供給されるOctreeデータを取得する。また、タイプ3符号化部326は、そのOctreeデータに対して、タイプ3の符号化を行い、符号化データを生成する。すなわち、タイプ3符号化部326は、Octreeの各LoDの先頭ノードを、その前フレームの所定のノードの確率テーブルを利用して符号化する。タイプ3符号化部326は、タイプ3の符号化により生成した符号化データをビットストリーム生成部327に供給する。タイプ3符号化部326は、符号化制御部321により制御されて、これらの処理を行う。
 ビットストリーム生成部327は、ビットストリームの生成に関する処理を行う。例えば、ビットストリーム生成部327は、タイプ0符号化部323乃至タイプ3符号化部326から供給されるOctreeの符号化データを取得する。また、ビットストリーム生成部327は、符号化制御部321から供給されるヘッダ情報(例えばフレームヘッダやLoDヘッダ等)を取得する。さらに、ビットストリーム生成部327は、そのタイプ0符号化部323乃至タイプ3符号化部326から供給される符号化データと、符号化制御部321から供給されるヘッダ情報とを含むビットストリームを生成する。そして、ビットストリーム生成部327は、その生成したビットストリームを符号化装置300の外部に出力する。
 なお、これらの処理部(符号化制御部321乃至ビットストリーム生成部327)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
 なお、Octreeの途中で適用する符号化のタイプを切り替えることにより、可逆符号化部313は、タイプ4を適用することができる。この符号化のタイプの切り替えは、符号化制御部321が行う。
 以上のように、可逆符号化部313は、タイプ0乃至タイプ4の符号化を行うことができる。したがって可逆符号化部313(符号化装置300)は、<1.Octreeの符号化・復号順>において上述したような、各タイプの効果を得ることができる。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
 なお、以上においては、可逆符号化部313が、タイプ0符号化部323乃至タイプ3符号化部326を備えるように説明した。すなわち、符号化装置300が、タイプ0乃至タイプ3の4つのタイプの符号化を行うことができる(タイプ4については説明を省略する)ように説明した。しかしながら、符号化装置300は、任意のタイプの符号化を行うことができるようにしてもよい。例えば、符号化装置300が、上述した例以外のタイプの符号化を行うことができるようにしてもよい。
 また、符号化装置300が対応するタイプの数は任意であり、上述の例に限定されない。すなわち、例えば、符号化装置300が、3以下のタイプの符号化を行うことができるようにしてもよいし、5以上のタイプの符号化を行うことができるようにしてもよい。
 いずれの場合も、可逆符号化部313が、タイプ0符号化部323乃至タイプ3符号化部326のように、符号化装置300が実行可能なタイプの符号化部を並列に備えるようにすればよい。つまり、図21の例においては、可逆符号化部313は、タイプ0符号化部323乃至タイプ3符号化部326の4つの符号化部を有しているが、この例に限定されず、3つ以下の符号化部を備えるようにすることもできるし、5つ以上の符号化部を備えるようにすることもできる。
  <符号化処理の流れ>
 次に、符号化装置300により実行される符号化処理の流れの例を、図22および図23のフローチャートを参照して説明する。
 符号化処理が開始されると、符号化装置300のVoxel生成部311は、ステップS301において、符号化装置300に入力されたポイントクラウド(Point cloud)データからボクセル(Voxel)データを生成する。
 ステップS302において、Octree生成部312は、ステップS301において生成されたボクセルデータからOctreeを構築し、そのOctreeを幅優先順に探索してOctreeデータを生成する。
 ステップS303において、可逆符号化部313の符号化制御部321は、符号化装置300の外部から入力されるエンコードパラメータを受け付ける。
 ステップS304において、可逆符号化部313は、ステップS302において構築されたOctreeから処理対象LoDを1つ選択する。可逆符号化部313の符号化制御部321は、最上位層から最下位層に向かう順に1階層ずつ処理対象LoDを選択する。つまり、可逆符号化部313のタイプ選択部322は、その符号化制御部321の制御に従って、Octree生成部312からOctreeデータを、先頭から1LoD分ずつ読み込み、それを処理対象とする。
 ステップS305において、可逆符号化部313の符号化制御部321は、ステップS303において取得したエンコードパラメータに基づいて、処理対象LoDのデータを、タイプ0で符号化するか否かを判定する。タイプ0で符号化を行うと判定された場合、タイプ選択部322は、処理対象LoDのデータをタイプ0符号化部323に供給する。そして処理はステップS306に進む。
 ステップS306において、可逆符号化部313は、タイプ0符号化処理を実行し、処理対象LoDのデータをタイプ0で符号化する。このタイプ0符号化処理の詳細については後述する。
 タイプ0符号化処理が終了すると、処理は、図23のステップS324に進む。また、図22のステップS305において、タイプ0で符号化を行わないと判定された場合、処理はステップS307に進む。
 ステップS307において、可逆符号化部313の符号化制御部321は、ステップS303において取得したエンコードパラメータに基づいて、処理対象LoDのデータを、タイプ1で符号化するか否かを判定する。タイプ1で符号化を行うと判定された場合、タイプ選択部322は、処理対象LoDのデータをタイプ1符号化部324に供給する。そして処理はステップS308に進む。
 ステップS308において、可逆符号化部313は、タイプ1符号化処理を実行し、処理対象LoDのデータをタイプ1で符号化する。このタイプ1符号化処理の詳細については後述する。
 タイプ1符号化処理が終了すると、処理は、図23のステップS324に進む。また、図22のステップS307において、タイプ1で符号化を行わないと判定された場合、処理は図23のステップS321に進む。
 図23のステップS321において、可逆符号化部313の符号化制御部321は、ステップS303において取得したエンコードパラメータに基づいて、処理対象LoDのデータを、タイプ2で符号化するか否かを判定する。タイプ2で符号化を行うと判定された場合、タイプ選択部322は、処理対象LoDのデータをタイプ2符号化部325に供給する。そして処理はステップS322に進む。
 ステップS322において、可逆符号化部313は、タイプ2符号化処理を実行し、処理対象LoDのデータをタイプ2で符号化する。このタイプ2符号化処理の詳細については後述する。
 タイプ2符号化処理が終了すると、処理は、ステップS324に進む。また、ステップS321において、タイプ2で符号化を行わないと判定された場合、タイプ選択部322は、処理対象LoDのデータをタイプ3符号化部326に供給する。そして処理はステップS323に進む。
 ステップS323において、可逆符号化部313は、タイプ3符号化処理を実行し、処理対象LoDのデータをタイプ3で符号化する。このタイプ3符号化処理の詳細については後述する。タイプ3符号化処理が終了すると、処理は、ステップS324に進む。
 ステップS324において、可逆符号化部313の符号化制御部321は、全てのLoDを処理したか否かを判定する。未処理のLoDが存在すると判定された場合、処理は図22のステップS304に戻り、それ以降の処理が繰り返される。すなわち、ステップS304において新たなLoD(未処理のLoD)が処理対象として選択され、その処理対象LoDに対して、ステップS305乃至ステップS323の各処理が適宜実行される。
 以上のように、各LoDに対してステップS304乃至ステップS324の処理が適宜実行され、ステップS324において全てのLoDを処理したと判定された場合、処理はステップS325に進む。
 ステップS325において、可逆符号化部313の符号化制御部321は、フレームヘッダを生成する。
 ステップS326において、可逆符号化部313(タイプ0符号化部323乃至タイプ3符号化部326のいずれか)は、上述したOctreeデータに対応する属性情報を生成し、符号化する。
 ステップS327において、ビットストリーム生成部327は、Octreeデータの符号化データとヘッダ情報とを含むビットストリームを生成し、符号化装置300の外部に出力する(復号側に伝送する)。
 ステップS327の処理が終了すると、符号化処理が終了する。符号化装置300は、各フレームに対してこのような符号化処理を実行し、各フレームのOctreeデータのビットストリームを生成する。
  <タイプ0符号化処理の流れ>
 次に、図22のステップS306において実行されるタイプ0符号化処理の流れの例を、図24のフローチャートを参照して説明する。
 タイプ0符号化処理が開始されると、符号化制御部321は、ステップS341において、処理対象LoDが最上位LoD(最上位層のLoD)であるか否かを判定する。最上位LoDであると判定された場合、処理はステップS342に進む。
 ステップS342において、タイプ0符号化部323は、算術符号化(のコンテキスト)をリセットする。
 ステップS343において、タイプ0符号化部323は、処理対象LoDの先頭ノードを符号化する。
 ステップS343の処理が終了すると処理はステップS345に進む。また、ステップS341において、最上位LoDでないと判定された場合、処理はステップS344に進む。
 ステップS344において、タイプ0符号化部323は、1つ上位のLoD最後のノードの処理後のコンテキストを用いて、処理対象LoDの先頭ノードの算術符号化を行う。ステップS344の処理が終了すると、処理はステップS345に進む。
 ステップS345において、タイプ0符号化部323は、次のノードを処理対象として選択する。
 ステップS346において、タイプ0符号化部323は、1つ前のノードの処理後のコンテキストを用いて、処理対象のノードの算術符号化を行う。
 ステップ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)は、処理対象LoDをタイプ0で符号化することができる。したがって、<1.レンダリング用カメラパラメータのシグナル>において説明したタイプ0の符号化に関する効果を得ることができる。
  <タイプ1符号化処理の流れ>
 次に、図22のステップS308において実行されるタイプ1符号化処理の流れの例を、図25のフローチャートを参照して説明する。
 タイプ1符号化処理が開始されると、タイプ1符号化部324は、ステップS361において、算術符号化(のコンテキスト)をリセットする。
 ステップS362において、タイプ1符号化部324は、処理対象LoDの先頭ノードを符号化する。
 ステップS363において、タイプ1符号化部324は、次のノードを処理対象として選択する。
 ステップS364において、タイプ1符号化部324は、1つ前のノードの処理後のコンテキストを用いて、処理対象のノードの算術符号化を行う。
 ステップ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)は、処理対象LoDをタイプ1で符号化することができる。したがって、<1.レンダリング用カメラパラメータのシグナル>において説明したタイプ1の符号化に関する効果を得ることができる。
  <タイプ2符号化処理の流れ>
 次に、図23のステップS322において実行されるタイプ2符号化処理の流れの例を、図26のフローチャートを参照して説明する。
 タイプ2符号化処理が開始されると、符号化制御部321は、ステップS381において、処理対象LoDが最上位LoDであるか否かを判定する。最上位LoDであると判定された場合、処理はステップS382に進む。
 ステップS382において、タイプ2符号化部325は、算術符号化(のコンテキスト)をリセットする。
 ステップS383において、タイプ2符号化部325は、処理対象LoDの先頭ノードを符号化する。
 ステップS383の処理が終了すると処理はステップS387に進む。また、ステップS381において、最上位LoDでないと判定された場合、処理はステップS384に進む。
 ステップS384において、タイプ2符号化部325は、処理対象ノードである処理対象LoDの先頭ノードの親ノードから確率テーブルを引き継ぐ(コピーする)。
 ステップS385において、タイプ2符号化部325は、算術符号化(のコンテキスト)をリセットする。
 ステップS386において、タイプ2符号化部325は、ステップS384において引き継いだ確率テーブルを用いて処理対象LoDの先頭ノードを符号化する。ステップS386の処理が終了すると、処理はステップS387に進む。
 ステップS387において、タイプ2符号化部325は、先頭ノード処理後の確率テーブルを保存する。この確率テーブルは、1つ下位のLoDの先頭ノードの処理に利用される。
 ステップS388において、タイプ2符号化部325は、次のノードを処理対象として選択する。
 ステップS389において、タイプ2符号化部325は、1つ前のノードの処理後のコンテキストを用いて、処理対象のノードの算術符号化を行う。
 ステップ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)は、処理対象LoDをタイプ2で符号化することができる。したがって、<1.レンダリング用カメラパラメータのシグナル>において説明したタイプ2の符号化に関する効果を得ることができる。
  <タイプ3符号化処理の流れ>
 次に、図23のステップS323において実行されるタイプ3符号化処理の流れの例を、図27のフローチャートを参照して説明する。
 タイプ3符号化処理が開始されると、タイプ3符号化部326は、ステップS411において、処理対象フレームの1つ前に処理されたフレーム(前フレームとも称する)の所定のノードから確率テーブルを引き継ぐ(コピーする)。
 ステップS412において、タイプ3符号化部326は、算術符号化(のコンテキスト)をリセットする。
 ステップS413において、タイプ3符号化部326は、ステップS411において引き継いだ確率テーブルを用いて処理対象LoDの先頭ノードを符号化する。
 ステップS414において、タイプ3符号化部326は、次のノードを処理対象として選択する。
 ステップS415において、タイプ3符号化部326は、1つ前のノードの処理後のコンテキストを用いて、処理対象のノードの算術符号化を行う。
 ステップ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)は、処理対象LoDをタイプ3で符号化することができる。したがって、<1.レンダリング用カメラパラメータのシグナル>において説明したタイプ3の符号化に関する効果を得ることができる。
 以上のように各処理を実行することにより、可逆符号化部313は、タイプ0乃至タイプ4の符号化を行うことができる。したがって可逆符号化部313(符号化装置300)は、<1.Octreeの符号化・復号順>において上述したような、各タイプの効果を得ることができる。つまり、符号化装置300は、ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
 <3.第2の実施の形態>
  <復号装置>
 図28は、本技術を適用した画像処理装置の一態様である復号装置の構成の一例を示すブロック図である。図28に示される復号装置500は、図20の符号化装置300に対応する復号装置であり、例えばこの符号化装置300により生成されたポイントクラウドの符号化データ(ビットストリーム)を復号し、ポイントクラウドのデータを復元する装置である。
 なお、図28においては、処理部やデータの流れ等の主なものを示しており、図28に示されるものが全てとは限らない。つまり、復号装置500において、図20においてブロックとして示されていない処理部が存在したり、図20において矢印等として示されていない処理やデータの流れが存在したりしてもよい。これは、復号装置500内の処理部等を説明する他の図においても同様である。
 図28に示されるように復号装置500は、可逆復号部511、Octree復号部512、およびVoxel復号部513を有する。
 可逆復号部511は、Octreeデータの符号化データの可逆復号に関する処理を行う。例えば、可逆復号部511は、復号装置500に入力されるポイントクラウド(Point cloud)データ(に対応するOctreeデータ)のビットストリームを取得する。また、可逆復号部511は、復号装置500の外部から入力されるデコードパラメータを取得する。このデコードパラメータは、復号順を指定する情報であり、例えばユーザ操作により入力されたり、外部の装置等から供給されたりする。可逆復号部511は、このデコードパラメータにより指定されるタイプでビットストリームを復号し、Octreeデータを生成する。可逆復号部511は、そのOctreeデータをOctree復号部512に供給する。
 Octree復号部512は、Octreeの復号に関する処理を行う。例えば、Octree復号部512は、可逆復号部511から供給されるOctreeデータを取得する。また、Octree復号部512は、そのOctreeデータからOctreeを構築し、そのOctreeからボクセル(Voxel)データを生成する。Octree復号部512は、生成したボクセルデータをVoxel復号部513に供給する。
 Voxel復号部513は、ボクセル(Voxel)データの復号に関する処理を行う。例えば、Voxel復号部513は、Octree復号部512から供給されるボクセルデータを取得する。また、Voxel復号部513は、その取得したボクセルデータからポイントクラウド(Point cloud)を復元する。Voxel復号部513は、このようにして生成したポイントクラウドデータを復号装置500の外部に出力する。
 なお、これらの処理部(可逆復号部511、Octree復号部512、およびVoxel復号部513)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
 以上のように、可逆復号部511は、複数の復号順(幅優先順および深さ優先順)に対応しており、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順によりその符号化データを復号する。したがって、復号装置500は、より多様な処理順でOctreeの符号化データを復号することができる。これにより、復号装置500は、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
  <可逆復号部>
 図29は、可逆復号部511の主な構成例を示すブロック図である。この例の場合、可逆復号部511は、Octreeの階層毎にコンテキストを初期化して符号化するタイプに対応するタイプにより、Octreeの符号化データを復号することができる。つまり、可逆復号部511は、階層毎にコンテキストを初期化して符号化されたOctreeの符号化データを正しく復号することができる。また、可逆復号部511は、そのOctreeの符号化データを、幅優先順および深さ優先順のいずれでも復号することができる。
 図29に示されるように、可逆復号部511は、復号制御部521、ヘッダ解析部522、タイプ選択部523、タイプ0復号部524、タイプ1復号部525、タイプ2復号部526、およびタイプ3復号部527を有する。
 復号制御部521は、復号の制御に関する処理を行う。例えば、復号制御部521は、復号装置500の外部から供給されるデコードパラメータを取得する。また、復号制御部521は、ヘッダ解析部522により解析されたヘッダ情報(フレームヘッダやLoDヘッダ等にシグナルされる各種情報)を取得する。さらに、復号制御部521は、そのヘッダ情報に基づいてタイプ選択部523乃至タイプ3復号部527の各処理部を制御し、Octreeの各ノードの符号化データを、デコードパラメータにより指定される復号順(幅優先順または深さ優先順)で復号させる。
 ヘッダ解析部522は、ヘッダの解析に関する処理を行う。例えば、ヘッダ解析部522は、復号装置500に入力されるビットストリームを取得し、それをタイプ選択部523に供給する。また、ヘッダ解析部522は、取得したビットストリームに含まれるヘッダを解析し、ヘッダ情報(特に、図19を参照して説明したような、タイプに関する情報)を復号制御部521に供給する。
 タイプ選択部523は、符号化のタイプの選択に関する処理を行う。例えば、タイプ選択部523は、ヘッダ解析部522から供給されるビットストリームを取得する。また、タイプ選択部523は、復号制御部521により制御され、ビットストリームを、タイプ0復号部524乃至タイプ3復号部527の内、適用された符号化のタイプに対応する処理部に供給する(ビットストリームの供給先を切り替える)。例えば、タイプ選択部523は、適用する符号化のタイプ(復号のタイプ)をノード毎に選択する(すなわち、ビットストリームの供給先をノード毎に切り替える)ことができる。
 タイプ0復号部524は、例えば<1.Octreeの符号化・復号順>の<幅優先順>において図4および図5等を参照して説明したような「タイプ0の符号化」に対応するタイプ0の復号に関する処理を行う。例えば、タイプ0復号部524は、タイプ選択部523から供給されるビットストリームを取得する。また、タイプ0復号部524は、そのビットストリームに対して、タイプ0の復号を行い、Octreeデータを生成する。すなわち、タイプ0復号部524は、処理対象ノードのビットストリームを、その直前に処理されたノードの処理結果をコンテキストとして用いて算術復号する。タイプ0復号部524は、このような復号により得られたOctreeデータを、Octree復号部512に供給する。タイプ0復号部524は、復号制御部521により制御されて、これらの処理を行う。
 タイプ1復号部525は、例えば<1.Octreeの符号化・復号順>の<タイプ1>において図9および図10等を参照して説明したような「タイプ1の符号化」に対応するタイプ1の復号に関する処理を行う。例えば、タイプ1復号部525は、タイプ選択部523から供給されるビットストリームを取得する。また、タイプ1復号部525は、そのビットストリームに対して、タイプ1の復号を行い、Octreeデータを生成する。すなわち、タイプ1復号部525は、処理対象ノードのビットストリームを、他の階層(LoD)のノードとは独立に算術復号する。タイプ1復号部525は、このような復号により得られたOctreeデータを、Octree復号部512に供給する。タイプ1復号部525は、復号制御部521により制御されて、これらの処理を行う。
 タイプ2復号部526は、例えば<1.Octreeの符号化・復号順>の<タイプ2>において図11および図12等を参照して説明したような「タイプ2の符号化」に対応するタイプ2の復号に関する処理を行う。例えば、タイプ2復号部526は、タイプ選択部523から供給されるビットストリームを取得する。また、タイプ2復号部526は、そのビットストリームに対して、タイプ2の復号を行い、Octreeデータを生成する。すなわち、タイプ2復号部526は、処理対象ノードのビットストリームを、その処理対象ノードが処理対象LoDの先頭ノードである場合、その親ノードの確率テーブルを利用して復号し、それ以外のノードである場合、他の階層(LoD)のノードとは独立に算術復号する。タイプ2復号部526は、このような復号により得られたOctreeデータを、Octree復号部512に供給する。タイプ2復号部526は、復号制御部521により制御されて、これらの処理を行う。
 タイプ3復号部527は、例えば<1.Octreeの符号化・復号順>の<タイプ3>において図13および図14等を参照して説明したような「タイプ3の符号化」に対応するタイプ3の復号に関する処理を行う。例えば、タイプ3復号部527は、タイプ選択部523から供給されるビットストリームを取得する。また、タイプ3復号部527は、そのビットストリームに対して、タイプ3の復号を行い、Octreeデータを生成する。すなわち、タイプ3復号部527は、処理対象ノードのビットストリームを、その処理対象ノードが処理対象LoDの先頭ノードである場合、前フレームの所定のノードの確率テーブルを利用して復号し、それ以外のノードである場合、他の階層(LoD)のノードとは独立に算術復号する。タイプ3復号部527は、このような復号により得られたOctreeデータを、Octree復号部512に供給する。タイプ3復号部527は、復号制御部521により制御されて、これらの処理を行う。
 なお、これらの処理部(復号制御部521乃至タイプ3復号部527)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
 以上のような構成の復号装置500において、可逆復号部511は、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、その選択した復号順により符号化データを復号する。例えば、復号制御部521が、復号順として幅優先順または深さ優先順を選択し、その復号順に従って処理対象ノードを選択する。したがって、復号装置500は、より多様な処理順でOctreeの符号化データ(ビットストリーム)を復号することができる。したがって、復号装置500は、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
 上述したように、図29の例の場合、復号制御部521は、外部から供給されるデコードパラメータに基づいて復号順を選択する。つまり、可逆復号部511(復号制御部521)が、外部指示に基づいて復号順を選択するようにしてもよい。このようにすることにより、復号装置500の外部から復号順を指定することができる。つまり、例えば、ユーザ等が復号順を指定することができる。
 なお、この例に限らず、復号制御部521が状況に応じて復号順を指定するようにしてもよい。例えば、復号制御部521が、符号化データの復号処理の負荷に基づいて復号順を選択するようにしてもよい。このようにすることにより、復号装置500は、ユーザ等の外部からの指示なしに復号順を選択することができる。
 その際、復号順の選択の基準とする復号処理の負荷に関するパラメータは任意である。例えば、復号制御部521が、復号処理の速度に基づいて復号順を選択するようにしてもよい。また、例えば、復号制御部521が、復号処理により使用されるメモリの容量に基づいて復号順を選択するようにしてもよい。
 ところで、復号対象の符号化データ(ビットストリーム)において、Octreeの階層毎にコンテキストが初期化されて符号化されていない場合、各ノードのデータの依存関係により、復号順として深さ優先順を選択することができない。そこで、そのような場合、復号制御部521が、復号順として幅優先順を選択するようにしてもよい。
 より具体的には、Octreeの各階層を互いに独立に符号化する方法、Octreeの各階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、または、これらの方法の内の複数を組み合わせた方法により符号化されていない場合、復号制御部521が、復号順として幅優先順を選択するようにしてもよい。
 このようにすることにより、処理失敗の発生を抑制することができる。したがって、不要な処理を行うことによる負荷の増大を抑制することができる。換言するに、復号処理をより高速に行うことができる。
 なお、このようなOctreeの階層毎にコンテキストが初期化されて符号化されているかの判定は、符号化データにおけるOctreeの符号化の方法を示す情報に基づいて行われるようにしてもよい。例えば、復号制御部521が、図19を参照して説明したフレームヘッダやLoDヘッダに含まれるタイプ(Type)に基づいて、Octreeの階層毎にコンテキストが初期化されて符号化されているか否かを判定するようにしてもよい。このようにすることにより、復号装置500は、Octreeの階層毎にコンテキストが初期化されて符号化されているかの判定を、より容易に行うことができる。
 なお、復号制御部521は、ヘッダ解析部522により解析されたヘッダ情報(例えば、スライス数、オフセット、サイズ等)に基づいて、タイプ選択部523を制御し、ビットストリームから、処理対象ノードの対応する部分を抽出させる。さらに、復号制御部521は、ヘッダ情報(例えばタイプ等)に基づいて、処理対象ノードの符号化のタイプを特定する。復号制御部521は、タイプ選択部523を制御し、抽出した処理対象ノードのビットストリームを、タイプ0復号部524乃至タイプ3復号部527の内の、特定した符号化のタイプに対応する復号部に供給させる。また、復号制御部521は、ビットストリームを供給した復号部(タイプ0復号部524乃至タイプ3復号部527のいずれか)を制御し、そのビットストリームを復号させる。
 つまり、復号装置500は、各ノードのビットストリームを、その符号化タイプに応じた適切なタイプにより、復号することができる。したがって、復号装置500は、Octreeデータのビットストリームをより正確に復号することができる。
 なお、符号化のタイプが4の場合も、各ノードのデータは、タイプ0乃至タイプ3のいずれかのタイプにより符号化されている。また、復号においては、上述のように少なくともノード単位で復号のタイプを制御することができる。したがって、復号装置500は、符号化のタイプがタイプ4の場合も、符号化のタイプがタイプ0乃至タイプ3の場合と同様に処理することができる。
 なお、以上においては、可逆復号部511が、タイプ0復号部524乃至タイプ3復号部527を備えるように説明した。すなわち、復号装置500が、タイプ0乃至タイプ3の4つのタイプの復号を行うことができる(タイプ4については説明を省略する)ように説明した。しかしながら、復号装置500は、任意のタイプの復号を行うことができるようにしてもよい。例えば、復号装置500が、上述した例以外のタイプの復号を行うことができるようにしてもよい。
 また、復号装置500が対応するタイプの数は任意であり、上述の例に限定されない。すなわち、例えば、復号装置500が、3以下のタイプの復号を行うことができるようにしてもよいし、5以上のタイプの復号を行うことができるようにしてもよい。
 いずれの場合も、可逆復号部511が、タイプ0復号部524乃至タイプ3復号部527のように、復号装置500が実行可能なタイプの復号部を並列に備えるようにすればよい。つまり、図29の例においては、可逆復号部511は、タイプ0復号部524乃至タイプ3復号部527の4つの復号部を有しているが、この例に限定されず、3つ以下の復号部を備えるようにすることもできるし、5つ以上の復号部を備えるようにすることもできる。
  <復号処理の流れ>
  次に、復号装置500により実行される復号処理の流れの例を、図30および図31のフローチャートを参照して説明する。
 復号処理が開始されると、復号装置500の可逆復号部511のヘッダ解析部522は、ステップS501において、復号装置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において、Octree復号部512は、ステップS506の処理により、生成されたOctreeデータから深さ優先順でOctreeを構築する。ステップS507の処理が終了すると、処理は図31のステップS521に進む。
 また、図30のステップS503において、幅優先順で復号すると判定された場合、処理はステップS508に進む。また、ステップS504において、ビットストリームがタイプ1乃至タイプ3で符号化されていない(例えばタイプ0により符号化されている)と判定された場合、処理はステップS508に進む。
 ステップS508において、復号制御部521は、幅優先順で次のノードを選択する。
 ステップS509において、復号制御部521は、タイプ選択部523乃至タイプ3復号部527を制御し、符号化のタイプやノード位置に応じた方法で処理対象ノードを復号する。
 ステップS510において、Octree復号部512は、ステップS508の処理により、生成されたOctreeデータから幅優先順でOctreeを構築する。ステップS507の処理が終了すると、処理は図31のステップS521に進む。
 図31のステップS521において、復号制御部521は、処理対象ノードがリーフノード(そのノードに属する他のノード(子ノードとも称する)が存在しない末端のノード)であるか否かを判定する。子ノードが存在し、リーフノードでないと判定された場合、処理は図30のステップS503に戻り、それ以降の処理が繰り返される。
 また、図31のステップS521において、子ノードが存在せず、処理対象ノードがリーフノードであると判定された場合、処理はステップS522に進む。
 ステップS522において、Octree復号部512は、そのリーフノードに対応するボクセルデータを生成する。
 ステップS523において、復号制御部521は、全てのリーフノードを処理したか否かを判定する。未処理のリーフノードが存在すると判定された場合、処理は図30のステップS503に戻り、それ以降の処理が繰り返される。
 また、図31のステップS523において、全てのリーフノードを処理したと判定された場合、処理はステップS524に進む。
 ステップS524において、Voxel復号部513は、ステップS522において生成されたボクセルデータからポイントクラウドデータを生成する。
 ステップS525において、可逆復号部511乃至Voxel復号部513は、属性情報を処理し、上述の位置情報に結合する。以上のようにしてポイントクラウドデータが復元されると、Voxel復号部513は、生成したポイントクラウドデータを復号装置500のお外部に出力する。
 ステップS525の処理が終了すると、復号処理が終了する。
 以上のように各処理を実行することにより、復号装置500は、より多様な処理順でOctreeの符号化データ(ビットストリーム)を復号することができる。したがって、復号装置500は、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
 <4.付記>
  <コンピュータ>
 上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここでコンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等が含まれる。
 図32は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
 図32に示されるコンピュータ900において、CPU(Central Processing Unit)901、ROM(Read Only Memory)902、RAM(Random Access Memory)903は、バス904を介して相互に接続されている。
 バス904にはまた、入出力インタフェース910も接続されている。入出力インタフェース910には、入力部911、出力部912、記憶部913、通信部914、およびドライブ915が接続されている。
 入力部911は、例えば、キーボード、マウス、マイクロホン、タッチパネル、入力端子などよりなる。出力部912は、例えば、ディスプレイ、スピーカ、出力端子などよりなる。記憶部913は、例えば、ハードディスク、RAMディスク、不揮発性のメモリなどよりなる。通信部914は、例えば、ネットワークインタフェースよりなる。ドライブ915は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア921を駆動する。
 以上のように構成されるコンピュータでは、CPU901が、例えば、記憶部913に記憶されているプログラムを、入出力インタフェース910およびバス904を介して、RAM903にロードして実行することにより、上述した一連の処理が行われる。RAM903にはまた、CPU901が各種の処理を実行する上において必要なデータなども適宜記憶される。
 コンピュータ(CPU901)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア921に記録して適用することができる。その場合、プログラムは、リムーバブルメディア921をドライブ915に装着することにより、入出力インタフェース910を介して、記憶部913にインストールすることができる。
 また、このプログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することもできる。その場合、プログラムは、通信部914で受信し、記憶部913にインストールすることができる。
 その他、このプログラムは、ROM902や記憶部913に、あらかじめインストールしておくこともできる。
  <本技術の適用対象>
 以上においては、ポイントクラウドデータの符号化・復号に本技術を適用する場合について説明したが、本技術は、これらの例に限らず、任意の規格の3Dデータの符号化・復号に対して適用することができる。つまり、上述した本技術と矛盾しない限り、符号化・復号方式等の各種処理、並びに、3Dデータやメタデータ等の各種データの仕様は任意である。また、本技術と矛盾しない限り、上述した一部の処理や仕様を省略してもよい。
 本技術は、任意の構成に適用することができる。例えば、本技術は、衛星放送、ケーブルTVなどの有線放送、インターネット上での配信、およびセルラー通信による端末への配信などにおける送信機や受信機(例えばテレビジョン受像機や携帯電話機)、または、光ディスク、磁気ディスクおよびフラッシュメモリなどの媒体に画像を記録したり、これら記憶媒体から画像を再生したりする装置(例えばハードディスクレコーダやカメラ)などの、様々な電子機器に適用され得る。
 また、例えば、本技術は、システムLSI(Large Scale Integration)等としてのプロセッサ(例えばビデオプロセッサ)、複数のプロセッサ等を用いるモジュール(例えばビデオモジュール)、複数のモジュール等を用いるユニット(例えばビデオユニット)、または、ユニットにさらにその他の機能を付加したセット(例えばビデオセット)等、装置の一部の構成として実施することもできる。
 また、例えば、本技術は、複数の装置により構成されるネットワークシステムにも適用することもできる。例えば、本技術を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングとして実施するようにしてもよい。例えば、コンピュータ、AV(Audio Visual)機器、携帯型情報処理端末、IoT(Internet of Things)デバイス等の任意の端末に対して、画像(動画像)に関するサービスを提供するクラウドサービスにおいて本技術を実施するようにしてもよい。
 なお、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、全ての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、および、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
  <本技術を適用可能な分野・用途>
 本技術を適用したシステム、装置、処理部等は、例えば、交通、医療、防犯、農業、畜産業、鉱業、美容、工場、家電、気象、自然監視等、任意の分野に利用することができる。また、その用途も任意である。
  <その他>
 なお、本明細書において「フラグ」とは、複数の状態を識別するための情報であり、真(1)または偽(0)の2状態を識別する際に用いる情報だけでなく、3以上の状態を識別することが可能な情報も含まれる。したがって、この「フラグ」が取り得る値は、例えば1/0の2値であってもよいし、3値以上であってもよい。すなわち、この「フラグ」を構成するbit数は任意であり、1bitでも複数bitでもよい。また、識別情報(フラグも含む)は、その識別情報をビットストリームに含める形だけでなく、ある基準となる情報に対する識別情報の差分情報をビットストリームに含める形も想定されるため、本明細書においては、「フラグ」や「識別情報」は、その情報だけではなく、基準となる情報に対する差分情報も包含する。
 また、符号化データ(ビットストリーム)に関する各種情報(メタデータ等)は、符号化データに関連づけられていれば、どのような形態で伝送または記録されるようにしてもよい。ここで、「関連付ける」という用語は、例えば、一方のデータを処理する際に他方のデータを利用し得る(リンクさせ得る)ようにすることを意味する。つまり、互いに関連付けられたデータは、1つのデータとしてまとめられてもよいし、それぞれ個別のデータとしてもよい。例えば、符号化データ(画像)に関連付けられた情報は、その符号化データ(画像)とは別の伝送路上で伝送されるようにしてもよい。また、例えば、符号化データ(画像)に関連付けられた情報は、その符号化データ(画像)とは別の記録媒体(または同一の記録媒体の別の記録エリア)に記録されるようにしてもよい。なお、この「関連付け」は、データ全体でなく、データの一部であってもよい。例えば、画像とその画像に対応する情報とが、複数フレーム、1フレーム、またはフレーム内の一部分などの任意の単位で互いに関連付けられるようにしてもよい。
 なお、本明細書において、「合成する」、「多重化する」、「付加する」、「一体化する」、「含める」、「格納する」、「入れ込む」、「差し込む」、「挿入する」等の用語は、例えば符号化データとメタデータとを1つのデータにまとめるといった、複数の物を1つにまとめることを意味し、上述の「関連付ける」の1つの方法を意味する。
 また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
 例えば、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。
 また、例えば、上述したプログラムは、任意の装置において実行されるようにしてもよい。その場合、その装置が、必要な機能(機能ブロック等)を有し、必要な情報を得ることができるようにすればよい。
 また、例えば、1つのフローチャートの各ステップを、1つの装置が実行するようにしてもよいし、複数の装置が分担して実行するようにしてもよい。さらに、1つのステップに複数の処理が含まれる場合、その複数の処理を、1つの装置が実行するようにしてもよいし、複数の装置が分担して実行するようにしてもよい。換言するに、1つのステップに含まれる複数の処理を、複数のステップの処理として実行することもできる。逆に、複数のステップとして説明した処理を1つのステップとしてまとめて実行することもできる。
 また、例えば、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。つまり、矛盾が生じない限り、各ステップの処理が上述した順序と異なる順序で実行されるようにしてもよい。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
 また、例えば、本技術に関する複数の技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術の一部または全部を、他の実施の形態において説明した本技術の一部または全部と組み合わせて実施することもできる。また、上述した任意の本技術の一部または全部を、上述していない他の技術と併用して実施することもできる。
 なお、本技術は以下のような構成も取ることができる。
 (1) ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する符号化部
 を備える画像処理装置。
 (2) 前記符号化部は、前記Octreeの各階層を、互いに独立に符号化する
 (1)に記載の画像処理装置。
 (3) 前記符号化部は、前記Octreeの各階層の先頭ノードを、1階層上の先頭ノードの確率テーブルを用いて符号化する
 (1)または(2)に記載の画像処理装置。
 (4) 前記符号化部は、前記Octreeの各階層の先頭ノードを、前フレームの所定のノードの確率テーブルを用いて符号化する
 (1)乃至(3)のいずれかに記載の画像処理装置。
 (5) 前記所定のノードは、処理対象ノードと同一階層の最後のノードである
 (4)に記載の画像処理装置。
 (6) 前記所定のノードは、前記前フレームの最後のノードである
 (4)に記載の画像処理装置。
 (7) 前記符号化部は、
  処理対象階層を他の階層と独立に符号化する方法、
  処理対象階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、
  および、処理対象階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
 の内のいずれか複数を用いて前記Octreeを符号化する
 (1)乃至(6)のいずれかに記載の画像処理装置。
 (8) 前記符号化部は、
  前記Octreeの一部の階層については、階層毎にコンテキストを初期化して符号化し、
  前記Octreeの他の階層については、1つ前に処理されたノードの処理結果をコンテキストとして各ノードを符号化する
 (1)乃至(7)のいずれかに記載の画像処理装置。
 (9) 前記符号化部は、
  前記Octreeの各階層を互いに独立に符号化する方法、
  前記Octreeの各階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、
  および、前記Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
 の内の少なくとも1つを含む複数の候補の中から1つ以上を選択し、選択した方法を用いて前記Octreeを符号化する
 (1)乃至(8)のいずれかに記載の画像処理装置。
 (10) 前記符号化部は、選択した前記方法を示す情報と、前記Octreeの符号化データとを含むビットストリームを生成する
 (9)に記載の画像処理装置。
 (11) ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する
 画像処理方法。
 (12) ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する復号部
 を備える画像処理装置。
 (13) 前記復号部は、外部指示に基づいて前記復号順を選択する
 (12)に記載の画像処理装置。
 (14) 前記復号部は、前記符号化データの復号処理の負荷に基づいて前記復号順を選択する
 (12)または(13)に記載の画像処理装置。
 (15) 前記復号部は、前記復号処理の速度に基づいて前記復号順を選択する
 (14)に記載の画像処理装置。
 (16) 前記復号部は、前記復号処理により使用されるメモリの容量に基づいて前記復号順を選択する
 (14)または(15)に記載の画像処理装置。
 (17) 前記復号部は、前記符号化データにおいて前記Octreeが、前記Octreeの階層毎にコンテキストが初期化されて符号化されていない場合、前記復号順として前記幅優先順を選択する
 (12)乃至(16)のいずれかに記載の画像処理装置。
 (18) 前記復号部は、前記符号化データにおいて前記Octreeが、
  前記Octreeの各階層を互いに独立に符号化する方法、
  前記Octreeの各階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、
  前記Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
  または、これらの方法の内の複数を組み合わせた方法、
 により符号化されていない場合、前記復号順として前記幅優先順を選択する
 (17)に記載の画像処理装置。
 (19) 前記復号部は、前記符号化データにおける前記Octreeの符号化の方法を示す情報に基づいて、前記Octreeの階層毎にコンテキストが初期化されて符号化されているかを判定する
 (17)または(18)に記載の画像処理装置。
 (20) ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する
 画像処理方法。
 300 符号化装置, 311 Voxel生成部, 312 Octree生成部, 321 符号化制御部, 322 タイプ選択部, 323 タイプ0符号化部, 324 タイプ1符号化部, 325 タイプ2符号化部, 326 タイプ3符号化部, 327 ビットストリーム生成部, 500 復号装置, 511 可逆復号部, 512 Octree復号部, 513 Voxel復号部, 521 復号制御部, 522 ヘッダ解析部, 523 タイプ選択部, 524 タイプ0復号部, 525 タイプ1復号部, 526 タイプ2復号部, 527 タイプ3復号部

Claims (20)

  1.  ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する符号化部
     を備える画像処理装置。
  2.  前記符号化部は、前記Octreeの各階層を、互いに独立に符号化する
     請求項1に記載の画像処理装置。
  3.  前記符号化部は、前記Octreeの各階層の先頭ノードを、1階層上の先頭ノードの確率テーブルを用いて符号化する
     請求項1に記載の画像処理装置。
  4.  前記符号化部は、前記Octreeの各階層の先頭ノードを、前フレームの所定のノードの確率テーブルを用いて符号化する
     請求項1に記載の画像処理装置。
  5.  前記所定のノードは、処理対象ノードと同一階層の最後のノードである
     請求項4に記載の画像処理装置。
  6.  前記所定のノードは、前記前フレームの最後のノードである
     請求項4に記載の画像処理装置。
  7.  前記符号化部は、
      処理対象階層を他の階層と独立に符号化する方法、
      処理対象階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、
      および、処理対象階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
     の内のいずれか複数を用いて前記Octreeを符号化する
     請求項1に記載の画像処理装置。
  8.  前記符号化部は、
      前記Octreeの一部の階層については、階層毎にコンテキストを初期化して符号化し、
      前記Octreeの他の階層については、1つ前に処理されたノードの処理結果をコンテキストとして各ノードを符号化する
     請求項1に記載の画像処理装置。
  9.  前記符号化部は、
      前記Octreeの各階層を互いに独立に符号化する方法、
      前記Octreeの各階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、
      および、前記Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
     の内の少なくとも1つを含む複数の候補の中から1つ以上を選択し、選択した方法を用いて前記Octreeを符号化する
     請求項1に記載の画像処理装置。
  10.  前記符号化部は、選択した前記方法を示す情報と、前記Octreeの符号化データとを含むビットストリームを生成する
     請求項9に記載の画像処理装置。
  11.  ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する
     画像処理方法。
  12.  ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する復号部
     を備える画像処理装置。
  13.  前記復号部は、外部指示に基づいて前記復号順を選択する
     請求項12に記載の画像処理装置。
  14.  前記復号部は、前記符号化データの復号処理の負荷に基づいて前記復号順を選択する
     請求項12に記載の画像処理装置。
  15.  前記復号部は、前記復号処理の速度に基づいて前記復号順を選択する
     請求項14に記載の画像処理装置。
  16.  前記復号部は、前記復号処理により使用されるメモリの容量に基づいて前記復号順を選択する
     請求項14に記載の画像処理装置。
  17.  前記復号部は、前記符号化データにおいて前記Octreeが、前記Octreeの階層毎にコンテキストが初期化されて符号化されていない場合、前記復号順として前記幅優先順を選択する
     請求項12に記載の画像処理装置。
  18.  前記復号部は、前記符号化データにおいて前記Octreeが、
      前記Octreeの各階層を互いに独立に符号化する方法、
      前記Octreeの各階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、
      前記Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
      または、これらの方法の内の複数を組み合わせた方法、
     により符号化されていない場合、前記復号順として前記幅優先順を選択する
     請求項17に記載の画像処理装置。
  19.  前記復号部は、前記符号化データにおける前記Octreeの符号化の方法を示す情報に基づいて、前記Octreeの階層毎にコンテキストが初期化されて符号化されているかを判定する
     請求項17に記載の画像処理装置。
  20.  ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する
     画像処理方法。
PCT/JP2019/036031 2018-09-28 2019-09-13 画像処理装置および方法 WO2020066680A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
EP19864158.1A EP3859679A4 (en) 2018-09-28 2019-09-13 IMAGE PROCESSING DEVICE AND IMAGE PROCESSING METHOD
JP2020548453A JP7359153B2 (ja) 2018-09-28 2019-09-13 画像処理装置および方法
CN201980061734.1A CN112740277A (zh) 2018-09-28 2019-09-13 图像处理装置和图像处理方法
US17/277,291 US11910026B2 (en) 2018-09-28 2019-09-13 Image processing apparatus and method
US18/397,989 US20240129555A1 (en) 2018-09-28 2023-12-27 Image processing apparatus and method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018-183912 2018-09-28
JP2018183912 2018-09-28

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US17/277,291 A-371-Of-International US11910026B2 (en) 2018-09-28 2019-09-13 Image processing apparatus and method
US18/397,989 Division US20240129555A1 (en) 2018-09-28 2023-12-27 Image processing apparatus and method

Publications (1)

Publication Number Publication Date
WO2020066680A1 true WO2020066680A1 (ja) 2020-04-02

Family

ID=69952647

Family Applications (1)

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

Country Status (5)

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

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021243519A1 (zh) * 2020-06-01 2021-12-09 深圳市大疆创新科技有限公司 点云的编解码方法和装置
WO2021263021A1 (en) * 2020-06-24 2021-12-30 Apple Inc. Point cloud compression using octrees with slicing
US11508095B2 (en) 2018-04-10 2022-11-22 Apple Inc. Hierarchical point cloud compression with smoothing
US11508094B2 (en) 2018-04-10 2022-11-22 Apple Inc. Point cloud compression
US11514611B2 (en) 2017-11-22 2022-11-29 Apple Inc. Point cloud compression with closed-loop color conversion
US11516394B2 (en) 2019-03-28 2022-11-29 Apple Inc. Multiple layer flexure for supporting a moving image sensor
US11527018B2 (en) 2017-09-18 2022-12-13 Apple Inc. Point cloud compression
WO2022259944A1 (ja) * 2021-06-08 2022-12-15 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置
US11533494B2 (en) 2018-04-10 2022-12-20 Apple Inc. Point cloud compression
US11538196B2 (en) 2019-10-02 2022-12-27 Apple Inc. Predictive coding for point cloud compression
US11552651B2 (en) 2017-09-14 2023-01-10 Apple Inc. Hierarchical point cloud compression
US11562507B2 (en) 2019-09-27 2023-01-24 Apple Inc. Point cloud compression using video encoding with time consistent patches
US11620768B2 (en) 2020-06-24 2023-04-04 Apple Inc. Point cloud geometry compression using octrees with multiple scan orders
US11627314B2 (en) 2019-09-27 2023-04-11 Apple Inc. Video-based point cloud compression with non-normative smoothing
US11625866B2 (en) 2020-01-09 2023-04-11 Apple Inc. Geometry encoding using octrees and predictive trees
US11647226B2 (en) 2018-07-12 2023-05-09 Apple Inc. Bit stream structure for compressed point cloud data
US11663744B2 (en) 2018-07-02 2023-05-30 Apple Inc. Point cloud compression with adaptive filtering
US11676309B2 (en) 2017-09-18 2023-06-13 Apple Inc Point cloud compression using masks
US11683525B2 (en) 2018-07-05 2023-06-20 Apple Inc. Point cloud compression with multi-resolution video encoding
US11711544B2 (en) 2019-07-02 2023-07-25 Apple Inc. Point cloud compression with supplemental information messages
US11727603B2 (en) 2018-04-10 2023-08-15 Apple Inc. Adaptive distance based point cloud compression
US11748916B2 (en) 2018-10-02 2023-09-05 Apple Inc. Occupancy map block-to-patch information compression
US11798196B2 (en) 2020-01-08 2023-10-24 Apple Inc. Video-based point cloud compression with predicted patches
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
US11895307B2 (en) 2019-10-04 2024-02-06 Apple Inc. Block-based predictive coding for point cloud compression
US11935272B2 (en) 2017-09-14 2024-03-19 Apple Inc. Point cloud compression
US11948338B1 (en) 2021-03-29 2024-04-02 Apple Inc. 3D volumetric content encoding using 2D videos and simplified 3D meshes

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013539929A (ja) * 2010-09-30 2013-10-28 シャープ株式会社 動画像の符号化および復号におけるコンテキストの初期化のための方法およびシステム

Family Cites Families (12)

* 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차원 체적 데이터 부호화/복호화 방법 및 장치
JP4759291B2 (ja) 2004-03-08 2011-08-31 三星電子株式会社 適応的2n進ツリーの生成方法、ならびにそれを利用して3次元体積データを符号化/復号化する方法および装置
BR122020007923B1 (pt) * 2010-04-13 2021-08-03 Ge Video Compression, Llc Predição interplano
WO2013067674A1 (en) 2011-11-07 2013-05-16 Thomson Licensing Predictive position encoding
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
KR102192805B1 (ko) * 2016-10-12 2020-12-21 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 서브 볼륨 옥트리
CN109643457B (zh) * 2016-10-12 2023-04-21 惠普发展公司,有限责任合伙企业 使三维对象的表示序列化
US10861196B2 (en) * 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
EP3751520A4 (en) * 2018-02-08 2021-03-31 Panasonic Intellectual Property Corporation of America THREE-DIMENSIONAL DATA ENCODING PROCESS, THREE-DIMENSIONAL DATA DECODING PROCESS, THREE-DIMENSIONAL DATA ENCODING DEVICE, AND TRIDIMENSIONAL DATA DECODING DEVICE

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013539929A (ja) * 2010-09-30 2013-10-28 シャープ株式会社 動画像の符号化および復号におけるコンテキストの初期化のための方法およびシステム

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
"Advanced video coding for generic audiovisual services", TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU (INTERNATIONAL TELECOMMUNICATION UNION, vol. H.264, April 2017 (2017-04-01)
"High efficiency video coding", TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU (INTERNATIONAL TELECOMMUNICATION UNION, vol. H.265, December 2016 (2016-12-01)
GARCIA DIOGO C.; DE QUEIROZ RICARDO L.: "Context-based octree coding for point-cloud video", 2017 IEEE INTERNATIONAL CONFERENCE ON IMAGE PROCESSING (ICIP), 20 September 2017 (2017-09-20), pages 1412 - 1416, XP033322807, ISSN: 2381-8549, DOI: 10.1109/ICIP.2017.8296514 *
JIANLE CHENELENA ALSHINAGARY J. SULLIVANJENS-RAINERJILL BOYCE: "Algorithm Description of Joint Exploration Test Model 4", JVET-G1001 V1, JOINT VIDEO EXPLORATION TEAM (JVET) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11 7TH MEETING: TORINO, IT, 13 July 2017 (2017-07-13)
KOJI NISHIO , YUSUKE TAKEBAYASI , YUJI TESHIMA , TAKAYUKI KANAYA , KEN-ICHI KOBORI : "Information Transformation for Point Cloud", JOURNAL OF INFORMATION SCIENCE AND TECHNOLOGY FORUM - FIT2008, vol. 7, no. 3, 20 August 2008 (2008-08-20), pages 227 - 228, XP009512861 *
OHJI NAKAGAMIPHIL CHOUMAJA KRIVOKUCAKHALED MAMMOUROBERT COHENVLADYSLAV ZAKHARCHENKOGAELLE MARTIN-COCHER: "Second Working Draft for PCC Categories 1, 3", ISO/IEC JTC1/SC29/WG11, MPEG 2018/N17533, April 2018 (2018-04-01)
R. MEKURIAK. BLOMP. CESAR, DESIGN, IMPLEMENTATION AND EVALUATION OF A POINT CLOUD CODEC FOR TELE-IMMERSIVE VIDEO

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11935272B2 (en) 2017-09-14 2024-03-19 Apple Inc. Point cloud compression
US11552651B2 (en) 2017-09-14 2023-01-10 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
US11922665B2 (en) 2017-09-18 2024-03-05 Apple Inc. Point cloud compression
US11676309B2 (en) 2017-09-18 2023-06-13 Apple Inc Point cloud compression using masks
US11527018B2 (en) 2017-09-18 2022-12-13 Apple Inc. Point cloud compression
US11514611B2 (en) 2017-11-22 2022-11-29 Apple Inc. Point cloud compression with closed-loop color conversion
US11533494B2 (en) 2018-04-10 2022-12-20 Apple Inc. Point cloud compression
US11508094B2 (en) 2018-04-10 2022-11-22 Apple Inc. Point cloud compression
US11727603B2 (en) 2018-04-10 2023-08-15 Apple Inc. Adaptive distance based point cloud compression
US11508095B2 (en) 2018-04-10 2022-11-22 Apple Inc. Hierarchical point cloud compression with smoothing
US11663744B2 (en) 2018-07-02 2023-05-30 Apple Inc. Point cloud compression with adaptive filtering
US11683525B2 (en) 2018-07-05 2023-06-20 Apple Inc. Point cloud compression with multi-resolution video encoding
US11647226B2 (en) 2018-07-12 2023-05-09 Apple Inc. Bit stream structure for compressed point cloud data
US11748916B2 (en) 2018-10-02 2023-09-05 Apple Inc. Occupancy map block-to-patch information compression
US11516394B2 (en) 2019-03-28 2022-11-29 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
US11627314B2 (en) 2019-09-27 2023-04-11 Apple Inc. Video-based point cloud compression with non-normative smoothing
US11562507B2 (en) 2019-09-27 2023-01-24 Apple Inc. Point cloud compression using video encoding with time consistent patches
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 深圳市大疆创新科技有限公司 点云的编解码方法和装置
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
WO2021263021A1 (en) * 2020-06-24 2021-12-30 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 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置

Also Published As

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

Similar Documents

Publication Publication Date Title
WO2020066680A1 (ja) 画像処理装置および方法
KR102627189B1 (ko) 2차원 포인트 클라우드들을 인코딩 및 디코딩하기 위한 방법 및 장치
US20200273211A1 (en) Information processing device and method
WO2020012967A1 (ja) 画像処理装置および方法
WO2019142667A1 (ja) 画像処理装置および方法
JP7327166B2 (ja) 画像処理装置および方法
US20200279435A1 (en) Information processing apparatus and method
JP6037341B2 (ja) 映像をデコーディングするための方法
US11943457B2 (en) Information processing apparatus and method
JP6178798B2 (ja) 終了可能な空間ツリー型位置符号化および復号
WO2020071114A1 (ja) 画像処理装置および方法
EP4071715A1 (en) Information processing device and method
US11991348B2 (en) Information processing device and method
WO2020071115A1 (ja) 画像処理装置および方法
JP7396302B2 (ja) 画像処理装置および方法
WO2020071101A1 (ja) 画像処理装置および方法
WO2022145214A1 (ja) 情報処理装置および方法
WO2020071116A1 (ja) 画像処理装置および方法
WO2021002214A1 (ja) 情報処理装置および方法
JP7273339B2 (ja) 画像符号化方法、及び画像復号方法
WO2022075079A1 (ja) 情報処理装置および方法
WO2020145140A1 (ja) 情報処理装置および方法
JP2018098581A (ja) 線形予測係数出力方法、線形予測係数出力装置及び線形予測係数出力プログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19864158

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020548453

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2019864158

Country of ref document: EP

Effective date: 20210428