WO2023181872A1 - 情報処理装置および方法 - Google Patents

情報処理装置および方法 Download PDF

Info

Publication number
WO2023181872A1
WO2023181872A1 PCT/JP2023/008228 JP2023008228W WO2023181872A1 WO 2023181872 A1 WO2023181872 A1 WO 2023181872A1 JP 2023008228 W JP2023008228 W JP 2023008228W WO 2023181872 A1 WO2023181872 A1 WO 2023181872A1
Authority
WO
WIPO (PCT)
Prior art keywords
inversion
geometry
range
bit
processing
Prior art date
Application number
PCT/JP2023/008228
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 ソニーグループ株式会社
Publication of WO2023181872A1 publication Critical patent/WO2023181872A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree

Definitions

  • the present disclosure relates to an information processing device and method, and particularly relates to an information processing device and method that can suppress reduction in encoding efficiency.
  • Non-Patent Document 1 discloses a mode and a flag for controlling the resolution of point cloud data expressed in Octree.
  • nodes can be deleted for areas where points do not exist, but up to leaf nodes (highest resolution) are generated for areas where points exist. Therefore, when the points are dense, the encoding efficiency may be lower than when the points are sparse.
  • the present disclosure has been made in view of this situation, and is intended to suppress reduction in encoding efficiency.
  • An information processing device includes an inversion processing unit that performs inversion processing on an inversion range in a tree structure expressing the geometry of a point cloud, and geometry data having the tree structure on which the inversion processing has been performed.
  • an encoding unit that encodes the inversion range, the inversion range is a node range that is made up of an inversion root node and descendant nodes of the inversion root node, and is the target of the inversion process, and the inversion process is a node range that is a target of the inversion process.
  • the information processing apparatus performs processing that inverts the bit patterns of leaf nodes included in the range and makes the bit patterns of non-leaf nodes included in the inverted range correspond to the bit patterns of child nodes.
  • An information processing method includes performing an inversion process on an inversion range in a tree structure expressing the geometry of a point cloud, and encoding geometry data having the tree structure subjected to the inversion process,
  • the inversion range is configured by an inversion root node and descendant nodes of the inversion root node, and is a node range to be subjected to the inversion process, and the inversion process inverts the bit patterns of leaf nodes included in the inversion range.
  • the information processing method is a process of making the bit pattern of a non-leaf node included in the inversion range correspond to the bit pattern of a child node.
  • An information processing device includes a decoding unit that decodes encoded data of geometry data of a point cloud, and a tree structure expressing the geometry of the point cloud, which the geometry data obtained by decoding has. and an inversion processing unit that performs inversion processing on an inversion range, the inversion range being a node range that is made up of an inversion root node and descendant nodes of the inversion root node and that is the target of the inversion processing,
  • the inversion process is a process of inverting the bit patterns of leaf nodes included in the inversion range and making the bit patterns of non-leaf nodes included in the inversion range correspond to the bit patterns of child nodes.
  • An information processing method includes decoding encoded data of geometry data of a point cloud, and inverting a tree structure representing the geometry of the point cloud, which the geometry data obtained by decoding has.
  • An inversion process is performed on the range, the inversion range is a node range that is made up of an inversion root node and descendant nodes of the inversion root node, and is the target of the inversion process, and the inversion process is performed on the inversion range.
  • This information processing method is a process of inverting the bit patterns of included leaf nodes and making the bit patterns of non-leaf nodes included in the inversion range correspond to the bit patterns of child nodes.
  • an inversion process is performed on an inversion range in a tree structure expressing the geometry of a point cloud, and geometry data having the tree structure subjected to the inversion process is encoded.
  • the inversion range is composed of the inversion root node and the descendant nodes of the inversion root node. This is the node range that is the target of the inversion process, and the inversion process is such that the bit patterns of leaf nodes included in the inversion range are inverted, and the bit patterns of non-leaf nodes included in the inversion range are changed to the bit patterns of child nodes.
  • encoded data of geometry data of a point cloud is decoded, and the geometry data obtained by decoding has a tree structure representing the geometry of the point cloud.
  • the inversion process is performed on the inversion range.
  • the inversion range is composed of an inversion root node and descendant nodes of the inversion root node, and is a node range to be subjected to the inversion process.
  • the inversion process is a process in which the bit patterns of leaf nodes included in the inversion range are inverted, and the bit patterns of non-leaf nodes included in the inversion range are made to correspond to the bit patterns of child nodes.
  • FIG. 3 is a diagram illustrating an example of voxel representation of geometry.
  • FIG. 2 is a diagram illustrating an example of Octree.
  • FIG. 6 is a diagram illustrating a case where points are dense.
  • FIG. 3 is a diagram illustrating various methods of bit inversion.
  • FIG. 3 is a diagram illustrating an example of reversal processing.
  • FIG. 3 is a diagram illustrating an example of a reversal area.
  • FIG. 3 is a diagram illustrating an example of a bit inversion flag.
  • FIG. 3 is a diagram illustrating an example of a reversal area.
  • FIG. 6 is a diagram illustrating an example of a method for estimating the number of deletions.
  • FIG. 6 is a diagram illustrating an example of a method for estimating the number of deletions.
  • FIG. 2 is a block diagram showing an example of the main configuration of a geometry encoding device.
  • 3 is a flowchart illustrating an example of the flow of geometry encoding processing.
  • 3 is a flowchart illustrating an example of the flow of bit reversal processing.
  • 13 is a flowchart following FIG. 12 illustrating an example of the flow of bit inversion processing.
  • FIG. 2 is a block diagram showing an example of the main configuration of a geometry decoding device.
  • 3 is a flowchart illustrating an example of the flow of geometry decoding processing.
  • 12 is a flowchart illustrating another example of the flow of geometry encoding processing.
  • 12 is a flowchart illustrating another example of the flow of geometry decoding processing.
  • FIG. 2 is a block diagram showing a main configuration example of a point cloud encoding device.
  • 12 is a flowchart illustrating an example of the flow of point cloud encoding processing.
  • FIG. 2 is a block diagram showing a main configuration example of a point cloud decoding device.
  • 12 is a flowchart illustrating an example of the flow of point cloud decoding processing.
  • FIG. 3 is a diagram illustrating point cloud formation of a 3D Occupancy Grid map.
  • FIG. 3 is a diagram illustrating generation of a 3D Occupancy Grid map.
  • FIG. 3 is a diagram illustrating generation of a 3D Occupancy Grid map.
  • FIG. 3 is a diagram illustrating generation of a 3D Occupancy Grid map.
  • FIG. 3 is a diagram illustrating generation of a 3D Occupancy Grid map.
  • FIG. 3 is a diagram illustrating generation of a 3D Occupancy Grid map.
  • FIG. 3 is a diagram illustrating generation
  • FIG. 3 is a diagram illustrating an example of a point cloud.
  • FIG. 3 is a diagram illustrating an example of a point cloud.
  • FIG. 2 is a block diagram showing a main configuration example of a 3D Occupancy Grid map encoding device.
  • 12 is a flowchart illustrating an example of the flow of 3D Occupancy Grid map encoding processing.
  • FIG. 2 is a block diagram showing a main configuration example of a 3D Occupancy Grid map decoding device.
  • 12 is a flowchart illustrating an example of the flow of 3D Occupancy Grid map decoding processing.
  • 1 is a block diagram showing an example of the main configuration of a computer.
  • FIG. 1 is a block diagram showing an example of the main configuration of a computer.
  • Non-patent document 1 (mentioned above)
  • the contents described in the above-mentioned non-patent documents and the contents of other documents referred to in the above-mentioned non-patent documents are also the basis for determining support requirements.
  • Point cloud data (also referred to as point cloud data) is composed of the geometry (position information) and attributes (attribute information) of each point that makes up the point cloud. Geometry indicates the location of that point in three-dimensional space. Attribute indicates the attribute of the point. This attribute can contain arbitrary information. For example, the attributes may include color information, reflectance information, normal line information, etc. of each point. In this way, the point cloud has a relatively simple data structure, and by using a sufficiently large number of points, any three-dimensional structure can be expressed with sufficient accuracy.
  • a voxel is a region obtained by dividing a three-dimensional spatial region containing an object.
  • the position of each point of the point cloud is such that it is located at a predetermined location (eg, the center) within such a voxel. In other words, it represents whether or not a point exists within each voxel.
  • this method of expressing geometry using voxels is also referred to as voxel expression.
  • One voxel can be divided into multiple voxels. In other words, by recursively and repeatedly dividing voxels, the size of each voxel can be made smaller. The smaller the voxel size, the higher the resolution. In other words, the position of each point can be expressed more accurately. In other words, the effect of reducing the amount of geometry data due to the quantization described above is suppressed.
  • voxels shown in gray indicate voxels that include points. That is, points exist in voxel 12 and voxel 13 among the eight voxels in three-dimensional region 11.
  • Voxel 12 can be further divided into eight voxels (2x2x2). Among the eight voxels, a point exists in voxel 14. Voxel 14 can be further divided into eight voxels (2x2x2). Among the eight voxels, points exist in voxel 15, voxel 16, and voxel 17.
  • voxel 13 can be further divided into eight voxels (2x2x2). Of the eight voxels, points exist in voxel 18 and voxel 19. Voxel 18 can be further divided into eight voxels (2x2x2). Among the eight voxels, points exist in voxel 20 and voxel 21. Voxel 19 can be further divided into eight voxels (2x2x2). Among the eight voxels, a point exists in voxel 22.
  • each voxel is shown with the same size in FIG. 1, but in reality, the voxel on the right side of the figure (that is, the more the division is repeated), the smaller the voxel becomes. In this way, with voxel representation, geometry can be represented using a hierarchical structure.
  • the voxel representation indicates whether a point exists in each voxel.
  • the geometry can be expressed in a tree structure as shown in Figure 2 by using voxels in each layer as nodes and expressing whether or not a point exists for each divided voxel using 0 and 1. .
  • one voxel is divided into eight parts, so in FIG. 2, the presence or absence of a point in the voxel one layer below in each node is indicated by an 8-bit bit pattern.
  • the geometry is expressed by an octree.
  • this method of representing geometry using Octree is also referred to as Octree representation.
  • the bit patterns of each node are arranged in a predetermined order and encoded.
  • a tree structure expressing such geometry is also referred to as a geometry tree structure.
  • This geometry tree structure is also referred to as a voxel tree structure because it corresponds to voxel expression.
  • bit reversal of geometry > Therefore, as shown in the top row of the table in FIG. 4, some or all nodes of the voxel tree structure (geometry tree structure) can be set to a bit-inverted state (method 1).
  • a bit inversion state refers to a state in which inversion processing has been performed.
  • conversion processing refers to inverting the bit pattern of a leaf node, and converting the bit pattern of the ancestor node of that leaf node (a node higher than that to which the leaf node belongs (also referred to as a non-leaf node)) to the bit pattern of a child node. Indicates processing that corresponds to a pattern.
  • bit pattern refers to a bit pattern that indicates whether a point exists in each voxel in the next lower layer of a node in the geometry tree structure.
  • conversion refers to a process of converting a bit with a value of "0" in a bit pattern to a value of "1", and converting a bit with a value of "1” to a value of "0". That is, for example, if the bit pattern of "00110011" is inverted, it becomes "11001100".
  • corresponding to the bit pattern of a child node means to correspond to a child node (that is, a voxel where a point exists) whose bit pattern includes the value "1" among the bit patterns of the processing target node.
  • This is a process in which the value of a bit is set to "1" and the value of a bit corresponding to a child node where all bits of the bit pattern have a value of "0" (that is, a voxel where no point exists) is set to "0". That is, such inversion processing can be performed on some or all nodes of the geometry tree structure.
  • an information processing device includes an inversion processing unit that performs an inversion process on an inversion range in a tree structure expressing the geometry of a point cloud, and a code that encodes geometry data having a tree structure that has undergone the inversion process. It should be equipped with a conversion section.
  • the "inversion range” is configured by an inversion root node and descendant nodes of the inversion root node, and is a node range to be subjected to inversion processing.
  • the "inversion process” is a process of inverting the bit patterns of leaf nodes included in the inversion range and making the bit patterns of non-leaf nodes included in the inversion range correspond to the bit patterns of child nodes.
  • an inversion process is performed on an inversion range in a tree structure expressing the geometry of a point cloud, and geometry data having the tree structure subjected to the inversion process is encoded.
  • the "inversion range” is configured by an inversion root node and descendant nodes of the inversion root node, and is a node range to be subjected to inversion processing.
  • the "inversion process” is a process of inverting the bit patterns of leaf nodes included in the inversion range and making the bit patterns of non-leaf nodes included in the inversion range correspond to the bit patterns of child nodes.
  • an information processing device may use a decoding unit that decodes encoded data of geometry data of a point cloud, and a tree structure representing the geometry of the point cloud, which the geometry data obtained by decoding has, in an inversion range. and an inversion processing section that performs inversion processing on the image.
  • the "inversion range” is configured by an inversion root node and descendant nodes of the inversion root node, and is a node range to be subjected to inversion processing.
  • the "inversion process” is a process of inverting the bit patterns of leaf nodes included in the inversion range and making the bit patterns of non-leaf nodes included in the inversion range correspond to the bit patterns of child nodes.
  • encoded data of point cloud geometry data is decoded, and the tree structure representing the geometry of the point cloud, which is included in the decoded geometry data, is inverted with respect to the inversion range.
  • the "inversion range” is configured by an inversion root node and descendant nodes of the inversion root node, and is a node range to be subjected to inversion processing.
  • the "inversion process” is a process of inverting the bit patterns of leaf nodes included in the inversion range and making the bit patterns of non-leaf nodes included in the inversion range correspond to the bit patterns of child nodes.
  • an intermediate node (a node other than the root node and a leaf node) is set as an inverted root node 52-1, and a descendant node of the inverted root node is
  • the node range including the leaf node 53, that is, a part of the geometry tree structure 51 may be set as the inverted range 54-1.
  • a plurality of inversion ranges may be set in one geometry tree structure.
  • an inverted range 54-1 including an inverted root node 52-1 and an inverted range 54-2 including an inverted root node 52-2 are set for the geometry tree structure 51. .
  • the description is given assuming that the geometry tree structure 51 is a binary tree.
  • the geometry tree structure 51 is a binary tree.
  • FIG. 6A and FIG. 6B only one leaf node is marked with a numeral (53), but all the lowest nodes of the geometry tree structure 51 indicated by white circles in the figures are leaves. This is node 53.
  • bit reversal flag For example, if the value of the bit reversal flag is "0", it may indicate that the reversal process will not be performed for the reversal range in which the node corresponding to the flag is the reversal root node. Further, when the value of the bit inversion flag is "1", it may be indicated that the inversion process is to be performed on the inversion range with the node corresponding to the flag as the inversion root node.
  • the information processing device further includes an inversion control unit that controls whether to perform inversion processing on an inversion range having the processing target node as an inversion root node based on a bit inversion flag corresponding to the processing target node. Good too.
  • bit pattern of a node whose points become “sparse” as a result of the inversion may be set to all 0s.
  • nodes with "sparse” points may be deleted.
  • the reversal processing unit may delete a node with a bit pattern indicating that points are sparse.
  • the inversion processing unit may delete nodes with a bit pattern of all 0s after performing the inversion process.
  • encoding and decoding are irreversible.
  • the definition of whether points are "sparse” or "dense” (also referred to as a sparse/dense condition) is arbitrary.
  • the case where only one point exists may be defined as “sparse", or the case where the ratio of the number of voxels including the point to the total number of voxels is less than or equal to a predetermined value may be defined as “sparse”.
  • only conditions indicating a "sparse” state may be set, only conditions indicating a "dense” state may be set, or conditions indicating a "sparse” state and a “dense” state may be set. Both conditions may be set.
  • a state that is not "sparse” may be a "dense” state, or a state that is neither "sparse” nor “dense” may exist.
  • the node to which the bit inversion flag is set is arbitrary. For example, when “Method 1-2" is applied, bit inversion flags that can be set independently of each other are set for all non-leaf nodes, as shown in the fifth row from the top of the table in Figure 4. (Method 1-2-1).
  • the flag setting unit may set bit inversion flags independently of each other for all nodes of the geometry tree structure.
  • the inversion control unit may control whether to perform inversion processing based on a bit inversion flag that is set for all nodes in the geometry tree structure and indicates whether to perform inversion processing for the inversion range. good.
  • one bit inversion flag may be set for a group of direct nodes as shown in the sixth row from the top of the table in FIG. 4 (Method 1-2). -2-2).
  • a lineal node group is a node group (node range) that is composed of nodes that are in a lineal relationship (parent-child relationship) with each other in the geometry tree structure.
  • the inversion ranges can be made non-overlapping.
  • the node that sets the bit inversion flag may be the first node to process, the Nth node to process (predetermined N, specified N), or the last node to process. Good too.
  • a single bit inversion flag may be set for the entire voxel tree structure as shown in the seventh row from the top of the table in FIG. 1-2-3). That is, in this case, the entire geometry tree structure can be the inversion range, as in the example of A in FIG. By doing so, the reversal process can be facilitated.
  • the flag setting unit may set one bit inversion flag for the entire geometry tree structure.
  • the inversion control unit may control whether to perform the inversion process based on a bit inversion flag that is set for the entire geometry tree structure.
  • bit inversion may be controlled based on encoding efficiency as shown in the ninth row from the top of the table in FIG. 4 (Method 1-2-4) .
  • the inversion control unit may control whether to perform the inversion process based on the encoding efficiency of the geometry encoded data.
  • the encoding efficiency may be derived for all patterns by combining cases in which inversion processing is performed and cases in which no inversion processing is performed for all settable inversion ranges, and the pattern with the highest encoding efficiency may be applied. By doing so, encoding can be performed with the highest encoding efficiency.
  • bit reversal may be controlled based on the existence ratio of points as shown in the 10th row from the top of the table in FIG. 4 (Method 1-2-5 ).
  • the existence ratio of points indicates the ratio of voxels in which points exist to all voxels in the processing target region.
  • the number of points included in the processing target area may be applied instead of the existence ratio of points.
  • the reversal control unit may control whether to perform the reversal process based on the number of points (or the proportion of points) within the reversal range. That is, in this case, it is estimated whether the points are "sparse" or "dense” based on the number of points (or the percentage of points existing).
  • child nodes (leaf nodes) 72-1 to 72-6 of the processing target node 71 have the bit pattern "11111111", and the child node 72-7 has the bit pattern "11111111”. It has a bit pattern "00001111”, and the child node 72-8 has a bit pattern "00000000”. Therefore, the processing target node 71 has the bit pattern "11111110".
  • the bit patterns of child nodes 72-1 to 72-6 become (00000000).
  • the bit pattern of child node 72-7 is (11110000).
  • the bit pattern of child node 72-8 is (11111111). Therefore, the bit pattern of the processing target node 71 is (00000011).
  • the number of deletions for each is [1]. Since the child node 72-7 is not deleted even after the inversion process, the number of deletions is [0]. Since the child node 72-8 is added after the reversal process (it is a node deleted in the state before the reversal process), the number of deletions is [-1].
  • This threshold value is arbitrary. It may be common to all nodes, it may be set for each hierarchy, it may be set for each area, or it may be set for each node. By doing so, reduction in encoding efficiency can be more easily suppressed.
  • the inversion process may be performed after generating nodes in areas where no points exist in the inversion range.
  • the inversion processing unit may perform the inversion process after generating nodes in areas where no points exist in the inversion range.
  • the geometry construction unit may construct the geometry of the three-dimensional space using the tree structure that has been subjected to the inversion process.
  • FIG. 10 is a block diagram illustrating an example of the configuration of a geometry encoding device that is one aspect of an information processing device to which the present technology is applied.
  • a geometry encoding device 100 shown in FIG. 10 is a device that encodes point cloud geometry data.
  • the geometry encoding device 100 performs ⁇ 2.
  • Geometry Bit Reversal>, the present technology described above is applied to encode geometry data.
  • FIG. 10 shows the main things such as the processing unit and the flow of data, and not all of the things shown in FIG. 10 are shown. That is, in the geometry encoding device 100, there may be processing units that are not shown as blocks in FIG. 10, or processes or data flows that are not shown as arrows or the like in FIG.
  • the geometry encoding device 100 includes an Octree generation section 101, an initialization section 102, a bit inversion control section 103, a flag setting section 104, an inversion processing section 105, and an encoding section 106.
  • the Octree generation unit 101 Based on the geometry data input to the geometry encoding device 100, the Octree generation unit 101 generates an Octree (geometry tree structure) of the geometry. The Octree generation unit 101 supplies the generated Octree (geometry tree structure) data to the initialization unit 102 .
  • the initialization unit 102 acquires Octree (geometry tree structure) data supplied from the Octree generation unit 101.
  • the initialization unit 102 performs processing related to initialization. For example, the initialization unit 102 initializes the bit inversion flag set for Octree (geometry tree structure) (set it to an initial value (for example, "0")).
  • the initialization unit 102 also initializes the processing target node (sets it as the node to be processed first).
  • the initialization unit 102 supplies the data of the Octree (geometry tree structure) and the initialized information to the bit inversion control unit 103.
  • the flag setting unit 104 performs processing related to flag setting. For example, the flag setting unit 104 acquires information regarding the processing target node supplied from the bit inversion control unit 103. The flag setting unit 104 appropriately sets a bit inversion flag for the processing target node. The flag setting unit 104 supplies information regarding the processing target node and the set bit determination flag to the inversion processing unit 105.
  • the inversion processing unit 105 obtains information regarding the processing target node, the set bit determination flag, etc. supplied from the flag setting unit 104.
  • the reversal processing unit 105 performs reversal processing on the processing target node. At this time, the reversal processing unit 105 performs the process of ⁇ 2. Inversion processing is performed by applying the above-described present technique in the section ⁇ Bit Inversion of Geometry''.
  • the inversion processing unit 105 supplies information such as inversion processing results and bit determination flags to the encoding unit 106.
  • each of these processing units (Octree generation unit 101 to encoding unit 106) of the geometry encoding device 100 has an arbitrary configuration.
  • each processing section may be configured with a logic circuit that implements the above-described processing.
  • each processing unit has, for example, a CPU (Central Processing Unit), ROM (Read Only Memory), RAM (Random Access Memory), etc., and by executing a program using these, the above processing is realized. You can do it like this.
  • each processing unit may have both configurations, and may implement some of the above-mentioned processing by a logic circuit and the others by executing a program.
  • each processing unit may be independent of each other; for example, some processing units may implement part of the above processing using logic circuits, and other processing units may implement the above processing by executing a program.
  • the above-described processing may be realized by another processing unit using both a logic circuit and a program execution.
  • FIG. 11 An example of the flow of geometry encoding processing executed by this geometry encoding apparatus 100 will be described with reference to the flowchart of FIG. 11. Note that the example in FIG. 11 is an example in which method 1-2-1 is applied to set bit inversion flags that can be set independently of each other for all non-leaf nodes.
  • the Octree generation unit 101 When the geometry encoding process is started, the Octree generation unit 101 generates an Octree pattern (geometry tree structure) based on the supplied geometry data in step S101.
  • step S102 the initialization unit 102 initializes the bit inversion flags of all nodes (for example, sets them to OFF).
  • step S103 the initialization unit 102 initializes the processing target node.
  • step S106 the flag setting unit 104 turns on the bit determination flag of the processing target node.
  • step S107 the inversion processing unit 105 executes inversion processing with the processing target node as the inversion root node.
  • the process proceeds to step S108. Further, if it is determined in step S104 that the bits of the processing target node are not to be inverted, the bit inversion control unit 103 advances the process in step S105 to step S108.
  • step S108 the bit inversion control unit 103 determines whether all nodes of the geometry tree structure have been processed. If there are unprocessed nodes, the process advances to step S109.
  • step S109 the bit inversion control unit 103 updates the processing target node to the next node.
  • the process in step S109 ends, the process returns to step S104. That is, the processes from step S104 to step S109 are repeatedly executed, and each node of the geometry tree structure is processed as a processing target. If it is determined in step S108 that all nodes of the geometry tree structure have been processed, the process proceeds to step S110.
  • step S110 the encoding unit 106 encodes the geometry data and generates geometry encoded data.
  • the reversal processing unit 105 When the bit reversal process is started, the reversal processing unit 105 generates a node in an area where no point exists in step S131 of FIG. In step S132, the reversal processing unit 105 stores the processing target node in the stack.
  • step S133 the reversal processing unit 105 determines whether the stack is not empty. If it is determined that the stack is not empty, the process proceeds to step S134. In step S134, the reversal processing unit 105 takes out the node from the stack.
  • step S135 the reversal processing unit 105 determines whether the extracted node is a leaf node. If it is determined that the node is a leaf node, the process proceeds to step S135. In step S136, the inversion processing unit 105 inverts the bit pattern of the extracted node.
  • step S137 if the bit pattern after inversion is all 0, the inversion processing unit 105 deletes that node.
  • step S138 the reversal processing unit 105 marks the extracted node as processed. When the process in step S138 ends, the process returns to step S133.
  • step S135 if it is determined in step S135 that the extracted node is a non-leaf node, the process proceeds to FIG. 13.
  • step S141 of FIG. 13 the reversal processing unit 105 determines whether all descendant nodes of the extracted node have been processed. If it is determined that there are unprocessed nodes, the process proceeds to step S142. In step S142, the reversal processing unit 105 stores the extracted node and its child nodes in the stack in this order. When the process in step S142 ends, the process returns to step S133 in FIG. 12.
  • step S141 of FIG. 13 if it is determined that all descendant nodes of the extracted node have been processed, the process proceeds to step S143.
  • step S143 the inversion processing unit 105 updates the bit pattern of the processing target node to correspond to the bit pattern of the child node.
  • the process in step S143 ends, the process returns to step S137 in FIG. 12.
  • the geometry encoding device 100 can suppress a reduction in the encoding efficiency of geometry encoded data.
  • FIG. 14 is a block diagram illustrating an example of the configuration of a geometry decoding device that is one aspect of an information processing device to which the present technology is applied.
  • a geometry decoding device 200 shown in FIG. 14 is a decoding device corresponding to the geometry encoding device 100, and decodes geometry encoded data to generate geometry data.
  • the geometry decoding device 200 performs ⁇ 2.
  • Geometry encoded data is decoded by applying the above-described present technique in the section ⁇ Bit inversion of geometry''.
  • the geometry decoding device 200 includes a decoding section 201, an initialization section 202, a bit inversion control section 203, an inversion processing section 204, and a geometry construction section 205.
  • the decoding unit 201 acquires geometry encoded data.
  • the decoding unit 201 decodes the geometry data and obtains Octree (geometry tree structure) data that has been appropriately inverted.
  • the decoding unit 201 supplies the data to the initialization unit 202.
  • the initialization unit 202 acquires Octree (geometry tree structure) data supplied from the decoding unit 201 and subjected to appropriate inversion processing.
  • the initialization unit 202 performs processing related to initialization. For example, the initialization unit 202 initializes the processing target node (sets it as the first node to be processed). When the initialization process is completed, the initialization unit 202 supplies the data of the Octree (geometry tree structure) and the initialized information to the bit inversion control unit 203.
  • the bit inversion control unit 203 acquires Octree (geometry tree structure) data and initialized information supplied from the initialization unit 202.
  • the bit inversion control unit 203 uses them to perform processing related to control of inversion processing. For example, the bit reversal control unit 203 determines whether or not to perform reversal processing (bit reversal) on the processing target node, and performs control. Further, the bit inversion control unit 203 controls updating of the processing target node.
  • the bit inversion control unit 203 supplies information regarding the processing target node to the inversion processing unit 204.
  • FIG. 15 An example of the flow of geometry decoding processing executed by this geometry decoding device 200 will be described with reference to the flowchart of FIG. 15. Note that the example in FIG. 15 is an example in which method 1-2-1 is applied to set bit inversion flags that can be set independently of each other for all non-leaf nodes.
  • the decoding unit 201 decodes the supplied geometry encoded data in step S201.
  • the decoding unit 201 constructs an Octree using the decoding result based on step S202, and generates Octree (geometry tree structure) data that has been appropriately inverted.
  • step S205 the inversion processing unit 204 executes inversion processing with the processing target node as the inversion root node.
  • the flow of this reversal process is the same as that described with reference to the flowcharts of FIGS. 12 and 13.
  • step S206 the process advances to step S206. Furthermore, if it is determined in step S204 that the bit inversion flag of the processing target node is off, the process proceeds to step S206.
  • step S207 the bit inversion control unit 203 updates the processing target node to the next node.
  • the process in step S207 ends, the process returns to step S204. That is, the processes from step S204 to step S209 are repeatedly executed, and each node of the geometry tree structure is processed as a processing target. If it is determined in step S206 that all nodes of the geometry tree structure have been processed, the process proceeds to step S208.
  • the geometry decoding device 200 can correctly decode the geometry encoded data generated by the geometry encoding device 100. That is, geometry decoding device 200 can suppress a reduction in the encoding efficiency of geometry encoded data.
  • step S405 the bit reversal control unit 203 deletes the bit determination flag of the descendant node of the processing target node.
  • step S405 ends, the process advances to step S406.
  • Second embodiment> ⁇ Point cloud encoding device> ⁇ 2.
  • the present technique described above in ⁇ Geometry Bit Inversion'' is not limited to the example of the first embodiment, but can be applied to any device.
  • the present technology can also be applied to a point cloud encoding device that encodes point cloud data.
  • FIG. 18 shows the main things such as the processing unit and the flow of data, and not all of the things shown in FIG. 18 are shown. That is, in the point cloud encoding device 500, there may be a processing unit that is not shown as a block in FIG. 18, or there may be a process or a data flow that is not shown as an arrow or the like in FIG.
  • the geometry encoding unit 501 performs processing related to encoding geometry data. For example, the geometry encoding unit 501 acquires geometry data of point cloud data input to the point cloud encoding device 500. Geometry encoding section 501 encodes the geometry data to generate encoded data. At this time, the geometry encoding unit 501 performs the following steps: ⁇ 2. Geometry Bit Reversal>, the present technique described above is applied to encode geometry data. That is, the geometry encoding unit 501 has the same configuration as the geometry encoding device 100 (FIG. 10) and performs the same processing. Geometry encoding section 501 supplies generated geometry encoded data to geometry decoding section 502 and bitstream generation section 505.
  • Geometry data may change due to processing such as encoding or decoding (for example, points may increase/decrease or move). That is, the geometry data supplied from the geometry decoding section 502 may be different from the geometry data before being encoded by the geometry encoding section 501.
  • the point cloud generation unit 503 performs processing (also referred to as recolor processing) to match the attribute data with the geometry data (decoding result). That is, the point cloud generation unit 503 updates the attribute data to correspond to the update of the geometry data.
  • Point cloud generation section 503 supplies updated attribute data (attribute data corresponding to geometry data (decoding result)) to attribute encoding section 504.
  • the point cloud encoding device 500 can suppress a reduction in the encoding efficiency of geometry encoded data.
  • each of these processing units (geometry encoding unit 501 to bitstream generation unit 505) of the point cloud encoding device 500 has an arbitrary configuration.
  • each processing section may be configured with a logic circuit that implements the above-described processing.
  • each processing unit may have, for example, a CPU, ROM, RAM, etc., and the above-described processing may be realized by using these to execute a program.
  • each processing unit may have both configurations, and may implement some of the above-mentioned processing by a logic circuit and the others by executing a program.
  • each processing unit may be independent of each other; for example, some processing units may implement part of the above processing using logic circuits, and other processing units may implement the above processing by executing a program.
  • the above-described processing may be realized by another processing unit using both a logic circuit and a program execution.
  • the geometry encoding unit 501 When the point cloud encoding process is started, the geometry encoding unit 501 performs a geometry encoding process in step S501, encodes geometry data, and generates geometry encoded data.
  • the flow of this geometry encoding process is similar to the flow described with reference to the flowchart of FIG. 11 or FIG. 16.
  • step S502 the geometry decoding unit 502 performs geometry decoding processing, decodes the geometry encoded data generated in step S501, and generates (restores) geometry data.
  • the flow of this geometry decoding process is similar to the flow described with reference to the flowchart of FIG. 15 or FIG. 17.
  • step S503 the point cloud generation unit 503 performs recolor processing to make the attribute data correspond to the geometry data generated in step S502.
  • the point cloud encoding device 500 can suppress a reduction in the encoding efficiency of geometry encoded data.
  • FIG. 20 is a block diagram illustrating an example of the configuration of a point cloud decoding device that is one aspect of an information processing device to which the present technology is applied.
  • Point cloud decoding device 600 shown in FIG. 20 is a decoding device corresponding to point cloud encoding device 500, and decodes a point cloud bitstream to generate point cloud data.
  • the point cloud decoding device 600 performs ⁇ 2. Bit inversion of geometry>, the present technique described above is applied to decode the bit stream of the point cloud.
  • FIG. 20 shows the main things such as the processing unit and the flow of data, and not all of the things shown in FIG. 20 are shown. That is, in the point cloud decoding device 600, there may be a processing unit that is not shown as a block in FIG. 20, or there may be a process or a data flow that is not shown as an arrow or the like in FIG.
  • the point cloud decoding device 600 includes an extraction section 601, a geometry decoding section 602, an attribute decoding section 603, and a point cloud generation section 604.
  • the extraction unit 601 extracts geometry encoded data from the bitstream and supplies it to the geometry decoding unit 602. Further, the extraction unit 601 extracts attribute encoded data from the bitstream and supplies it to the attribute decoding unit 603.
  • the geometry decoding unit 602 performs processing related to decoding geometry encoded data. For example, the geometry decoding unit 602 acquires and decodes geometry encoded data supplied from the extraction unit 601 to generate (restore) geometry data. At this time, the geometry decoding unit 602 performs ⁇ 2. Geometry data is decoded by applying the above-described present technique in the section ⁇ Bit inversion of geometry''. That is, the geometry decoding unit 602 has the same configuration as the geometry decoding device 200 (FIG. 14) and performs the same processing. The geometry decoding unit 602 supplies the generated geometry data to the attribute decoding unit 603 and the point cloud generation unit 604.
  • the attribute decoding unit 603 performs processing related to decoding attribute encoded data. For example, the attribute decoding unit 603 acquires attribute encoded data supplied from the extraction unit 601. Further, the attribute decoding unit 603 acquires geometry data supplied from the geometry decoding unit 602. The attribute decoding unit 603 decodes the encoded attribute data using the geometry data to generate (restore) attribute data.
  • the attribute decoding unit 603 performs this decoding using a decoding method corresponding to the encoding method applied by the attribute encoding unit 504 (FIG. 18).
  • the attribute decoding unit 603 supplies the generated attribute data to the point cloud generation unit 604.
  • the point cloud generation unit 604 performs processing related to point cloud generation. For example, the point cloud generation unit 604 obtains geometry data supplied from the geometry decoding unit 602. Further, the point cloud generation unit 604 acquires attribute data supplied from the attribute decoding unit 603. Then, the point cloud generation unit 604 associates the geometry data with the attribute data to generate point cloud data. The point cloud generation unit 604 outputs the generated point cloud data to the outside of the point cloud decoding device 600.
  • the point cloud decoding device 600 can correctly decode the bitstream generated by the point cloud encoding device 500. That is, point cloud decoding device 600 can suppress a reduction in encoding efficiency.
  • each of these processing units extraction unit 601 to point cloud generation unit 604 of the point cloud decoding device 600 has an arbitrary configuration.
  • each processing section may be configured with a logic circuit that implements the above-described processing.
  • each processing unit may have, for example, a CPU, ROM, RAM, etc., and the above-described processing may be realized by using these to execute a program.
  • each processing unit may have both configurations, and may implement some of the above-mentioned processing by a logic circuit and the others by executing a program.
  • the configurations of each processing unit may be independent of each other; for example, some processing units may implement part of the above processing using logic circuits, and other processing units may implement the above processing by executing a program.
  • the above-described processing may be realized by another processing unit using both a logic circuit and a program execution.
  • This point cloud decoding device 600 decodes a bitstream by executing point cloud decoding processing. An example of the flow of this point cloud decoding process will be explained with reference to the flowchart of FIG. 21.
  • the extraction unit 601 extracts geometry encoded data and attribute encoded data from the bitstream in step S601.
  • step S602 the geometry decoding unit 602 performs geometry decoding processing, decodes the geometry encoded data, and generates (restores) geometry data.
  • the flow of this geometry decoding process is similar to the flow described with reference to the flowchart of FIG. 15 or FIG. 17.
  • step S603 the attribute decoding unit 603 decodes the encoded attribute data to generate (restore) attribute data.
  • step S604 the point cloud generation unit 604 generates point cloud data by associating the geometry data generated in step S602 with the attribute data generated in step S603.
  • step S604 ends, the point cloud decoding process ends.
  • Japanese Patent Application Laid-Open No. 2021-071814 discloses a method of representing point cloud data representing a three-dimensional space as a three-dimensional occupancy grid map (for example, number [0003 ] or paragraph [0073]).
  • a three-dimensional space 700 is divided into predetermined grids, and an occupancy state (discrete occupancy state) is given to each grid. That is, for each grid, it is identified whether it is observed ( known / unknown) and whether it is occupied ( Occupied / Free).
  • the observed grids (known) are classified into Occupied 701, which is a grid occupied by an object, and Free 702, which is a grid in which no object exists. That is, each grid is identified as shown in FIG. 22B.
  • the robot 731 identifies the portions of the wall 721 and wall 722 shown in bold lines within the measurable range 734 as the Occupied 741, and identifies the area shown in gray in the space 723 as the free 742. . Other parts are identified as unknown. By self-propelling, the robot 731 recognizes the wall 721 and the wall 722 as an occupied space 741 and the space 723 as a free space 742, as shown in FIG.
  • the known grid may be a point cloud 770, and attributes may be used to identify occupied 771 and free 772.
  • a point cloud 780 with the Occupied 781 as a point and a point cloud 790 with the Free 791 as a point may be created.
  • a point cloud with Known as a point and a point cloud with Occupied as a point may be generated.
  • a point cloud with free points as points and a point cloud with Unknown points may be generated. Other combinations may also be used.
  • FIG. 28 is a block diagram showing a main configuration example of a 3D Occupancy Grid map encoding device that converts a 3D Occupancy Grid map into a point cloud and encodes it.
  • the 3D Occupancy Grid map encoding device 800 includes a 3D Occupancy Grid map generation section 801, a conversion section 802, and a point cloud encoding section 803.
  • the 3D Occupancy Grid map generation unit 801 generates a 3D Occupancy Grid map and supplies it to the conversion unit 802.
  • the conversion unit 802 converts the 3D Occupancy Grid map into a point cloud and supplies it to the point cloud encoding unit 803.
  • the point cloud encoding unit 803 encodes the point cloud and generates a bitstream. At this time, the point cloud encoding unit 803 performs ⁇ 2. Bit reversal of geometry>, the present technique described above is applied to encode the point cloud. That is, point cloud encoding section 803 has the same configuration as point cloud encoding device 500 (FIG. 18) and performs similar processing. Point cloud encoding section 803 outputs the generated bitstream to the outside of 3D Occupancy Grid map encoding device 800 .
  • the 3D Occupancy Grid map encoding device 800 can suppress reduction in encoding efficiency of geometry encoded data for the point cloud obtained by converting the 3D Occupancy Grid map.
  • each of these processing units (3D Occupancy Grid map generation unit 801 to point cloud encoding unit 803) of the 3D Occupancy Grid map encoding device 800 has an arbitrary configuration.
  • each processing section may be configured with a logic circuit that implements the above-described processing.
  • each processing unit may have, for example, a CPU, ROM, RAM, etc., and the above-described processing may be realized by using these to execute a program.
  • each processing unit may have both configurations, and may implement some of the above-mentioned processing by a logic circuit and the others by executing a program.
  • each processing unit may be independent of each other; for example, some processing units may implement part of the above processing using logic circuits, and other processing units may implement the above processing by executing a program.
  • the above-described processing may be realized by another processing unit using both a logic circuit and a program execution.
  • the 3D Occupancy Grid map encoding device 800 converts the 3D Occupancy Grid map into a point cloud and encodes it by executing a 3D Occupancy Grid map encoding process.
  • An example of the flow of this 3D Occupancy Grid map encoding process will be explained with reference to the flowchart of FIG. 29.
  • the 3D Occupancy Grid map generation unit 801 When the 3D Occupancy Grid map encoding process is started, the 3D Occupancy Grid map generation unit 801 generates a 3D Occupancy Grid map in step S801. In step S802, the conversion unit 802 converts the 3D Occupancy Grid map into a point cloud. In step S803, the point cloud encoding unit 803 executes point cloud encoding processing, encodes the point cloud data, and generates a bitstream. The flow of this point cloud encoding process is similar to the flow described with reference to the flowchart of FIG. 19. Once the bitstream is generated, the 3D Occupancy Grid map encoding process ends.
  • the 3D Occupancy Grid map encoding device 800 can suppress a reduction in the encoding efficiency of geometry encoded data for the point cloud obtained by converting the 3D Occupancy Grid map.
  • Figure 30 shows the main components of a 3D Occupancy Grid map decoding device that generates (restores) a 3D Occupancy Grid map by decoding and inversely converting a bitstream of a 3D Occupancy Grid map that has been converted into a point cloud and encoded.
  • FIG. 2 is a block diagram showing a configuration example.
  • the 3D Occupancy Grid map decoding device 850 includes a point cloud decoding section 851 and an inverse transformation section 852.
  • the point cloud decoding unit 851 decodes the supplied bitstream and generates (restores) point cloud data into which the 3D Occupancy Grid map has been converted. Point cloud decoding section 851 supplies the point cloud data to inverse transformation section 852.
  • the inverse transformation unit 852 obtains the point cloud data.
  • the inverse conversion unit 852 converts the acquired point cloud data into a 3D Occupancy Grid map. This conversion process is also called inverse conversion.
  • the inverse transform unit 852 outputs the 3D Occupancy Grid map obtained by the inverse transform to the outside of the 3D Occupancy Grid map decoding device 850 .
  • each processing unit may be independent of each other; for example, some processing units may implement part of the above processing using logic circuits, and other processing units may implement the above processing by executing a program.
  • the above-described processing may be realized by another processing unit using both a logic circuit and a program execution.
  • the 3D Occupancy Grid map decoding device 850 decodes the bitstream by executing 3D Occupancy Grid map decoding processing. An example of the flow of this 3D Occupancy Grid map decoding process will be explained with reference to the flowchart of FIG. 31.
  • the point cloud decoding unit 851 decodes the bitstream by executing the point cloud decoding process in step S851, and converts the 3D Occupancy Grid map into converted point cloud data. Generate (restore). The flow of this point cloud decoding process is similar to the flow described with reference to the flowchart of FIG. 21.
  • step S852 the inverse transformation unit 852 transforms the point cloud data into a 3D Occupancy Grid map.
  • the 3D Occupancy Grid map decoding process ends.
  • the 3D Occupancy Grid map decoding device 850 can correctly decode the bitstream generated by the 3D Occupancy Grid map encoding device 800. That is, the D Occupancy Grid map decoding device 850 can suppress reduction in the coding efficiency of geometry encoded data for the point cloud obtained by converting the 3D Occupancy Grid map.
  • the series of processes described above can be executed by hardware or software.
  • the programs that make up the software are installed on the computer.
  • the computer includes a computer built into dedicated hardware and, for example, a general-purpose personal computer that can execute various functions by installing various programs.
  • FIG. 32 is a block diagram showing an example of the hardware configuration of a computer that executes the above-described series of processes using a program.
  • An input/output interface 910 is also connected to the bus 904.
  • An input section 911 , an output section 912 , a storage section 913 , a communication section 914 , and a drive 915 are connected to the input/output interface 910 .
  • the CPU 901 executes the above-described series by, for example, loading a program stored in the storage unit 913 into the RAM 903 via the input/output interface 910 and the bus 904 and executing it. processing is performed.
  • the RAM 903 also appropriately stores data necessary for the CPU 901 to execute various processes.
  • a program executed by a computer can be applied by being recorded on a removable medium 921 such as a package medium, for example.
  • 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.
  • the program may also be provided via wired or wireless transmission media, 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 also be installed in the ROM 902 or storage unit 913 in advance.
  • the present technology can be applied to any configuration.
  • the present technology can be applied to various electronic devices.
  • the present technology can be applied to a processor (e.g., video processor) as a system LSI (Large Scale Integration), a module (e.g., video module) that uses multiple processors, etc., a unit (e.g., video unit) that uses multiple modules, etc.
  • a processor e.g., video processor
  • the present invention can be implemented as a part of a device, such as a set (for example, a video set), which is a unit with additional functions.
  • the present technology can also be applied to a network system configured by a plurality of devices.
  • the present technology may be implemented as cloud computing in which multiple devices share and jointly perform processing via a network.
  • this technology will be implemented in a cloud service that provides services related to images (moving images) to any terminal such as a computer, AV (Audio Visual) equipment, mobile information processing terminal, IoT (Internet of Things) device, etc. You may also do so.
  • a system refers to a collection of multiple components (devices, modules (components), etc.), and it does not matter whether all the components are in the same housing or not. Therefore, multiple devices housed in separate casings and connected via a network, and one device with multiple modules housed in one casing are both systems. .
  • the term “flag” refers to information for identifying multiple states, and includes not only information used to identify two states, true (1) or false (0), but also information for identifying three or more states. Information that can identify the state is also included. Therefore, the value that this "flag” can take may be, for example, a binary value of 1/0, or a value of three or more. That is, the number of bits constituting this "flag" is arbitrary, and may be 1 bit or multiple bits.
  • embodiments of the present technology are not limited to the embodiments described above, and various changes can be made without departing from the gist of the present technology.
  • the above-mentioned program may be executed on any device.
  • the device has the necessary functions (functional blocks, etc.) and can obtain the necessary information.
  • each step of one flowchart may be executed by one device, or may be executed by multiple devices.
  • the multiple processes may be executed by one device, or may be shared and executed by multiple devices.
  • multiple processes included in one step can be executed as multiple steps.
  • processes described as multiple steps can also be executed together as one step.
  • the processing of the steps described in the program may be executed chronologically in the order described in this specification, or may be executed in parallel, or may be executed in parallel. It may also be configured to be executed individually at necessary timings, such as when a request is made. In other words, the processing of each step may be executed in a different order from the order described above, unless a contradiction occurs. Furthermore, the processing of the step of writing this program may be executed in parallel with the processing of other programs, or may be executed in combination with the processing of other programs.
  • the inversion range is a node range that is made up of an inversion root node and descendant nodes of the inversion root node, and is the target of the inversion process
  • the inversion process is a process of inverting the bit patterns of leaf nodes included in the inversion range and making the bit patterns of non-leaf nodes included in the inversion range correspond to the bit patterns of child nodes.
  • a decoding unit that decodes the encoded data of the geometry data of the point cloud; and in a tree structure representing the geometry of the point cloud, which the geometry data obtained by decoding has, performs inversion processing on the inversion range. Equipped with an inversion processing section that performs The inversion range is a node range that is made up of an inversion root node and descendant nodes of the inversion root node, and is the target of the inversion process,
  • the inversion process is a process in which bit patterns of leaf nodes included in the inversion range are inverted, and bit patterns of non-leaf nodes included in the inversion range are made to correspond to bit patterns of child nodes.
  • the information processing device further comprising an inversion control unit that controls whether to perform the inversion process.
  • the inversion control unit performs the inversion process based on a bit inversion flag that is set for all nodes of the tree structure and indicates whether to perform the inversion process on the inversion range.
  • the information processing device according to (15).
  • the reversal control unit performs the reversal process based on a bit reversal flag, which is set for a group of direct nodes of the tree structure and indicates whether the reversal process is performed on the reversal range.
  • the information processing device according to (15).
  • the inversion range is a node range that is made up of an inversion root node and descendant nodes of the inversion root node, and is the target of the inversion process
  • the inversion process is a process of inverting the bit patterns of leaf nodes included in the inversion range and making the bit patterns of non-leaf nodes included in the inversion range correspond to the bit patterns of child nodes.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本開示は、符号化効率の低減を抑制することができるようにする情報処理装置および方法に関する。 ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行い、その反転処理が行われた木構造を有するジオメトリデータを符号化する。また、ポイントクラウドのジオメトリデータの符号化データを復号し、その復号して得られたジオメトリデータが有する、ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行う。本開示は、例えば、情報処理装置、電子機器、情報処理方法、またはプログラム等に適用することができる。

Description

情報処理装置および方法
 本開示は、情報処理装置および方法に関し、特に、符号化効率の低減を抑制することができるようにした情報処理装置および方法に関する。
 従来、3次元構造を表す3Dデータであるポイントクラウド(Point cloud)のジオメトリデータの符号化方法として、Octreeを用いて符号化する方法が考えられた(例えば非特許文献1参照)。非特許文献1においては、Octreeで表されたポイントクラウドデータの解像度を制御するためのモードおよびフラグが開示された。
 しかしながら、この方法の場合、ポイントが存在しない領域については、ノードを削除することができるが、ポイントが存在する領域については葉ノード(最高解像度)まで生成される。そのため、ポイントが密である場合、ポイントが疎である場合に比べて符号化効率が低減するおそれがあった。
 本開示は、このような状況に鑑みてなされたものであり、符号化効率の低減を抑制することができるようにするものである。
 本技術の一側面の情報処理装置は、ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行う反転処理部と、前記反転処理が行われた前記木構造を有するジオメトリデータを符号化する符号化部とを備え、前記反転範囲は、反転根ノードおよび前記反転根ノードの子孫ノードにより構成され、前記反転処理の対象となるノード範囲であり、前記反転処理は、前記反転範囲に含まれる葉ノードのビットパタンを反転し、前記反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理である情報処理装置である。
 本技術の一側面の情報処理方法は、ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行い、前記反転処理が行われた前記木構造を有するジオメトリデータを符号化し、前記反転範囲は、反転根ノードおよび前記反転根ノードの子孫ノードにより構成され、前記反転処理の対象となるノード範囲であり、前記反転処理は、前記反転範囲に含まれる葉ノードのビットパタンを反転し、前記反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理である情報処理方法である。
 本技術の他の側面の情報処理装置は、ポイントクラウドのジオメトリデータの符号化データを復号する復号部と、復号して得られた前記ジオメトリデータが有する、前記ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行う反転処理部とを備え、前記反転範囲は、反転根ノードおよび前記反転根ノードの子孫ノードにより構成され、前記反転処理の対象となるノード範囲であり、前記反転処理は、前記反転範囲に含まれる葉ノードのビットパタンを反転し、前記反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理である情報処理装置である。
 本技術の他の側面の情報処理方法は、ポイントクラウドのジオメトリデータの符号化データを復号し、復号して得られた前記ジオメトリデータが有する、前記ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行い、前記反転範囲は、反転根ノードおよび前記反転根ノードの子孫ノードにより構成され、前記反転処理の対象となるノード範囲であり、前記反転処理は、前記反転範囲に含まれる葉ノードのビットパタンを反転し、前記反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理である情報処理方法である。
 本技術の一側面の情報処理装置および方法においては、ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理が行われ、その反転処理が行われた木構造を有するジオメトリデータが符号化される。その反転範囲は、反転根ノードおよびその反転根ノードの子孫ノードにより構成される。その反転処理の対象となるノード範囲であり、その反転処理は、その反転範囲に含まれる葉ノードのビットパタンが反転され、その反転範囲に含まれる非葉ノードのビットパタンが子ノードのビットパタンに対応させられる処理である。
 本技術の他の側面の情報処理装置および方法においては、ポイントクラウドのジオメトリデータの符号化データが復号され、その復号して得られたジオメトリデータが有する、ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理が行われる。その反転範囲は、反転根ノードおよびその反転根ノードの子孫ノードにより構成され、その反転処理の対象となるノード範囲である。その反転処理は、その反転範囲に含まれる葉ノードのビットパタンが反転され、その反転範囲に含まれる非葉ノードのビットパタンが子ノードのビットパタンに対応させられる処理である。
ジオメトリのボクセル表現の例について説明する図である。 Octreeの例について説明する図である。 ポイントが密な場合について説明する図である。 ビット反転の各種方法について説明する図である。 反転処理の例について説明する図である。 反転領域の例について説明する図である。 ビット反転フラグの例について説明する図である。 反転領域の例について説明する図である。 削除数の見積もり方法の例について説明する図である。 ジオメトリ符号化装置の主な構成例を示すブロック図である。 ジオメトリ符号化処理の流れの例を説明するフローチャートである。 ビット反転処理の流れの例を説明するフローチャートである。 ビット反転処理の流れの例を説明する図12に続くフローチャートである。 ジオメトリ復号装置の主な構成例を示すブロック図である。 ジオメトリ復号処理の流れの例を説明するフローチャートである。 ジオメトリ符号化処理の流れの他の例を説明するフローチャートである。 ジオメトリ復号処理の流れの他の例を説明するフローチャートである。 ポイントクラウド符号化装置の主な構成例を示すブロック図である。 ポイントクラウド符号化処理の流れの例を説明するフローチャートである。 ポイントクラウド復号装置の主な構成例を示すブロック図である。 ポイントクラウド復号処理の流れの例を説明するフローチャートである。 3D Occupancy Grid mapのポイントクラウド化について説明する図である。 3D Occupancy Grid mapの生成について説明する図である。 3D Occupancy Grid mapの生成について説明する図である。 3D Occupancy Grid mapの生成について説明する図である。 ポイントクラウドの例について説明する図である。 ポイントクラウドの例について説明する図である。 3D Occupancy Grid map符号化装置の主な構成例を示すブロック図である。 3D Occupancy Grid map符号化処理の流れの例を説明するフローチャートである。 3D Occupancy Grid map復号装置の主な構成例を示すブロック図である。 3D Occupancy Grid map復号処理の流れの例を説明するフローチャートである。 コンピュータの主な構成例を示すブロック図である。
 以下、本開示を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
 1.GPCC
 2.ジオメトリのビット反転
 3.第1の実施の形態(ジオメトリ符号化・復号)
 4.第2の実施の形態(ポイントクラウド符号化・復号)
 5.第3の実施の形態(3D Occupancy Grid map)
 6.付記
 <1.GPCC>
  <技術内容・技術用語をサポートする文献等>
 本技術で開示される範囲は、実施の形態に記載されている内容だけではなく、出願当時において公知となっている以下の非特許文献等に記載されている内容や以下の非特許文献において参照されている他の文献の内容等も含まれる。
 非特許文献1:(上述)
 つまり、上述の非特許文献に記載されている内容や、上述の非特許文献において参照されている他の文献の内容等も、サポート要件を判断する際の根拠となる。
  <ポイントクラウド>
 従来、立体構造物(3次元形状のオブジェクト)の3次元構造を表す3Dデータとして、そのオブジェクトを多数のポイントの集合として表現するポイントクラウドが存在した。ポイントクラウドのデータ(ポイントクラウドデータとも称する)は、そのポイントクラウドを構成する各ポイントのジオメトリ(位置情報)とアトリビュート(属性情報)とにより構成される。ジオメトリは、そのポイントの3次元空間における位置を示す。アトリビュートは、そのポイントの属性を示す。このアトリビュートは任意の情報を含むことができる。例えば、各ポイントの色情報、反射率情報、法線情報等がアトリビュートに含まれるようにしてもよい。このようにポイントクラウドは、データ構造が比較的単純であるとともに、十分に多くの点を用いることにより任意の立体構造物を十分な精度で表現することができる。
  <ボクセル表現>
 しかしながら、このようなポイントクラウドはそのデータ量が比較的大きいので、符号化等によるデータ量の圧縮が求められた。例えば、各ポイントのジオメトリは、その位置精度が高くなる程、データ量が増大する。そこでボクセル(Voxel)を用いてジオメトリを表現する方法が考えられた。ボクセルは、オブジェクトを含む3次元空間領域を分割した領域である。ポイントクラウドの各ポイントの位置が、このようなボクセル内の所定の場所(例えば中心)に位置するようにする。換言するに、各ボクセル内にポイントが存在するか否かを表すようにする。このようにすることにより、ボクセルを単位として各ポイントのジオメトリを量子化することができる。したがって、ジオメトリのデータ量の増大を抑制することができる。なお、本明細書において、このようなボクセルを用いたジオメトリの表現方法をボクセル表現とも称する。
 1つのボクセルは分割して複数のボクセルとすることができる。つまり、ボクセルを再帰的に繰り返し分割することにより、各ボクセルのサイズをより小さくすることができる。ボクセルのサイズが小さくなる程、解像度が高くなる。つまり、各ポイントの位置をより正確に表現することができる。換言するに、上述した量子化によるジオメトリのデータ量の低減効果が抑制される。
 ジオメトリをこのようにボクセル表現する場合、ジオメトリの解像度を向上させるためには、ポイントが存在するボクセルについてのみ分割すればよい。例えば、図1において3次元領域11が8つのボクセル(2x2x2)に分割されるとする。図1においては、グレーで示されるボクセルが、ポイントを含むボクセルを示す。つまり、3次元領域11の8つのボクセルの内、ボクセル12およびボクセル13にポイントが存在する。
 ボクセル12は、さらに8つのボクセル(2x2x2)に分割することができる。そしてその8つのボクセルの内、ボクセル14にポイントが存在する。ボクセル14は、さらに8つのボクセル(2x2x2)に分割することができる。そしてその8つのボクセルの内、ボクセル15、ボクセル16、およびボクセル17にポイントが存在する。
 同様に、ボクセル13は、さらに8つのボクセル(2x2x2)に分割することができる。そしてその8つのボクセルの内、ボクセル18およびボクセル19にポイントが存在する。ボクセル18は、さらに8つのボクセル(2x2x2)に分割することができる。そしてその8つのボクセルの内、ボクセル20およびボクセル21にポイントが存在する。ボクセル19は、さらに8つのボクセル(2x2x2)に分割することができる。そしてその8つのボクセルの内、ボクセル22にポイントが存在する。
 説明の便宜上、図1においては各ボクセルを同一のサイズで示しているが、実際には図中右側のボクセル程(つまり、分割を繰り返す程)、小さくなる。このように、ボクセル表現では、ジオメトリを、階層構造を用いて表現することができる。
  <Octree表現>
 上述したように、ボクセル表現では、各ボクセルにポイントが存在するか否かが示される。つまり、各階層のボクセルをノードとし、分割した各ボクセルについてポイントが存在するか否かを0と1で表現することにより、ジオメトリを、図2に示されるような木構造で表現することができる。図1の例では1つのボクセルが8分割されているので、図2においては、各ノードにおいて1階層下のボクセルにおけるポイントの有無が、8ビットのビットパタンにより示されている。つまり、ジオメトリが8分木(Octree)により表現されている。本明細書においては、このようなOctreeを用いたジオメトリの表現方法をOctree表現とも称する。このような各ノードのビットパタンを所定順に並べて符号化する。Octree表現を用いることにより、ジオメトリのスケーラブルな復号を実現することができる。つまり、必要な情報のみを復号して任意の階層(解像度)のジオメトリを得ることができる。
 また、上述したように、ボクセル表現では、ポイントが存在しないボクセルは分割を省略することができるので、このOctree表現においても、ポイントが存在しないノードを省略することができる。したがって、ジオメトリのデータ量の増大を抑制することができる。
 なお、本明細書においては、このようなジオメトリを表現する木構造をジオメトリ木構造とも称する。また、このジオメトリ木構造は、ボクセル表現に対応するのでボクセル木構造とも称する。
  <ポイントが密な場合>
 しかしながら、例えば図3に示されるように、ポイントが多数存在する領域では、葉ノード(最下位層のノード)まで多くのボクセルにポイントが存在し、ノードを省略することができなくなる場合があった。そのため、ジオメトリの符号化データのデータ量が増大する(すなわち、ジオメトリの符号化効率が低減する)おそれがあった。なお、本明細書においては、このようにポイントが多数存在する状態を「密」とも称する。
 <2.ジオメトリのビット反転>
 そこで、図4の表の最上段に示されるように、ボクセル木構造(ジオメトリ木構造)の一部または全部のノードをビット反転状態にし得るようにする(方法1)。なお、本明細書において、「ビット反転状態」とは、反転処理が行われた状態のことを示す。また、「反転処理」とは、葉ノードのビットパタンを反転し、その葉ノードの祖先ノード(その葉ノードが属するより上位のノード(非葉ノードとも称する))のビットパタンを子ノードのビットパタンに対応させる処理のことを示す。ここで「ビットパタン」とは、ジオメトリ木構造のノードの、1つ下位層の各ボクセルにポイントが存在するか否かを示すビットパタンのことを示す。また、「反転」とは、ビットパタンの値「0」のビットを値「1」に変換し、値「1」のビットを値「0」に変換する処理のことを指す。つまり、例えば「00110011」のビットパタンを反転すると「11001100」になる。また、「ビットパタンを子ノードのビットパタンに対応させる」とは、処理対象ノードのビットパタンの内、ビットパタンに値「1」が含まれる子ノード(つまりポイントが存在するボクセル)に対応するビットの値を「1」に設定し、ビットパタンの全ビットが値「0」である子ノード(つまりポイントが存在しないボクセル)に対応するビットの値を「0」に設定する処理である。すなわち、ジオメトリ木構造の一部または全部のノードに対して、このような反転処理を行うことができるようにする。
 例えば、情報処理装置が、ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行う反転処理部と、その反転処理が行われた木構造を有するジオメトリデータを符号化する符号化部とを備えるようにする。なお、「反転範囲」は、反転根ノードおよびその反転根ノードの子孫ノードにより構成され、反転処理の対象となるノード範囲であるようにする。また、「反転処理」は、反転範囲に含まれる葉ノードのビットパタンを反転し、その反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理であるようにする。
 例えば、情報処理方法において、ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行い、その反転処理が行われた木構造を有するジオメトリデータを符号化する。なお、「反転範囲」は、反転根ノードおよびその反転根ノードの子孫ノードにより構成され、反転処理の対象となるノード範囲であるようにする。また、「反転処理」は、反転範囲に含まれる葉ノードのビットパタンを反転し、その反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理であるようにする。
 例えば、情報処理装置が、ポイントクラウドのジオメトリデータの符号化データを復号する復号部と、その復号して得られたジオメトリデータが有する、そのポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行う反転処理部とを備えるようにする。なお、「反転範囲」は、反転根ノードおよびその反転根ノードの子孫ノードにより構成され、反転処理の対象となるノード範囲であるようにする。また、「反転処理」は、反転範囲に含まれる葉ノードのビットパタンを反転し、その反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理であるようにする。
 例えば、情報処理方法において、ポイントクラウドのジオメトリデータの符号化データを復号し、その復号して得られたジオメトリデータが有する、そのポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行うようにする。なお、「反転範囲」は、反転根ノードおよびその反転根ノードの子孫ノードにより構成され、反転処理の対象となるノード範囲であるようにする。また、「反転処理」は、反転範囲に含まれる葉ノードのビットパタンを反転し、反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理であるようにする。
 例えば、図3に示される各ノードに対して反転処理を行うと、各ノードにおいて、図5に示されるようなビットパタンが得られる。つまり、図中、左から3番目の葉ノードと一番右の葉ノード以外の葉ノードのビットパタンは全て「0」になる。したがって、それらの葉ノードは削除することができる。つまり、図3の例の場合よりもジオメトリ木構造を小さくすることができる。なお、本明細書においては、このようにポイントが少ない状態を「疎」とも称する。
 つまり、このように反転処理を行うことにより、ポイントが密な状態を疎な状態として表現することができる。したがって、反転処理を行わない場合よりも、ジオメトリのデータ量の増大を抑制し、符号化効率の低減を抑制することができる。
 なお、ジオメトリ木構造の任意のノードを反転根ノードとすることができる。つまり、反転範囲は、ジオメトリ木構造の一部とすることもできるし、ジオメトリ木構造の全体とすることもできる。例えば、図6のAに示されるように、ジオメトリ木構造51に対して、その根ノード(最上位ノード)を反転根ノード52とし、全ての葉ノード53を含むノード範囲、すなわちジオメトリ木構造51全体を、反転範囲54としてもよい。また、図6のBに示されるように、ジオメトリ木構造51に対して、その中間ノード(根ノードおよび葉ノード以外のノード)を反転根ノード52-1とし、その反転根ノードの子孫ノードとなる葉ノード53を含むノード範囲、すなわちジオメトリ木構造51の一部を、反転範囲54-1としてもよい。
 なお、図6のBに示されるように、1つのジオメトリ木構造において複数の反転範囲を設定することができるようにしてもよい。例えば図6のBの場合、ジオメトリ木構造51に対して、反転根ノード52-1を含む反転範囲54-1と、反転根ノード52-2を含む反転範囲54-2とが設定されている。
 なお、図6においては、ジオメトリ木構造51が2分木であるものとして説明している。また、図6のAおよび図6のBにおいては、1つの葉ノードに対してのみ符号(53)を付してあるが、図中白丸で示されるジオメトリ木構造51の最下位ノードは全て葉ノード53である。
 なお、図1においてはボクセルが立方体であるものとして説明したが、ボクセルの形状は任意である。例えば、ボクセルは直方体でもよい。また、図1においては1つのボクセルを8つのボクセルに分割するように説明したが、分割数(分割後のボクセルの数)は任意である。例えば1つのボクセルを2分割してもよいし、4分割してもよいし、9分割してもよいし、64分割してもよい。もちろん、これらの例以外の分割数であってもよい。つまり、ジオメトリ木構造は、任意である。例えば、Octreeであってもよいし、2分木であってもよいし、それ以外であってもよい。
  <ビット反転フラグ>
 以上のように「方法1」を適用する場合において、図4の表の上から2段目に示されるように、反転範囲を固定(所定のノード範囲)としてもよい(方法1-1)。例えば、図6のAに示されるように、常に、ジオメトリ木構造51全体を反転範囲としてもよい。このようにすることにより、反転範囲の設定に関する処理を省略し得る。
 また、反転範囲は可変としてもよい。その場合、設定された反転範囲を示す情報が、符号化側から復号側に伝送されるようにしてもよい。例えば、「方法1」を適用する場合において、図4の表の上から3段目に示されるように、ビット反転フラグが伝送されるようにしてもよい(方法1-2)。
 例えば、情報処理装置において、反転範囲に対して反転処理を行うかを示すビット反転フラグを、その反転範囲の反転根ノードに対して設定するフラグ設定部が供えられてもよい。ビット反転フラグは、そのフラグに対応するノードが反転根ノードであるか否かを示す情報である。換言するに、ビット反転フラグは、そのフラグに対応するノードを反転根ノードとして反転範囲が設定され、その反転範囲に対して反転処理が行われるか否かを示す情報である。
 例えば、ビット反転フラグの値が「0」の場合、そのフラグに対応するノードを反転根ノードとする反転範囲に対して反転処理を行わないことを示すようにしてもよい。また、ビット反転フラグの値が「1」の場合、そのフラグに対応するノードを反転根ノードとする反転範囲に対して反転処理を行うことを示すようにしてもよい。
 例えば、情報処理装置において、処理対象ノードに対応するビット反転フラグに基づいて、その処理対象ノードを反転根ノードとする反転範囲に対して反転処理を行うかを制御する反転制御部をさらに備えてもよい。
 なお、反転の結果、ポイントが「疎」になるノード(=元々ポイントが「密」なノード)のビットパタンを、全て0としてもよい。つまり、ポイントが「疎」なノードを削除してもよい。例えば、反転処理部は、反転処理を行った後、ポイントが疎であることを示すビットパタンのノードを削除してもよい。例えば、反転処理部は、反転処理を行った後、全てが0のビットパタンのノードを削除してもよい。この場合、符号化・復号は非可逆となる。なお、ポイントが「疎」であるか「密」であるかの定義(疎密条件とも称する)は任意である。例えば、ポイントが1つしか存在しない場合を「疎」としてもよいし、全てのボクセル数に対するポイントを含むボクセル数の割合が所定値以下の場合を「疎」としてもよい。また、「疎」な状態を示す条件のみが設定されてもよいし、「密」な状態を示す条件のみが設定されてもよいし、「疎」な状態を示す条件と「密」な状態を示す条件の両方が設定されてもよい。また、「疎」でない状態を「密」な状態としてもよいし、「疎」でも「密」でもない状態が存在してもよい。
 また、この疎密条件は、予め定められていてもよいし、任意の情報に基づいて導出されるようにしてもよい。また、外部からの疎密条件の指定(例えばユーザやアプリケーション等の指定)を受け付けてもよい。また、疎密条件を示す情報を符号化側から復号側に伝送してもよい。また、この疎密条件は、全ノード共通でもよいし、ジオメトリ木構造の階層毎に異なってもよいし、領域毎に異なってもよいし、ノード毎に異なってもよい。
 ビット反転フラグが設定されるノードは任意である。例えば、「方法1-2」が適用される場合、図4の表の上から5段目に示されるように、全ての非葉ノードに対して互いに独立に設定可能なビット反転フラグを設定してもよい(方法1-2-1)。
 例えば、フラグ設定部は、ジオメトリ木構造の全てのノードに対して、ビット反転フラグを互いに独立に設定してもよい。
 例えば、反転制御部は、ジオメトリ木構造の全てのノードに対して設定された、反転範囲に対して反転処理を行うかを示すビット反転フラグに基づいて、反転処理を行うかを制御してもよい。
 この場合、例えば図8に示されるように、範囲が互いに重複する複数の反転範囲(反転範囲54-1および反転範囲54-2)を設定することができる。このような場合、複数の反転範囲に含まれるノードに対しては、各反転範囲について反転処理が行われる。つまり、複数の反転範囲に含まれるノードに対しては、複数回反転処理が行われる。例えば、図8の場合、図中左端の葉ノード53は、反転範囲54-1および反転範囲54-2に含まれる。したがって、この葉ノード53のビットパタンは、2回反転される。
 また、「方法1-2」が適用される場合、図4の表の上から6段目に示されるように、直系ノード群に対して1つのビット反転フラグを設定してもよい(方法1-2-2)。直系ノード群は、ジオメトリ木構造において、互いに直系の関係(親子関係)にあるノードにより構成されるノード群(ノード範囲)のことである。この場合、反転範囲は重複しないようにすることができる。なお、ビット反転フラグを設定するノードは、最初に処理するノードであってもよいし、N番目に処理するノード(予め決められたN、指定されたN)、最後に処理するノードであってもよい。
 例えば、フラグ設定部は、ジオメトリ木構造の直系ノード群に対して1つのビット反転フラグを設定してもよい。また、反転制御部は、ジオメトリ木構造の直系ノード群に対して1つ設定されたビット反転フラグに基づいて、反転処理を行うかを制御してもよい。
 また、「方法1-2」が適用される場合、図4の表の上から7段目に示されるように、ボクセル木構造全体に対して単数のビット反転フラグを設定してもよい(方法1-2-3)。つまり、この場合、図6のAの例のように、ジオメトリ木構造全体が反転範囲とすることができる。このようにすることにより、反転処理を容易化することができる。
 例えば、フラグ設定部は、ジオメトリ木構造全体に対して1つのビット反転フラグを設定してもよい。また、反転制御部は、ジオメトリ木構造全体に対して1つ設定されたビット反転フラグに基づいて、反転処理を行うかを制御してもよい。
  <ビット反転制御>
 例えば、情報処理装置において、反転処理を行うかを制御する反転制御部がさらに備えられていてもよい。反転処理を行うか否かの制御方法は任意である。
 「方法1-2」が適用される場合、図4の表の上から9段目に示されるように、符号化効率に基づいてビット反転を制御してもよい(方法1-2-4)。例えば、反転制御部が、ジオメトリ符号化データの符号化効率に基づいて反転処理を行うかを制御してもよい。例えば、設定可能な全ての反転範囲について反転処理を行う場合と行わない場合を組み合わせ、全てのパタンについて符号化効率を導出し、その符号化効率が最高となるパタンを適用してもよい。このようにすることにより、最も高い符号化効率で符号化を行うことができる。
 「方法1-2」が適用される場合、図4の表の上から10段目に示されるように、ポイントの存在割合に基づいてビット反転を制御してもよい(方法1-2-5)。ポイントの存在割合とは、処理対象領域の全てのボクセルに対するポイントが存在するボクセルの割合を示す。ポイントの存在割合の代わりに、処理対象領域に含まれるポイント数を適用してもよい。例えば、反転制御部は、反転範囲内のポイント数(またはポイントの存在割合)に基づいて反転処理を行うかを制御してもよい。つまり、この場合、ポイント数(またはポイントの存在割合)に基づいてポイントが「疎」であるか「密」であるかが推定される。例えば、ポイント数(またはポイントの存在割合)が所定の閾値以上の場合、ポイントが「密」であると判定し、反転処理を行うように制御してもよい。この閾値は任意である。全ノード共通でもよいし、階層毎に設定されてもよいし、領域毎に設定されてもよいし、ノード毎に設定されてもよい。したがって、その推定をより容易に行うことができる。
 「方法1-2」が適用される場合、図4の表の最下段に示されるように、反転処理によるノード数の変化(削除数)に基づいてビット反転を制御してもよい(方法1-2-6)。ノードの削減数とは、処理対象ノードおよびその子孫ノードの内、反転処理により削除されるノードの数を示す。削除数の代わりに、割合(削除数/子孫ノード数)を適用してもよい。つまり、この場合、ノードの削除数(または割合)に基づいて符号化効率の向上度合いが推定される。例えば、反転制御部は、反転処理によって削除されるノード数に基づいて反転処理を行うかを制御してもよい。
 例えば、図9に示されるジオメトリ木構造において、処理対象ノード71の子ノード(葉ノード)72-1乃至子ノード72-6は、ビットパタン「11111111」を有し、子ノード72-7は、ビットパタン「00001111」を有し、子ノード72-8は、ビットパタン「00000000」を有する。したがって、処理対象ノード71は、ビットパタン「11111110」を有する。
 これらのノードを反転範囲として反転処理を行うと、子ノード72-1乃至子ノード72-6のビットパタンは(00000000)となる。子ノード72-7のビットパタンは(11110000)となる。子ノード72-8のビットパタンは(11111111)となる。したがって、処理対象ノード71のビットパタンは(00000011)となる。
 したがって、子ノード72-1乃至子ノード72-6は反転処理後に削除されるのでそれぞれの削除数は[1]である。子ノード72-7は反転処理後も削除されないのでその削除数は[0]である。子ノード72-8は反転処理後に追加される(反転処理前の状態において削除されるノードである)のでその削除数は[-1]である。
 処理対象ノード71は、反転処理後も削除されない。したがって、処理対象ノード71における削除数は、[(1+1+1+1+1+1+0-1)+0=5]である。
 この削除数(割合)が多い程、符号化効率の低減が抑制される。したがって、例えば、ノードの削除数(または割合)が所定の閾値以上の場合、反転処理を行うように制御してもよい。この閾値は任意である。全ノード共通でもよいし、階層毎に設定されてもよいし、領域毎に設定されてもよいし、ノード毎に設定されてもよい。このようにすることにより、より容易により符号化効率の低減を抑制することができる。
 なお、反転範囲においてポイントが存在しない領域のノードを生成してから反転処理を行ってもよい。例えば、反転処理部は、反転範囲においてポイントが存在しない領域のノードを生成した後、反転処理を行ってもよい。
 また、ジオメトリ構築部が、反転処理が行われた木構造を用いて3次元空間のジオメトリを構築してもよい。
 <3.第1の実施の形態>
  <ジオメトリ符号化装置>
 次に、<2.ジオメトリのビット反転>において上述した本技術を適用する装置について説明する。図10は、本技術を適用した情報処理装置の一態様であるジオメトリ符号化装置の構成の一例を示すブロック図である。図10に示されるジオメトリ符号化装置100は、ポイントクラウドのジオメトリデータを符号化する装置である。ジオメトリ符号化装置100は、<2.ジオメトリのビット反転>において上述した本技術を適用してジオメトリデータを符号化する。
 なお、図10においては、処理部やデータの流れ等の主なものを示しており、図10に示されるものが全てとは限らない。つまり、ジオメトリ符号化装置100において、図10においてブロックとして示されていない処理部が存在したり、図10において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
 図10に示されるように、ジオメトリ符号化装置100は、Octree生成部101、初期化部102、ビット反転制御部103、フラグ設定部104、反転処理部105、および符号化部106を有する。
 Octree生成部101は、ジオメトリ符号化装置100に入力されるジオメトリデータに基づいて、そのジオメトリのOctree(ジオメトリ木構造)を生成する。Octree生成部101は、生成したOctree(ジオメトリ木構造)のデータを初期化部102へ供給する。
 初期化部102は、Octree生成部101から供給されるOctree(ジオメトリ木構造)のデータを取得する。初期化部102は、初期化に関する処理を行う。例えば、初期化部102は、Octree(ジオメトリ木構造)に対して設定されるビット反転フラグを初期化する(初期値(例えば「0」)にする)。また、初期化部102は、処理対象ノードを初期化する(最初に処理するノードに設定する)。初期化部102は、初期化に関する処理が終了すると、そのOctree(ジオメトリ木構造)のデータや初期化した情報をビット反転制御部103へ供給する。
 ビット反転制御部103は、初期化部102から供給されるOctree(ジオメトリ木構造)のデータや初期化された情報を取得する。ビット反転制御部103は、それらを用いて、反転処理の制御に関する処理を行う。例えば、ビット反転制御部103は、処理対象ノードに対して反転処理(ビット反転)を行うか否かを判定し、制御する。また、ビット反転制御部103は、処理対象ノードの更新を制御する。ビット反転制御部103は、処理対象ノードに関する情報をフラグ設定部104に供給する。
 フラグ設定部104は、フラグの設定に関する処理を行う。例えば、フラグ設定部104は、ビット反転制御部103から供給される処理対象ノードに関する情報を取得する。フラグ設定部104は、その処理対象ノードに対して適宜ビット反転フラグを設定する。フラグ設定部104は、処理対象ノードに関する情報や設定したビット判定フラグ等の情報を反転処理部105へ供給する。
 反転処理部105は、フラグ設定部104から供給される処理対象ノードに関する情報や設定されたビット判定フラグ等の情報を取得する。反転処理部105は、処理対象ノードに対する反転処理を行う。その際、反転処理部105は、<2.ジオメトリのビット反転>において上述した本技術を適用して反転処理を行う。反転処理部105は、反転処理結果やビット判定フラグ等の情報を符号化部106へ供給する。
 符号化部106は、反転処理部105から供給される各処理対象ノードについての反転処理結果やビット判定フラグ等の情報を取得する。全てのノードについてこれらの情報を取得すると、符号化部106は、ビット反転制御部103の制御に従って、反転処理されたジオメトリデータを符号化し、ジオメトリの符号化データであるジオメトリ符号化データを生成する。なお、このジオメトリ符号化データには、設定されたビット反転フラグが含まれていてもよい。その際、符号化部106は、<2.ジオメトリのビット反転>において上述した本技術を適用してこの符号化を行う。符号化部106は、生成したジオメトリ符号化データを、ジオメトリの符号化結果として、ジオメトリ符号化装置100の外部に出力する。
 このようにすることにより、ジオメトリ符号化装置100は、密な状態のポイントを疎な状態として表現して符号化データを生成することができるので、符号化効率の低減を抑制することができる。
 なお、ジオメトリ符号化装置100のこれらの処理部(Octree生成部101乃至符号化部106)は、それぞれ、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
  <ジオメトリ符号化処理の流れ>
 このジオメトリ符号化装置100により実行されるジオメトリ符号化処理の流れの例を、図11のフローチャートを参照して説明する。なお、図11の例は、全ての非葉ノードに互いに独立に設定可能なビット反転フラグを設定する方法1-2-1を適用する例である。
 ジオメトリ符号化処理が開始されると、Octree生成部101は、ステップS101において、供給されたジオメトリデータに基づいてOctreeパタン(ジオメトリ木構造)を生成する。
 ステップS102において、初期化部102は、全てのノードのビット反転フラグを初期化する(例えばオフに設定する)。ステップS103において、初期化部102は、処理対象ノードを初期化する。
 ステップS104において、ビット反転制御部103は、処理対象ノードをビット反転するか否かをする。つまり、ビット反転制御部103は、処理対象ノードを反転根ノードとして反転処理を行うか否かを判定する。例えば、ビット反転制御部103は、<2.ジオメトリのビット反転>において上述した本技術の「方法1-2-4」、「方法1-2-5」、または「方法1-2-6」を適用してこの処理を行う。処理対象ノードをビット反転すると判定した場合、ビット反転制御部103は、ステップS105において処理をステップS106に進める。
 ステップS106において、フラグ設定部104は、処理対象ノードのビット判定フラグをオンにする。
 ステップS107において、反転処理部105は、処理対象ノードを反転根ノードとする反転処理を実行する。ステップS107の処理が終了すると処理はステップS108に進む。また、ステップS104において処理対象ノードをビット反転しないと判定した場合、ビット反転制御部103は、ステップS105において処理をステップS108に進める。
 ステップS108において、ビット反転制御部103は、ジオメトリ木構造の全てのノードを処理したか否かを判定する。未処理のノードが存在する場合、処理はステップS109に進む。
 ステップS109において、ビット反転制御部103は、処理対象ノードを次のノードに更新する。ステップS109の処理が終了すると処理はステップS104に戻る。つまり、ステップS104乃至ステップS109の処理が繰り返し実行され、ジオメトリ木構造の各ノードが処理対象として処理される。そして、ステップS108において、ジオメトリ木構造の全てのノードを処理したと判定された場合、処理はステップS110に進む。
 ステップS110において、符号化部106は、ジオメトリデータを符号化し、ジオメトリ符号化データを生成する。
 ステップS110の処理が終了すると、ジオメトリ符号化処理が終了する。
  <ビット反転処理の流れ>
 次に、図11のステップS107において実行されるビット反転処理の流れの例を、図12および図13のフローチャートを参照して説明する。
 ビット反転処理が開始されると、反転処理部105は、図12のステップS131において、ポイントが存在しない領域にノードを生成する。ステップS132において、反転処理部105は、処理対象ノードをスタックに格納する。
 ステップS133において、反転処理部105は、スタックが空でないか否かを判定する。スタックが空でないと判定された場合、処理はステップS134に進む。ステップS134において、反転処理部105は、スタックからノードを取り出す。
 ステップS135において、反転処理部105は、取り出したノードが葉ノードであるか否かを判定する。葉ノードであると判定された場合、処理はステップS135に進む。ステップS136において、反転処理部105は、取り出したノードのビットパタンを反転する。
 ステップS137において、反転処理部105は、反転後のビットパタンが全て0の場合、そのノードを削除する。ステップS138において、反転処理部105は、取り出したノードを処理済みとする。ステップS138の処理が終了すると処理はステップS133に戻る。
 また、ステップS135において、取り出したノードが非葉ノードであると判定された場合、処理は図13に進む。
 図13のステップS141において、反転処理部105は、取り出したノードの子孫ノードは全て処理済みであるか否かを判定する。未処理のノードが存在すると判定された場合、処理はステップS142に進む。ステップS142において、反転処理部105は、取り出したノードおよびその子ノードを、この順でスタックに格納する。ステップS142の処理が終了すると、処理は図12のステップS133に戻る。
 また、図13のステップS141において、取り出したノードの子孫ノードは全て処理済みであると判定された場合、処理はステップS143に進む。ステップS143において、反転処理部105は、子ノードのビットパタンに対応するように処理対象ノードのビットパタンを更新する。ステップS143の処理が終了すると、処理は図12のステップS137に戻る。
 以上のように各処理を実行することにより、ジオメトリ符号化装置100は、ジオメトリ符号化データの符号化効率の低減を抑制することができる。
  <ジオメトリ復号装置>
 図14は、本技術を適用した情報処理装置の一態様であるジオメトリ復号装置の構成の一例を示すブロック図である。図14に示されるジオメトリ復号装置200は、ジオメトリ符号化装置100に対応する復号装置であり、ジオメトリ符号化データを復号し、ジオメトリデータを生成する。ジオメトリ復号装置200は、<2.ジオメトリのビット反転>において上述した本技術を適用してジオメトリ符号化データを復号する。
 なお、図14においては、処理部やデータの流れ等の主なものを示しており、図14に示されるものが全てとは限らない。つまり、ジオメトリ復号装置200において、図14においてブロックとして示されていない処理部が存在したり、図14において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
 図14に示されるように、ジオメトリ復号装置200は、復号部201、初期化部202、ビット反転制御部203、反転処理部204、およびジオメトリ構築部205を有する。
 復号部201は、ジオメトリ符号化データを取得する。復号部201は、ジオメトリデータを復号し、適宜反転処理が行われたOctree(ジオメトリ木構造)のデータを取得する。復号部201は、そのデータを初期化部202へ供給する。
 初期化部202は、復号部201から供給される、適宜反転処理が行われたOctree(ジオメトリ木構造)のデータを取得する。初期化部202は、初期化に関する処理を行う。例えば、初期化部202は、処理対象ノードを初期化する(最初に処理するノードに設定する)。初期化部202は、初期化に関する処理が終了すると、そのOctree(ジオメトリ木構造)のデータや初期化した情報をビット反転制御部203へ供給する。
 ビット反転制御部203は、初期化部202から供給されるOctree(ジオメトリ木構造)のデータや初期化された情報を取得する。ビット反転制御部203は、それらを用いて、反転処理の制御に関する処理を行う。例えば、ビット反転制御部203は、処理対象ノードに対して反転処理(ビット反転)を行うか否かを判定し、制御する。また、ビット反転制御部203は、処理対象ノードの更新を制御する。ビット反転制御部203は、処理対象ノードに関する情報を反転処理部204に供給する。
 反転処理部204は、ビット反転制御部203から供給される処理対象ノードに関する情報を取得する。反転処理部204は、処理対象ノードに対する反転処理を行う。その際、反転処理部204は、<2.ジオメトリのビット反転>において上述した本技術を適用して反転処理を行う。つまり、反転処理部204は、反転処理部105と同様の処理を行う。反転処理部204は、反転処理結果やビット判定フラグ等の情報をジオメトリ構築部へ供給する。
 ジオメトリ構築部205は、反転処理部204から供給される各処理対象ノードについての反転処理結果等の情報を取得する。全てのノードについてこれらの情報を取得すると、ジオメトリ構築部205は、その適宜反転処理が行われたOctree(ジオメトリ木構造)のデータを用いて、各ポイントの3次元空間の位置を示すジオメトリデータを構築する。ジオメトリ構築部205は、そのジオメトリデータを、ジオメトリの復号結果として、ジオメトリ復号装置200の外部に出力する。
 このようにすることにより、ジオメトリ復号装置200は、ジオメトリ符号化装置100により生成されたジオメトリ符号化データを正しく復号することができる。すなわち、ジオメトリ復号装置200は、符号化効率の低減を抑制することができる。
 なお、ジオメトリ復号装置200のこれらの処理部(復号部201乃至ジオメトリ構築部205)は、それぞれ、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
  <ジオメトリ復号処理の流れ>
 このジオメトリ復号装置200により実行されるジオメトリ復号処理の流れの例を、図15のフローチャートを参照して説明する。なお、図15の例は、全ての非葉ノードに互いに独立に設定可能なビット反転フラグを設定する方法1-2-1を適用する例である。
 ジオメトリ復号処理が開始されると、復号部201は、ステップS201において、供給されたジオメトリ符号化データを復号する。復号部201は、ステップS202に基づいて、その復号結果を用いてOctreeを構築し、適宜反転処理が行われたOctree(ジオメトリ木構造)のデータを生成する。
 ステップS203において、初期化部202は、処理対象ノードを初期化する。
 ステップS204において、ビット反転制御部103は、処理対象ノードのビット反転フラグがオンであるか否かを判定する。処理対象ノードのビット反転フラグがオンであると判定された場合、処理はステップS205に進む。
 ステップS205において、反転処理部204は、処理対象ノードを反転根ノードとする反転処理を実行する。この反転処理の流れは、図12および図13のフローチャートを参照して説明した場合と同様である。ステップS205の処理が終了すると処理はステップS206に進む。また、ステップS204において処理対象ノードのビット反転フラグがオフであると判定された場合、処理はステップS206に進む。
 ステップS206において、ビット反転制御部203は、ジオメトリ木構造の全てのノードを処理したか否かを判定する。未処理のノードが存在する場合、処理はステップS207に進む。
 ステップS207において、ビット反転制御部203は、処理対象ノードを次のノードに更新する。ステップS207の処理が終了すると処理はステップS204に戻る。つまり、ステップS204乃至ステップS209の処理が繰り返し実行され、ジオメトリ木構造の各ノードが処理対象として処理される。そして、ステップS206において、ジオメトリ木構造の全てのノードを処理したと判定された場合、処理はステップS208に進む。
 ステップS208において、ジオメトリ構築部205は、適宜反転処理が行われたOctree(ジオメトリ木構造)のデータを用いて、各ポイントの3次元空間の位置を示すジオメトリデータを構築する。
 ステップS208の処理が終了すると、ジオメトリ復号処理が終了する。
 以上のように各処理を実行することにより、ジオメトリ復号装置200は、ジオメトリ符号化装置100により生成されたジオメトリ符号化データを正しく復号することができる。すなわち、ジオメトリ復号装置200は、ジオメトリ符号化データの符号化効率の低減を抑制することができる。
  <ジオメトリ符号化処理の流れ>
 直系ノード群に対して単一のビット反転フラグを設定する方法1-2-2を適用する場合の、ジオメトリ符号化処理の流れの例を、図16のフローチャートを参照して説明する。
 ジオメトリ符号化処理が開始されると、ステップS301乃至ステップS305の各処理は、図11のステップS101乃至ステップS105の各処理と同様に実行される。ステップS305において処理対象ノードを反転根ノードとして反転処理を行うと判定された場合、処理はステップS306に進む。
 ステップS306において、フラグ設定部104は、処理対象ノードの子孫ノードのビット判定フラグを削除する。ステップS306の処理が終了すると処理はステップS307に進む。
 ステップS307乃至ステップS311の各処理は、図11のステップS106乃至ステップS110の各処理と同様に実行される。ステップS311の処理が終了すると、ジオメトリ符号化処理が終了する。
 以上のように各処理を実行することにより、ジオメトリ符号化装置100は、この場合も、ジオメトリ符号化データの符号化効率の低減を抑制することができる。
  <ジオメトリ復号処理の流れ>
 直系ノード群に対して単一のビット反転フラグを設定する方法1-2-2を適用する場合の、ジオメトリ復号処理の流れの例を、図17のフローチャートを参照して説明する。
 ジオメトリ復号処理が開始されると、ステップS401乃至ステップS404の各処理は、図15のステップS201乃至ステップS204の各処理と同様に実行される。ステップS404において処理対象ノードのビット反転フラグがオンであると判定された場合、処理はステップS405に進む。
 ステップS405において、ビット反転制御部203は、処理対象ノードの子孫ノードのビット判定フラグを削除する。ステップS405の処理が終了すると処理はステップS406に進む。
 ステップS406乃至ステップS409の各処理は、図15のステップS205乃至ステップS208の各処理と同様に実行される。ステップS409の処理が終了すると、ジオメトリ復号処理が終了する。
 以上のように各処理を実行することにより、ジオメトリ復号装置200は、この場合も、ジオメトリ符号化装置100により生成されたジオメトリ符号化データを正しく復号することができる。すなわち、ジオメトリ復号装置200は、この場合も、ジオメトリ符号化データの符号化効率の低減を抑制することができる。
 <4.第2の実施の形態>
  <ポイントクラウド符号化装置>
 <2.ジオメトリのビット反転>において上述した本技術は、第1の実施の形態の例に限らず、任意の装置に適用することができる。例えば、ポイントクラウドデータを符号化するポイントクラウド符号化装置にも本技術を適用することができる。
 図18は、本技術を適用した情報処理装置の一態様であるポイントクラウド符号化装置の構成の一例を示すブロック図である。図18に示されるポイントクラウド符号化装置500は、ポイントクラウドデータを符号化する装置である。ポイントクラウド符号化装置500は、<2.ジオメトリのビット反転>において上述した本技術を適用してポイントクラウドデータを符号化する。
 なお、図18においては、処理部やデータの流れ等の主なものを示しており、図18に示されるものが全てとは限らない。つまり、ポイントクラウド符号化装置500において、図18においてブロックとして示されていない処理部が存在したり、図18において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
 図18に示されるように、ポイントクラウド符号化装置500は、ジオメトリ符号化部501、ジオメトリ復号部502、ポイントクラウド生成部503、アトリビュート符号化部504、およびビットストリーム生成部505を有する。
 ジオメトリ符号化部501は、ジオメトリデータの符号化に関する処理を行う。例えば、ジオメトリ符号化部501は、ポイントクラウド符号化装置500に入力されるポイントクラウドデータのジオメトリデータを取得する。ジオメトリ符号化部501は、そのジオメトリデータを符号化し、符号化データを生成する。その際、ジオメトリ符号化部501は、<2.ジオメトリのビット反転>において上述した本技術を適用してジオメトリデータを符号化する。つまり、ジオメトリ符号化部501は、ジオメトリ符号化装置100(図10)と同様の構成を有し、同様の処理を行う。ジオメトリ符号化部501は、生成したジオメトリ符号化データをジオメトリ復号部502およびビットストリーム生成部505に供給する。
 ジオメトリ復号部502は、ジオメトリ符号化データの復号に関する処理を行う。例えば、ジオメトリ復号部502は、ジオメトリ符号化部501から供給されるジオメトリ符号化データを取得する。ジオメトリ復号部502は、ジオメトリ符号化部501において適用された符号化方法に対応する復号方法により、その符号化データを復号し、ジオメトリデータを生成(復元)する。つまり、ジオメトリ復号部502は、<2.ジオメトリのビット反転>において上述した本技術を適用してジオメトリ符号化データを復号する。つまり、ジオメトリ復号部502は、ジオメトリ復号装置200(図14)と同様の構成を有し、同様の処理を行う。ジオメトリ復号部502は、生成したジオメトリデータをポイントクラウド生成部503に供給する。
 ポイントクラウド生成部503は、ポイントクラウドデータの生成に関する処理を行う。例えば、ポイントクラウド生成部503は、ポイントクラウド符号化装置500に入力されるポイントクラウドデータのアトリビュートデータを取得する。また、ポイントクラウド生成部503は、ジオメトリ復号部502から供給されるジオメトリデータを取得する。
 ジオメトリデータは、符号化や復号等の処理によりデータが変化する場合がある(例えば、ポイントが増減したり、移動したりする可能性がある)。つまり、ジオメトリ復号部502から供給されるジオメトリデータは、ジオメトリ符号化部501により符号化される前のジオメトリデータと異なる場合がある。
 そこでポイントクラウド生成部503は、アトリビュートデータをジオメトリデータ(復号結果)に合わせる処理(リカラー処理とも称する)を行う。つまり、ポイントクラウド生成部503は、ジオメトリデータの更新に対応するように、アトリビュートデータを更新する。ポイントクラウド生成部503は、更新後のアトリビュートデータ(ジオメトリデータ(復号結果)に対応するアトリビュートデータ)をアトリビュート符号化部504に供給する。
 アトリビュート符号化部504は、アトリビュートの符号化に関する処理を行う。例えば、アトリビュート符号化部504は、ポイントクラウド生成部503から供給されるアトリビュートデータを取得する。また、アトリビュート符号化部504は、そのアトリビュートデータを任意の方法で符号化し、アトリビュートデータの符号化データを生成する。この符号化方法は任意である。アトリビュート符号化部504は、生成したアトリビュートデータの符号化データをビットストリーム生成部505に供給する。
 ビットストリーム生成部505は、ビットストリームの生成に関する処理を行う。例えば、ビットストリーム生成部505は、ジオメトリ符号化部501から供給されるジオメトリの符号化データを取得する。また、ビットストリーム生成部505は、アトリビュート符号化部504から供給されるアトリビュートデータの符号化データを取得する。ビットストリーム生成部505は、それらの符号化データを含むビットストリームを生成する。ビットストリーム生成部505は、生成したそのビットストリームをポイントクラウド符号化装置500の外部に出力する。
 以上のような構成とすることにより、ポイントクラウド符号化装置500は、ジオメトリ符号化データの符号化効率の低減を抑制することができる。
 なお、ポイントクラウド符号化装置500のこれらの処理部(ジオメトリ符号化部501乃至ビットストリーム生成部505)は、それぞれ、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
  <ポイントクラウド符号化処理の流れ>
 このポイントクラウド符号化装置500は、ポイントクラウド符号化処理を実行することにより、ポイントクラウドデータの符号化を行う。このポイントクラウド符号化処理の流れの例を、図19のフローチャートを参照して説明する。
 ポイントクラウド符号化処理が開始されると、ジオメトリ符号化部501は、ステップS501において、ジオメトリ符号化処理を行い、ジオメトリデータを符号化して、ジオメトリ符号化データを生成する。このジオメトリ符号化処理の流れは、図11または図16のフローチャートを参照して説明した流れと同様である。
 ステップS502において、ジオメトリ復号部502は、ジオメトリ復号処理を行い、ステップS501において生成されたジオメトリ符号化データを復号し、ジオメトリデータを生成(復元)する。このジオメトリ復号処理の流れは、図15または図17のフローチャートを参照して説明した流れと同様である。
 ステップS503において、ポイントクラウド生成部503は、リカラー処理を行い、アトリビュートデータを、ステップS502において生成されたジオメトリデータに対応させる。
 ステップS504において、アトリビュート符号化部504は、ステップS503においてリカラー処理されたアトリビュートデータを符号化する。
 ステップS505において、ビットストリーム生成部505は、ステップS501において生成されたジオメトリデータの符号化データと、ステップS504において生成されたアトリビュートデータの符号化データとを含むビットストリームを生成する。
 ステップS505の処理が終了するとポイントクラウド符号化処理が終了する。
 以上のように各処理を実行することにより、ポイントクラウド符号化装置500は、ジオメトリ符号化データの符号化効率の低減を抑制することができる。
  <ポイントクラウド復号装置>
 図20は、本技術を適用した情報処理装置の一態様であるポイントクラウド復号装置の構成の一例を示すブロック図である。図20に示されるポイントクラウド復号装置600は、ポイントクラウド符号化装置500に対応する復号装置であり、ポイントクラウドのビットストリームを復号し、ポイントクラウドデータを生成する。ポイントクラウド復号装置600は、<2.ジオメトリのビット反転>において上述した本技術を適用してポイントクラウドのビットストリームを復号する。
 なお、図20においては、処理部やデータの流れ等の主なものを示しており、図20に示されるものが全てとは限らない。つまり、ポイントクラウド復号装置600において、図20においてブロックとして示されていない処理部が存在したり、図20において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
 図20に示されるように、ポイントクラウド復号装置600は、抽出部601、ジオメトリ復号部602、アトリビュート復号部603、およびポイントクラウド生成部604を有する。
 抽出部601は、ビットストリームからジオメトリ符号化データを抽出し、ジオメトリ復号部602へ供給する。また、抽出部601は、ビットストリームからアトリビュート符号化データを抽出し、アトリビュート復号部603へ供給する。
 ジオメトリ復号部602は、ジオメトリ符号化データの復号に関する処理を行う。例えば、ジオメトリ復号部602は、抽出部601から供給されるジオメトリ符号化データを取得して復号し、ジオメトリデータを生成(復元)する。その際、ジオメトリ復号部602は、<2.ジオメトリのビット反転>において上述した本技術を適用してジオメトリデータを復号する。つまり、ジオメトリ復号部602は、ジオメトリ復号装置200(図14)と同様の構成を有し、同様の処理を行う。ジオメトリ復号部602は、生成したジオメトリデータをアトリビュート復号部603およびポイントクラウド生成部604に供給する。
 アトリビュート復号部603は、アトリビュート符号化データの復号に関する処理を行う。例えば、アトリビュート復号部603は、抽出部601から供給されるアトリビュート符号化データを取得する。また、アトリビュート復号部603は、ジオメトリ復号部602から供給されるジオメトリデータを取得する。アトリビュート復号部603は、ジオメトリデータを用いて、アトリビュート符号化データを復号し、アトリビュートデータを生成(復元)する。
 アトリビュート復号部603は、アトリビュート符号化部504(図18)が適用した符号化方法に対応する復号方法でこの復号を行う。アトリビュート復号部603は、生成したアトリビュートデータをポイントクラウド生成部604に供給する。
 ポイントクラウド生成部604は、ポイントクラウドの生成に関する処理を行う。例えば、ポイントクラウド生成部604は、ジオメトリ復号部602から供給されるジオメトリデータを取得する。また、ポイントクラウド生成部604は、アトリビュート復号部603から供給されるアトリビュートデータを取得する。そして、ポイントクラウド生成部604は、そのジオメトリデータとアトリビュートデータとを対応させ、ポイントクラウドデータを生成する。ポイントクラウド生成部604は、生成したポイントクラウドデータをポイントクラウド復号装置600の外部に出力する。
 このような構成にすることにより、ポイントクラウド復号装置600は、ポイントクラウド符号化装置500により生成されたビットストリームを正しく復号することができる。すなわち、ポイントクラウド復号装置600は、符号化効率の低減を抑制することができる。
 なお、ポイントクラウド復号装置600のこれらの処理部(抽出部601乃至ポイントクラウド生成部604)は、それぞれ、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
  <ポイントクラウド復号処理の流れ>
 このポイントクラウド復号装置600は、ポイントクラウド復号処理を実行することにより、ビットストリームの復号を行う。このポイントクラウド復号処理の流れの例を、図21のフローチャートを参照して説明する。
 ポイントクラウド復号処理が開始されると、抽出部601は、ステップS601において、ビットストリームからジオメトリ符号化データとアトリビュート符号化データを抽出する。
 ステップS602において、ジオメトリ復号部602は、ジオメトリ復号処理を行い、ジオメトリ符号化データを復号して、ジオメトリデータを生成(復元)する。このジオメトリ復号処理の流れは、図15または図17のフローチャートを参照して説明した流れと同様である。
 ステップS603において、アトリビュート復号部603は、アトリビュート符号化データを復号してアトリビュートデータを生成(復元)する。
 ステップS604において、ポイントクラウド生成部604は、ステップS602において生成されたジオメトリデータと、ステップS603において生成されたアトリビュートデータとを対応させてポイントクラウドデータを生成する。
 ステップS604の処理が終了するとポイントクラウド復号処理が終了する。
 以上のように各処理を実行することにより、ポイントクラウド復号装置600は、ポイントクラウド符号化装置500により生成されたビットストリームを正しく復号することができる。すなわち、ポイントクラウド復号装置600は、符号化効率の低減を抑制することができる。
 <5.第3の実施の形態>
  <3D Occupancy Grid map>
 例えば、特開2021-071814号公報には、3次元空間を表す点群データを、3次元のオキュパンシーグリッドマップ(3D Occupancy Grid map)として表する手法が開示されている(例えば、番号[0003]または[0073]の段落参照)。
 3Dオキュパンシーグリッドマップでは、例えば図22のAに示されるように、3次元空間700を所定のグリッドに区切り、各グリッドに対して占有状態(離散的な占有状態)が与えられる。つまり、各グリッドについて、観測済かどうか ( known / unknown )と、占有されているかどうか ( Occupied / Free )が識別される。観測済のグリッド(known)は、オブジェクトにより占有されているグリッドであるオキュパイド(Occupied)701とオブジェクトが存在しないグリッドであるフリー(Free)702とに識別される。つまり、図22のBのように各グリッドが識別される。
 例えば、図23に示されるように、領域720において壁721および壁722に挟まれる空間723が存在するとする。その空間723において、カメラや測距センサ等を有するロボット731を自走させ、3Dオキュパンシーグリッドマップを生成するとする。ロボット731は、点線732と点線733の間の測定可能範囲734を有するとする。
 図24に示されるように、ロボット731は、測定可能範囲734内の壁721および壁722の太線で示される部分をオキュパイド741として識別し、空間723のグレーで示される領域をフリー742として識別する。それ以外の部分はアンノウン(unknown)として識別される。ロボット731は、自走することにより、図25に示されるように、壁721および壁722をオキュパイド741として認識し、空間723をフリー742として認識する。
 これらのグリッドをポイントクラウドに変換して符号化してもよい。例えば、図26に示されるように、knownグリッドをポイントクラウド770とし、アトリビュートを用いてオキュパイド771とフリー772を識別するようにしてもよい。また、図27に示されるように、オキュパイド781をポイントとするポイントクラウド780と、フリー791をポイントとするポイントクラウド790をそれぞれ作成してもよい。また、Knownをポイントとするポイントクラウドとオキュパイドをポイントとするポイントクラウドを生成してもよい。また、フリーをポイントとするポイントクラウドとUnknownをポイントとするポイントクラウドとを生成してもよい。その他の組み合わせでもよい。
 このようなフリー、オキュパイド、known、unknownは、それぞれ密になりやすい。そこで、これらのポイントクラウド(ジオメトリ)の符号化・復号について、<2.ジオメトリのビット反転>において上述した本技術を適用してもよい。
  <3D Occupancy Grid map符号化装置>
 図28は、3D Occupancy Grid mapをポイントクラウドに変換して符号化する3D Occupancy Grid map符号化装置の主な構成例を示すブロック図である。図28に示されるように、3D Occupancy Grid map符号化装置800は、3D Occupancy Grid map生成部801、変換部802、およびポイントクラウド符号化部803を有する。
 3D Occupancy Grid map生成部801は、3D Occupancy Grid mapを生成し、変換部802へ供給する。変換部802は、その3D Occupancy Grid mapをポイントクラウドに変換し、ポイントクラウド符号化部803へ供給する。
 ポイントクラウド符号化部803は、そのポイントクラウドを符号化し、ビットストリームを生成する。その際、ポイントクラウド符号化部803は、<2.ジオメトリのビット反転>において上述した本技術を適用して、そのポイントクラウドの符号化を行う。つまり、ポイントクラウド符号化部803は、ポイントクラウド符号化装置500(図18)と同様の構成を有し、同様の処理を行う。ポイントクラウド符号化部803は、生成したビットストリームを3D Occupancy Grid map符号化装置800の外部に出力する。
 このような構成とすることにより、3D Occupancy Grid map符号化装置800は、3D Occupancy Grid mapを変換したポイントクラウドについて、ジオメトリ符号化データの符号化効率の低減を抑制することができる。
 なお、3D Occupancy Grid map符号化装置800のこれらの処理部(3D Occupancy Grid map生成部801乃至ポイントクラウド符号化部803)は、それぞれ、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
  <3D Occupancy Grid map符号化処理の流れ>
 この3D Occupancy Grid map符号化装置800は、3D Occupancy Grid map符号化処理を実行することにより、3D Occupancy Grid mapをポイントクラウドに変換して符号化する。この3D Occupancy Grid map符号化処理の流れの例を、図29のフローチャートを参照して説明する。
 3D Occupancy Grid map符号化処理が開始されると、3D Occupancy Grid map生成部801は、ステップS801において、3D Occupancy Grid mapを生成する。ステップS802において、変換部802は、その3D Occupancy Grid mapをポイントクラウドに変換する。ステップS803において、ポイントクラウド符号化部803は、ポイントクラウド符号化処理を実行し、ポイントクラウドデータを符号化して、ビットストリームを生成する。このポイントクラウド符号化処理の流れは、図19のフローチャートを参照して説明した流れと同様である。ビットストリームが生成されると、3D Occupancy Grid map符号化処理が終了する。
 このように各処理を実行することにより、3D Occupancy Grid map符号化装置800は、3D Occupancy Grid mapを変換したポイントクラウドについて、ジオメトリ符号化データの符号化効率の低減を抑制することができる。
  <3D Occupancy Grid map復号装置>
 図30は、ポイントクラウドに変換されて符号化された3D Occupancy Grid mapのビットストリームを復号し、逆変換することにより、3D Occupancy Grid mapを生成(復元)する3D Occupancy Grid map復号装置の主な構成例を示すブロック図である。図30に示されるように、3D Occupancy Grid map復号装置850は、ポイントクラウド復号部851および逆変換部852を有する。
 ポイントクラウド復号部851は、供給されるビットストリームを復号し、3D Occupancy Grid mapが変換されたポイントクラウドデータを生成(復元)する。ポイントクラウド復号部851は、そのポイントクラウドデータを逆変換部852へ供給する。
 逆変換部852は、そのポイントクラウドデータを取得する。逆変換部852は、取得したポイントクラウドデータを3D Occupancy Grid mapに変換する。この変換処理を逆変換とも称する。逆変換部852は、逆変換により得られた3D Occupancy Grid mapを3D Occupancy Grid map復号装置850の外部に出力する。
 このような構成とすることにより、3D Occupancy Grid map復号装置850は、3D Occupancy Grid map符号化装置800により生成されたビットストリームを正しく復号することができる。すなわち、D Occupancy Grid map復号装置850は、3D Occupancy Grid mapを変換したポイントクラウドについて、ジオメトリ符号化データの符号化効率の低減を抑制することができる。
 なお、3D Occupancy Grid map復号装置850のこれらの処理部(ポイントクラウド復号部851および逆変換部852)は、それぞれ、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
  <3D Occupancy Grid map復号処理の流れ>
 この3D Occupancy Grid map復号装置850は、3D Occupancy Grid map復号処理を実行することにより、ビットストリームの復号を行う。この3D Occupancy Grid map復号処理の流れの例を、図31のフローチャートを参照して説明する。
 3D Occupancy Grid map復号処理が開始されると、ポイントクラウド復号部851は、ステップS851において、ポイントクラウド復号処理を実行することにより、ビットストリームを復号し、3D Occupancy Grid mapが変換されたポイントクラウドデータを生成(復元)する。このポイントクラウド復号処理の流れは、図21のフローチャートを参照して説明した流れと同様である。
 ステップS852において、逆変換部852は、そのポイントクラウドデータを3D Occupancy Grid mapに変換する。ステップS852の処理が終了すると、3D Occupancy Grid map復号処理が終了する。
 このように各処理を実行することにより、3D Occupancy Grid map復号装置850は、3D Occupancy Grid map符号化装置800により生成されたビットストリームを正しく復号することができる。すなわち、D Occupancy Grid map復号装置850は、3D Occupancy Grid mapを変換したポイントクラウドについて、ジオメトリ符号化データの符号化効率の低減を抑制することができる。
 <6.付記>
  <コンピュータ>
 上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここでコンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等が含まれる。
 図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が各種の処理を実行する上において必要なデータなども適宜記憶される。
 コンピュータが実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア921に記録して適用することができる。その場合、プログラムは、リムーバブルメディア921をドライブ915に装着することにより、入出力インタフェース910を介して、記憶部913にインストールすることができる。
 また、このプログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することもできる。その場合、プログラムは、通信部914で受信し、記憶部913にインストールすることができる。
 その他、このプログラムは、ROM902や記憶部913に、あらかじめインストールしておくこともできる。
  <本技術の適用対象>
 本技術は、任意の構成に適用することができる。例えば、本技術は、様々な電子機器に適用され得る。
 また、例えば、本技術は、システム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) ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行う反転処理部と、
 前記反転処理が行われた前記木構造を有するジオメトリデータを符号化する符号化部と
 を備え、
 前記反転範囲は、反転根ノードおよび前記反転根ノードの子孫ノードにより構成され、前記反転処理の対象となるノード範囲であり、
 前記反転処理は、前記反転範囲に含まれる葉ノードのビットパタンを反転し、前記反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理である
 情報処理装置。
 (2) 前記反転範囲に対して前記反転処理を行うかを示すビット反転フラグを、前記反転範囲の前記反転根ノードに対して設定するフラグ設定部をさらに備える
 (1)に記載の情報処理装置。
 (3) 前記フラグ設定部は、前記木構造の全てのノードに対して、前記ビット反転フラグを互いに独立に設定する
 (2)に記載の情報処理装置。
 (4) 前記フラグ設定部は、前記木構造の直系ノード群に対して1つの前記ビット反転フラグを設定し、
 前記直系ノード群は、前記木構造において互いに親子関係にあるノードにより構成されるノード群である
 (2)に記載の情報処理装置。
 (5) 前記フラグ設定部は、前記木構造全体に対して1つの前記ビット反転フラグを設定する
 (2)に記載の情報処理装置。
 (6) 前記反転処理を行うかを制御する反転制御部をさらに備える
 (1)乃至(5)のいずれかに記載の情報処理装置。
 (7) 前記反転制御部は、前記ジオメトリデータの符号化データの符号化効率に基づいて前記反転処理を行うかを制御する
 (6)に記載の情報処理装置。
 (8) 前記反転制御部は、前記反転範囲内のポイント数に基づいて前記反転処理を行うかを制御する
 (6)または(7)に記載の情報処理装置。
 (9) 前記反転制御部は、前記反転処理によって削除されるノード数に基づいて前記反転処理を行うかを制御する
 (6)乃至(8)のいずれかに記載の情報処理装置。
 (10) 前記反転処理部は、前記反転処理を行った後、全てが0のビットパタンのノードを削除する
 (1)乃至(9)のいずれかに記載の情報処理装置。
 (11) 前記反転処理部は、前記反転処理を行った後、ポイントが疎であることを示すビットパタンのノードを削除する
 (10)に記載の情報処理装置。
 (12) 前記反転処理部は、前記反転範囲においてポイントが存在しない領域のノードを生成した後、前記反転処理を行う
 (1)乃至(11)のいずれかに記載の情報処理装置。
 (13) ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行い、
 前記反転処理が行われた前記木構造を有するジオメトリデータを符号化し、
 前記反転範囲は、反転根ノードおよび前記反転根ノードの子孫ノードにより構成され、前記反転処理の対象となるノード範囲であり、
 前記反転処理は、前記反転範囲に含まれる葉ノードのビットパタンを反転し、前記反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理である
 情報処理方法。
 (14) ポイントクラウドのジオメトリデータの符号化データを復号する復号部と、 復号して得られた前記ジオメトリデータが有する、前記ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行う反転処理部と
 を備え、
 前記反転範囲は、反転根ノードおよび前記反転根ノードの子孫ノードにより構成され、前記反転処理の対象となるノード範囲であり、
 前記反転処理は、前記反転範囲に含まれる葉ノードのビットパタンを反転し、前記反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理である
 情報処理装置。
 (15) 前記反転処理を行うかを制御する反転制御部をさらに備える
 (14)に記載の情報処理装置。
 (16) 前記反転制御部は、前記木構造の全てのノードに対して設定された、前記反転範囲に対して前記反転処理を行うかを示すビット反転フラグに基づいて、前記反転処理を行うかを制御する
 (15)に記載の情報処理装置。
 (17) 前記反転制御部は、前記木構造の直系ノード群に対して1つ設定された、前記反転範囲に対して前記反転処理を行うかを示すビット反転フラグに基づいて、前記反転処理を行うかを制御する
 (15)に記載の情報処理装置。
 (18) 前記反転制御部は、前記木構造全体に対して1つ設定された、前記反転範囲に対して前記反転処理を行うかを示すビット反転フラグに基づいて、前記反転処理を行うかを制御する
 (15)に記載の情報処理装置。
 (19) 前記反転処理が行われた前記木構造を用いて3次元空間の前記ジオメトリを構築するジオメトリ構築部をさらに備える
 (14)乃至(18)のいずれかに記載の情報処理装置。
 (20) ポイントクラウドのジオメトリデータの符号化データを復号し、
 復号して得られた前記ジオメトリデータが有する、前記ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行い、
 前記反転範囲は、反転根ノードおよび前記反転根ノードの子孫ノードにより構成され、前記反転処理の対象となるノード範囲であり、
 前記反転処理は、前記反転範囲に含まれる葉ノードのビットパタンを反転し、前記反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理である
 情報処理方法。
 100 ジオメトリ符号化装置, 101 Octree生成部, 102 初期化部, 103 ビット反転制御部, 104 フラグ設定部, 105 反転処理部, 106 符号化部, 200 ジオメトリ復号装置, 201 復号部, 202 初期化部, 203 ビット反転制御部, 204 反転処理部, 205 ジオメトリ構築部, 500 ポイントクラウド符号化装置, 501 ジオメトリ符号化部, 502 ジオメトリ復号部, 503 ポイントクラウド生成部, 504 アトリビュート復号部, 505 ビットストリーム生成部, 600 ポイントクラウド復号部, 601 抽出部, 602 ジオメトリ復号部, 603 アトリビュート復号部, 604 ポイントクラウド生成部, 800 3D Occupancy Grid Map符号化装置, 801 3D Occupancy Grid Map 生成部, 802 変換部, 803 ポイントクラウド符号化部, 850 3D Occupancy Grid Map 復号装置, 851 ポイントクラウド復号部, 852 逆変換部, 900 コンピュータ

Claims (20)

  1.  ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行う反転処理部と、
     前記反転処理が行われた前記木構造を有するジオメトリデータを符号化する符号化部と
     を備え、
     前記反転範囲は、反転根ノードおよび前記反転根ノードの子孫ノードにより構成され、前記反転処理の対象となるノード範囲であり、
     前記反転処理は、前記反転範囲に含まれる葉ノードのビットパタンを反転し、前記反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理である
     情報処理装置。
  2.  前記反転範囲に対して前記反転処理を行うかを示すビット反転フラグを、前記反転範囲の前記反転根ノードに対して設定するフラグ設定部をさらに備える
     請求項1に記載の情報処理装置。
  3.  前記フラグ設定部は、前記木構造の全てのノードに対して、前記ビット反転フラグを互いに独立に設定する
     請求項2に記載の情報処理装置。
  4.  前記フラグ設定部は、前記木構造の直系ノード群に対して1つの前記ビット反転フラグを設定し、
     前記直系ノード群は、前記木構造において互いに親子関係にあるノードにより構成されるノード群である
     請求項2に記載の情報処理装置。
  5.  前記フラグ設定部は、前記木構造全体に対して1つの前記ビット反転フラグを設定する
     請求項2に記載の情報処理装置。
  6.  前記反転処理を行うかを制御する反転制御部をさらに備える
     請求項1に記載の情報処理装置。
  7.  前記反転制御部は、前記ジオメトリデータの符号化データの符号化効率に基づいて前記反転処理を行うかを制御する
     請求項6に記載の情報処理装置。
  8.  前記反転制御部は、前記反転範囲内のポイント数に基づいて前記反転処理を行うかを制御する
     請求項6に記載の情報処理装置。
  9.  前記反転制御部は、前記反転処理によって削除されるノード数に基づいて前記反転処理を行うかを制御する
     請求項6に記載の情報処理装置。
  10.  前記反転処理部は、前記反転処理を行った後、全てが0のビットパタンのノードを削除する
     請求項1に記載の情報処理装置。
  11.  前記反転処理部は、前記反転処理を行った後、ポイントが疎であることを示すビットパタンのノードを削除する
     請求項10に記載の情報処理装置。
  12.  前記反転処理部は、前記反転範囲においてポイントが存在しない領域のノードを生成した後、前記反転処理を行う
     請求項1に記載の情報処理装置。
  13.  ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行い、
     前記反転処理が行われた前記木構造を有するジオメトリデータを符号化し、
     前記反転範囲は、反転根ノードおよび前記反転根ノードの子孫ノードにより構成され、前記反転処理の対象となるノード範囲であり、
     前記反転処理は、前記反転範囲に含まれる葉ノードのビットパタンを反転し、前記反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理である
     情報処理方法。
  14.  ポイントクラウドのジオメトリデータの符号化データを復号する復号部と、
     復号して得られた前記ジオメトリデータが有する、前記ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行う反転処理部と
     を備え、
     前記反転範囲は、反転根ノードおよび前記反転根ノードの子孫ノードにより構成され、前記反転処理の対象となるノード範囲であり、
     前記反転処理は、前記反転範囲に含まれる葉ノードのビットパタンを反転し、前記反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理である
     情報処理装置。
  15.  前記反転処理を行うかを制御する反転制御部をさらに備える
     請求項14に記載の情報処理装置。
  16.  前記反転制御部は、前記木構造の全てのノードに対して設定された、前記反転範囲に対して前記反転処理を行うかを示すビット反転フラグに基づいて、前記反転処理を行うかを制御する
     請求項15に記載の情報処理装置。
  17.  前記反転制御部は、前記木構造の直系ノード群に対して1つ設定された、前記反転範囲に対して前記反転処理を行うかを示すビット反転フラグに基づいて、前記反転処理を行うかを制御する
     請求項15に記載の情報処理装置。
  18.  前記反転制御部は、前記木構造全体に対して1つ設定された、前記反転範囲に対して前記反転処理を行うかを示すビット反転フラグに基づいて、前記反転処理を行うかを制御する
     請求項15に記載の情報処理装置。
  19.  前記反転処理が行われた前記木構造を用いて3次元空間の前記ジオメトリを構築するジオメトリ構築部をさらに備える
     請求項14に記載の情報処理装置。
  20.  ポイントクラウドのジオメトリデータの符号化データを復号し、
     復号して得られた前記ジオメトリデータが有する、前記ポイントクラウドのジオメトリを表現する木構造において、反転範囲に対して反転処理を行い、
     前記反転範囲は、反転根ノードおよび前記反転根ノードの子孫ノードにより構成され、前記反転処理の対象となるノード範囲であり、
     前記反転処理は、前記反転範囲に含まれる葉ノードのビットパタンを反転し、前記反転範囲に含まれる非葉ノードのビットパタンを子ノードのビットパタンに対応させる処理である
     情報処理方法。
PCT/JP2023/008228 2022-03-23 2023-03-06 情報処理装置および方法 WO2023181872A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2022046795 2022-03-23
JP2022-046795 2022-03-23

Publications (1)

Publication Number Publication Date
WO2023181872A1 true WO2023181872A1 (ja) 2023-09-28

Family

ID=88100649

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2023/008228 WO2023181872A1 (ja) 2022-03-23 2023-03-06 情報処理装置および方法

Country Status (1)

Country Link
WO (1) WO2023181872A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210029187A1 (en) * 2019-07-03 2021-01-28 Lg Electronics Inc. Point cloud data transmission apparatus, point cloud data transmission method, point cloud data reception apparatus and point cloud data reception method
WO2021049333A1 (ja) * 2019-09-11 2021-03-18 ソニー株式会社 情報処理装置、情報処理方法、再生処理装置及び再生処理方法
WO2021210548A1 (ja) * 2020-04-14 2021-10-21 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置
US20210383575A1 (en) * 2020-06-03 2021-12-09 Tencent America LLC Context modeling of occupancy coding for point cloud coding

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210029187A1 (en) * 2019-07-03 2021-01-28 Lg Electronics Inc. Point cloud data transmission apparatus, point cloud data transmission method, point cloud data reception apparatus and point cloud data reception method
WO2021049333A1 (ja) * 2019-09-11 2021-03-18 ソニー株式会社 情報処理装置、情報処理方法、再生処理装置及び再生処理方法
WO2021210548A1 (ja) * 2020-04-14 2021-10-21 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置
US20210383575A1 (en) * 2020-06-03 2021-12-09 Tencent America LLC Context modeling of occupancy coding for point cloud coding

Similar Documents

Publication Publication Date Title
JP7359153B2 (ja) 画像処理装置および方法
CN113615181B (zh) 用于点云编解码的方法、装置
JP7384159B2 (ja) 画像処理装置および方法
WO2019198523A1 (ja) 画像処理装置および方法
US20200092584A1 (en) Methods and devices for encoding and reconstructing a point cloud
CN112771582B (zh) 图像处理设备和方法
CN111727461A (zh) 信息处理装置和方法
Ainala et al. An improved enhancement layer for octree based point cloud compression with plane projection approximation
KR102650334B1 (ko) 포인트 클라우드 코딩을 위한 방법 및 장치
WO2021010200A1 (ja) 情報処理装置および方法
Lee et al. Progressive 3D mesh compression using MOG-based Bayesian entropy coding and gradual prediction
Ali et al. Image Denoising with Color Scheme by Using Autoencoders
WO2023181872A1 (ja) 情報処理装置および方法
WO2020145143A1 (ja) 情報処理装置および方法
CN114598883A (zh) 点云属性的预测方法、编码器、解码器及存储介质
US20220044448A1 (en) Image processing device and method
TW202406344A (zh) 一種點雲幾何資料增強、編解碼方法、裝置、碼流、編解碼器、系統和儲存媒介
WO2023172703A1 (en) Geometry point cloud coding
WO2022145214A1 (ja) 情報処理装置および方法
WO2021029226A1 (ja) 情報処理装置および方法
CN106663328B (zh) 多边形网格的mpeg/sc3dmc标准的扩展
WO2023248486A1 (ja) 情報処理装置および方法
EP4170597A1 (en) Information processing device and method
Renault et al. Point cloud compression framework for the Web
JP2024058011A (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: 23774471

Country of ref document: EP

Kind code of ref document: A1