GPCC plane mode and buffer simplification
By storing the maximum coordinates of point cloud data in a buffer and using distance and increment values to determine the context index, the problem of excessive hardware resources in existing technologies is solved, and the efficiency of point cloud compression and data transmission is improved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- QUALCOMM INC
- Filing Date
- 2021-09-22
- Publication Date
- 2026-05-29
AI Technical Summary
Existing technologies require significant hardware resources to determine the context index of planar position syntax elements in point cloud compression, resulting in excessively high hardware requirements.
By storing the larger of a pair of coordinates of the applicable node in the buffer instead of the smaller coordinates, the context index is determined using distance and increment values, reducing hardware requirements.
It reduces the hardware requirements for determining the context index of the grammar element in planar location and improves the efficiency of point cloud compression and data transmission.
Smart Images

Figure CN116325755B_ABST
Abstract
Description
[0001] This application claims priority to U.S. Patent Application No. 17 / 480,423, filed September 21, 2021, and U.S. Provisional Patent Application No. 63 / 088,156, filed October 6, 2020, the entire contents of which are incorporated herein by reference. U.S. Patent Application No. 17 / 480,423, filed September 21, 2021, claims the benefit of U.S. Provisional Patent Application No. 63 / 088,156, filed October 6, 2020. Technical Field
[0002] This disclosure relates to point cloud encoding and decoding. Background Technology
[0003] A point cloud is a collection of points in three-dimensional space. These points can correspond to points on objects within that space. Therefore, point clouds can be used to represent the physical content of three-dimensional space. Point clouds can be useful in a variety of situations. For example, point clouds can be used to represent the location of objects on a road in the context of autonomous vehicles. In another example, point clouds can be used to represent the physical content of an environment in order to locate virtual objects in augmented reality (AR) or mixed reality (MR) applications. Point cloud compression is the process of encoding and decoding point clouds. Encoding point clouds can reduce the amount of data required for point cloud storage and transmission. Summary of the Invention
[0004] In general, this disclosure describes techniques related to the context and buffers of planar patterns for geometric point cloud compression (G-PCC), such as the G-PCC standard developed by the 3D Graphics (3DG) group within the Moving Picture Experts Group (MPEG). For example, a G-PCC decoder (e.g., a G-PCC encoder or G-PCC decoder) may store the maximum coordinate in a pair of coordinates of an applicable node. The applicable node may be the most recently decoded node that has the same position as the current node along the applicable axis. This pair of coordinates is used for axes different from the applicable axis. Additionally, the G-PCC decoder may determine the context of the planar position of the current node's planar pattern. The planar position indicates the position in a plane perpendicular to the applicable axis. As part of the context for determining the planar position, the G-PCC decoder may determine a distance value representing the distance between the current node and the applicable node based on the maximum coordinate in this pair of coordinates of the applicable node and the larger coordinate in a pair of coordinates of the current node along an axis different from the applicable axis. The G-PCC decoder may then determine an incremental value indicating whether the distance value is greater than a threshold. The G-PCC decoder can then determine the context index based on the increment value. The G-PCC decoder can then use the determined context to perform entropy decoding on the planar position of the planar mode. By storing the maximum coordinate among the applicable node's coordinates, instead of two or more coordinates of the applicable node, the complexity of the context derivation process and the size of the buffer can be reduced.
[0005] In one example, this disclosure describes a method for encoding point cloud data, the method comprising: storing in a buffer the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node having the same position as the current node along an applicable axis, and the pair of coordinates is used for an axis different from the applicable axis; determining a context for a planar position of the current node from a plurality of contexts, wherein determining the context for a planar position includes determining a context index indicating the context, wherein determining the context index includes: determining a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node stored in the buffer and the larger of the pair of coordinates of the current node along an axis different from the applicable axis; determining an increment value indicating whether the distance value is greater than a threshold; and determining the context index based on the increment value; and entropy encoding the planar position of the planar position using the determined context.
[0006] In another example, this disclosure describes a method for decoding point cloud data, the method comprising: storing in a buffer the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; determining a context for a planar position of the current node from a plurality of contexts, wherein determining the context for a planar position includes determining a context index indicating the context, wherein determining the context index includes: determining a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node and the larger of the pair of coordinates of the current node along an axis different from the applicable axis; determining an increment value indicating whether the distance value is greater than a threshold; and determining the context index based on the increment value; and entropy decoding of the planar position using the determined context.
[0007] In another example, this disclosure describes an apparatus for encoding point cloud data, the apparatus comprising: a buffer configured to store the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; and one or more processors implemented in a circuit, the one or more processors being configured to: determine a context of a planar position of the current node from a plurality of contexts, wherein the one or more processors are configured, as part of determining the context of the planar position, to determine a context index indicating the context, and the one or more processors are configured, as part of determining the context index, to: determine a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node and the pair of coordinates of the current node along an axis different from the applicable axis; determine an increment value indicating whether the distance value is greater than a threshold; and determine the context index based on the increment value; and entropy encode the planar position using the determined context.
[0008] In another example, this disclosure describes an apparatus for decoding point cloud data, the apparatus comprising: a buffer configured to store the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; and one or more processors implemented in a circuit, the one or more processors being configured to: determine a context of a planar position of the current node from a plurality of contexts, wherein the one or more processors are configured, as part of determining the context of the planar position, to determine a context index indicating the context, and the one or more processors are configured, as part of determining the context index, to: determine a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node and the pair of coordinates of the current node along an axis different from the applicable axis; determine an increment value indicating whether the distance value is greater than a threshold; and determine the context index based on the increment value; and perform entropy decoding of the planar position using the determined context.
[0009] In another example, this disclosure describes an apparatus for encoding point cloud data, the apparatus comprising: components for storing the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; components for determining a planar position of the current node from a plurality of contexts, wherein the components for determining the planar position of the planar position include components for determining a context index indicating the context, and the components for determining the context index include: components for determining a distance value based on the larger of the larger of the pair of coordinates of the applicable node and the larger of the pair of coordinates of the current node along an axis different from the applicable axis, the distance value representing the distance between the current node and the applicable node; components for determining an increment value indicating whether the distance value is greater than a threshold; and components for determining the context index based on the increment value; and components for entropy encoding the planar position of the planar position using the determined context.
[0010] In another example, this disclosure describes an apparatus for decoding point cloud data, the apparatus comprising: components for storing the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; components for determining a context of a planar position of the current node from a plurality of contexts, wherein the components for determining the context of the planar position of the planar position include components for determining a context index indicating the context, and the components for determining the context index include: components for determining a distance value based on the larger of the larger of the pair of coordinates of the applicable node and the larger of the pair of coordinates of the current node along an axis different from the applicable axis, the distance value representing the distance between the current node and the applicable node; components for determining an increment value indicating whether the distance value is greater than a threshold; and components for determining the context index based on the increment value; and components for entropy decoding of the planar position of the planar position using the determined context.
[0011] In another example, this disclosure describes a computer-readable storage medium having instructions thereon that, when executed, cause one or more processors to: store in a buffer the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node that has the same position as the current node along the applicable axis, and the pair of coordinates is for an axis different from the applicable axis; determine a context of the planar position of the current node from a plurality of contexts, wherein the instructions causing the one or more processors to determine the context of the planar position include, when executed, instructions causing the one or more processors to determine a context index indicating the context, wherein the instructions causing the one or more processors to determine the context index include instructions that, when executed, cause the one or more processors to: determine a distance value, representing the distance between the current node and the applicable node, based on the larger of the larger of the pair of coordinates of the applicable node and the pair of coordinates of the current node along an axis different from the applicable axis; determine an increment value indicating whether the distance value is greater than a threshold; and determine a context index based on the increment value; and entropy encode the planar position using the determined context.
[0012] In another example, this disclosure describes a computer-readable storage medium having instructions thereon that, when executed, cause one or more processors to: store in a buffer the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node that has the same position as the current node along the applicable axis, and the pair of coordinates is for an axis different from the applicable axis; determine a context of the planar position of the current node from a plurality of contexts, wherein the instructions causing the one or more processors to determine the context of the planar position include, when executed, instructions causing the one or more processors to determine a context index indicating the context, wherein the instructions causing the one or more processors to determine the context index include instructions that, when executed, cause the one or more processors to: determine a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node stored in the buffer and the pair of coordinates of the current node along an axis different from the applicable axis; determine an increment value indicating whether the distance value is greater than a threshold; and determine the context index based on the increment value; and perform entropy decoding on the planar position using the determined context.
[0013] In another example, this disclosure describes a method for decoding point cloud data, the method comprising: determining a context of a planar position of a planar pattern from a plurality of contexts, wherein determining the context of the planar pattern includes determining a context index indicating the context without checking neighborhood occupancy; entropy decoding the planar position of the planar pattern using the determined context; and decoding at least one point in the point cloud based on the planar position of the planar pattern.
[0014] In another example, this disclosure describes a method for decoding point cloud data, comprising: determining a context for a planar position of a planar pattern from a plurality of contexts, wherein determining the context for the planar pattern includes determining a context index indicating the context, wherein determining the context index includes: determining a distance value representing the distance between a current node and the location of the most recently decoded node, the location of the most recently decoded node having the same position as the current node along an axis; determining an increment value indicating whether the distance value is greater than a threshold; and determining the context index based on the increment value; performing entropy decoding on the planar position of the planar pattern using the determined context; and decoding at least one point in the point cloud based on the planar position of the planar pattern.
[0015] In other examples, this disclosure describes an apparatus for processing point cloud data, the apparatus including one or more components for performing the methods of this disclosure. This disclosure also describes a computer-readable storage medium having instructions stored thereon for causing one or more processors to perform the methods of this disclosure.
[0016] Details of one or more examples are set forth in the accompanying drawings and the following description. Other features, objects, and advantages will be apparent from the description, drawings, and claims. Attached Figure Description
[0017] Figure 1 This is a block diagram illustrating an example encoding and decoding system capable of implementing the techniques of this disclosure.
[0018] Figure 2 This is a block diagram illustrating an example geometry point cloud compression (G-PCC) encoder.
[0019] Figure 3 This is a block diagram showing an example G-PCC decoder.
[0020] Figure 4 This is a conceptual diagram illustrating an example of plane occupancy in the vertical direction.
[0021] Figure 5 This is a flowchart illustrating an example operation for encoding planar positions of a planar pattern according to one or more techniques disclosed herein.
[0022] Figure 6 This is a flowchart illustrating an example operation for decoding planar positions in a planar mode according to one or more techniques disclosed herein.
[0023] Figure 7 This is a conceptual diagram illustrating an example ranging system that can be used with one or more techniques disclosed herein.
[0024] Figure 8 This is a conceptual diagram illustrating a vehicle-based example scenario where one or more technologies of this disclosure can be used.
[0025] Figure 9 This is a conceptual diagram illustrating an example extended reality system that can use one or more techniques disclosed herein.
[0026] Figure 10 This is a conceptual diagram illustrating an example mobile device system that can use one or more technologies disclosed herein. Detailed Implementation
[0027] A point cloud is a collection of points in three-dimensional space. Typically, point cloud data includes any data used to process the point cloud, such as data representing the point cloud. These points can correspond to points on objects within three-dimensional space. Therefore, point cloud data can be used to represent the physical content of three-dimensional space. Point cloud data can be useful in a variety of situations. For example, point cloud data can be used in the context of autonomous vehicles to represent the location of objects on a road. In another example, point cloud data can be used in the context of representing the physical content of an environment to locate virtual objects in augmented reality (AR) or mixed reality (MR) applications. Point cloud compression is the process of encoding and decoding point cloud data. Encoding point cloud data can reduce the amount of data required to store and transmit it. Geometry-based point cloud compression (G-PCC) is one method for reducing the amount of data required to encode or store point cloud data.
[0028] As part of the encoded point cloud data, the G-PCC encoder can generate an octree. Each node of the octree corresponds to a cuboid space. For ease of interpretation, in some cases, this disclosure may interchangeably refer to a node and the cuboid space corresponding to that node. An octree node may have zero child nodes or eight child nodes. In other examples, nodes may be divided into child nodes according to other tree structures. The child nodes of a parent node correspond to cuboids of equal size within the cuboid corresponding to the parent node. The positions of the individual points in the point cloud can be signaled relative to the node corresponding to the cuboid containing those points. If a node does not contain any points of the point cloud, the node is said to be unoccupied. If the node is unoccupied, it may not be necessary to signal additional data about the node. Conversely, if a node contains one or more points of the point cloud, the node is said to be occupied.
[0029] Planar mode is a technique for improving the encoding or signaling of which nodes are occupied in an octree. Planar mode can be used when all occupied child nodes of a node are adjacent to and located on one side of a plane, which is associated, for example, with coordinate values relative to an increased dimension orthogonal to that plane. For example, a planar mode can be used for a node when all occupied child nodes are above or below a horizontal plane passing through the node's center point, or when all occupied child nodes are closer to or farther from a vertical plane passing through the node's center point. The G-PCC encoder can signal planar position syntax elements for each of the x, y, and z dimensions. The planar position syntax element for the applicable dimension (e.g., x, y, or z dimension) indicates whether the plane orthogonal to the applicable dimension is in a first or second position. If the plane is in a first position, it corresponds to the node's boundary. If the plane is in a second position, it passes through the node's 3D center. Therefore, for the z-dimensional dimension, a G-PCC encoder or G-PCC decoder can decode the vertical plane position of a planar pattern in the nodes of an octree representing the three-dimensional position of a point in the point cloud.
[0030] A G-PCC decoder (e.g., a G-PCC encoder or G-PCC decoder) can use arithmetic decoding (e.g., context-adaptive binary arithmetic decoding (CABAC)) to decode planar positional syntax elements. When a G-PCC decoder uses arithmetic decoding to decode planar positional syntax elements, the G-PCC decoder determines a context index that indicates the context used for the arithmetic decoding of the planar positional syntax elements. The context specifies the probability of the symbols used in the arithmetic decoding.
[0031] Traditional techniques for determining context indices are associated with considerable hardware requirements. For example, as part of determining the context index, to determine the context index used for decoding planar positions in a plane orthogonal to the applicable axis, a G-PCC decoder can determine a distance value indicating the Manhattan distance between the current node and the position of the most recently decoded node along the applicable axis. The Manhattan distance is the sum of the absolute differences between the Cartesian coordinates of two points. The current node and the most recently decoded node along the applicable axis are nodes with the same coordinate values for the applicable axis.
[0032] To determine the Manhattan distance, the G-PCC decoder maintains a buffer for each axis, which stores the coordinates of the most recently decoded node along that axis on the other two axes. For example, if the axis is the x-axis, the x-axis buffer stores the y- and z-axis coordinates of the most recently decoded node along the x-axis. Storing these two coordinates of the most recently decoded node along the current axis is associated with considerable hardware requirements, which are related to determining the context index for arithmetic decoding of planar position syntax elements.
[0033] According to the technology of this disclosure, the determination of distance values has been modified to reduce the hardware requirements associated with determining the context index for arithmetic decoding of a plane position syntax elements. For example, when determining the context index for arithmetic decoding of a position through the current node and orthogonal to the current axis, instead of using the Manhattan distance, the distance value represents the distance from the applicable coordinates of the applicable node to the corresponding coordinates of the current node. The applicable node is the most recently decoded node along the applicable axis (i.e., the most recently decoded node has the same coordinates as the current node on the current axis). The applicable coordinates of the applicable node are the larger of the coordinates of the applicable nodes on non-applicable axes (i.e., axes other than the applicable axis). The corresponding coordinates of the current node and the applicable coordinates of the applicable node are associated with the same axis.
[0034] For example, suppose the applicable axis is x, the current node's y-coordinate is 15, the current node's z-coordinate is 20, the applicable node's y-coordinate is 25, and the applicable node's z-coordinate is 40. In this example, because 40 is greater than 25, the current axis buffer stores the value 40 as the applicable coordinate value for the applicable node, instead of storing the value 25. In this example, the difference between the y-coordinates is 10, and the difference between the z-coordinates is 20. Therefore, in this example, the distance value is equal to 20. Because only the applicable coordinates are stored in the applicable axis buffer, the amount of data stored in the applicable axis buffer can be reduced by half compared to the previous method of determining the distance value.
[0035] Therefore, according to one or more techniques of this disclosure, a G-PCC decoder (e.g., a G-PCC encoder or G-PCC decoder) can store the maximum coordinate of a pair of coordinates of an applicable node in a buffer, instead of storing the smaller coordinate of that pair. The applicable node is the most recently encoded node that has the same position as the current node along the applicable axis, and the pair of coordinates is used for an axis different from the applicable axis. The G-PCC decoder can determine the context of the planar position of the current node from multiple contexts. As part of determining the context of the planar position, the G-PCC decoder can determine a context index indicating the context. As part of determining the context index, the G-PCC decoder can determine a distance value representing the distance between the current node and the position of the most recently decoded node that has the same position as the current node along the axis. The G-PCC decoder can determine the distance value based on the maximum coordinate of the pair of coordinates of the most recently decoded node. The G-PCC decoder can determine an increment value indicating whether the distance value is greater than a threshold. The G-PCC decoder can then determine the context index based on the increment value. A G-PCC decoder can use the determined context to perform entropy decoding (e.g., entropy coding or entropy decoding) on the planar positions of the planar mode. For example, a G-PCC decoder can perform a form of arithmetic decoding, such as context-adaptive binary arithmetic decoding (CABAC).
[0036] Figure 1 This is a block diagram illustrating an example encoding and decoding system 100 capable of implementing the techniques of this disclosure. The techniques of this disclosure are generally aimed at decoding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. Typically, point cloud data includes any data used for processing the point cloud. Decoding can efficiently compress and / or decompress point cloud data.
[0037] like Figure 1 As shown, system 100 includes a source device 102 and a destination device 116. Source device 102 provides encoded point cloud data to be decoded by destination device 116. Specifically, in Figure 1 In the example, source device 102 provides point cloud data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 can include any of a variety of devices, including desktop computers, laptops, tablets, set-top boxes, handsets (e.g., smartphones), televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, land or sea vehicles, spacecraft, aircraft, robots, LiDAR devices, satellites, etc. In some cases, source device 102 and destination device 116 may be equipped for wireless communication.
[0038] exist Figure 1In the example, source device 102 includes a data source 104, a memory 106, a G-PCC encoder 200, and an output interface 108. Destination device 116 includes an input interface 122, a G-PCC decoder 300, a memory 120, and a data consumer 118. According to this disclosure, the G-PCC encoder 200 of source device 102 and the G-PCC decoder 300 of destination device 116 can be configured to apply the techniques of this disclosure related to the context and buffers of the planar mode used for G-PCC. Therefore, source device 102 represents an example of an encoding device, while destination device 116 represents an example of a decoding device. In other examples, source device 102 and destination device 116 may include other components or arrangements. For example, source device 102 may receive data (e.g., point cloud data) from an internal or external source. Similarly, destination device 116 may interface with an external data consumer, rather than including the data consumer in the same device.
[0039] Figure 1 The system 100 shown is merely an example. Typically, other digital encoding and / or decoding devices can perform the techniques of this disclosure related to the context and buffers of the plane mode used for G-PCC. Source device 102 and destination device 116 are merely examples of such devices, where source device 102 generates decoded data for transmission to destination device 116. This disclosure refers to a “decoding” device as a device that performs data decoding (encoding and / or decoding). Thus, G-PCC encoder 200 and G-PCC decoder 300 represent examples of decoding devices, specifically encoders and decoders. In some examples, source device 102 and destination device 116 can operate in a substantially symmetrical manner, such that each of source device 102 and destination device 116 includes encoding and decoding components. Therefore, system 100 can support unidirectional or bidirectional transmission between source device 102 and destination device 116, for example, for streaming, playback, broadcasting, telephone, navigation, and other applications.
[0040] Typically, data source 104 represents the source of data (i.e., raw, unencoded point cloud data) and provides a series of consecutive “frames” of data to G-PCC encoder 200, which encodes the data in the frames. Data source 104 of source device 102 may include a point cloud capture device, such as any of a variety of cameras or sensors, such as a 3D scanner or light detection and ranging (LIDAR) device, one or more cameras, an archive containing previously captured data, and / or a data feed interface that receives data from a data content provider. Alternatively or additionally, the point cloud data may be generated by a computer from a scanner, camera, sensor, or other data source. For example, data source 104 may generate computer-graphics-based data as source data, or a combination of real-time data, archived data, and computer-generated data. In each case, G-PCC encoder 200 encodes the captured, pre-captured, or computer-generated data. G-PCC encoder 200 may rearrange frames from the receiving order (sometimes referred to as the “display order”) into a decoding order for decoding. The G-PCC encoder 200 can generate one or more bit streams including encoded data. The source device 102 can then output the encoded data to a computer-readable medium 110 via the output interface 108 for reception and / or acquisition, for example, by the input interface 122 of the destination device 116.
[0041] The memory 106 of source device 102 and the memory 120 of destination device 116 can represent general-purpose memory. In some examples, memory 106 and memory 120 can store raw data, such as raw data from data source 104 and raw decoded data from G-PCC decoder 300. Additionally or alternatively, memory 106 and memory 120 can store software instructions executable by, for example, G-PCC encoder 200 and G-PCC decoder 300. Although in this example, memory 106 and memory 120 are shown separately from G-PCC encoder 200 and G-PCC decoder 300, it should be understood that G-PCC encoder 200 and G-PCC decoder 300 may also include internal memory for functionally similar or equivalent purposes. Furthermore, memory 106 and memory 120 can store encoded data, such as output from G-PCC encoder 200 and input to G-PCC decoder 300. In some examples, portions of memory 106 and memory 120 may be allocated as one or more buffers, for example, for storing raw, decoded, and / or encoded data, or for storing data used in point cloud decoding, such as buffers for storing the coordinates of previously decoded nodes. In some examples, memory 106 and memory 120 may store data representing the point cloud.
[0042] Computer-readable medium 110 can represent any type of medium or device capable of transmitting encoded data from source device 102 to destination device 116. In one example, computer-readable medium 110 represents a communication medium that enables source device 102 to directly transmit encoded data to destination device 116 in real time, for example, via a radio frequency network or a computer-based network. Depending on the communication standard, such as a wireless communication protocol, output interface 108 can modulate the transmitted signal including the encoded data, and input interface 122 can demodulate the received transmitted signal. The communication medium can include any wireless or wired communication medium, such as radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can form part of a packet-based network, such as a local area network, a wide area network, or a global network, such as the Internet. The communication medium can include a router, a switch, a base station, or any other equipment that can be used to facilitate communication from source device 102 to destination device 116.
[0043] In some examples, source device 102 may output encoded data to storage device 112 from output interface 108. Similarly, destination device 116 may access encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally accessed data storage media, such as hard disk drives, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded data.
[0044] In some examples, source device 102 may output encoded data to file server 114 or another intermediate storage device that can store encoded data generated by source device 102. Destination device 116 may access the stored data from file server 114 via streaming or downloading. File server 114 may be any type of server device capable of storing encoded data and transmitting it to destination device 116. File server 114 may represent a web server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network attached storage (NAS) device. Destination device 116 may access the encoded data from file server 114 via any standard data connection, including an internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of both suitable for accessing encoded data stored on file server 114. File server 114 and input interface 122 may be configured to operate according to a streaming protocol, a download transfer protocol, or a combination thereof.
[0045] Output interface 108 and input interface 122 can represent a wireless transmitter / receiver, a modem, a wired network component (e.g., an Ethernet card), a wireless communication component operating according to any of the various IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 include wireless components, output interface 108 and input interface 122 can be configured to transmit data, such as encoded data, according to cellular communication standards (e.g., 4G, 4G-LTE (Long Term Evolution), Advanced LTE, 5G, etc.). In some examples where output interface 108 includes a wireless transmitter, output interface 108 and input interface 122 can be configured to operate according to other wireless standards, such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee). TM Bluetooth TM Standards, etc., are used to transmit data, such as encoded data. In some examples, source device 102 and / or destination device 116 may include their respective system-on-chip (SoC) devices. For example, source device 102 may include an SoC device to perform functions attributed to G-PCC encoder 200 and / or output interface 108, and destination device 116 may include an SoC device to perform functions attributed to G-PCC decoder 300 and / or input interface 122.
[0046] The techniques disclosed herein can be applied to encoding and decoding to support a variety of applications, such as communication between autonomous vehicles, communication between scanners, cameras, sensors and processing devices (e.g., local or remote servers), geographic mapping, or other applications.
[0047] The input interface 122 of the destination device 116 receives an encoded bitstream from a computer-readable medium 110 (e.g., a communication medium, storage device 112, file server 114, etc.). The encoded bitstream may include signal transmission information defined by the G-PCC encoder 200, which is also used by the G-PCC decoder 300; for example, syntax elements having values describing the characteristics and / or processing of the decoding unit (e.g., slice, picture, picture group, sequence, etc.). The data consumer 118 uses the decoded data. For example, the data consumer 118 may use the decoded data to determine the location of a physical object. In some examples, the data consumer 118 may include a display that presents an image based on point cloud data.
[0048] Both the G-PCC encoder 200 and the G-PCC decoder 300 can be implemented as any of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When these techniques are implemented in part in software, the device can store the software instructions in a suitable non-transitory computer-readable medium and execute those instructions in hardware using one or more processors to perform the techniques of this disclosure. Each of the G-PCC encoder 200 and the G-PCC decoder 300 can be included in one or more encoders or decoders, and either one can be integrated as part of a combined encoder / decoder (encoder-decoder) in the respective device. Devices including the G-PCC encoder 200 and / or the G-PCC decoder 300 can include one or more integrated circuits, microprocessors, and / or other types of devices.
[0049] The G-PCC encoder 200 and G-PCC decoder 300 can operate according to a decoding standard, such as the Video Point Cloud Compression (V-PCC) standard or the Geometric Point Cloud Compression (G-PCC) standard. This disclosure generally relates to the decoding (e.g., encoding and decoding) of images, including the process of encoding or decoding data. Encoded bitstreams typically include a series of values for syntax elements representing decoding decisions (e.g., decoding modes).
[0050] This disclosure generally refers to "signal transmission" of certain information, such as syntax elements. The term "signal transmission" can generally refer to the communication of values for syntax elements and / or other data used to decode encoded data. That is, the G-PCC encoder 200 can signal transmission of values for syntax elements in a bitstream. Typically, signal transmission refers to the generation of values in a bitstream. As described above, the source device 102 can transmit the bitstream to the destination device 116 substantially in real time or not in real time, such as when syntax elements are stored in storage device 112 for later retrieval by the destination device 116.
[0051] ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) is investigating the potential need for standardization of point cloud decoding techniques whose compression capabilities significantly exceed those of current methods, and will work towards creating a standard. This exploratory activity is being conducted within a collaborative task called the 3D Graphics Team (3DG) to evaluate compression technology designs proposed by experts in the field.
[0052] Point cloud compression activities fall into two distinct categories. The first is “Video Point Cloud Compression” (V-PCC), which segments a 3D object and projects these segments onto multiple 2D planes (represented as “patches” in 2D frames). These segments are further decoded by a conventional 2D video codec (e.g., the High Efficiency Video Decoding (HEVC) (ITU-T H.265) codec). The second approach is “Geometry-Based Point Cloud Compression” (G-PCC), which directly compresses the 3D geometry (i.e., the location of a set of points in 3D space) and the associated attribute values (for each point associated with the 3D geometry). G-PCC addresses the compression of point cloud data in both Category 1 (static point clouds) and Category 3 (dynamically acquired point clouds).
[0053] A point cloud contains a set of points in 3D space and may have attributes associated with those points. Attributes may include color information, such as R, G, B or Y, Cb, Cr, or reflectance information, or other attributes. Point cloud data can be captured by various cameras or sensors (e.g., LiDAR sensors and 3D scanners) or generated by computers. Point cloud data is used in a variety of applications, including but not limited to construction (modeling), graphics (3D models for visualization and animation), and the automotive industry (LiDAR sensors for navigation aids).
[0054] The 3D space occupied by point cloud data can be enclosed by virtual bounding boxes. The positions of points within the bounding box can be represented with a certain precision; therefore, the positions of one or more points can be quantized based on this precision. At the smallest level, the bounding box is segmented into voxels, which are the smallest spatial units represented by a unit cube. A voxel within the bounding box can be associated with zero, one, or more points. The bounding box can be segmented into multiple cubic / cuboid regions, which can be called tiles. Each tile can be decoded into one or more slices. Dividing the bounding box into slices and tiles can be based on the number of points in each segment, or on other considerations (e.g., a specific region can be decoded into a tile). Segmentation decisions similar to those in video codecs can be used to further subdivide the slice regions.
[0055] Figure 2 An overview of the G-PCC encoder 200 is provided. Figure 3 An overview of the G-PCC decoder 300 is provided. The modules shown are logic modules and do not necessarily correspond one-to-one with the code implemented in the reference implementation of the G-PCC codec, i.e., the TMC13 test model software studied by ISO / IEC MPEG (JTC 1 / SC 29 / WG 11).
[0056] In the G-PCC encoder 200 and G-PCC decoder 300, the point cloud locations are first decoded. Attribute decoding depends on the geometry being decoded. For Category 3 data, the compressed geometry is typically represented as an octree at the leaf level, from the root down to individual voxels. For Category 1 data, the compressed geometry is typically represented as a pruned octree (i.e., an octree at the leaf level, from the root down to blocks larger than voxels) plus a model of the surface within each leaf of the pruned octree. In this way, Category 1 and Category 3 data share the octree decoding mechanism, while Category 1 data can additionally approximate the voxels within each leaf using a surface model. The surface model used is a triangulation of each block comprising 1-10 triangles, producing a triangle soup. Therefore, the Category 1 geometry codec is called a Trisoup geometry codec, while the Category 3 geometry codec is called an octree geometry codec.
[0057] At each node of the octree, the occupancy of one or more of its child nodes (up to eight nodes) is transmitted (when not inferred). Multiple neighborhoods are specified, including (a) nodes sharing a surface with the current octree node, (b) nodes sharing a surface, edge, or vertex with the current octree node, and so on. Within each neighborhood, the occupancy of a node and / or its child nodes can be used to predict the occupancy of the current node or its child nodes. For points sparsely filled in some nodes of the octree, the codec also supports a direct decoding mode, where the 3D position of the point is directly encoded. A transmission flag can be used to indicate the direct transmission mode. At the lowest level, the number of points associated with an octree node / leaf node can also be decoded.
[0058] Once the geometry is decoded, the attributes corresponding to the points in the geometry are also decoded. When multiple attribute points correspond to a single reconstructed / decoded geometric point, the attribute values representing the reconstructed point can be derived.
[0059] G-PCC employs three attribute decoding methods: Region Adaptive Hierarchical Transform (RAHT) decoding, interpolation-based hierarchical nearest neighbor prediction (prediction transform), and interpolation-based hierarchical nearest neighbor prediction with update / lifting steps (lifting transform). RAHT and lifting are typically used for Class 1 data, while prediction is typically used for Class 3 data. However, both methods can be used for any data, just like the geometry codec in G-PCC. The attribute decoding method used for decoding point cloud data is specified in the bitstream.
[0060] Attribute decoding can be performed at the level of detail (LOD), where each LOD provides a finer representation of the point cloud attributes. Each LOD can be specified based on a distance metric from neighboring nodes or based on the sampling distance.
[0061] In the G-PCC encoder 200, the residuals obtained as the output of the decoding method for attributes are quantized. The quantized residuals can be decoded using context-adaptive arithmetic decoding.
[0062] exist Figure 2 In the example, the G-PCC encoder 200 may include a coordinate transformation unit 202, a color transformation unit 204, a voxelization unit 206, an attribute transfer unit 208, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic coding unit 214, a geometric reconstruction unit 216, a RAHT unit 218, a LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, and an arithmetic coding unit 226.
[0063] like Figure 2 As shown in the example, the G-PCC encoder 200 can receive a set of locations and a set of attributes. Locations can include the coordinates of points in the point cloud. Attributes can include information about the points in the point cloud, such as the color associated with a point in the point cloud.
[0064] The coordinate transformation unit 202 can transform the coordinates of a point to transform the coordinates from the initial domain to the transformation domain. The transformed coordinates can be referred to as transformed coordinates. The color transformation unit 204 can apply transformations to change the color information of an attribute to different domains. For example, the color transformation unit 204 can transform color information from the RGB color space to the YCbCr color space.
[0065] In addition, Figure 2 In the example, voxelization unit 206 can voxelize the transformed coordinates. Voxelization of the transformed coordinates can include quantization and removal of some points in the point cloud. In other words, multiple points in the point cloud can be contained in a single "voxel," which can then be considered a point in some respects. Furthermore, octree analysis unit 210 can generate an octree based on the voxelized transformed coordinates. Additionally, in Figure 2 In the example, the surface approximation analysis unit 212 can analyze these points to potentially determine the surface representation of the set of points. The arithmetic coding unit 214 can entropy encode the syntax elements representing the octree information and / or the surface determined by the surface approximation analysis unit 212. The G-PCC encoder 200 can output these syntax elements in the geometric bitstream 203.
[0066] The geometric reconstruction unit 216 can reconstruct the transformed coordinates of points in the point cloud based on an octree, data indicating the surface determined by the surface approximation analysis unit 212, and / or other information. Due to voxelization and surface approximation, the number of transformed coordinates reconstructed by the geometric reconstruction unit 216 may differ from the original number of points in the point cloud. The resulting points may be referred to as reconstructed points. The attribute transfer unit 208 can transfer attributes of the original points in the point cloud to the reconstructed points.
[0067] Furthermore, RAHT unit 218 can apply RAHT decoding to the attributes of the reconstructed point. Alternatively or additionally, LOD generation unit 220 and lifting unit 222 can apply LOD processing and lifting to the attributes of the reconstructed point, respectively. RAHT unit 218 and lifting unit 222 can generate coefficients based on the attributes. Coefficient quantization unit 224 can quantize the coefficients generated by RAHT unit 218 or lifting unit 222. Arithmetic encoding unit 226 can apply arithmetic decoding to the syntax elements representing the quantized coefficients. G-PCC encoder 200 can output these syntax elements in the attribute bitstream 205.
[0068] exist Figure 3 In the example, the G-PCC decoder 300 may include a geometric arithmetic decoding unit 302, an attribute arithmetic decoding unit 304, an octree synthesis unit 306, an inverse quantization unit 308, a surface approximation synthesis unit 310, a geometric reconstruction unit 312, a RAHT unit 314, an LOD generation unit 316, an inverse lifting unit 318, an inverse coordinate transformation unit 320, and an inverse color transformation unit 322.
[0069] The G-PCC decoder 300 obtains a geometric bitstream 203 and an attribute bitstream 205. The geometric arithmetic decoding unit 302 of the decoder 300 can apply arithmetic decoding (e.g., context-adaptive binary arithmetic decoding (CABAC) or other types of arithmetic decoding) to the syntax elements in the geometric bitstream 203. Similarly, the attribute arithmetic decoding unit 304 can apply arithmetic decoding to the syntax elements in the attribute bitstream 205.
[0070] As described above, the G-PCC encoder 200 and G-PCC decoder 300 can apply CABAC encoding and decoding to the values of syntax elements. To apply CABAC encoding to syntax elements, the G-PCC encoder 200 can binary the values of the syntax elements to form a series of one or more bits, referred to as "bins". Furthermore, the G-PCC encoder 200 can identify the decoding context. The decoding context can identify the probability of a bin having a specific value. For example, the decoding context can indicate a probability of 0.7 for decoding a bin with a value of 0 and a probability of 0.3 for decoding a bin with a value of 1. After identifying the decoding context, the G-PCC encoder 200 can divide the interval into lower sub-intervals and upper sub-intervals. One sub-interval can be associated with the value 0, and another sub-interval can be associated with the value 1. The width of the sub-interval can be proportional to the probability indicated by the associated value by the identified decoding context. If a bin of a syntax element has a value associated with a lower sub-interval, the encoded value can be equal to the lower boundary of the lower sub-interval. If the same cell of a syntax element has a value associated with an upper sub-interval, the encoded value can be equal to the lower boundary of the upper sub-interval. To encode the next cell of a syntax element, the G-PCC encoder 200 can repeat these steps, where the interval is a sub-interval associated with the value of the encoded bit. When the G-PCC encoder 200 repeats these steps for the next cell, it can use a modified probability based on the probability indicated by the identified decoding context and the actual value of the encoded cell.
[0071] When the G-PCC decoder 300 performs CABAC decoding on the value of a syntax element, it can identify the decoding context. The G-PCC decoder 300 can then divide an interval into a lower sub-interval and an upper sub-interval. One sub-interval can be associated with the value 0, and another sub-interval can be associated with the value 1. The width of the sub-interval can be proportional to the probability indicated by the identified decoding context for the associated value. If the encoded value is within the lower sub-interval, the G-PCC decoder 300 can decode the cell with the value associated with the lower sub-interval. If the encoded value is within the upper sub-interval, the G-PCC decoder 300 can decode the cell with the value associated with the upper sub-interval. To decode the next cell of the syntax element, the G-PCC decoder 300 can repeat these steps, where the interval is a sub-interval containing the encoded value. When the G-PCC decoder 300 repeats these steps for the next cell, it can use a modified probability based on the probability indicated by the identified decoding context and the cell being decoded. The G-PCC decoder 300 can then debind the cells to recover the values of the syntax elements.
[0072] Octree synthesis unit 306 can synthesize octrees based on syntax elements parsed from geometric bitstream 203. In the case of using surface approximation in geometric bitstream 203, surface approximation synthesis unit 310 can determine the surface model based on syntax elements parsed from geometric bitstream 203 and based on the octree.
[0073] Furthermore, the geometric reconstruction unit 312 can perform reconstruction to determine the coordinates of points in the point cloud. The inverse coordinate transformation unit 320 can apply an inverse transformation to the reconstructed coordinates to transform the reconstructed coordinates (positions) of points in the point cloud data from the transform domain back to the initial domain.
[0074] In addition, Figure 3 In the example, the inverse quantization unit 308 can inverse quantize the attribute value. The attribute value can be based on the syntax elements obtained from the attribute bitstream 205 (e.g., including syntax elements decoded by the attribute arithmetic decoding unit 304).
[0075] Depending on the encoding method of the attribute values, RAHT unit 314 can perform RAHT decoding to determine the color values of the points in the point cloud based on the inversely quantized attribute values. Alternatively, LOD generation unit 316 and inverse lifting unit 318 can use level-of-detail techniques to determine the color values of the points in the point cloud.
[0076] In addition, Figure 3 In the example, the inverse color transformation unit 322 can apply an inverse color transformation to the color value. The inverse color transformation can be the inverse of the color transformation applied by the color transformation unit 204 of the encoder 200. For example, the color transformation unit 204 can transform color information from the RGB color space to the YCbCr color space. Therefore, the inverse color transformation unit 322 can transform color information from the YCbCr color space to the RGB color space.
[0077] It shows Figure 2 and Figure 3 Various units are described to aid in understanding the operations performed by the G-PCC encoder 200 and the G-PCC decoder 300. These units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit is a circuit that provides a specific function, and the operations it can perform are preset. A programmable circuit is a circuit that can be programmed to perform various tasks and provide flexible functionality in the executable operations. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. A fixed-function circuit can execute software instructions (e.g., receive parameters or output parameters), but the type of operation performed by a fixed-function circuit is typically immutable. In some examples, one or more units may be different circuit blocks (fixed-function or programmable), and in some examples, one or more units may be integrated circuits.
[0078] Figure 2 The surface approximation analysis element 212 and RAHT element 218 in the and Figure 3 The surface approximation synthesis unit 310 and RAHT unit 218 are options typically used for Category 1 data. Figure 2 The LOD generation unit 220 and the boosting unit 222 in the middle and Figure 3 The LOD generation unit 316 and inverse promotion unit 318 are options typically used for Category 3 data. All other modules are common between Category 1 and Category 3.
[0079] As described above, the positions of individual points in a point cloud can be encoded relative to the nodes containing those points. In some examples, the positions of points within a node can be encoded using an inferred direct decoding mode (IDCM). When using IDCM to signal points, the G-PCC encoder 200 encodes point offsets, which indicate the offset of the point relative to the origin of the node in a specific dimension (e.g., vertical, horizontal, and lateral dimensions). Point offsets can be referred to as point position offsets. The G-PCC decoder can determine the context and use that context in the arithmetic decoding of the point offsets.
[0080] The 128th MPEG conference in Geneva, Switzerland, adopted a planar decoding mode (i.e., planar mode). The 129th MPEG conference in Brussels, Belgium, adopted an angled decoding mode (i.e., angled mode). The angled decoding mode can improve the decoding efficiency of the planar mode by utilizing the sensor characteristics of a typical LiDAR sensor. The angled decoding mode can optionally be used in conjunction with the planar decoding mode and can improve the decoding of vertical (z) plane position syntax elements by employing knowledge of the position and angle of the sensed laser beam in a typical LiDAR sensor. Furthermore, the angled decoding mode can optionally be used to improve the decoding of vertical z-position bits in the IDCM. The angular mode descriptions in the following sections are based on the original MPEG contribution documents (Sébastien Lasserre, Jonathan Taquet, “[GPCC][CE 13.22 related] Animprovement of the planar coding mode”, ISO / IEC JTC1 / SC29 / WG11 MPEG / m50642, Geneva, CH, October 2019, and Sébastien Lasserre, Jonathan Taquet, “[GPCC] CE13.22 report on angular mode”, ISO / IEC JTC1 / SC29 / WG11 MPEG / m51594, Brussels, Belgium, January 2020) and the GPCC DIS text (G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19522, teleconference, July 2020) (hereinafter referred to as w19522).
[0081] Figure 4 This is a conceptual diagram illustrating an example of plane occupancy in the vertical direction. Figure 4 In the example, node 400 is divided into eight child nodes. Child node 402 can be occupied or unoccupied. Figure 4In the example, occupied child nodes are shaded. When one or more child nodes 402A-402D are occupied and none of child nodes 402E-402H are occupied, the G-PCC encoder 200 can transmit a plane position syntax element with a signal value of 1 to indicate that all occupied child nodes are adjacent on the positive side of the plane at the minimum z-coordinate of node 400 (i.e., the side with the increasing z-coordinate). When one or more child nodes 402E-402H are occupied and none of child nodes 402A-402D are occupied, the G-PCC encoder 200 can transmit a plane position syntax element with a signal value of 0 to indicate that all occupied child nodes are adjacent on the positive side of the plane at the midpoint z-coordinate of node 400. In this way, the plane position syntax element can indicate the vertical plane position of the plane pattern in node 400.
[0082] The azimuth decoding mode (i.e., azimuth mode) was adopted at the 130th MPEG teleconference. Similar to the angle mode, the azimuth decoding mode extends the decoding of (x) and (y) plane position syntax elements in the plane mode and improves the decoding of x or y position bits in the IDCM. In an independent contribution at the 131st MPEG teleconference, the number of contexts used in the azimuth mode was significantly reduced. Due to the similarity between the angle decoding mode and the azimuth decoding mode, "angle mode" and "angle decoding mode" may also refer to the azimuth mode in the following sections.
[0083] In an octree, only some nodes are eligible for decoding using angular patterns. The following text describes an example process for determining whether a node is eligible for decoding using angular patterns.
[0084] 3.2 Plane Decoding Mode
[0085] 3.2.1 Qualification of nodes in planar decoding mode
[0086] Explicit decoding of the occupied plane is conditional.
[0087] The array PlanarRate, with elements PlanarRate[k] (where k = 0...2), is an estimate of the probability that the occupancy of nodes forms a single plane perpendicular to the k-th axis.
[0088] The variable localDensity is an estimate of the average number of occupied child nodes in a node.
[0089] The variable NumNodesUntilPlanarUpdate counts the number of nodes to be resolved before updating PlanarRate and LocalDensity.
[0090] At the beginning of parsing the geometry_octree syntax structure, PlanarRate and LocalDensity are initialized as follows:
[0091] For (k = 0; k < 3; k++)
[0092] PlanarRate[k] = 1024
[0093] LocalDensity = 4096
[0094] NumNodesUntilPlanarUpdate=0
[0095] At the beginning of parsing each geometry_octree_node syntax structure, NumNodesUntilPlanarUpdate is decremented. If NumNodesUntilPlanarUpdate is less than zero, PlanarRate and LocalDensity are updated as follows:
[0096] - The number of occupied sibling nodes is fixed and used to update the LocalDensity estimate:
[0097] Assume numSiblings=NodeNumChildren[depth-1][sNp][tNp][vNp]
[0098] LocalDensity=(255×LocalDensity+1024×numSiblings)>>8
[0099] The number of nodes before the next update is:
[0100] NumNodesUntilPlanarUpdate=numSiblings-1
[0101] - The occupancy information of the parent node is used to determine whether there is a single occupied plane along each axis and update the corresponding plane probability estimate PlanarRate[k].
[0102] Assume parentOccupancy=GeometryNodeOccupancy[depth-1][sNp][tNp][vNp]
[0103] Assume planeMasks0 = {0xf0, 0xcc, 0xaa}
[0104] Assume planeMasks1 = {0x0f, 0x33, 0x55}
[0105] For (k = 0; k < 3; k++){
[0106] Assume plane0 = (parentOccupancy & planeMaks0[k])! = 0
[0107] Assume plane1 = (parentOccupancy & planeMaks1[k])! = 0
[0108] Assume hasSinglePlane = plane0^plane1
[0109] PlanarRate[k]=(255×PlanarRate[k]+256×hasSinglePlane+128)>>8
[0110] }
[0111] At the beginning of parsing each geometry_octree_node syntax structure, it is determined whether the current node is eligible to signal transmission plane information for each axis. The output of this process is an array PlanarEligible with elements PlanarEligible[k] (where k = 0...2).
[0112] First, PlanarRate is used to determine the order of the three planes from most likely to least likely, planeOrder[k], based on Table 16.
[0113] Then, configure PlanarEligible as follows:
[0114] For (k = 0; k < 3; k++){
[0115] If (EffectiveNodeSizeLog2[k] <= 0)
[0116] PlanarEligible[k] = 0
[0117] Otherwise, if (!geom_tree_coded_axis_flag[depth][k])
[0118] PlanarEligible[k] = 0
[0119] Otherwise, if (!geom_planar_enabled_flag)
[0120] PlanarEligible[k] = 0
[0121] Otherwise, if (XXX angle mode link XXX)
[0122] PlanarEligible[k] = XXX
[0123] Otherwise, if (localDensity>=3×1024)
[0124] PlanarEligible[k] = 0
[0125] otherwise
[0126] PlanarEligible[k]=PlanarRate[k]>geom_planar_th[planeOrder[k]]
[0127] }
[0128] Table 16 - Determining the value of planeOrder[k] based on planarRate[k]
[0129]
[0130] Furthermore, the G-PCC decoder can use a buffer to track the location (e.g., coordinates) of previously decoded nodes using planar mode decoding. This location (e.g., coordinates) of the previously decoded nodes is stored in the buffer. The following text from w19522 describes tracking the location (e.g., coordinates) of previously decoded nodes using planar mode decoding.
[0131] 3.2.2 Buffer tracks the nearest node along the axis
[0132] The arrays PlanarPrevPos, PlanarPlaneOffset, and IsPlanarNode record information about previously decoded geometry tree nodes, used to determine the ctxIdx of the syntax element plane_position. These arrays are not used during the decoding process when geometry_planar_enabled_flag is equal to 0 or planar_buffer_disabled_flag is equal to 1.
[0133] In this process, the variable `axisIdx` represents one of the three decoding axes, and the variable `axisPos` represents the position of the node along the `axisIdx`-th axis. The value of `axisPos` is in the range of 0 to 0x3fff.
[0134] The array IsPlanarNode with the value IsPlanarNode[axisIdx][axisPos] indicates whether the most recently decoded node whose positional component of axisIdx is equal to axisPos is planar in the plane perpendicular to the axisIdx axis.
[0135] The array PlanarPrevPos[axisIdx][axisPos][k] identifies the k-th component of the most recently decoded node, whose axisIdx-th positional component is equal to axisPos. [Note: For any value of axisIdx, only two of the three values of k are used].
[0136] The array PlanarPlaneOffset[axisIdx][axisPos] indicates the value of plane_position[axisIdx] of the most recently decoded node with the axisIdx-th position component equal to axisPos.
[0137] At the beginning of each geometric tree level, each element of the arrays PlanarPrevPos and IsPlanarNode is initialized to 0.
[0138] After decoding each geometry_planar_mode_data syntax structure with parameters childIdx and axisIdx, the arrays PlanarPrevPos, PlanarPlane, and IsPlanarNode are updated as follows:
[0139] - The variable axisPos represents the position along the axisIdx-th axis, which is derived as follows:
[0140] If (axisIdx == 0) axisPos = sN & 0x3fff
[0141] If (axisIdx == 1)axisPos = tN & 0x3fff
[0142] If (axisIdx == 2)axisPos = vN & 0x3fff
[0143] - The array entry corresponding to this node is updated as follows:
[0144] PlanarPrevPos[axisIdx][axisPos][0]=(sN>>1)&0x7f
[0145] PlanarPrevPos[axisIdx][axisPos][1]=(tN>>1)&0x7f
[0146] PlanarPrevPos[axisIdx][axisPos][2]=(vN>>1)&0x7f
[0147] If (is_planar_flag[axisPos])
[0148] PlanarPlane[axisIdx][axisPos]=plane_position[axisIdx]
[0149] Note: PlanarPlane = PlanarPlaneOffset and is also referred to by PrevPlane below.
[0150] IsPlanarNode[axisIdx][axisPos]=is_planar_flag[axisIdx]
[0151] The G-PCC decoder can determine the context index of the is_planar_flag syntax element and can perform entropy decoding on the is_planar_flag syntax element using the context indicated by the determined context index. The following text from w19522 describes the process of determining the context index of the is_planar_flag syntax element.
[0152] 3.2.2 Determining the ctxIdx of the syntax element is_planar_flag
[0153] The input to this process is:
[0154] - A variable `childIdx` that identifies the child nodes of the current node.
[0155] - The variable axisIdx identifies the axis perpendicular to the plane, and
[0156] - The position of the current node within the geometric tree level (sN, tN, vN).
[0157] The output of this process is the variable ctxIdx. The value of ctxIdx is set to equal axisIdx, and no further processing is performed.
[0158] Furthermore, the G-PCC decoder can determine the context index of the planar position of the planar mode. The G-PCC decoder can perform arithmetic decoding on the planar position of the planar mode using the context indicated by the determined context index. The following text from w19522 describes the process for determining the context index of the planar position of the planar mode. Note that the following is based on w19522 and includes some revisions corresponding to TMC13v11 (using...). <d> …< / d> The marker indicates that deletion is required, and is indicated by... … The marker indicates that an insertion is required.
[0159] 3.2.4 Determining the ctxIdx of the syntax element plane_position
[0160] The input to this process is:
[0161] - The variable axisIdx identifies the axis perpendicular to the plane, and
[0162] - The position of the current node within the geometric tree level (sN, tN, vN).
[0163] The output of this process is the variable ctxIdx.
[0164] <d> When planar_buffer_disabled_flag equals 1, the value of ctxIdx is set to 0, and no further processing is performed. Otherwise, the remainder of this clause applies.< / d>
[0165] The variable axisPos indicates the 14 least significant bits of the current node along the axisIdx-th axis:
[0166] If (axisIdx == 0) axisPos = sN & 0x3fff
[0167] If (axisIdx == 1)axisPos = tN & 0x3fff
[0168] If (axisIdx == 2)axisPos = vN & 0x3fff
[0169] The variable `dist` represents the Manhattan distance between the current node and the most recently decoded node position that share the same `axisPos` value along the `axisIdx`-th axis. Its derivation is as follows:
[0170] dist=0
[0171] For (k = 0; k < 3; k++)
[0172] If (k != axisIdx){
[0173] a=PlanarPrevPos[axisIdx][axisPos][k]
[0174] if ( <d> axisIdx< / d> k == 0) b = (sN >> 1) & 0x7f
[0175] if ( <d> axisIdx< / d> k == 1) b = (tN >> 1) & 0x7f
[0176] if ( <d> axisIdx< / d> k == 2) b = (vN >> 1) & 0x7f
[0177] dist += Abs(a - b)
[0178] }
[0179] The variable neighOccupied indicates whether there is an occupied node adjacent to the current node along the axisIdx-th axis. It is derived as follows:
[0180] neighOccupied = (NeighbourPattern >> 2 * axisIdx) & 3 [Editorial comment: verify style]
[0181] When the planar_buffer_disabled_flag is equal to 1, the value IsPlanarNode[axisIdx][axisPos] is set to be equal to 1, and the values dist and prevPlane[axisIdx][axisPos] are set to be equal to 0 (see TMC13v11).
[0182] The context index ctxIdx is derived as follows:
[0183] if (!IsPlanarNode[axisIdx][axisPos])
[0184] ctxIdx = 0
[0185] Note: IsPlanarNode buffer (see Section 3.2.2)
[0186] Otherwise {
[0187] prevPlane = PrevPlane[axisIdx][axisPos]
[0188] Note: PrevPlane = PlanarPlane = PlanarPlaneOffset buffer (see Section 3.2.2)
[0189] distCtxInc=(dist>1)+(dist>8)
[0190] ctxIdx=axisIdx+6×neighOccupied+2×distCtxInc+prevPlane+1
[0191] }
[0192] In the preceding text, the value NeighbourPattern is a value that indicates the neighborhood occupancy pattern. Section 7.4.3.5 of w19522 describes the procedure for determining the value NeighbourPattern.
[0193] As mentioned above, when the angle decoding mode is not used for the current node, the derivation of the context index used to decode the plane_position syntax element involves considerable complexity. For example, when using tracking the nearest node to the current node to decode the current node's plane mode flag and plane position syntax element (e.g., when planar_buffer_disabled_flag equals 0), the TMC13v11 software uses 72 contexts (24 per axis) to decode the plane position syntax element (e.g., plane_position). When disabling tracking the nearest node to the current node to decode the current node's plane mode flag and plane position syntax element (e.g., when planar_buffer_disabled_flag equals 1), the TMC13v11 software uses 12 contexts to decode the plane position syntax element. Another example of how the derivation of the context index for decoding planar position syntax elements involves considerable complexity when decoding the current node without using angle decoding mode is the very large size of the planar buffer used by the TMC13v11 software (i.e., the size of the buffer used to store the coordinates of previously decoded nodes), which is expensive for the hardware implementation of the G-PCC decoder.
[0194] This disclosure describes techniques that can solve one or more of the aforementioned problems. In other words, the techniques disclosed herein can reduce the complexity of deriving context indices for decoding planar positional syntax elements. In some examples, reducing this complexity can accelerate the process of encoding and decoding point cloud data. In some examples, reducing this complexity can reduce the hardware implementation cost of the G-PCC decoder by reducing the size of the planar buffer. One or more techniques and examples disclosed herein can be applied independently or in combination.
[0195] According to the first example technique of this disclosure, the number of contexts (e.g., the `plane_position` syntax element) used for decoding the planar position of a planar mode can be reduced by decreasing the number of contexts per axis without checking the occupancy of adjacent nodes. In other words, when determining the context for decoding the planar position of the current node, the G-PCC decoder (e.g., G-PCC encoder 200 or G-PCC decoder 300) does not check whether any adjacent nodes of the current node are occupied. The following text describes a change to w19522 according to the first example technique of this disclosure. Throughout the following text and the entire disclosure, deletions are used... <d> …< / d> Markers are used for marking, and insertion is done using... … It is marked by a tag.
[0196] The context used for decoding plane_position per axis is reduced, eliminating the need to check occupancy of adjacent nodes.
[0197] The context index ctxIdx, which does not check neighborhood occupancy, is derived as follows:
[0198] <d> neighOccupied=(NeighbourPattern>>2×axisIdx)&3< / d>
[0199] If (!IsPlanarNode[axisIdx][axisPos]])
[0200] ctxIdx=0
[0201] otherwise{
[0202] prevPlane=PrevPlane[axisIdx][axisPos]
[0203] distCtxInc=(dist>1)+(dist>8)
[0204] ctxIdx = axisIdx <d> +6×neighOccupied< / d> +2×distCtxInc+prevPlane+1
[0205] }
[0206] As shown above, the G-PCC decoder does not determine the value of the variable "neighOccupied" and does not use "neighOccupied" when determining the value of the context index ctxIdx. The variable neighOccupied indicates whether there are occupied nodes that are adjacent to the current node along the axisIdx-th axis. Because the G-PCC decoder does not use the variable "neighOccupied" when determining the value of the context index, the total number of possible values for the context index is reduced.
[0207] According to the second example technique of this disclosure, the size of a planar buffer (i.e., the size of a buffer that stores the coordinates of a previous decoding node at the planar location of the decoding node) can be reduced by decreasing the bit depth of the coordinates stored in the buffer. Reducing the bit depth of the coordinates reduces the number of bits required to store the previous node location in the planar buffer. The following text indicates a change to w19522 according to the second example technique of this disclosure.
[0208] PlanarPrevPos[axisIdx][axisPos][0]=(sN>> 3 )&0x f8
[0209] PlanarPrevPos[axisIdx][axisPos][1]=(tN>> 3 )&0x f8
[0210] PlanarPrevPos[axisIdx][axisPos][2]=(vN>> 3 )&0x f8
[0211] In an alternative version, the second example technique disclosed herein can be implemented as follows.
[0212] PlanarPrevPos[axisIdx][axisPos][0]=(sN>>&0xf8)>>3
[0213] PlanarPrevPos[axisIdx][axisPos][1]=(tN>>0xf8)>>3
[0214] PlanarPrevPos[axisIdx][axisPos][2]=(vN>>0xf8)>>3
[0215] In this example, the following bits are reserved:
[0216] … <d> b9 b8< / d> b7 b6 b5 b4 b3 <d> b2 b1 b0< / d>
[0217] Instead of the following, as provided in w19522:
[0218] … <d> b9 b8< / d> b7 b6 b5 b4 b3 b2 b1 <d> b0< / d>
[0219] Therefore, in the second example technique of this disclosure, the G-PCC decoder (e.g., G-PCC encoder 200 or G-PCC decoder 300) may retain the fourth to eighth most significant bits (e.g., bits b3, b4, b5, b6 and b7) of the coordinates of the previous decoded node and discard the three least significant bits (e.g., bits b0, b1 and b2) of the coordinates of the previous decoded node.
[0220] For example, in the second example technique, the G-PCC decoder can apply a bit mask (e.g., bit mask 0xf8) to preserve the fourth through eighth most significant bits. The G-PCC decoder can then apply a right shift operation (e.g., right shift >> 3) to discard (or delete) the three least significant bits. Because the right shift operation can be applied to the result obtained after applying the bit mask, the G-PCC decoder can obtain a bit sequence that carries the preserved fourth through eighth most significant bits at the five least significant bit positions. Because the G-PCC decoder reduces the bit depth that the coordinates of the previous node positions can have, it reduces the complexity of the context derivation process.
[0221] In the third example technique of this disclosure, the number of contexts for each axis used for decoding plane position is reduced by using a simplified distance criterion. For example, according to the third example technique of this disclosure, the distance criterion in context derivation is as follows:
[0222] neighOccupied=(NeighbourPattern>>2×axisIdx)&3
[0223] If (!IsPlanarNode[axisIdx][axisPos]])
[0224] ctxIdx=0
[0225] otherwise{
[0226] prevPlane=PrevPlane[axisIdx][axisPos]
[0227] <d> distCtxInc=(dist>1)+(dist>8)< / d>
[0228] distCtxInc = (dist>1) or alternatively (dist>2) or (dist>value)
[0229] ctxIdx=axisIdx+6×neighOccupied+2×distCtxInc+prevPlane+1
[0230] }
[0231] In the above text, "value" refers to a numerical value. Therefore, in the third example technique, the increment value (distCtxInc) can only have the value 0 or 1. In contrast, if the increment value is determined to be (dist>1)+(dist>8), then the increment value ranges from 0 to 2. Because the increment value has a smaller range in the third example technique, the context index (ctxIdx) also has a smaller range. Therefore, in the third example technique, the number of contexts used for the decoding plane position is reduced, resulting in a lower complexity of the context derivation process.
[0232] In the fourth example technique of this disclosure, the size of the planar buffer is reduced by storing the maximum coordinate of the previous node's position coordinates (e.g., instead of storing multiple coordinates of the previously decoded node). For example, in w19522, the following coordinate values of the previously decoded node are stored in the planar buffer (e.g., PlanarPrevPos):
[0233] PlanarPrevPos[axisIdx][axisPos][0]=(sN>>1)&0x7f
[0234] PlanarPrevPos[axisIdx][axisPos][1]=(tN>>1)&0x7f
[0235] PlanarPrevPos[axisIdx][axisPos][2]=(vN>>1)&0x7f
[0236] Furthermore, in w19522, the coordinates (axisPos) of the current node along the applicable axis (i.e., the axis orthogonal to the plane whose position is indicated by the planar position syntax element) are determined as follows:
[0237] If (axisIdx == 0) axisPos = sN & 0x3fff
[0238] If (axisIdx == 1)axisPos = tN & 0x3fff
[0239] If (axisIdx == 2)axisPos = vN & 0x3fff
[0240] In w19522, the distance variable (dist) is calculated as follows, where axisIdx is the index of the applicable axis:
[0241] dist=0
[0242] For (k = 0; k < 3; k++)
[0243] If (k != axisIdx){
[0244] a=PlanarPrevPos[axisIdx][axisPos][k]
[0245] If (k==0)b=(sN>>1)&0x7f
[0246] If (k==1)b=(tN>>1)&0x7f
[0247] If (k==2)b=(vN>>1)&0x7f
[0248] dist+ = Abs(ab)
[0249] }
[0250] Note that in the calculation of dist, only coordinates whose axisIdx differs from the current axisIdx (i.e., the index of the applicable axis) are used and stored in the plane buffer. For example, if axisIdx equals 2, the G-PCC decoder uses two coordinate values stored in the plane buffer, where axisIdx equals 0 and 1 respectively, to calculate dist. According to the fourth example technique of this disclosure, the G-PCC decoder stores only the largest coordinate among the coordinates of the previously decoded node in the plane buffer, which results in the following calculation of dist:
[0251] dist=0
[0252] a = 0
[0253] b=0
[0254] For (k = 0; k < 3; k++)
[0255] If (k != axisIdx){
[0256] aa=PlanarPrevPos[axisIdx][axisPos][k]
[0257] If (k==0)bb=(sN>>1)&0x7f
[0258] If (k==1)bb=(tN>>1)&0x7f
[0259] If (k==2)bb=(vN>>1)&0x7f
[0260] If (aa>a), then a = aa
[0261] If (bb>b)b=bb
[0262] }
[0263] dist=Abs(a-b)
[0264] In this way, the fourth example technique of this disclosure can reduce the storage requirement for the coordinates of the previously decoded node by half. Although the fourth example technique of this disclosure is described with respect to the process of using w19522 to determine the values in the plane buffer, the process described with respect to the second example technique of this disclosure can be used to determine the values in the plane buffer. Furthermore, the distance values determined in the fourth example technique of this disclosure can be used in the processes for determining the context increment (distCtxInc) and context index (ctxIdx) as described in the first and third example techniques of this disclosure.
[0265] Figure 5 This is a flowchart illustrating example operations for encoding planar positions of a planar pattern according to one or more techniques of this disclosure. For example, Figure 5 The operations shown in the examples at least conform to the fourth example technique of this disclosure. The flowcharts of this disclosure are provided as examples. Other examples of techniques according to this disclosure may include more, fewer, or different actions.
[0266] exist Figure 5 In the example, the G-PCC encoder 200 may store the larger coordinate (i.e., the larger of the two coordinates) of a pair of coordinates of the applicable node in a buffer (e.g., a planar buffer), instead of storing the smaller coordinate (500) of the pair of coordinates of the applicable node. The applicable node is the most recently encoded node that has the same position as the current node along the applicable axis, and the pair of coordinates is used for an axis different from the applicable axis. In some examples (e.g., examples consistent with the second technique of this disclosure), when storing the larger coordinate of the applicable node, the fourth to eighth most significant bits of the larger coordinate of the applicable node are retained, and the three least significant bits of the larger coordinate of the applicable node are discarded.
[0267] Furthermore, the G-PCC encoder 200 can determine the context (502) of the planar mode plane position of the current node from multiple contexts. The planar mode plane position is the position of a plane orthogonal to the applicable axis. As part of the context for determining the planar mode plane position, the G-PCC encoder 200 can determine a context index indicating the context (504). As part of determining the context index, the G-PCC encoder 200 can determine a distance value based on the larger of the largest coordinate in the pair of coordinates of the applicable node and the larger of the larger coordinate in the pair of coordinates of the current node along an axis different from the applicable axis. This distance value represents the distance between the current node and the most recently encoded node position, which has the same position as the current node along the axis (506). For example, the G-PCC encoder 200 can determine the distance value as:
[0268] dist=0
[0269] a = 0
[0270] b=0
[0271] For (k = 0; k < 3; k++)
[0272] If (k != axisIdx){
[0273] aa=PlanarPrevPos[axisIdx][axisPos][k]
[0274] If (k==0)bb=(sN>>1)&0x7f
[0275] If (k==1)bb=(tN>>1)&0x7f
[0276] If (k==2)bb=(vN>>1)&0x7f
[0277] if(aa>a)a=aa
[0278] If (bb>b)b=bb
[0279] }
[0280] dist = Abs(ab)
[0281] In the above, PlanarPrevPos[axisIdx][axisPos][k] indicates the maximum coordinate among the coordinates of the applicable node at coordinate k (i.e., the nearest decoded node along the applicable axis, indicated by axisPos). Because only the maximum coordinate among the coordinates of the applicable node is stored in PlanarPrevPos, only one value of PlanarPrevPos[axisIdx][axisPos][k] (where k is 0…2) can have a non-zero value. Therefore, two slots in PlanarPrevPos[axisIdx][axisPos] are zero, while one slot in PlanarPrevPos[axisIdx][axisPos] stores the maximum coordinate among the coordinates of the applicable node. For example, if the applicable axis is the s-axis, and the t-axis coordinate of the applicable node is greater than the v-axis coordinate of the applicable node, then only PlanarPrevPos[axisIdx][axisPos][1] can have a non-zero value. At the end of the "for (for)" loop, the value a is equal to the larger of a pair of coordinates of the current node along an axis different from the applicable axis.
[0282] In addition, Figure 5 In the example, the G-PCC encoder 200 can determine an increment value (508) indicating whether the distance value is greater than a threshold. For example, the G-PCC encoder 200 can determine that the increment value is distCtxInc = (dist>1). In other words, the G-PCC encoder 200 can determine whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
[0283] The G-PCC encoder 200 can determine the context index (510) based on an incremental value. For example, the G-PCC encoder 200 can determine the context index as ctxIdx = axisIdx + 6 × neighOccupied + 2 × distCtxInc + prevPlane + 1. In some examples (e.g., examples consistent with the first example technique of this disclosure), the G-PCC encoder 200 can determine the context index as ctxIdx = axisIdx + 2 × distCtxInc + prevPlane + 1. Therefore, in such examples, the G-PCC encoder 200 can determine the context index without checking for neighborhood occupancy.
[0284] The G-PCC encoder 200 (e.g., arithmetic coding unit 214) can use the determined context to entropy encode the planar position of the planar pattern (512). For example, the G-PCC encoder 200 can perform CABAC encoding on syntax elements that indicate the planar position of the planar pattern.
[0285] In some examples, the G-PCC encoder 200 can encode at least one point in a point cloud based on a planar position in a planar pattern. For example, the G-PCC encoder 200 can use IDCM to encode the point of the current node. More specifically, in this example, the G-PCC encoder 200 determines a point offset syntax element that indicates the offset of the point relative to the origin of the current node. The G-PCC encoder 200 can also determine the context of the point offset syntax element based on the planar position in a planar pattern of the current node. The G-PCC encoder 200 can use the determined context to entropy encode (e.g., CABAC encoding) the point offset syntax element.
[0286] Figure 6 This is a flowchart illustrating an example operation for decoding planar positions in a planar mode, based on one or more techniques according to this disclosure. Figure 6 In the example, the G-PCC decoder 300 may store the larger coordinate in a pair of coordinates of the applicable node in the buffer, instead of storing the smaller coordinate in that pair (600). The applicable node is the most recently decoded node that has the same position as the current node along the applicable axis, and the pair of coordinates is used for an axis different from the applicable axis. In some examples (e.g., examples consistent with the second technique of this disclosure), when storing the larger coordinate in the coordinates of the applicable node, the fourth to eighth most significant bits of the larger coordinate in the coordinates of the applicable node are retained, and the three least significant bits of the larger coordinate in the coordinates of the applicable node are discarded.
[0287] Furthermore, the G-PCC decoder 300 can determine the context (602) of the planar position of the current node from multiple contexts. As part of determining the context of the planar position, the G-PCC decoder 300 can determine a context index indicating the context (604). As part of determining the context index, the G-PCC decoder 300 can determine a distance value based on the larger of the largest coordinate in the pair of coordinates of the applicable node and the larger of the larger coordinate in the pair of coordinates of the current node along an axis different from the applicable axis, the distance value representing the distance between the current node and the most recently encoded node position, which has the same position as the current node along the axis (606). The G-PCC decoder 300 can determine the distance value according to any of the examples provided elsewhere in this disclosure, including as regarding Figure 5 This describes how the G-PCC encoder 200 determines distance values.
[0288] In addition, Figure 6 In the example, the G-PCC decoder 300 can determine an increment value (608) indicating whether the distance value is greater than a threshold. For example, the G-PCC decoder 300 can determine that the increment value is distCtxInc = (dist>1). In other words, the G-PCC decoder 300 can determine whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
[0289] The G-PCC decoder 300 can determine the context index (610) based on an incremental value. For example, the G-PCC decoder 300 can determine the context index as ctxIdx = axisIdx + 6 × neighOccupied + 2 × distCtxInc + prevPlane + 1. In some examples (e.g., examples consistent with the first example technique of this disclosure), the G-PCC decoder 300 can determine the context index as ctxIdx = axisIdx + 2 × distCtxInc + prevPlane + 1. Therefore, in such examples, the G-PCC decoder 300 can determine the context index without checking for neighborhood occupancy.
[0290] The G-PCC decoder 300 (e.g., the geometric arithmetic decoding unit 302) can use the determined context to perform entropy decoding (612) on the planar position of the planar pattern. For example, the G-PCC decoder 300 can perform CABAC decoding on the syntax element indicating the planar position of the planar pattern.
[0291] In some examples, the G-PCC decoder 300 can decode at least one point in point cloud data based on planar position in a planar pattern. For example, the G-PCC decoder 300 can decode the point of the current node using IDCM. More specifically, in this example, the point offset syntax element indicates the offset of the point relative to the origin of the current node. The G-PCC decoder 300 can determine the context of the point offset syntax element based on the planar position in a planar pattern of the current node. The G-PCC decoder 300 can use the determined context to perform entropy decoding (e.g., CABAC decoding) on the point offset syntax element. In this way, as part of reconstructing the point cloud data, the G-PCC decoder 300 can determine the position of one or more points in the point cloud data based on the planar position in a planar pattern. Furthermore, the G-PCC decoder 300 can use the planar position in a planar pattern of the current node to determine the occupancy of the child nodes of the current node. Therefore, the G-PCC decoder 300 can determine the position of points in the point cloud data in the sense that it can determine which child nodes include points and which do not.
[0292] Figure 7 This is a conceptual diagram illustrating an example ranging system 700 that can be used with one or more technologies disclosed herein. Figure 7 In one example, the ranging system 700 includes an illuminator 702 and a sensor 704. The illuminator 702 may emit light 706. In some examples, the illuminator 702 may emit light 706 as one or more laser beams. Light 706 may have one or more wavelengths, such as infrared or visible wavelengths. In other examples, light 706 is not a coherent laser. When light 706 encounters an object (e.g., object 708), light 706 produces a return light 710. The return light 710 may include backscattered light and / or reflected light. The return light 710 may pass through a lens 711, which guides the return light 710 to generate an image 712 of object 708 on the sensor 704. The sensor 704 generates a signal 714 based on the image 712. The image 712 may include a set of points (e.g., by...). Figure 7 (The dots in image 712 represent this).
[0293] In some examples, the illuminator 702 and sensor 704 may be mounted on a rotating structure so that the illuminator 702 and sensor 704 capture a 360-degree view of the environment. In other examples, the ranging system 700 may include one or more optical components (e.g., mirrors, collimators, diffraction gratings, etc.) that enable the illuminator 702 and sensor 704 to detect a range of objects within a specific area (e.g., up to 360 degrees). Although Figure 7 The example shows only a single illuminator 702 and sensor 704, but the ranging system 700 may include multiple sets of illuminators and sensors.
[0294] In some examples, illuminator 702 generates a structured light pattern. In such examples, ranging system 700 may include multiple sensors 704 on which individual images of the structured light pattern are formed. Ranging system 700 can use the differences between the images of the structured light pattern to determine the distance to object 708, where the structured light pattern is backscattered from object 708. When object 708 is relatively close to sensor 704 (e.g., 0.2 meters to 2 meters), structured light-based ranging systems can have a high level of accuracy (e.g., sub-millimeter accuracy). This high level of accuracy can be useful in facial recognition applications, such as unlocking mobile devices (e.g., mobile phones, tablets, etc.) and for security applications.
[0295] In some examples, the ranging system 700 is a time-of-flight (ToF) based system. In some examples where the ranging system 700 is a ToF based system, an illuminator 702 generates a light pulse. In other words, the illuminator 702 can modulate the amplitude of the emitted light 706. In such an example, a sensor 704 detects the return light 710 from the light pulse 706 generated by the illuminator 702. The ranging system 700 can then determine the distance to the object 708, where the light 706 is backscattered from the object 708, based on the time delay between the emission and detection of the light 706 and the known speed of light in air. In some examples, instead of modulating the amplitude of the emitted light 706 (or otherwise), the illuminator 702 can modulate the phase of the emitted light 706. In such an example, the sensor 704 can detect the phase of the return light 710 from the object 708 and use the speed of light and the time difference between the time it takes for the illuminator 702 to generate light 706 of a specific phase and the time it takes for the sensor 704 to detect the return light 710 of that specific phase, to determine the distance to a point on the object 708.
[0296] In other examples, point cloud data can be generated without using illuminator 702. For example, in some examples, sensor 704 of ranging system 700 may include two or more optical cameras. In such examples, ranging system 700 can use optical cameras to capture stereo images of the environment (including object 708). Ranging system 700 may include point cloud generator 720, which can calculate differences between positions in the stereo image. Ranging system 700 can then use this difference to determine the distance to the position shown in the stereo image. Based on these distances, point cloud generator 720 can generate point cloud data.
[0297] Sensor 704 can also detect other properties of object 708, such as color and reflectivity information. Figure 7 In the example, point cloud generator 720 can generate point cloud data based on signal 718 generated by sensor 704. Ranging system 700 and / or point cloud generator 720 can form data source 104 ( Figure 1 As part of this disclosure, the point cloud data generated by the ranging system 700 can be encoded and / or decoded according to any technique disclosed herein.
[0298] Figure 8 This is a conceptual diagram illustrating an example vehicle-based scenario in which one or more technologies of this disclosure may be used. Figure 8 In the example, vehicle 800 includes a ranging system 802. The ranging system 802 can be referenced... Figure 8 This was achieved through discussion. Although in Figure 8 The example is not shown, but vehicle 800 may also include a data source (e.g., data source 104). Figure 1 )) and G-PCC encoders (e.g., G-PCC encoder 200 ( Figure 1 )).exist Figure 8 In the example, ranging system 802 emits a laser beam 804, which reflects off a pedestrian 806 or other object in the road. The data source for vehicle 800 can generate point cloud data based on the signal generated by ranging system 802. The G-PCC encoder of vehicle 800 can encode the point cloud data to generate a bitstream 808, such as a geometric bitstream 203. Figure 2 ) and attribute bitstream 205 ( Figure 2 Bitstream 808 can contain far fewer bits than the uncoded point cloud data obtained by the G-PCC encoder.
[0299] The output interface of vehicle 800 (e.g., output interface 108) Figure 1 The bitstream 808 can be transmitted to one or more other devices. The bitstream 808 can contain significantly fewer bits than the uncoded point cloud data obtained by the G-PCC encoder. Therefore, the vehicle 800 can transmit the bitstream 808 to other devices much faster than the uncoded point cloud data. Furthermore, the bitstream 808 may require less data storage capacity.
[0300] exist Figure 8 In the example, vehicle 800 can transmit bitstream 808 to another vehicle 810. Vehicle 810 may include a G-PCC decoder, for example, G-PCC decoder 300. Figure 1 The G-PCC decoder of vehicle 810 can decode bitstream 808 to reconstruct point cloud data. Reconstructing the point cloud data may include determining the coordinates of points in the point cloud data and / or determining the attribute values of those points. Vehicle 810 can use the reconstructed point cloud data for various purposes. For example, vehicle 810 may determine, based on the reconstructed point cloud data, that pedestrian 806 is on the road ahead of vehicle 800 and thus begin to decelerate, for example, even before the driver of vehicle 810 becomes aware that pedestrian 806 is on the road. Therefore, in some examples, vehicle 810 may perform autonomous navigation operations based on the reconstructed point cloud data.
[0301] Additionally or alternatively, vehicle 800 may transmit bitstream 808 to server system 812. Server system 812 may use bitstream 808 for various purposes. For example, server system 812 may store bitstream 808 for subsequent reconstruction of point cloud data. In this example, server system 812 may use point cloud data as well as other data (e.g., vehicle telemetry data generated by vehicle 800) to train an autonomous driving system. In other examples, server system 812 may store bitstream 808 for subsequent reconstruction of forensic collision investigations (e.g., if vehicle 800 collides with pedestrian 806).
[0302] The technology disclosed herein can further reduce the complexity and hardware cost associated with determining the context used for the decoding plane mode plane location. For example, regarding Figure 8 This can accelerate the ability of vehicle 800 to encode point cloud data, accelerate the ability of server system 812 and vehicle 810 to decode point cloud data, and reduce the cost of vehicle 800, 810 and server system 812.
[0303] Figure 9 This is a conceptual diagram illustrating an example extended reality system that can utilize one or more of the technologies disclosed herein. Extended reality (XR) is a term used to encompass a range of technologies, including augmented reality (AR), mixed reality (MR), and virtual reality (VR). Figure 9 In the example, user 900 is located at a first position 902. User 900 is wearing an XR headset 904. Alternatively, user 900 may use a mobile device (e.g., a mobile phone, tablet, etc.). The XR headset 904 includes a depth sensor, such as a ranging system, which detects the position of a point on an object 906 at position 902. The data source of the XR headset 904 may use signals generated by the depth sensor to generate point cloud data representing the object 906 at position 902. The XR headset 904 may include a G-PCC encoder (e.g., Figure 1 The G-PCC encoder 200 is configured to encode point cloud data to generate a bitstream 908.
[0304] XR headset 904 can transmit bitstream 908 (e.g., via a network such as the Internet) to XR headset 910 worn by user 912 at a second location 914. XR headset 910 can decode bitstream 908 to reconstruct point cloud data. XR headset 910 can use the point cloud data to generate an XR visualization (e.g., AR, MR, VR visualization) representing object 906 at location 902. Thus, in some examples, such as when XR headset 910 generates a VR visualization, user 912 can have a 3D immersive experience at location 902. In some examples, XR headset 910 can determine the location of a virtual object based on the reconstructed point cloud data. For example, XR headset 910 can determine, based on the reconstructed point cloud data, that the environment (e.g., location 902) includes a flat surface, and then determine that a virtual object (e.g., a cartoon character) will be positioned on the flat surface. XR headset 910 can generate an XR visualization in which the virtual object is located at the determined position. For example, the XR Headphones 910 can display a cartoon character sitting on a flat surface.
[0305] The technology disclosed herein can further reduce the complexity and hardware cost associated with determining the context used for the decoding plane mode plane location. For example, regarding Figure 9 This can accelerate the ability of the XR Headset 904 to encode point cloud data, accelerate the ability of the XR Headset 910 to decode point cloud data, and reduce the cost of the XR Headset 940 and 910.
[0306] Figure 10 This is a conceptual diagram illustrating an example mobile device system that can utilize one or more technologies disclosed herein. Figure 10 In the example, mobile device 1000 (e.g., a mobile phone or tablet computer) includes a ranging system, such as a LiDAR system, which detects the location of points on object 1002 in the environment of mobile device 1000. The data source of mobile device 1000 can use signals generated by a depth detection sensor to generate point cloud data representing object 1002. Mobile device 1000 may include a G-PCC encoder (e.g., Figure 1 The G-PCC encoder 200 is configured to encode point cloud data to generate a bitstream 1004. Figure 10 In the example, mobile device 1000 can transmit a bitstream to remote device 1006 (e.g., a server system or other mobile device). Remote device 1006 can decode bitstream 1004 to reconstruct point cloud data. Remote device 1006 can use the point cloud data for various purposes. For example, remote device 1006 can use the point cloud data to generate a map of the environment of mobile device 1000. For example, remote device 1006 can generate a map of the interior of a building based on the reconstructed point cloud data. In another example, remote device 1006 can generate an image (e.g., computer graphics) based on the point cloud data. For example, remote device 1006 can use the points of the point cloud data as vertices of polygons and use the color attributes of the points as the basis for coloring the polygons. In some examples, remote device 1006 can use the reconstructed point cloud data for facial recognition or other security applications.
[0307] The technology disclosed herein can further reduce the complexity and hardware cost associated with determining the context used for the decoding plane mode plane location. For example, regarding Figure 10 This can accelerate the ability of mobile devices to encode point cloud data and reduce the cost of mobile devices.
[0308] Examples of the various aspects of this disclosure may be used individually or in any combination.
[0309] The following is a list of non-limiting examples that conform to one or more technologies disclosed herein.
[0310] Aspect 1A: A method for decoding point cloud data, comprising: determining a context of a planar position of a planar pattern from a plurality of contexts, wherein determining the context of the planar pattern includes determining a context index indicating the context without checking neighborhood occupancy; entropy decoding of the planar position of the planar pattern using the determined context; and decoding at least one point in the point cloud based on the planar position of the planar pattern.
[0311] Aspect 2A: A method for decoding point cloud data, comprising: determining a context of a planar position of a planar pattern from a plurality of contexts, wherein determining the context of the planar pattern includes determining a context index indicating the context, wherein determining the context index includes: determining a distance value representing the distance between a current node and the location of the most recently decoded node, the location of the most recently decoded node having the same position as the current node along an axis; determining an increment value indicating whether the distance value is greater than a threshold; and determining the context index based on the increment value; performing entropy decoding on the planar position of the planar pattern using the determined context; and decoding at least one point in the point cloud based on the planar position of the planar pattern.
[0312] Aspect 3A: The method according to aspect 2A, wherein the method further includes storing the maximum value of the coordinates of the most recently decoded node in a buffer, wherein determining the distance value includes determining the distance value based on the maximum value of the coordinates of the most recently decoded node stored in the buffer.
[0313] Aspect 4A: The method described in either Aspect 2A or 3A, wherein determining the context of the planar position of the planar pattern includes determining the context index without checking neighborhood occupancy.
[0314] Aspect 5A: The method described according to any one of aspects 1A-4A further includes generating a point cloud.
[0315] Aspect 6A: An apparatus for processing point clouds, the apparatus comprising one or more components for performing the method described in any one of aspects 1A-5A.
[0316] Aspect 7A: The device according to aspect 6A, wherein one or more components include one or more processors implemented in a circuit.
[0317] Aspect 8A: The device according to any one of aspects 6A or 7A further includes a memory for storing data representing point clouds.
[0318] Aspect 9A: The device according to any one of aspects 6A-8A, wherein the device includes a decoder.
[0319] Aspect 10A: The device according to any one of aspects 6A-9A, wherein the device includes an encoder.
[0320] Aspect 11A: The apparatus according to any one of aspects 6A-10A further includes an apparatus for generating point clouds.
[0321] Aspect 12A: The apparatus according to any one of aspects 6A-11A further includes a display that renders images based on point clouds.
[0322] Aspect 13A: A computer-readable storage medium having instructions stored thereon, which, when executed, cause one or more processors to perform the method described in any one of aspects 1A-5A.
[0323] Aspect 1B. A method for encoding point cloud data, the method comprising: storing in a buffer the larger of a pair of coordinates of an applicable node, without storing the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node having the same position as a current node along an applicable axis, and the pair of coordinates is used for an axis different from the applicable axis; determining a context for a planar position of the current node from a plurality of contexts, wherein determining the context for a planar position includes determining a context index indicating the context, wherein determining the context index includes: determining a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node stored in the buffer and the larger of the pair of coordinates of the current node along an axis different from the applicable axis; determining an increment value indicating whether the distance value is greater than a threshold; and determining the context index based on the increment value; and entropy encoding the planar position of the planar position using the determined context.
[0324] Aspect 2B. The method according to aspect 1B further includes at least one point of the planar position encoded point cloud data based on the planar pattern.
[0325] Aspect 3B. The method according to any one of aspects 1B-2B, wherein storing the maximum coordinate in the pair of coordinates of the applicable node comprises: retaining the fourth to eighth most significant bits of the maximum coordinate in the pair of coordinates of the applicable node, and discarding the three least significant bits of the maximum coordinate in the pair of coordinates of the applicable node.
[0326] Aspect 4B. The method described in any of aspects 1B-3B, wherein determining the increment value includes determining whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
[0327] Aspect 5B. The method described according to any one of aspects 1B-3B further includes generating point cloud data.
[0328] Aspect 6B. A method for decoding point cloud data, the method comprising: storing in a buffer the larger of a pair of coordinates of an applicable node, without storing the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node having the same position as a current node along an applicable axis, and the pair of coordinates is used for an axis different from the applicable axis; determining a context for a planar position of the current node from a plurality of contexts, wherein determining the context for a planar position includes determining a context index indicating the context, wherein determining the context index includes: determining a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node and the pair of coordinates of the current node along an axis different from the applicable axis; determining an increment value indicating whether the distance value is greater than a threshold; and determining the context index based on the increment value; and entropy decoding the planar position using the determined context.
[0329] Aspect 7B. The method according to aspect 6B further includes decoding at least one point of the point cloud data based on the planar position of the planar pattern.
[0330] Aspect 8B. The method according to any one of aspects 6B-7B, wherein storing the maximum coordinate in the pair of coordinates of the applicable node comprises: retaining the fourth to eighth most significant bits of the maximum coordinate in the pair of coordinates of the applicable node, and discarding the three least significant bits of the maximum coordinate in the pair of coordinates of the applicable node.
[0331] Aspect 9B. The method described in any of aspects 6B-8B, wherein determining the increment value includes determining whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
[0332] Aspect 10B. An apparatus for encoding point cloud data, the apparatus comprising: a buffer configured to store the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node having the same position as a current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; and one or more processors implemented in a circuit, the one or more processors configured to: determine a context of a planar position of the current node from a plurality of contexts, wherein the one or more processors are configured, as part of determining the context of the planar position, to determine a context index indicating the context, and the one or more processors are configured, as part of determining the context index, to: determine a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node and the pair of coordinates of the current node along an axis different from the applicable axis; determine an increment value indicating whether the distance value is greater than a threshold; and determine the context index based on the increment value; and entropy encode the planar position using the determined context.
[0333] Aspect 11B. The apparatus according to aspect 10B, wherein the one or more processors are further configured to encode at least one point of point cloud data based on a planar pattern planar location.
[0334] Aspect 12B. The apparatus according to any one of aspects 10B-11B, wherein the one or more processors are configured to, as part of storing the maximum coordinate in the pair of coordinates of the applicable node in a buffer, retain the fourth to eighth most significant bits of the maximum coordinate in the pair of coordinates of the applicable node, and discard the three least significant bits of the maximum coordinate in the pair of coordinates of the applicable node.
[0335] Aspect 13B. The device according to any one of aspects 10B-12B, wherein the one or more processors are configured to determine, as part of determining the increment value, whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
[0336] Aspect 14B. The apparatus according to any one of aspects 10B-13B further includes a display that presents an image based on point cloud data.
[0337] Aspect 15B. The apparatus according to any one of aspects 10B-14B further includes an apparatus for generating point cloud data.
[0338] Aspect 16B. The apparatus according to aspect 15B, wherein the one or more processors are configured to generate point cloud data based on signals from a LIDAR device as part of generating point cloud data.
[0339] Aspect 17B. The device according to any one of aspects 10B-16B, wherein the device is one of a mobile phone or a tablet computer.
[0340] Aspect 18B. The device according to any one of aspects 10B-16B, wherein the device is a vehicle.
[0341] Aspect 19B. The device according to any one of aspects 10B-16B, wherein the device is an extended reality device.
[0342] Aspect 20B. The device according to any one of aspects 10B-19B, wherein the device includes an interface configured to transmit point cloud data.
[0343] Aspect 21B. An apparatus for decoding point cloud data, the apparatus comprising: a buffer configured to store the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; and one or more processors implemented in a circuit, the one or more processors configured to: determine a context of a planar position of the current node from a plurality of contexts, wherein the one or more processors are configured to, as part of determining the context of the planar position, determine a context index indicating the context, and the one or more processors are configured to, as part of determining the context index,: determine a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node and the pair of coordinates of the current node along an axis different from the applicable axis; determine an increment value indicating whether the distance value is greater than a threshold; and determine the context index based on the increment value; and entropy decode the planar position using the determined context.
[0344] Aspect 22B. The device according to aspect 21B, wherein the one or more processors are further configured to decode at least one point of point cloud data based on planar position in a planar pattern.
[0345] Aspect 23B. The apparatus according to any one of aspects 21B-22B, wherein the one or more processors are configured to, as part of storing the maximum coordinate in the pair of coordinates of the applicable node in a buffer, retain the fourth to eighth most significant bits of the maximum coordinate in the pair of coordinates of the applicable node, and discard the three least significant bits of the maximum coordinate in the pair of coordinates of the applicable node.
[0346] Aspect 24B. The device according to any one of aspects 21B-23B, wherein the one or more processors are configured to determine, as part of determining the increment value, whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
[0347] Aspect 25B. The apparatus according to any one of aspects 21B-24B, wherein the one or more processors are further configured to reconstruct point cloud data, and wherein the one or more processors are configured to, as part of reconstructing the point cloud data, determine the position of one or more points of the point cloud data based on planar position of a planar pattern.
[0348] Aspect 26B. The device according to aspect 25B, wherein the one or more processors are further configured to generate a map of the interior of a building based on reconstructed point cloud data.
[0349] Aspect 27B. The device according to any one of aspects 25B-26B, wherein the one or more processors are further configured to perform autonomous navigation operations based on reconstructed point cloud data.
[0350] Aspect 28B. The apparatus according to any one of aspects 25B-27B, wherein the one or more processors are further configured to generate computer graphics based on reconstructed point cloud data.
[0351] Aspect 29B. The apparatus according to aspect 28B, wherein the one or more processors are configured to: determine the position of a virtual object based on reconstructed point cloud data; and generate an extended reality (XR) visualization in which the virtual object is located at the determined position.
[0352] Aspect 30B. The device according to any one of aspects 21B-29B, wherein the device is one of a mobile phone or a tablet computer.
[0353] Aspect 31B. The equipment according to any one of aspects 21B-29B, wherein the equipment is a vehicle.
[0354] Aspect 32B. The device according to any one of aspects 21B-29B, wherein the device is an extended reality device.
[0355] Aspect 33B. The apparatus according to any one of aspects 21B-32B further includes a display that presents an image based on point cloud data.
[0356] Aspect 34B. An apparatus for encoding point cloud data, the apparatus comprising: means for storing the larger of a pair of coordinates of an applicable node and not storing the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; means for determining a context of a planar position of the current node from a plurality of contexts, wherein the means for determining the context of the planar position of the current node includes means for determining a context index indicating the context, and the means for determining the context index includes: means for determining a distance value based on the larger of the larger of the pair of coordinates of the applicable node and the larger of the pair of coordinates of the current node along an axis different from the applicable axis, the distance value representing the distance between the current node and the applicable node; means for determining an increment value indicating whether the distance value is greater than a threshold; and means for determining the context index based on the increment value; and means for entropy encoding the planar position of the planar position using the determined context.
[0357] Aspect 35B. An apparatus for decoding point cloud data, the apparatus comprising: means for storing the larger of a pair of coordinates of an applicable node and not storing the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; means for determining a context of a planar position of the current node from a plurality of contexts, wherein the means for determining the context of the planar position of the current node includes means for determining a context index indicating the context, and the means for determining the context index includes: means for determining a distance value based on the larger of the larger of the pair of coordinates of the applicable node and the larger of the pair of coordinates of the current node along an axis different from the applicable axis, the distance value representing the distance between the current node and the applicable node; means for determining an increment value indicating whether the distance value is greater than a threshold; and means for determining the context index based on the increment value; and means for entropy decoding of the planar position of the planar position using the determined context.
[0358] Aspect 36B. A computer-readable storage medium having instructions stored thereon, which, when executed, cause one or more processors to: store in a buffer the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; determine a context of a planar position of the current node from a plurality of contexts, wherein the instructions causing the one or more processors to determine the context of the planar position include, when executed, instructions causing the one or more processors to determine a context index indicating the context, wherein the instructions causing the one or more processors to determine the context index include instructions that, when executed, cause the one or more processors to: determine a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node and a pair of coordinates of the current node along an axis different from the applicable axis; determine an increment value indicating whether the distance value is greater than a threshold; and determine a context index based on the increment value; and entropy encode the planar position using the determined context.
[0359] Aspect 37B. A computer-readable storage medium having instructions thereon that, when executed, cause one or more processors to: store in a buffer the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; determine a context of a planar position of the current node from a plurality of contexts, wherein the instructions causing the one or more processors to determine the context of the planar position include, when executed, instructions causing the one or more processors to determine a context index indicating the context, wherein the instructions causing the one or more processors to determine the context index include instructions that, when executed, cause the one or more processors to: determine a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node stored in the buffer and a pair of coordinates of the current node along an axis different from the applicable axis; determine an increment value indicating whether the distance value is greater than a threshold; and determine a context index based on the increment value; and entropy decode the planar position using the determined context.
[0360] Aspect 1C. A method for encoding point cloud data, the method comprising: storing in a buffer the larger of a pair of coordinates of an applicable node, without storing the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node having the same position as a current node along an applicable axis, and the pair of coordinates is used for an axis different from the applicable axis; determining a context for a planar position of the current node from a plurality of contexts, wherein determining the context for a planar position includes determining a context index indicating the context, wherein determining the context index includes: determining a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node stored in the buffer and the larger of the pair of coordinates of the current node along an axis different from the applicable axis; determining an increment value indicating whether the distance value is greater than a threshold; and determining the context index based on the increment value; and entropy encoding the planar position of the planar position using the determined context.
[0361] Aspect 2C. The method according to aspect 1C further includes at least one point of the point cloud data encoded based on the planar position of the planar pattern.
[0362] Aspect 3C. The method according to aspect 1C, wherein storing the maximum coordinate in the pair of coordinates of the applicable node comprises: retaining the fourth to eighth most significant bits of the maximum coordinate in the pair of coordinates of the applicable node, and discarding the three least significant bits of the maximum coordinate in the pair of coordinates of the applicable node.
[0363] Aspect 4C. The method according to aspect 1C, wherein determining the increment value includes determining whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
[0364] Aspect 5C. The method according to aspect 1C further includes generating point cloud data.
[0365] Aspect 6C. A method for decoding point cloud data, the method comprising: storing in a buffer the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node having the same position as a current node along an applicable axis, and the pair of coordinates is used for an axis different from the applicable axis; determining a context for a planar position of the current node from a plurality of contexts, wherein determining the context for a planar position includes determining a context index indicating the context, wherein determining the context index includes: determining a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node and the pair of coordinates of the current node along an axis different from the applicable axis; determining an increment value indicating whether the distance value is greater than a threshold; and determining the context index based on the increment value; and entropy decoding of the planar position using the determined context.
[0366] Aspect 7C. The method according to aspect 6C further includes decoding at least one point of the point cloud data based on the planar position of the planar pattern.
[0367] Aspect 8C. The method according to aspect 6C, wherein storing the maximum coordinate in the pair of coordinates of the applicable node comprises: retaining the fourth to eighth most significant bits of the maximum coordinate in the pair of coordinates of the applicable node, and discarding the three least significant bits of the maximum coordinate in the pair of coordinates of the applicable node.
[0368] Aspect 9C. According to the method described in aspect 6C, determining the increment value includes determining whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
[0369] Aspect 10C. An apparatus for encoding point cloud data, the apparatus comprising: a buffer configured to store the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node having the same position as a current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; and one or more processors implemented in a circuit, the one or more processors configured to: determine a context of a planar position of the current node from a plurality of contexts, wherein the one or more processors are configured, as part of determining the context of the planar position, to determine a context index indicating the context, and the one or more processors are configured, as part of determining the context index, to: determine a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node and the pair of coordinates of the current node along an axis different from the applicable axis; determine an increment value indicating whether the distance value is greater than a threshold; and determine the context index based on the increment value; and entropy encode the planar position using the determined context.
[0370] Aspect 11C. The device according to aspect 10C, wherein the one or more processors are further configured to encode at least one point of point cloud data based on a planar pattern planar location.
[0371] Aspect 12C. The device according to aspect 10C, wherein the one or more processors are configured to, as part of storing the maximum coordinate in the pair of coordinates of the applicable node in a buffer, retain the fourth to eighth most significant bits of the maximum coordinate in the pair of coordinates of the applicable node, and discard the three least significant bits of the maximum coordinate in the pair of coordinates of the applicable node.
[0372] Aspect 13C. The device according to aspect 10C, wherein the one or more processors are configured to determine, as part of determining the increment value, whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
[0373] Aspect 14C. The device according to aspect 10C further includes a display that presents images based on point cloud data.
[0374] Aspect 15C. The apparatus according to aspect 10C further includes an apparatus for generating point cloud data.
[0375] Aspect 16C. The apparatus according to aspect 15C, wherein the one or more processors are configured to generate point cloud data based on signals from a LIDAR device as part of generating point cloud data.
[0376] Aspect 17C. The device according to aspect 10C, wherein the device is one of a mobile phone or a tablet computer.
[0377] Aspect 18C. The device according to aspect 10C, wherein the device is a vehicle.
[0378] Aspect 19C. The device according to aspect 10C, wherein the device is an extended reality device.
[0379] Aspect 20C. The device according to aspect 10C, wherein the device includes an interface configured to transmit point cloud data.
[0380] Aspect 21C. An apparatus for decoding point cloud data, the apparatus comprising: a buffer configured to store the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; and one or more processors implemented in a circuit, the one or more processors configured to: determine a context of a planar position of the current node from a plurality of contexts, wherein the one or more processors are configured to, as part of determining the context of the planar position, determine a context index indicating the context, and the one or more processors are configured to, as part of determining the context index,: determine a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node and the pair of coordinates of the current node along an axis different from the applicable axis; determine an increment value indicating whether the distance value is greater than a threshold; and determine the context index based on the increment value; and perform entropy decoding of the planar position using the determined context.
[0381] Aspect 22C. The device according to aspect 21C, wherein the one or more processors are further configured to decode at least one point of point cloud data based on planar position in a planar pattern.
[0382] Aspect 23C. The apparatus according to aspect 21C, wherein the one or more processors are configured to, as part of storing the maximum coordinate in the pair of coordinates of the applicable node in a buffer, retain the fourth to eighth most significant bits of the maximum coordinate in the pair of coordinates of the applicable node, and discard the three least significant bits of the maximum coordinate in the pair of coordinates of the applicable node.
[0383] Aspect 24C. The device according to aspect 21C, wherein the one or more processors are configured to determine, as part of determining the increment value, whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
[0384] Aspect 25C. The apparatus according to aspect 21C, wherein the one or more processors are further configured to reconstruct point cloud data, and wherein the one or more processors are configured to, as part of reconstructing the point cloud data, determine the position of one or more points of the point cloud data based on planar position of a planar pattern.
[0385] Aspect 26C. The device according to aspect 25C, wherein the one or more processors are further configured to generate a map of the interior of a building based on reconstructed point cloud data.
[0386] Aspect 27C. The device according to aspect 25C, wherein the one or more processors are further configured to perform autonomous navigation operations based on reconstructed point cloud data.
[0387] Aspect 28C. The apparatus according to aspect 25C, wherein the one or more processors are further configured to generate computer graphics based on reconstructed point cloud data.
[0388] Aspect 29C. The device according to aspect 28C, wherein the one or more processors are configured to: determine the position of a virtual object based on reconstructed point cloud data; and generate an extended reality (XR) visualization in which the virtual object is located at the determined position.
[0389] Aspect 30C. The device according to aspect 21C, wherein the device is one of a mobile phone or a tablet computer.
[0390] Aspect 31C. The device according to aspect 21C, wherein the device is a vehicle.
[0391] Aspect 32C. The device according to aspect 21C, wherein the device is an extended reality device.
[0392] Aspect 33C. The device according to aspect 21C further includes a display that presents images based on point cloud data.
[0393] Aspect 34C. An apparatus for encoding point cloud data, the apparatus comprising: means for storing the larger of a pair of coordinates of an applicable node and not storing the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; means for determining a context of a planar position of the current node from a plurality of contexts, wherein the means for determining the context of the planar position of the current node includes means for determining a context index indicating the context, and the means for determining the context index includes: means for determining a distance value based on the larger of the larger of the pair of coordinates of the applicable node and the larger of the pair of coordinates of the current node along an axis different from the applicable axis, the distance value representing the distance between the current node and the applicable node; means for determining an increment value indicating whether the distance value is greater than a threshold; and means for determining the context index based on the increment value; and means for entropy encoding the planar position of the planar position using the determined context.
[0394] Aspect 35C. An apparatus for decoding point cloud data, the apparatus comprising: means for storing the larger of a pair of coordinates of an applicable node and not storing the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; means for determining a context of a planar position of the current node from a plurality of contexts, wherein the means for determining the context of the planar position of the current node includes means for determining a context index indicating the context, and the means for determining the context index includes: means for determining a distance value based on the larger of the larger of the pair of coordinates of the applicable node and the pair of coordinates of the current node along an axis different from the applicable axis, the distance value representing the distance between the current node and the applicable node; means for determining an increment value indicating whether the distance value is greater than a threshold; and means for determining the context index based on the increment value; and means for entropy decoding of the planar position of the planar position using the determined context.
[0395] Aspect 36C. A computer-readable storage medium having instructions stored thereon, which, when executed, cause one or more processors to: store in a buffer the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; determine a context of a planar position of the current node from a plurality of contexts, wherein the instructions causing the one or more processors to determine the context of the planar position include, when executed, instructions causing the one or more processors to determine a context index indicating the context, wherein the instructions causing the one or more processors to determine the context index include instructions that, when executed, cause the one or more processors to: determine a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node and a pair of coordinates of the current node along an axis different from the applicable axis; determine an increment value indicating whether the distance value is greater than a threshold; and determine a context index based on the increment value; and entropy encode the planar position of the planar position using the determined context.
[0396] Aspect 37C. A computer-readable storage medium having instructions thereon that, when executed, cause one or more processors to: store in a buffer the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node having the same position as the current node along an applicable axis, and the pair of coordinates is for an axis different from the applicable axis; determine a context of a planar position of the current node from a plurality of contexts, wherein the instructions causing the one or more processors to determine the context of the planar position include, when executed, instructions causing the one or more processors to determine a context index indicating the context, wherein the instructions causing the one or more processors to determine the context index include instructions that, when executed, cause the one or more processors to: determine a distance value representing the distance between the current node and the applicable node based on the larger of the larger of the pair of coordinates of the applicable node stored in the buffer and a pair of coordinates of the current node along an axis different from the applicable axis; determine an increment value indicating whether the distance value is greater than a threshold; and determine a context index based on the increment value; and entropy decode the planar position using the determined context.
[0397] It should be recognized that, based on the examples, certain actions or events of any technique described herein may be performed in a different order, and may be added, combined, or omitted entirely (e.g., not all described actions or events are necessary for technical practice). Furthermore, in some examples, actions or events may be performed concurrently rather than sequentially, for example, through multithreaded processing, interrupt handling, or multiple processors.
[0398] In one or more examples, the described functionality can be implemented using hardware, software, firmware, or any combination thereof. If implemented in software, these functions can be stored or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. A computer-readable medium may include a computer-readable storage medium that corresponds to a tangible medium (e.g., a data storage medium) or a communication medium that includes any medium that facilitates the transfer of a computer program from one place to another, for example, according to a communication protocol. In this way, a computer-readable medium may generally correspond to (1) a non-transitory tangible computer-readable storage medium or (2) a communication medium, such as a signal or carrier wave. A data storage medium may be any available medium accessible by one or more computers or one or more processors to obtain instructions, code, and / or data structures for implementing the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[0399] By way of example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disc storage, disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and is accessible by a computer. Furthermore, any connection is appropriately referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but rather refer to non-transient tangible storage media. Disks and optical discs as used herein include compact discs (CDs), laser discs, optical discs, digital universal discs (DVDs), and Blu-ray discs, where disks typically reproduce data magnetically, while optical discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0400] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, the terms "processor" and "processing circuit" as used herein can refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein can be housed within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into combined codecs. Furthermore, these techniques can be implemented entirely within one or more circuit or logic elements.
[0401] The techniques disclosed herein can be implemented in a variety of devices or apparatuses, including wireless handheld devices, integrated circuits (ICs), or IC sets (e.g., chip sets). Various components, modules, or units are described in this disclosure to emphasize functional aspects of a device configured to perform the disclosed techniques, but they do not necessarily need to be implemented by different hardware units. Rather, as described above, the various units can be combined in a codec hardware unit, or provided by a collection of interoperable hardware units including one or more processors as described above, combined with suitable software and / or firmware.
[0402] Various examples have been described. These and other examples are all within the scope of the appended claims.
Claims
1. A method for encoding point cloud data, the method comprising: The buffer stores the larger coordinate of a pair of coordinates of the applicable node, but not the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node that has the same position as the current node along the applicable axis, and the pair of coordinates is for an axis different from the applicable axis; The context from which the planar position of the current node in planar mode is determined is determined from multiple contexts. The context for determining the planar position of the planar mode includes determining a context index that indicates the context, wherein determining the context index includes: A distance value is determined based on the maximum coordinate of the pair of coordinates of the applicable node stored in the buffer and the larger coordinate of the pair of coordinates of the current node along an axis different from the applicable axis. The distance value represents the distance between the current node and the applicable node. Determine an increment value, the increment value indicating whether the distance value is greater than a threshold; and The context index is determined based on the incremental value; and The planar position of the planar pattern is entropy encoded using the determined context.
2. The method according to claim 1, further comprising encoding at least one point of the point cloud data based on the planar position of the planar pattern.
3. The method of claim 1, wherein storing the maximum coordinate of the pair of coordinates of the applicable node comprises: The fourth to eighth most significant bits of the maximum coordinate in the pair of coordinates of the applicable node are retained, and the three least significant bits of the maximum coordinate in the pair of coordinates of the applicable node are discarded.
4. The method of claim 1, wherein determining the increment value includes determining whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
5. The method according to claim 1 further includes generating the point cloud data.
6. A method for decoding point cloud data, the method comprising: The buffer stores the larger coordinate of a pair of coordinates of the applicable node, but not the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node that has the same position as the current node along the applicable axis, and the pair of coordinates is for an axis different from the applicable axis; The context from which the planar position of the current node in planar mode is determined is determined from multiple contexts. The context for determining the planar position of the planar mode includes determining a context index that indicates the context, wherein determining the context index includes: A distance value is determined based on the maximum coordinate of the pair of coordinates of the applicable node and the larger coordinate of the pair of coordinates of the current node along an axis different from the applicable axis, the distance value representing the distance between the current node and the applicable node; Determine an increment value, the increment value indicating whether the distance value is greater than a threshold; and The context index is determined based on the incremental value; and Entropy decoding is performed on the planar position of the planar pattern using the determined context.
7. The method of claim 6, further comprising decoding at least one point of the point cloud data based on the planar position of the planar pattern.
8. The method of claim 6, wherein storing the maximum coordinate of the pair of coordinates of the applicable node comprises: The fourth to eighth most significant bits of the maximum coordinate in the pair of coordinates of the applicable node are retained, and the three least significant bits of the maximum coordinate in the pair of coordinates of the applicable node are discarded.
9. The method of claim 6, wherein determining the increment value includes determining whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
10. An apparatus for encoding point cloud data, the apparatus comprising: A buffer configured to store the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node that has the same position as the current node along the applicable axis, and the pair of coordinates is for an axis different from the applicable axis; as well as One or more processors implemented in a circuit, said one or more processors being configured to: The context for determining the planar position of the current node from multiple contexts, wherein one or more processors are configured to, as part of determining the context for determining the planar position, determine a context index indicating the context, wherein the one or more processors are configured to, as part of determining the context index: A distance value is determined based on the maximum coordinate of the pair of coordinates of the applicable node and the larger coordinate of the pair of coordinates of the current node along an axis different from the applicable axis, the distance value representing the distance between the current node and the applicable node; Determine an increment value, the increment value indicating whether the distance value is greater than a threshold; as well as The context index is determined based on the incremental value; as well as The planar position of the planar pattern is entropy encoded using the determined context.
11. The device of claim 10, wherein the one or more processors are further configured to encode at least one point of the point cloud data based on the planar position of the planar pattern.
12. The device of claim 10, wherein the one or more processors are configured to, as part of storing the maximum coordinate in the pair of coordinates of the applicable node in the buffer, retain the fourth to eighth most significant bits of the maximum coordinate in the pair of coordinates of the applicable node, and discard the three least significant bits of the maximum coordinate in the pair of coordinates of the applicable node.
13. The device of claim 10, wherein the one or more processors are configured to, as part of determining the increment value, determine whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
14. The device of claim 10, further comprising a display for presenting an image based on the point cloud data.
15. The apparatus of claim 10, wherein the apparatus is configured to generate the point cloud data.
16. The device of claim 15, wherein the one or more processors are configured to generate the point cloud data based on signals from the LIDAR device as part of generating the point cloud data.
17. The device of claim 10, wherein the device is one of a mobile phone or a tablet computer.
18. The device of claim 10, wherein the device is a vehicle.
19. The device of claim 10, wherein the device is an extended reality device.
20. The device of claim 10, wherein the device includes an interface configured to transmit the point cloud data.
21. An apparatus for decoding point cloud data, the apparatus comprising: A buffer configured to store the larger of a pair of coordinates of an applicable node, but not the smaller of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node that has the same position as the current node along the applicable axis, and the pair of coordinates is for an axis different from the applicable axis; as well as One or more processors implemented in a circuit, said one or more processors being configured to: The context for determining the planar position of the current node from multiple contexts, wherein one or more processors are configured to, as part of determining the context for determining the planar position, determine a context index indicating the context, wherein the one or more processors are configured to, as part of determining the context index: A distance value is determined based on the maximum coordinate of the pair of coordinates of the applicable node and the larger coordinate of the pair of coordinates of the current node along an axis different from the applicable axis, the distance value representing the distance between the current node and the applicable node; Determine an increment value, the increment value indicating whether the distance value is greater than a threshold; as well as The context index is determined based on the incremental value; as well as Entropy decoding is performed on the planar position of the planar pattern using the determined context.
22. The device of claim 21, wherein the one or more processors are further configured to decode at least one point of the point cloud data based on the planar position of the planar pattern.
23. The device of claim 21, wherein the one or more processors are configured to, as part of storing the maximum coordinate in the pair of coordinates of the applicable node in the buffer, retain the fourth to eighth most significant bits of the maximum coordinate in the pair of coordinates of the applicable node, and discard the three least significant bits of the maximum coordinate in the pair of coordinates of the applicable node.
24. The device of claim 21, wherein the one or more processors are configured to, as part of determining the increment value, determine whether the increment value is equal to 1 or 0 based on whether the distance value is greater than or less than 1.
25. The device according to claim 21, The one or more processors are further configured to reconstruct the point cloud data, and The one or more processors are configured to determine the position of one or more points in the point cloud data based on the planar position of the planar pattern as part of reconstructing the point cloud data.
26. The device of claim 25, wherein the one or more processors are further configured to generate a map of the building interior based on the reconstructed point cloud data.
27. The device of claim 25, wherein the one or more processors are further configured to perform autonomous navigation operations based on the reconstructed point cloud data.
28. The device of claim 25, wherein the one or more processors are further configured to generate computer graphics based on the reconstructed point cloud data.
29. The device of claim 28, wherein the one or more processors are configured to: The location of the virtual object is determined based on the reconstructed point cloud data; and Generate an extended reality (XR) visualization of the virtual object in the determined location.
30. The device of claim 21, wherein the device is one of a mobile phone or a tablet computer.
31. The device according to claim 21, wherein the device is a vehicle.
32. The device of claim 21, wherein the device is an extended reality device.
33. The device of claim 21, further comprising a display for presenting an image based on the point cloud data.
34. An apparatus for encoding point cloud data, the apparatus comprising: A component for storing the larger coordinate of a pair of coordinates of an applicable node, but not the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node that has the same position as the current node along the applicable axis, and the pair of coordinates is for an axis different from the applicable axis; A component for determining the planar position of the current node from multiple contexts, wherein the component for determining the planar position of the current node includes a component for determining a context index indicating the context, and the component for determining the context index includes: A component for determining a distance value based on the maximum coordinate of the pair of coordinates of the applicable node and the larger coordinate of the pair of coordinates of the current node along an axis different from the applicable axis, the distance value representing the distance between the current node and the applicable node; A component for determining whether the distance value is greater than the threshold increment; and Components for determining the context index based on the incremental value; and A component for entropy encoding of the planar position of the planar pattern using the determined context.
35. An apparatus for decoding point cloud data, the apparatus comprising: A component for storing the larger coordinate of a pair of coordinates of an applicable node, but not the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node that has the same position as the current node along the applicable axis, and the pair of coordinates is for an axis different from the applicable axis; A component for determining the planar position of the current node from multiple contexts, wherein the component for determining the planar position of the current node includes a component for determining a context index indicating the context, and the component for determining the context index includes: A component for determining a distance value based on the maximum coordinate of the pair of coordinates of the applicable node and the larger coordinate of the pair of coordinates of the current node along an axis different from the applicable axis, the distance value representing the distance between the current node and the applicable node; A component for determining whether the distance value is greater than the threshold increment; and Components for determining the context index based on the incremental value; and A component for entropy decoding of the planar position of the planar pattern using the determined context.
36. A computer-readable storage medium having instructions stored thereon, the instructions causing one or more processors to: The buffer stores the larger coordinate of a pair of coordinates of the applicable node, but not the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is the most recently encoded node that has the same position as the current node along the applicable axis, and the pair of coordinates is for an axis different from the applicable axis; The context from which the planar position of the current node in planar mode is determined is determined from multiple contexts. The instructions that cause the one or more processors to determine the context of the planar mode plane position include, when executed, instructions that cause the one or more processors to determine a context index indicating the context, wherein the instructions that cause the one or more processors to determine the context index include, when executed, instructions that cause the one or more processors to perform the following operations: A distance value is determined based on the maximum coordinate of the pair of coordinates of the applicable node and the larger coordinate of the pair of coordinates of the current node along an axis different from the applicable axis, the distance value representing the distance between the current node and the applicable node; Determine an increment value, the increment value indicating whether the distance value is greater than a threshold; as well as The context index is determined based on the incremental value; as well as The planar position of the planar pattern is entropy encoded using the determined context.
37. A computer-readable storage medium having instructions stored thereon, said instructions, when executed, causing one or more processors to: The buffer stores the larger coordinate of a pair of coordinates of the applicable node, but not the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is the most recently decoded node that has the same position as the current node along the applicable axis, and the pair of coordinates is for an axis different from the applicable axis; The context from which the planar position of the current node in planar mode is determined is determined from multiple contexts. The instructions that cause the one or more processors to determine the context of the planar mode plane position include, when executed, instructions that cause the one or more processors to determine a context index indicating the context, wherein the instructions that cause the one or more processors to determine the context index include, when executed, instructions that cause the one or more processors to perform the following operations: A distance value is determined based on the maximum coordinate of the pair of coordinates of the applicable node stored in the buffer and the larger coordinate of the pair of coordinates of the current node along an axis different from the applicable axis. The distance value represents the distance between the current node and the applicable node. Determine an increment value, the increment value indicating whether the distance value is greater than a threshold; as well as The context index is determined based on the incremental value; as well as Entropy decoding is performed on the planar position of the planar pattern using the determined context.