GPCC Planar Mode and Buffer Simplification
By storing the maximum coordinate of a node pair to determine context indices, the hardware requirements for G-PCC are reduced, improving the efficiency of point cloud encoding and decoding.
Patent Information
- Application Number
- JP2023519643
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-09-21
- Filing Date
- 2021-09-22
- Publication Date
- 2025-09-04
- Estimated Expiration
- 2041-09-22
AI Technical Summary
Conventional methods for determining context indices in geometry-based point cloud compression (G-PCC) require significant hardware resources due to the need to calculate Manhattan distances between nodes, leading to increased complexity and buffer size.
Storing the maximum coordinate of a pair of coordinates of an applicable node instead of the smaller coordinate, and using this to determine a context index based on a distance value and an increment value, reducing the hardware requirements for context derivation.
Reduces the complexity and size of the buffer needed for context derivation, enhancing the efficiency of point cloud encoding and decoding processes.
Smart Images

Figure 0007734188000022 
Figure 0007734188000023 
Figure 0007734188000024
Abstract
Description
[Technical Field]
[0001]
[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 each of which are incorporated 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.
[0002] FIELD OF THE DISCLOSURE
[0002] This disclosure relates to point cloud encoding and decoding. [Background technology]
[0003]
[0003] A point cloud is a collection of points in three-dimensional space. The points may correspond to points on an object in three-dimensional space. Thus, a point cloud can be used to represent the physical content of a three-dimensional space. Point clouds can have utility in a wide variety of situations. For example, a point cloud can be used in the context of an autonomous vehicle to represent the position of an object on a road. In another example, a point cloud can be used in the context of representing the physical content of an environment to place virtual objects in an augmented reality (AR) or mixed reality (MR) application. Point cloud compression is a process for encoding and decoding a point cloud. Encoding a point cloud can reduce the amount of data required to store and transmit the point cloud. Summary of the Invention
[0004]
[0004] Generally, this disclosure describes techniques related to contexts and buffers for a planar mode for Geometry Point Cloud Compression (G-PCC), such as the G-PCC (Geometry Point Cloud Compression) standard being developed by the 3DG (3DG) Group within the Motion Pictures Experts Group (MPEG). For example, a G-PCC coder (e.g., a G-PCC encoder or a G-PCC decoder) may store the maximum coordinate of a pair of coordinates of an applicable node. The applicable node may be the most recently coded node having the same position as the current node along an applicable axis. The pair of coordinates is for an axis different from the applicable axis. Furthermore, the G-PCC coder may determine a context for the planar mode plane position of the current node. The planar mode plane position indicates the position of a plane perpendicular to the applicable axis. As part of determining a context for the planar mode plane position, the G-PCC coder may determine a distance value representing the distance between the current node and the applicable node based on the maximum coordinate of the applicable node's coordinate pair and the larger coordinate of the current node's coordinate pair along an axis different from the applicable axis. The G-PCC coder may then determine an increment value indicating whether the distance value is greater than a threshold. The G-PCC coder may then determine a context index based on the increment value. The G-PCC coder may entropy code the planar mode plane position using the determined context.By storing the maximum of the applicable node's coordinates rather than two or more of the applicable node's coordinates, the complexity of the context derivation process and the size of the buffer may be reduced.
[0005] In one example, the present disclosure provides a method of encoding point cloud data, comprising storing in a buffer a maximum coordinate of a pair of coordinates of an applicable node rather than a lesser coordinate of the pair of coordinates of the applicable node, wherein the applicable node is a most-recently encoded node having the same position along an applicable axis as a current node. determining a context for a planar mode planar position of a current node from among a plurality of contexts, wherein the context for the planar mode planar position is a coordinate pair of the applicable node (applicable node), the coordinate pair being for an axis different from the applicable axis, wherein determining the context for the planar mode planar position comprises determining a context index indicating the context, wherein determining the context index comprises determining a distance value representing a distance between the current node and the applicable node based on a maximum coordinate of the coordinate pair of the applicable node stored in a buffer and a larger coordinate of the coordinate pair of the current node along the 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.
[0006]
[0006] In another example, the present disclosure describes a method for decoding point cloud data, the method comprising: storing in a buffer a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is a most-recently decoded node having a same position as the current node along the applicable axis, and the coordinate pair is for an axis other than the applicable axis; determining a context for a planar mode plane position of a current node from among a plurality of contexts, wherein determining a context for the planar mode plane position comprises determining a context index indicating the context, wherein determining the context index comprises determining a distance value representing a distance between the current node and the applicable node 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 the axis other than 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.
[0007]
[0007] In another example, the present disclosure provides a device for encoding point cloud data, comprising: one or more processors implemented in a circuit; a buffer configured to store a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, where the applicable node is a most recently encoded node having 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; wherein the one or more processors determine a context for a planar mode planar position of the current node from among a plurality of contexts; and wherein the one or more processors determine the context for the planar mode planar position from among a plurality of contexts. A device is described that is configured to determine, as part of determining, a context index indicative of the context, wherein one or more processors are configured to, as part of determining the context index, determine a distance value representing a distance between the current node and the applicable node based on a maximum coordinate of a pair of coordinates of the applicable node and a larger coordinate of 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 the context index based on the increment value.
[0008]
[0008] In another example, the present disclosure provides a device for decoding point cloud data, comprising: one or more processors implemented in a circuit; a buffer configured to store a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, where the applicable node is a most recently decoded node having 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; and one or more processors configured to determine a context for a planar mode planar position of the current node from among a plurality of contexts; A device is described that is configured to determine, as part of determining, a context index indicative of the context, wherein one or more processors are configured to, as part of determining the context index, determine a distance value representing a distance between the current node and the applicable node based on a maximum coordinate of a pair of coordinates of the applicable node and a larger coordinate of 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 the context index based on the increment value.
[0009]
[0009] In another example, the present disclosure describes a device for encoding point cloud data, comprising: means for storing a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node; means for determining a context for a planar mode planar position of a current node from among a plurality of contexts, where the applicable node is a most recently encoded node having the same position as the current node along the applicable axis, and the coordinate pair is for an axis different from the applicable axis; and means for entropy encoding the planar mode planar position using the determined context, wherein the means for determining a context index indicative of the context comprises means for determining a distance value representing a distance between the current node and the applicable node 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 the axis different from the applicable axis; 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.
[0010]
[0010] In another example, the present disclosure describes a device for decoding point cloud data, comprising: means for storing a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node; means for determining a context for a planar mode planar position of a current node from among a plurality of contexts, where the applicable node is a most recently decoded node having the same position as the current node along the applicable axis, and the coordinate pair is for an axis different from the applicable axis; and means for entropy decoding the planar mode planar position using the determined context, wherein the means for determining a context index indicative of the context comprises means for determining a distance value representing a distance between the current node and the applicable node 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 the axis different from the applicable axis; 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.
[0011] In another example, the disclosure is a computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to store in a buffer a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, where the applicable node is a most recently encoded node having a 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 for a planar mode planar position of a current node from among a plurality of contexts; and, wherein the instructions that, when executed, cause the one or more processors to determine a context for the planar mode planar position cause the one or more processors to generate a context index indicative of the context. a context index based on the determined context, wherein the instructions that cause one or more processors to determine a context index, when executed, cause the one or more processors to: determine a distance value representing a distance between the current node and the applicable node based on a maximum coordinate of a pair of coordinates of the applicable node and a larger coordinate of a pair of coordinates of the current node along an axis different from the applicable axis; determine an increment value that indicates whether the distance value is greater than a threshold; and determine a context index based on the increment value.
[0012]
[0012] In another example, the present disclosure provides a computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to store in a buffer the maximum coordinate of a pair of coordinates of an applicable node rather than the smaller coordinate of the pair of coordinates of the applicable node, where the applicable node is the most recently decoded node having 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; and determine a context for a planar mode planar position of the current node from among a plurality of contexts; A computer-readable storage medium is described herein that causes one or more processors to entropy decode the planar mode plane position using the determined context, wherein instructions that cause one or more processors to determine a context index indicative of the context, when executed, comprise instructions that cause the one or more processors to determine a context index indicative of the context, wherein the instructions that cause the one or more processors to determine the context index, when executed, comprise instructions that cause the one or more processors to determine a distance value representing a distance between a current node and an applicable node based on a maximum coordinate of a pair of coordinates of the applicable node stored in a buffer and a larger coordinate of a pair of coordinates of the current node along an axis different from the applicable axis, determine an increment value that indicates whether the distance value is greater than a threshold, and determine a context index based on the increment value.
[0013]
[0013] In another example, the present disclosure describes a method for coding point cloud data, comprising determining a context for a planar mode plane position from a plurality of contexts, wherein determining the context for the planar mode comprises determining a context index indicating the context without checking neighbor occupancy, entropy coding the planar mode plane position using the determined context, and coding at least one point in the point cloud data based on the planar mode plane position.
[0014]
[0014] In another example, the present disclosure describes a method for coding point cloud data, comprising determining a context for a planar mode plane position from a plurality of contexts, wherein determining the context for the planar mode comprises determining a context index indicating the context, wherein determining the context index comprises determining a distance value representing a distance between a current node and a most recently coded node position 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; entropy coding the planar mode plane position using the determined context; and coding at least one point in the point cloud based on the planar mode plane position.
[0015] In other examples, the present disclosure describes a device for processing point clouds, the device comprising one or more means for performing the methods of the present disclosure. The present disclosure also describes a computer-readable storage medium having stored thereon instructions that cause one or more processors to perform the methods of the present disclosure.
[0016] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will become apparent from the description, drawings, and claims. [Brief explanation of the drawings]
[0017] [Figure 1]
[0017] A block diagram illustrating an example encoding and decoding system that may implement the techniques of this disclosure. [Figure 2]
[0018] 1 is a block diagram illustrating an example geometry point cloud compression (G-PCC) encoder. [Figure 3]
[0019] FIG. 1 is a block diagram illustrating an exemplary G-PCC decoder. [Figure 4]
[0020] 1 is a conceptual diagram illustrating an exemplary plane occupancy in the vertical direction. [Figure 5]
[0021] 10 is a flowchart of an example operation for encoding a planar mode plane position, in accordance with one or more techniques of this disclosure. [Figure 6]
[0022] 10 is a flowchart of an example operation for decoding a planar mode plane position, in accordance with one or more techniques of this disclosure. [Figure 7]
[0023] FIG. 1 is a conceptual diagram illustrating an example range-finding system that may be used with one or more techniques of this disclosure. [Figure 8]
[0024] FIG. 1 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of the present disclosure may be used. [Figure 9]
[0025] FIG. 1 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of this disclosure may be used. [Figure 10]
[0026] FIG. 1 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of the present disclosure may be used. DETAILED DESCRIPTION OF THE INVENTION
[0018]
[0027] A point cloud is a collection of points in three-dimensional space. Generally, point cloud data includes any data for processing a point cloud, such as data representing a point cloud. The points may correspond to points on an object in three-dimensional space. Thus, point cloud data can be used to represent the physical content of a three-dimensional space. Point cloud data can be useful in a wide variety of situations. For example, point cloud data can be used in the context of autonomous vehicles to represent the position of an object on a road. In another example, point cloud data can be used in the context of representing the physical content of an environment to place virtual objects in an augmented reality (AR) or mixed reality (MR) application. Point cloud compression is a process for encoding and decoding point cloud data. Encoding point cloud data can reduce the amount of data required to store and transmit point cloud data. Geometry-based point cloud compression (G-PCC) is a technique for reducing the amount of data required to encode and store point cloud data.
[0019]
[0028] As part of encoding the point cloud data, the G-PCC encoder may generate an octree. Each node of the octree corresponds to a cuboid space. For ease of explanation, this disclosure may interchangeably refer to a node and the cuboid space corresponding to the node in some circumstances. A node in the octree can have zero or eight child nodes. In other examples, a node may be divided into child nodes according to other tree structures. A parent's child nodes correspond to equally sized cuboids within the cuboid corresponding to the parent node. The location of individual points of the point cloud may be signaled to the node corresponding to the cuboid containing the point. If a node does not contain any points of the point cloud, the node is said to be unoccupied. If a node is unoccupied, there may be no need to signal additional data regarding the node. Conversely, if a node contains one or more points of the point cloud, the node is said to be occupied.
[0020]
[0029] Planar mode is a technique that can improve the encoding or signaling of which nodes in an octree are occupied. Planar mode may be used when all occupied child nodes of a node are adjacent to the plane, e.g., located on one side of the plane associated with increasing coordinate values for a dimension orthogonal to the plane. For example, planar mode may be used for a node when all occupied child nodes of the node are above or below a horizontal plane passing through the center point of the node, or planar mode may be used for a node when all occupied child nodes of the node are on the nearer or farther side of a vertical plane passing through the center point of the node. The G-PCC encoder may signal a plane position syntax element for each of the x, y, and z dimensions. The plane position syntax element for the applicable dimension (e.g., the x, y, or z dimension) indicates whether the plane orthogonal to the applicable dimension is in the first position or the second position. When the plane is in the first position, the plane corresponds to the boundary of the node. When the plane is in the second position, the plane passes through the 3D center of the node. Thus, for the z dimension, a G-PCC encoder or decoder may code the vertical plane position of the plane mode at the node of the octree that represents the 3D position of the point in the point cloud.
[0021]
[0030] A G-PCC coder (e.g., a G-PCC encoder or a G-PCC decoder) may use arithmetic coding (e.g., context-adaptive binary arithmetic coding (CABAC)) to code a planar position syntax element. When a G-PCC coder uses arithmetic coding to code a planar position syntax element, the G-PCC coder determines a context index that indicates a context to use for arithmetic coding of the planar position syntax element. The context specifies the probability of a symbol used in arithmetic coding.
[0022]
[0031] Conventional techniques for determining a context index are associated with significant hardware requirements. For example, as part of determining a context index for coding a planar position in a plane orthogonal to the applicable axis, the G-PCC coder may determine a distance value indicating the Manhattan distance between the position of the current node and the most recently coded node along the applicable axis. The Manhattan distance is the sum of the absolute differences of the Cartesian coordinates of two points. The current node and the most recently coded node along the applicable axis are nodes having the same coordinate value as the applicable axis.
[0023]
[0032] To determine Manhattan distance, the G-PCC coder maintains, for each axis, a buffer for that axis that stores the coordinates for the other two axes of the most recently coded node along that axis. For example, if the axis is the x-axis, the buffer for the x-axis stores the y-axis and z-axis coordinates of the most recently coded node along the x-axis. Storing both of these coordinates of the most recently coded node along the current axis is associated with significant hardware requirements related to determining the context index used for arithmetic coding of planar position syntax elements.
[0024]
[0033] According to the techniques of this disclosure, the determination of distance values is modified to reduce the hardware requirements associated with determining a context index used for arithmetic coding of a planar position syntax element. For example, instead of using Manhattan distance when determining a context index for arithmetic coding of a position in a plane that passes through the current node and is orthogonal to the current axis, the distance value instead represents the distance from the applicable coordinate of the applicable node to the corresponding coordinate of the current node. The applicable node is the most recently coded node along the applicable axis (i.e., the most recently coded node having the same coordinate as the current node in the current axis). The applicable coordinate of the applicable node is the greater of the applicable node's coordinate for the inapplicable axis (i.e., an axis other than the applicable axis). The corresponding coordinate of the current node is associated with the same axis as the applicable coordinate of the applicable node.
[0025]
[0034] For example, assume the applicable axis is x, then the y coordinate of the current node is 15, the z coordinate of the current node is 20, the y coordinate of the applicable node is 25, and the z coordinate of the applicable node is 40. In this example, 40 is greater than 25, so the buffer for the current axis stores the value 40 as the value of the applicable coordinate of the applicable node, and does not store 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 applicable coordinates for the applicable axis are stored in the buffer, the amount of data stored in the buffer for the applicable axis can be reduced by half relative to previous methods of determining distance values.
[0026]
[0035] Thus, according to one or more techniques of this disclosure, a G-PCC coder (e.g., a G-PCC encoder or a G-PCC decoder) may store in a buffer the maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node. The applicable node is the most recently coded node having the same position as the current node along the applicable axis, and the coordinate pair is for an axis different from the applicable axis. The G-PCC coder may determine a context for a planar mode plane position of the current node from among multiple contexts. As part of determining the context for the planar mode plane position, the G-PCC coder may determine a context index indicating the context. As part of determining the context index, the G-PCC coder may determine a distance value representing the distance between the current node and the most recently coded node position having the same position as the current node along the axis. The G-PCC coder may determine the distance value based on the maximum coordinate of the pair of coordinates of the most recently coded node. The G-PCC coder may determine an increment value indicating whether the distance value is greater than a threshold. The G-PCC coder may then determine a context index based on the increment value. The G-PCC coder may entropy code (e.g., entropy encode or decode) the planar mode plane position using the determined context. For example, the G-PCC coder may perform a form of arithmetic coding such as context-adaptive binary arithmetic coding (CABAC).
[0027]
[0036] 1 is a block diagram illustrating an example encoding and decoding system 100 that may implement the techniques of this disclosure. The techniques of this disclosure are generally directed to coding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. In general, point cloud data includes any data for processing a point cloud. Coding may be effective in compressing and / or decompressing point cloud data.
[0028]
[0037] 1, 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. In particular, in the example of FIG. 1, source device 102 provides the point cloud data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 may comprise any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, terrestrial or marine vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, etc. In some cases, source device 102 and destination device 116 may be equipped for wireless communication.
[0029]
[0038] In the example of FIG. 1 , source device 102 includes data source 104, memory 106, G-PCC encoder 200, and output interface 108. Destination device 116 includes input interface 122, G-PCC decoder 300, memory 120, and data consumer 118. According to this disclosure, G-PCC encoder 200 of source device 102 and G-PCC decoder 300 of destination device 116 may be configured to apply techniques of this disclosure related to contexts and buffers for planar mode for G-PCC. Thus, 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 configurations. 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 within the same device.
[0030]
[0039] The system 100 shown in FIG. 1 is merely an example. In general, other digital encoding and / or decoding devices may implement the techniques of this disclosure related to contexts and buffers for planar modes for G-PCC. The source device 102 and the destination device 116 are merely examples of such devices, in which the source device 102 generates coded data for transmission to the destination device 116. This disclosure refers to a “coding” device as a device that performs coding (encoding and / or decoding) of data. Accordingly, the G-PCC encoder 200 and the G-PCC decoder 300 represent examples of coding devices, specifically, encoders and decoders, respectively. In some examples, the source device 102 and the destination device 116 may operate substantially symmetrically, such that each of the source device 102 and the destination device 116 includes encoding and decoding components. Thus, the system 100 may support unidirectional or bidirectional transmission between the source device 102 and the destination device 116, for example, streaming, playback, broadcasting, telephony, navigation, and other uses.
[0031]
[0040] Generally, the data source 104 represents a source of data (i.e., raw, unencoded point cloud data) and may provide a continuous series of “frames” of data to the G-PCC encoder 200, which encodes the data for the frames. The data source 104 of the source device 102 may include any of a variety of cameras or sensors, e.g., a 3D scanner or light detection and ranging (LIDAR) device, one or more video cameras, an archive containing previously captured data, and / or a point cloud capture device such as a data feed interface for receiving data from a data content provider. Alternatively or additionally, the point cloud data may be computer-generated from scanners, cameras, sensors, or other data. For example, the data source 104 may generate computer-graphics-based data as source data, or may generate a combination of live data, archived data, and computer-generated data. In each case, the G-PCC encoder 200 encodes the captured data, pre-captured data, or computer-generated data. The G-PCC encoder 200 may reorder the frames from the order in which they were received (sometimes referred to as "display order") into a coding order for coding. The G-PCC encoder 200 may generate one or more bitstreams including the encoded data. The source device 102 may then output the encoded data onto the computer-readable medium 110 via the output interface 108 for receipt and / or retrieval by, for example, the input interface 122 of the destination device 116.
[0032]
[0041] The memory 106 of the source device 102 and the memory 120 of the destination device 116 may represent general-purpose memory. In some examples, the memory 106 and the memory 120 may store raw data, e.g., raw data from the data source 104 and raw decoded data from the G-PCC decoder 300. Additionally or alternatively, the memory 106 and the memory 120 may store software instructions, e.g., executable by the G-PCC encoder 200 and the G-PCC decoder 300, respectively. While the memory 106 and the memory 120 are shown separate from the G-PCC encoder 200 and the G-PCC decoder 300 in this example, it should be understood that the G-PCC encoder 200 and the G-PCC decoder 300 may also include internal memory so as to be functionally similar or equivalent. Additionally, the memory 106 and the memory 120 may store encoded data, e.g., data output from the G-PCC encoder 200 and input to the G-PCC decoder 300. In some examples, portions of memory 106 and memory 120 may be allocated as one or more buffers for storing, for example, raw data, decoded data, and / or encoded data, such as buffers for storing coordinates of previously coded nodes, or for storing data used in point cloud coding. In some examples, memory 106 and memory 120 may store data representing a point cloud.
[0033]
[0042] The computer-readable medium 110 may represent any type of medium or device capable of transporting encoded data from the source device 102 to the destination device 116. In one example, the computer-readable medium 110 represents a communication medium for enabling the source device 102 to transmit encoded data directly to the destination device 116 in real time, for example, via a radio frequency network or a computer-based network. The output interface 108 may modulate a transmission signal including the encoded data, and the input interface 122 may demodulate a received transmission signal in accordance with a communication standard such as a wireless communication protocol. The communication medium may comprise any wireless or wired communication medium, such as the radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may 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 may include routers, switches, base stations, or any other equipment that may be useful in facilitating communication from the source device 102 to the destination device 116.
[0034]
[0043] In some examples, source device 102 may output encoded data from output interface 108 to storage device 112. 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 a hard drive, Blu-ray disc, DVD, CD-ROM, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded data.
[0035]
[0044] In some examples, source device 102 may output the encoded data to file server 114 or another intermediate storage device, which may store the encoded data generated by source device 102. Destination device 116 may access the stored data from file server 114 via streaming or download. File server 114 may be any type of server device capable of storing encoded data and transmitting the encoded data 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 through 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 the encoded data stored on file server 114. File server 114 and input interface 122 may be configured to operate according to a streaming transmission protocol, a download transmission protocol, or a combination thereof.
[0036]
[0045] Output interface 108 and input interface 122 may represent a wireless transmitter / receiver, a modem, a wired networking 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 in which output interface 108 and input interface 122 comprise wireless components, output interface 108 and input interface 122 may be configured to transfer data, such as encoded data, according to a cellular communication standard, such as 4G, 4G-LTE (Long Term Evolution), LTE Advanced, 5G, etc. In some examples in which output interface 108 comprises a wireless transmitter, output interface 108 and input interface 122 may be configured to transfer data, such as encoded data, according to other wireless standards, such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee), the Bluetooth standard, etc. In some examples, source device 102 and / or destination device 116 may include respective system-on-chip (SoC) devices. For example, the source device 102 may include an SoC device for performing functions attributed to the G-PCC encoder 200 and / or the output interface 108, and the destination device 116 may include an SoC device for performing functions attributed to the G-PCC decoder 300 and / or the input interface 122.
[0037]
[0046] The techniques of this disclosure may be applied to encoding and decoding in support of any of a variety of applications, such as communication between autonomous vehicles, communication between scanners, cameras, sensors, and processing devices such as local or remote servers, geographic mapping, or other applications.
[0038]
[0047] The input interface 122 of the destination device 116 receives the encoded bitstream from the computer-readable medium 110 (e.g., a communication medium, a storage device 112, a file server 114, etc.). The encoded bitstream may include signaling information defined by the G-PCC encoder 200 and also used by the G-PCC decoder 300, such as syntax elements having values that describe the characteristics and / or processing of coding units (e.g., slices, pictures, collections of pictures, sequences, 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 for presenting imagery based on the point cloud data.
[0039]
[0048] The G-PCC encoder 200 and the G-PCC decoder 300 may each 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 the techniques are implemented partially in software, a device may store instructions for the software in a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to implement the techniques of this disclosure. The G-PCC encoder 200 and the G-PCC decoder 300 may each be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (codec) in the respective device. A device including the G-PCC encoder 200 and / or the G-PCC decoder 300 may comprise one or more integrated circuits, microprocessors, and / or other types of devices.
[0040]
[0049] The G-PCC encoder 200 and the G-PCC decoder 300 may operate according to a coding standard such as the video point cloud compression (V-PCC) standard or the geometry point cloud compression (G-PCC) standard. This disclosure may generally refer to coding (e.g., encoding and decoding) of a picture to include the process of encoding or decoding data. An encoded bitstream generally includes a series of values for syntax elements that represent coding decisions (e.g., coding modes).
[0041]
[0050] This disclosure may generally refer to “signaling” certain information, such as syntax elements. The term “signaling” may generally refer to communication of values for syntax elements and / or other data used to decode encoded data. That is, G-PCC encoder 200 may signal values for syntax elements in a bitstream. Generally, signaling refers to generating values in a bitstream. As mentioned above, source device 102 may transport a bitstream to destination device 116 in substantially real time or non-real time, which may occur when storing syntax elements in storage device 112 for later retrieval by destination device 116.
[0042]
[0051] ISO / IEC MPEG (JTC1 / SC29 / WG11) is studying the potential need for a standard for point cloud coding techniques with compression capabilities significantly exceeding those of current methods, with the goal of producing such a standard. The group is working together on this exploration in a collaborative effort known as the 3-Dimensional Graphics Team (3DG) to evaluate compression technology designs proposed by experts in the field.
[0043]
[0052] Point cloud compression activity is categorized into two different approaches. The first approach is "video point cloud compression" (V-PCC), which segments a 3D object and projects the segments into multiple 2D planes (represented as "patches" in a 2D frame), which are further coded by a legacy 2D video codec, such as the High Efficiency Video Coding (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 collected point clouds).
[0044]
[0053] A point cloud includes a set of points in 3D space and may have attributes associated with the points. The attributes may include color information such as R, G, B, or Y, Cb, Cr, or reflectance information, or other attributes. Point cloud data may be captured by various cameras or sensors, such as LIDAR sensors and 3D scanners, or may also be computer-generated. Point cloud data is used in a variety of applications, including, but not limited to, architecture (modeling), graphics (3D models for visualization and animation), and the automotive industry (LIDAR sensors used to assist navigation).
[0045] "
[0054] The 3D space occupied by the point cloud data may be enclosed by a virtual bounding box. The positions of points in the bounding box may be represented with a certain precision, and therefore, the positions of one or more points may be quantized based on that precision. At the smallest level, the bounding box is divided into voxels, which are the smallest units of space represented by a unit cube. A voxel in a bounding box may be associated with zero, one, or more points. The bounding box may be divided into multiple cubic / rectangular regions, sometimes called tiles. Each tile may be coded into one or more slices. The division of the bounding box into slices and tiles may be based on the number of points in each section or other considerations (e.g., a particular region may be coded as a tile). The slice regions may be further divided using partitioning decisions similar to those in video codecs.
[0046]
[0055] Figure 2 provides an overview of a G-PCC encoder 200. Figure 3 provides an overview of a G-PCC decoder 300. The illustrated modules are logical and do not necessarily correspond one-to-one to the code implemented in the reference implementation of the G-PCC codec, i.e., the TMC13 test model software studied by ISO / IEC MPEG (JTC1 / SC29 / WG11).
[0047]
[0056] In both the G-PCC encoder 200 and the G-PCC decoder 300, the point cloud location is coded first. Attribute coding depends on the decoded geometry. For Category 3 data, the compressed geometry is typically represented as an octree from the root down to the leaf level of individual voxels. For Category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree from the root down to the leaf level of blocks larger than a voxel) and a model that approximates the surface within each leaf of the pruned octree. In this way, both Category 1 and Category 3 data share the octree coding mechanism, but Category 1 data may additionally approximate the voxels within each leaf with a surface model. The surface model used is a triangulation with 1 to 10 triangles per block, resulting in a triangle soup. Therefore, Category 1 geometry codecs are known as Trisoup geometry codecs, and Category 3 geometry codecs are known as Octree geometry codecs.
[0048]
[0057] At each node in the octree, the occupancy is signaled (if not inferred) for one or more of its child nodes (up to eight nodes). Multiple neighborhoods are specified, including (a) nodes that share a face with the current octree node, (b) nodes that share a face, edge, or vertex with the current octree node, etc. Within each neighborhood, the occupancy of a node and / or its children can be used to predict the occupancy of the current node or its children. For sparsely distributed points in several nodes of the octree, the codec also supports a direct coding mode in which the 3D positions of the points are directly coded. A flag can be signaled to indicate that the direct mode is signaled. At the lowest level, the number of points associated with an octree node / leaf node can also be coded.
[0049]
[0058] When geometry is coded, attributes corresponding to the geometry points are coded. When there are multiple attribute points corresponding to one reconstructed / decoded geometry point, an attribute value representing the reconstructed point can be derived.
[0050]
[0059] There are three attribute coding methods in G-PCC: Region Adaptive Hierarchical Transform (RAHT) coding, interpolation-based hierarchical nearest neighbor prediction (prediction transform), and interpolation-based hierarchical nearest neighbor prediction with an update / lifting step (lifting transform). RAHT and lifting are typically used for category 1 data, while prediction is typically used for category 3 data. However, either method can be used for any data, and like the geometry codec in G-PCC, the attribute coding method used to code point cloud data is specified in the bitstream.
[0051]
[0060] The coding of attributes can be done in levels of detail (LOD), where each level of detail obtains a finer representation of the point cloud attributes. Each level of detail can be specified based on a distance metric from neighboring nodes or based on a sampling distance.
[0052]
[0061] In the G-PCC encoder 200, the residual obtained as the output of the coding method for the attribute is quantized. The quantized residual may be coded using context-adaptive arithmetic coding.
[0053]
[0062] In the example of FIG. 2, 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 geometry reconstruction unit 216, a RAHT unit 218, an LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, and an arithmetic coding unit 226.
[0054]
[0063] 2, the G-PCC encoder 200 may receive a set of locations and a set of attributes. The locations may include coordinates of points in the point cloud. The attributes may include information about the points in the point cloud, such as a color associated with the points in the point cloud.
[0055]
[0064] The coordinate transformation unit 202 may apply a transform to the coordinates of the points to convert the coordinates from the initial domain to the transformation domain. This disclosure may refer to the transformed coordinates as transformed coordinates. The color transformation unit 204 may apply a transform to convert the color information of the attributes to a different domain. For example, the color transformation unit 204 may convert the color information from the RGB color space to the YCbCr color space.
[0056]
[0065] Further, in the example of FIG. 2, the voxelization unit 206 may voxelize the transformed coordinates. Voxelizing the transformed coordinates may include quantization and removing some points of the point cloud. In other words, multiple points of the point cloud may be contained within a single "voxel" and then treated as one point in some respects. Further, the octree analysis unit 210 may generate an octree based on the voxelized transformed coordinates. Additionally, in the example of FIG. 2, the surface approximation analysis unit 212 may analyze the points to potentially determine a surface representation of the set of points. The arithmetic coding unit 214 may entropy code syntax elements representing the octree and / or surface information determined by the surface approximation analysis unit 212. The G-PCC encoder 200 may output these syntax elements in the geometry bitstream 203.
[0057]
[0066] The geometry reconstruction unit 216 may reconstruct transformation coordinates of points in the point cloud based on the octree, data indicating the surface determined by the surface approximation analysis unit 212, and / or other information. The number of transformation coordinates reconstructed by the geometry reconstruction unit 216 may differ from the original number of points in the point cloud due to voxelization and surface approximation. This disclosure may refer to the obtained points as reconstructed points. The attribute transfer unit 208 may transfer attributes of the original points of the point cloud to the reconstructed points of the point cloud.
[0058]
[0067] Further, the RAHT unit 218 may apply RAHT coding to the attributes of the reconstructed points. Alternatively or additionally, the LOD generation unit 220 and the lifting unit 222 may apply LOD processing and lifting, respectively, to the attributes of the reconstructed points. The RAHT unit 218 and the lifting unit 222 may generate coefficients based on the attributes. The coefficient quantization unit 224 may quantize the coefficients generated by the RAHT unit 218 or the lifting unit 222. The arithmetic coding unit 226 may apply arithmetic coding to syntax elements representing the quantized coefficients. The G-PCC encoder 200 may output these syntax elements in the attribute bitstream 205.
[0059]
[0068] In the example of Figure 3, the G-PCC decoder 300 may include a geometry 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 geometry 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.
[0060]
[0069] The G-PCC decoder 300 may obtain the geometry bitstream 203 and the attribute bitstream 205. The geometry arithmetic decoding unit 302 of the decoder 300 may apply arithmetic decoding (e.g., context-adaptive binary arithmetic coding (CABAC) or other types of arithmetic decoding) to the syntax elements in the geometry bitstream 203. Similarly, the attribute arithmetic decoding unit 304 may apply arithmetic decoding to the syntax elements in the attribute bitstream 205.
[0061]
[0070] As described above, the G-PCC encoder 200 and the G-PCC decoder 300 may apply CABAC encoding and decoding to the values of syntax elements. To apply CABAC encoding to a syntax element, the G-PCC encoder 200 may binarize the value of the syntax element to form a series of one or more bits called a “bin.” Additionally, the G-PCC encoder 200 may identify a coding context. The coding context may identify the probability of a bin having a particular value. For example, the coding context may indicate a 0.7 probability of coding a 0-valued bin and a 0.3 probability of coding a 1-valued bin. After identifying the coding context, the G-PCC encoder 200 may divide the interval into a lower subinterval and an upper subinterval. One of the subintervals may be associated with a value of 0, and the other subinterval may be associated with a value of 1. The width of the subinterval may be proportional to the probability indicated for the associated value by the identified coding context. If a bin of a syntax element has a value associated with a lower subinterval, the encoded value may be equal to the lower boundary of the lower subinterval. If the same bin of a syntax element has a value associated with an upper subinterval, the encoded value may be equal to the lower boundary of the upper subinterval. To encode the next bin of the syntax element, G-PCC encoder 200 may repeat these steps using an interval that is the subinterval associated with the value of the coded bit. When G-PCC encoder 200 repeats these steps for the next bin, G-PCC encoder 200 may use modified probabilities based on the probabilities indicated by the identified coding context and the actual value of the coded bin.
[0062]
[0071] When the G-PCC decoder 300 performs CABAC decoding on the value of the syntax element, the G-PCC decoder 300 may identify a coding context. The G-PCC decoder 300 may then divide the interval into a lower subinterval and an upper subinterval. One of the subintervals may be associated with the value 0, and the other subinterval may be associated with the value 1. The width of the subinterval may be proportional to the probability indicated for the associated value by the identified coding context. If the encoded value is within the lower subinterval, the G-PCC decoder 300 may decode the bin having the value associated with the lower subinterval. If the encoded value is within the upper subinterval, the G-PCC decoder 300 may decode the bin having the value associated with the upper subinterval. To decode the next bin of the syntax element, the G-PCC decoder 300 may repeat these steps using the interval that is the subinterval containing the encoded value. When the G-PCC decoder 300 repeats these steps for the next bin, it may use modified probabilities based on the identified coding context and the probabilities indicated by the decoded bin. The G-PCC decoder 300 may then multi-value the bin to restore the values of the syntax elements.
[0063]
[0072] The octree synthesis unit 306 may synthesize an octree based on syntax elements parsed from the geometry bitstream 203. In cases where surface approximation is used in the geometry bitstream 203, the surface approximation synthesis unit 310 may determine a surface model based on the syntax elements parsed from the geometry bitstream 203 and based on the octree.
[0064]
[0073] Furthermore, the geometry reconstruction unit 312 may perform the reconstruction to determine the coordinates of the points in the point cloud. The inverse coordinate transformation unit 320 may apply an inverse transformation to the reconstructed coordinates to transform the reconstructed coordinates (positions) of the points in the point cloud data from the transformed domain back to the original domain.
[0065]
[0074] 3, the inverse quantization unit 308 may inverse quantize the attribute values, which may be based on syntax elements obtained from the attribute bitstream 205 (e.g., including syntax elements decoded by the attribute arithmetic decoding unit 304).
[0066]
[0075] Depending on how the attribute values are encoded, the RAHT unit 314 may perform RAHT coding to determine color values for the points of the point cloud based on the dequantized attribute values. Alternatively, the LOD generation unit 316 and the inverse lifting unit 318 may determine color values for the points of the point cloud using level-of-detail-based techniques.
[0067]
[0076] 3, the inverse color transform unit 322 may apply an inverse color transform to the color values. The inverse color transform may be the inverse of the color transform applied by the color transform unit 204 of the encoder 200. For example, the color transform unit 204 may convert the color information from the RGB color space to the YCbCr color space. Thus, the inverse color transform unit 322 may convert the color information from the YCbCr color space to the RGB color space.
[0068]
[0077] The various units in FIGS. 2 and 3 are shown to aid in understanding the operations performed by the G-PCC encoder 200 and the G-PCC decoder 300. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit refers to a circuit that provides a specific function and is preconfigured with respect to the operations that may be performed. A programmable circuit refers to a circuit that is programmed to perform various tasks and to provide flexible functionality in the operations that may be performed. For example, a programmable circuit may execute software or firmware that causes the programmable circuit to operate in a manner defined by the software or firmware instructions. A fixed-function circuit may execute software instructions (e.g., to receive or output parameters), but the types of operations that the fixed-function circuit performs are generally invariant. In some examples, one or more of the units may be separate circuit blocks (fixed function or programmable), and in some examples, one or more of the units may be an integrated circuit.
[0069]
[0078] The surface approximation analysis unit 212 and the RAHT unit 218 in Figure 2 and the surface approximation synthesis unit 310 and the RAHT unit 218 in Figure 3 are options commonly used for data in Category 1. The LOD generation unit 220 and the lifting unit 222 in Figure 2 and the LOD generation unit 316 and the inverse lifting unit 318 in Figure 3 are options commonly used for data in Category 3. All other modules are common between Category 1 and Category 3.
[0070]
[0079] As described above, the location of individual points in a point cloud may be encoded relative to the node that contains the point. In some examples, the location of a point in a node may be encoded using inferential direct coding mode (IDCM). When a point is signaled using IDCM, the G-PCC encoder 200 encodes a point offset that indicates the offset of the point in a particular dimension (e.g., vertical dimension, horizontal dimension, lateral dimension, etc.) relative to the origin of the node. The point offset may be referred to as a point position offset. The G-PCC coder may determine a context and use the context in the arithmetic coding of the point offset.
[0071]
[0080] The planar coding mode (i.e., planar mode) was adopted at the 128th MPEG Conference in Geneva, Switzerland. The angular coding mode (i.e., angular mode) was adopted at the 129th MPEG Conference in Brussels, Belgium. The angular coding mode can improve the coding efficiency of the planar mode by using the sensor characteristics of a typical LIDER sensor. The angular coding mode can optionally be used in conjunction with the planar coding mode to improve the coding of the vertical (z) plane position syntax element by using knowledge of the position and angle at which the laser beam is sensed in a typical LIDER sensor. Additionally, the angular coding mode can optionally be used to improve the coding of the vertical z position bits in the IDCM. The description of angular modes in the following sections is based on the original MPEG contributions (Sebastien Lasserre, Jonathan Taquet, "An improvement of the planar coding mode [related to CE 13.22]", ISO / IEC JTC1 / SC29 / WG11 MPEG / m50642, Geneva, Switzerland, October 2019 and Sebastien Lasserre, Jonathan Taquet, "CE 13.22 Report on Angular Modes [related to GPCC]", 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, video conference, July 2020 (hereafter w19522)).
[0072]
[0081] Figure 4 is a conceptual diagram illustrating exemplary plane occupancy in the vertical direction. In the example of Figure 4, node 400 is partitioned into eight child nodes. Child node 402 can be occupied or unoccupied. In the example of Figure 4, occupied child nodes are shaded. When one or more child nodes 402A-402D are occupied and none of child nodes 402E-402H are occupied, G-PCC encoder 200 may signal a planePosition syntax element with a value of 1 to indicate that all occupied child nodes are adjacent to the positive side of the plane (i.e., the side with increasing z coordinates) of node 400's minimum z coordinate. When one or more child nodes 402E-402H are occupied and none of child nodes 402A-402D are occupied, G-PCC encoder 200 may signal a planePosition syntax element with a value of 0 to indicate that all occupied child nodes are adjacent to the positive side of the plane of the midpoint z coordinate of node 400. In this way, the planePosition syntax element may indicate the vertical plane position of the planar mode at node 400.
[0073]
[0082] The azimuth coding mode (i.e., azimuth mode) was adopted at the 130th MPEG Video Conference. The azimuth coding mode is similar to the angular mode, extending the angular mode to the coding of the (x) and (y) planar position syntax elements of the planar mode and improving the coding of the x or y position bits in the IDCM. In a separate contribution at the 131st MPEG Video Conference, the number of contexts used in the azimuth mode was significantly reduced. Because of the similarity between the angular coding mode and the azimuth coding mode, "angular mode" and "angular coding mode" may also refer to the azimuth mode in the following sections.
[0074]
[0083] Only some nodes in an octree may be eligible to be coded using angular mode. The following text describes an exemplary process for determining whether a node is eligible to be coded using angular mode. 3.2 Planar coding mode 3.2.1 Node Eligibility for Planar Coding Mode The explicit coding of the occupied plane is adjusted. The array PlanarRate, with elements PlanarRate[k] for k=0..2, is an estimate of the probability that the node occupancies form a single plane perpendicular to the kth axis. The variable localDensity is an estimate of the average number of occupied children in a node. The variable NumNodesUntilPlanarUpdate counts the number of nodes that will be parsed before updating the PlanarRate and LocalDensity. At the start of parsing a geometry_octree syntax structure, PlanarRate and LocalDensity are initialized as follows:
[0075]
number
[0076] At the beginning of parsing each geometry_octree_node syntax structure, NumNodesUntilPlanarUpdate is decremented. If NumNodesUntilPlanarUpdate is less than 0, PlanarRate and LocalDensity are updated as follows:
[0077] The number of occupied sibling nodes is determined and used to update the LocalDensity estimate.
[0078]
number
[0079] - The number of nodes until the next update is:
[0080]
number
[0081] The occupancy information of the parent nodes is used to determine the existence of a single occupied plane along each axis and update the corresponding plane probability estimate, PlanarRate[k].
[0082]
number
[0083] At the start of parsing each geometry_octree_node syntax structure, it is determined, for each axis, whether the current node is eligible to signal planarity information. The output of this process is an array PlanarEligible with elements PlanarEligible[k], for k=0..2. First, PlanarRate is used to determine the ordering planeOrder[k] of the three planes from most to least likely according to Table 16. Then, PlanarEligible is set as follows:
[0084]
number
[0085] [Table 1]
[0086] Furthermore, the G-PCC coder may use a buffer to track the locations (e.g., coordinates) of previously coded nodes that were coded using planar mode. The locations (e.g., coordinates) of such previously coded nodes are stored in the buffer. The following text from w19522 describes that the G-PCC coder tracks the locations (e.g., coordinates) of previously coded nodes that were coded using planar mode: 3.2.2 Buffers that track closest nodes along an axis The arrays PlanarPrevPos, PlanarPlaneOffset, and IsPlanarNode record information about previously decoded geometry tree nodes for use in determining ctxIdx for the syntax element plane_position. When geometry_planar_enabled_flag is equal to 0 or planar_buffer_disabled_flag is equal to 1, the arrays are not used by the decoding process. In this process, the variable axisIdx is used to represent one of the three coded axes, and the variable axisPos represents the node's position along the axisIdx-th axis. The value of axisPos is in the range 0..0x3fff. The array IsPlanarNode with value IsPlanarNode[axisIdx][axisPos] indicates whether the most recently decoded node with axisIdx-th position component equal to axisPos is a plane in a plane perpendicular to the axisIdx-th axis. The array PlanarPrevPos with value PlanarPrevPos[axisIdx][axisPos][k] identifies the kth component of the most recently decoded node with axisIdxth position component equal to axisPos. [Note: for any value of axisIdx, only two of the three values of k are used.] The array PlanarPlaneOffset with value PlanarPlaneOffset[axisIdx][axisPos] indicates the value of plane_position[axisIdx] for the most recently decoded node with the axisIdx-th position component equal to axisPos. At the beginning of each geometry tree level, the elements of the arrays PlanarPrevPos and IsPlanarNode are initialized to 0. After decoding each geometry_planar_mode_data syntax structure with parameters childIdx and axisIdx, the arrays PlanarPrevPos, PlanarPlane and IsPlanarNode are updated as follows:
[0087] - The variable axisPos, which represents the position along the axisIdx-th axis, is derived as follows:
[0088]
number
[0089] - The array entry corresponding to the node is updated as follows:
[0090]
number
[0091]
[0085] The G-PCC coder may determine a context index for the is_planar_flag syntax element and may entropy code the is_planar_flag syntax element using the context indicated by the determined context index. The following text from w19522 describes a process for determining a context index for the is_planar_flag syntax element: 3.2.2 Determining the ctxIdx for the syntax element is_planar_flag The inputs to this process are:
[0092] - a variable childIdx that identifies the child of the current node, - a variable axisIdx that identifies the axis perpendicular to the plane, and - The position (sN,tN,vN) of the current node within the geometry tree level. The output of this process is the variable ctxIdx. The value of ctxIdx is set equal to axisIdx and no further processing is performed.
[0093]
[0086] Furthermore, the G-PCC coder may determine a context index for the planar mode plane position. The G-PCC coder may perform arithmetic coding on the planar mode plane position using the context indicated by the determined context index. The following text from W19522 describes the process for determining a context index for a planar mode plane position. The following is based on W19522 and uses the context index (to indicate deletion): <d> …< / d> to indicate tags and insertions … Note that this includes some adjustments corresponding to TMC13v11 (denoted using and ). 3.2.4 Determining ctxIdx for the syntax element plane_position The inputs to this process are:
[0094] - a variable axisIdx that identifies the axis perpendicular to the plane, and - The position (sN,tN,vN) of the current node within the geometry tree level. The output of this process is the variable ctxIdx. <d> When planar_buffer_disabled_flag is equal to 1, the value of ctxIdx is set equal to 0 and no further processing is performed by this process. Otherwise, the remainder of this section applies.< / d> The variable axisPos indicates the 14 least significant position bits of the current node along the axisIdx-th axis.
[0095]
number
[0096] The variable dist represents the Manhattan distance between the current node and the most recently decoded node position with the same value of axisPos along the axisIdx-th axis. It is derived as follows:
[0097]
number
[0098] The variable neighOccupied indicates whether there are occupied nodes that are both neighbors of the current node along the axisIdx-th axis. It is derived as follows:
[0099]
number
[0100] When planar_buffer_disabled_flag is equal to 1, the value IsPlanarNode[axisIdx][axisPos] is set equal to 1, and the values of dist and prevPlane[axisIdx][axisPos] are set equal to 0 (see TMC13v11). The context index ctxIdx is derived as follows:
[0101]
number
[0102]
[0087] In the text above, the value NeighbourPattern is a value that indicates the occupancy pattern of a neighborhood. Section 7.4.3.5 of w19522 describes the process for determining the value NeighbourPattern.
[0103] As previously identified, deriving a context index for coding the plane_position syntax element when the angular coding mode is not used for the current node involves significant complexity. For example, when the planar mode flag of the current node and tracking of the closest node to the current node for coding the planar position syntax element are used (e.g., when planar_buffer_disabled_flag is equal to 0), the TMC13v11 software uses 72 contexts (24 per axis) for coding the planar position syntax element (e.g., plane_position). When the planar mode flag of the current node and tracking of the closest node to the current node for coding the planar position syntax element are disabled (e.g., when planar_buffer_disabled_flag is equal to 1), the TMC13v11 software uses 12 contexts for coding the planar position syntax element. Another example of how deriving a context index for coding a planar position syntax element when the current node is not coded using an angular coding mode involves significant complexity: the planar buffer size (i.e., the size of the buffer used for storing the coordinates of previously coded nodes) used by the TMC13v11 software becomes extremely large (e.g., more than 700 kbits), which is too expensive for a hardware implementation of a G-PCC coder.
[0104]
[0089] This disclosure describes techniques that may address one or more of these problems. In other words, the techniques of this disclosure may reduce the complexity of deriving a context index for coding a planar position syntax element. In some examples, reducing this complexity may accelerate the process of encoding and decoding point cloud data. In some examples, reducing this complexity may reduce the cost of hardware implementation of a G-PCC coder by reducing the size of the planar buffer. One or more techniques and examples disclosed in this document may be applied independently or in combination.
[0105] According to a first exemplary technique of the present disclosure, the number of contexts used to code the planar mode plane position (e.g., plane_position syntax element) may be reduced by reducing the number of contexts per axis without checking the occupancy of neighboring nodes. In other words, when determining a context for coding the plane position of the current node, the G-PCC coder (e.g., G-PCC encoder 200 or G-PCC decoder 300) does not check whether any neighboring nodes of the current node are occupied. The following text describes modifications to w19522 according to the first exemplary technique of the present disclosure. In the following text, and throughout this disclosure, the deletion is referred to as <d> ...< / d> The insertion is marked with a tag. ... It is marked with a tag. Reduced context per axis for coding plane_position without checking occupancy of neighboring nodes Without checking neighbor occupancy, the context index ctxIdx is derived as follows:
[0106]
number
[0107] As shown in the text above, the G-PCC coder 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 is an occupied node adjacent to the current node along the axisIdx-th axis, both of which are adjacent to the current node. Because the G-PCC coder does not use the variable "neighOccupied" when determining the value of the context index, the total number of values that the context index can have is reduced.
[0108] According to a second exemplary technique of the present disclosure, the planar buffer size (i.e., the size of the buffer (i.e., planar buffer) that stores the coordinates of previously coded nodes for the purpose of coding the planar position of the node) may be reduced by reducing the bit depth of the coordinates stored in the buffer. Reducing the bit depth of the coordinates reduces the number of bits of the previous node position to be stored in the planar buffer. The following text shows modifications to w19522 according to the second exemplary technique of the present disclosure:
[0109]
number
[0110]
[0093] In an alternative version, the second exemplary technique of this disclosure may be implemented as follows.
[0111]
number
[0112]
[0094] In this example, the following bits are held: ... <d> b9 b8< / d> b7 b6 b5 b4 b3 <d> b2 b1 b0< / d> This is an alternative to the following given in w19522: ...<d> b9 b8< / d> b7 b6 b5 b4 b3 b2 b1 <d> b0< / d>
[0095] Thus, in a second exemplary technique of the present disclosure, a G-PCC coder (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 previously coded node and discard the three least significant bits (e.g., bits b0, b1, b2) of the coordinates of the previously coded node.
[0113] For example, in the second exemplary technique, the G-PCC coder may apply a bit mask (e.g., bit mask 0xf8) to retain the fourth through eighth most significant bits. Then, the G-PCC coder may apply a right shift operation (e.g., right shift operation >> 3) to discard (or delete) the three least significant bits. Because the right shift operation may be applied to the result obtained after applying the bit mask, the G-PCC coder may obtain a bit sequence carrying the fourth through eighth most significant bits retained over the five least significant bit positions. Because the G-PCC coder may have to reduce the bit depth of the coordinates of the previous node position, the complexity of the context derivation process is reduced.
[0114] In a third exemplary technique of the present disclosure, the number of contexts per axis for coding a planar position is reduced through the use of a simplified distance criterion. For example, according to the third exemplary technique of the present disclosure, the distance criterion in context derivation is as follows:
[0115]
number
[0116]
[0098] In the above text, "value" is a numerical value. Therefore, in the third exemplary technique, the increment value (distCtxInc) can only have a value of 0 or 1. In contrast, if the increment value is determined as (dist>1)+(dist>8), the increment value has a range from 0 to 2. Because the increment value has a smaller range in the third exemplary technique, the context index (ctxIdx) also has a smaller range. Therefore, the number of contexts used to code the plane position is reduced in the third exemplary technique, thereby resulting in reduced complexity of the context derivation process.
[0117] In a fourth exemplary technique of the present disclosure, the planar buffer size is reduced, for example, by storing the maximum value of the previous node position coordinate instead of multiple coordinates of the previously coded node. For example, in w19522, the following coordinate values of the previously coded node are stored in the planar buffer (e.g., PlanarPrevPos) as follows:
[0118]
number
[0119] Furthermore, in w19522, the coordinate (axisPos) of the current node along the applicable axis (i.e., the axis perpendicular to the plane whose position is indicated by the planar position syntax element) is determined as follows:
[0120]
number
[0121] In w19522, the distance variable (dist) is calculated as follows, where axisIdx is the index of the applicable axis:
[0122]
number
[0123]
[0100] Note that in the calculation of dist, only coordinates with axisIdx different from the current axisIdx (i.e., the index of the applicable axis) are used and stored in the planar buffer. For example, if axisIdx is equal to 2, the G-PCC coder uses two coordinate values stored in the planar buffer with axisIdx equal to 0 and 1, respectively, to calculate dist. According to the fourth exemplary technique of the present disclosure, the G-PCC coder stores only the maximum coordinate of the coordinates of previously coded nodes in the planar buffer, which results in the following calculation of dist:
[0124]
number
[0125] In this way, the fourth exemplary technique of the present disclosure may reduce the storage requirements for the coordinates of previously coded nodes by half. Although the fourth exemplary technique of the present disclosure has been described with respect to determining values in a planar buffer using the process of w19522, the values in the planar buffer may be determined using the process described with respect to the second exemplary technique of the present disclosure. Furthermore, the distance values determined in the fourth exemplary technique of the present disclosure may be used in the processes for determining a context increment (distCtxInc) and a context index (ctxIdx) described in the first and third exemplary techniques of the present disclosure.
[0126] 5 is a flowchart of an example operation for encoding a planar mode plane position according to one or more techniques of the present disclosure. For example, the operation shown in the example of FIG. 5 is according to at least the fourth example technique of the present disclosure. The flowchart of the present disclosure is provided as an example. Other examples according to the techniques of the present disclosure may include more, fewer, or different actions.
[0127] 5, the G-PCC encoder 200 may store in a buffer (e.g., a planar buffer) the maximum coordinate of the applicable node's coordinate pair (i.e., the larger coordinate of the coordinate pair) rather than the smaller coordinate of the applicable node's coordinate pair (500). The applicable node is the most recently encoded node having the same position as the current node along the applicable axis, and the coordinate pair is for an axis different from the applicable axis. In some examples, such as examples consistent with the second technique of this disclosure, when storing the maximum coordinate of the applicable node's coordinate pair, the fourth through eighth most significant bits of the maximum applicable node's coordinate are retained and the three least significant bits of the maximum applicable node's coordinate are discarded.
[0128]
[0104] Furthermore, the G-PCC encoder 200 may determine a context for the planar mode plane position of the current node from among multiple contexts (502). The planar mode plane position is a position on a plane orthogonal to the applicable axis. As part of determining the context for the planar mode plane position, the G-PCC encoder 200 may determine a context index indicating the context (504). As part of determining the context index, the G-PCC encoder 200 may determine a distance value representing the distance between the current node and the most recently encoded node position having the same position along the axis 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 (506). For example, the G-PCC encoder 200 may determine the distance value as follows:
[0129]
number
[0130] In the text above, PlanarPrevPos[axisIdx][axisPos][k] denotes the maximum coordinate among the coordinates of the applicable nodes on k (i.e., the closest, most recently coded node along the applicable axis indicated by axisPos). Because only the maximum coordinate among the coordinates of the applicable nodes is stored in PlanarPrevPos, only one of the values of PlanarPrevPos[axisIdx][axisPos][k], where k is 0...2, can have a non-zero value. Thus, two slots in PlanarPrevPos[axisIdx][axisPos] are zero, and one slot in PlanarPrevPos[axisIdx][axisPos] stores the maximum coordinate among the coordinates of the applicable nodes. 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, only PlanarPrevPos[axisIdx][axisPos][1] can have a non-zero value. At the end of the "for" loop, the value a is equal to the greater of the pair of coordinates of the current node along the axis different from the applicable axis.
[0131] 5, the G-PCC encoder 200 may determine an increment value indicating whether the distance value is greater than a threshold (508). For example, the G-PCC encoder 200 may determine the increment value to be distCtxInc=(dist>1). In other words, the G-PCC encoder 200 may determine the increment value as equal to either 1 or 0 based on whether the distance value is greater than 1 or less than 1.
[0132] The G-PCC encoder 200 may determine a context index based on the increment value (510). For example, the G-PCC encoder 200 may determine the context index as ctxIdx = axisIdx + 6 × neighOccupied + 2 × distCtxInc + prevPlane + 1. In some examples, such as examples consistent with the first exemplary technique of this disclosure, the G-PCC encoder 200 may determine the context index as ctxIdx = axisIdx + 2 × distCtxInc + prevPlane + 1. Thus, in such examples, the G-PCC encoder 200 may determine the context index without checking the occupancy of neighbors.
[0133] G-PCC encoder 200 (e.g., arithmetic coding unit 214) may entropy encode the planar mode plane position using the determined context (512). For example, G-PCC encoder 200 may perform CABAC encoding on the syntax element indicating the planar mode plane position.
[0134] In some examples, the G-PCC encoder 200 may encode at least one point in the point cloud based on a planar mode plane position. For example, the G-PCC encoder 200 may encode a point of a current node using IDCM. More specifically, in this example, the G-PCC encoder 200 may determine a point offset syntax element indicating the offset of the point relative to the origin of the current node. The G-PCC encoder 200 may also determine a context for the point offset syntax element based on the planar mode plane position of the current node. The G-PCC encoder 200 may use the determined context to entropy code (e.g., CABAC code) the point offset syntax element.
[0135]
[0109] Figure 6 is a flowchart of an example operation for decoding a planar mode plane position according to one or more techniques of this disclosure. In the example of Figure 6, the G-PCC decoder 300 may store in a buffer the maximum coordinate of a pair of coordinates of the applicable node rather than the smaller coordinate of the pair of coordinates of the applicable node (600). The applicable node is the most recently decoded node having the same position as the current node along the applicable axis, and the coordinate pair is for an axis different from the applicable axis. In some examples, such as examples consistent with the second technique of this disclosure, when storing the maximum coordinate of the pair of coordinates of the applicable node, the fourth through eighth most significant bits of the maximum coordinate of the applicable node's coordinate are retained and the three least significant bits of the maximum coordinate of the applicable node's coordinate are discarded.
[0136]
[0110] Furthermore, the G-PCC decoder 300 may determine a context for the planar mode planar position of the current node from among multiple contexts (602). As part of determining the context for the planar mode planar position, the G-PCC decoder 300 may determine a context index indicating the context (604). As part of determining the context index, the G-PCC decoder 300 may determine a distance value representing the distance between the current node and the most recently encoded node position having the same position along the axis based on the maximum coordinate of the applicable node coordinate pair and the larger coordinate of the current node coordinate pair along an axis different from the applicable axis (606). The G-PCC decoder 300 may determine the distance value according to any of the examples provided elsewhere in this disclosure, including regarding how the G-PCC encoder 200 determines the distance value as described with respect to FIG. 5.
[0137] 6, the G-PCC decoder 300 may determine an increment value indicating whether the distance value is greater than a threshold (608). For example, the G-PCC decoder 300 may determine the increment value to be distCtxInc=(dist>1). In other words, the G-PCC decoder 300 may determine the increment value as equal to either 1 or 0 based on whether the distance value is greater than 1 or less than 1.
[0138] The G-PCC decoder 300 may determine a context index based on the increment value (610). For example, the G-PCC decoder 300 may determine the context index as ctxIdx = axisIdx + 6 × neighOccupied + 2 × distCtxInc + prevPlane + 1. In some examples, such as examples consistent with the first exemplary technique of this disclosure, the G-PCC decoder 300 may determine the context index as ctxIdx = axisIdx + 2 × distCtxInc + prevPlane + 1. Thus, in such examples, the G-PCC decoder 300 may determine the context index without checking neighbor occupancy.
[0139] The G-PCC decoder 300 (e.g., the geometry arithmetic decoding unit 302) may entropy decode the planar mode plane position using the determined context (612). For example, the G-PCC decoder 300 may perform CABAC decoding on the syntax element indicating the planar mode plane position.
[0140]
[0114] In some examples, the G-PCC decoder 300 may decode at least one point in the point cloud data based on the planar mode plane position. For example, the G-PCC decoder 300 may decode a point of a 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 may determine a context for the point offset syntax element based on the planar mode plane position of the current node. The G-PCC decoder 300 may use the determined context to entropy decode (e.g., CABAC decode) the point offset syntax element. In this manner, as part of reconstructing the point cloud data, the G-PCC decoder 300 may determine the position of one or more points of the point cloud data based on the planar mode plane position. Furthermore, the G-PCC decoder 300 may use the planar mode plane position of the current node to determine the occupancy of the current node's child nodes. Thus, the G-PCC decoder 300 can determine the location of points in the point cloud data in that the G-PCC decoder 300 can determine which child nodes contain points and which child nodes do not contain points.
[0141] FIG. 7 is a conceptual diagram illustrating an exemplary range-finding system 700 that may be used with one or more techniques of the present disclosure. In the example of FIG. 7, the range-finding 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 the light 706 as one or more laser beams. The light 706 may be at one or more wavelengths, such as infrared wavelengths or visible light wavelengths. In other examples, the light 706 is not coherent laser light. When the light 706 encounters an object, such as an object 708, the light 706 generates 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 directs the return light 710 to generate an image 712 of the object 708 on a sensor 704. The sensor 704 generates a signal 714 based on the image 712. Image 712 may comprise a set of points (eg, represented by dots in image 712 of FIG. 7).
[0142] In some examples, the illuminator 702 and the sensor 704 may be mounted on a rotating structure such that the illuminator 702 and the sensor 704 capture a 360-degree field of view of the environment. In other examples, the distance measurement system 700 may include one or more optical components (e.g., mirrors, collimators, diffraction gratings, etc.) that enable the illuminator 702 and the sensor 704 to detect the distance of an object within a certain range (e.g., up to 360 degrees). Although the example of FIG. 7 shows only a single illuminator 702 and sensor 704, the distance measurement system 700 may include multiple sets of illuminators and sensors.
[0143] In some examples, the illuminator 702 generates a structured light pattern. In such examples, the distance measurement system 700 may include multiple sensors 704 on which respective images of the structured light pattern are formed. The distance measurement system 700 may use disparity between the images of the structured light pattern to determine the distance to an object 708 from which the structured light pattern is backscattered. A structured light-based distance measurement system may have a high level of accuracy (e.g., accuracy in the sub-millimeter range) when the object 708 is relatively close to the sensor 704 (e.g., between 0.2 meters and 2 meters). This high level of accuracy may be useful in facial recognition applications, such as unlocking a mobile device (e.g., a mobile phone, a tablet computer, etc.), and for security applications.
[0144] In some examples, the distance measurement system 700 is a time-of-flight (ToF)-based system. In some examples where the distance measurement system 700 is a ToF-based system, the illuminator 702 generates pulses of light. In other words, the illuminator 702 may modulate the amplitude of the emitted light 706. In such examples, the sensor 704 detects returned light 710 from the pulses of light 706 generated by the illuminator 702. The distance measurement system 700 can then determine the distance to the object 708 from which the light 706 is backscattered based on the delay between when the light 706 is emitted and detected and the known speed of light in air. In some examples, rather than (or in addition to) modulating the amplitude of the emitted light 706, the illuminator 702 may modulate the phase of the emitted light 706. In such an example, the sensor 704 may detect the phase of the returning light 710 from the object 708 and determine the distance to a point on the object 708 using the speed of light and based on the time difference between when the illuminator 702 generated the light 706 at a particular phase and when the sensor 704 detected the returning light 710 at a particular phase.
[0145] In other examples, the point cloud data may be generated without using the illuminator 702. For example, in some examples, the sensor 704 of the distance measurement system 700 may include two or more optical cameras. In such examples, the distance measurement system 700 may use the optical cameras to capture stereo images of an environment including the object 708. The distance measurement system 700 may include a point cloud generator 720 that may calculate disparity between locations in the stereo images. The distance measurement system 700 may then use the disparity to determine distances to locations shown in the stereo images. From these distances, the point cloud generator 720 may generate the point cloud data.
[0146] 7, the point cloud generator 720 may generate point cloud data based on the signal 718 generated by the sensor 704. The distance measurement system 700 and / or the point cloud generator 720 may form part of the data source 104 (FIG. 1). Thus, the point cloud data generated by the distance measurement system 700 may be encoded and / or decoded according to any of the techniques of this disclosure.
[0147] FIG. 8 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of this disclosure may be used. In the example of FIG. 8, a vehicle 800 includes a distance measurement system 802. The distance measurement system 802 may be implemented in the manner described with respect to FIG. 8. Although not shown in the example of FIG. 8, the vehicle 800 may also include a data source, such as data source 104 (FIG. 1), and a G-PCC encoder, such as G-PCC encoder 200 (FIG. 1). In the example of FIG. 8, the distance measurement system 802 emits a laser beam 804 that reflects off a pedestrian 806 or other object in the road. The data source of the vehicle 800 may generate point cloud data based on a signal generated by the distance measurement system 802. The G-PCC encoder of the vehicle 800 may encode the point cloud data to generate a bitstream 808, such as geometry bitstream 203 (FIG. 2) and attribute bitstream 205 (FIG. 2). The bitstream 808 may contain many fewer bits than the unencoded point cloud data obtained by the G-PCC encoder.
[0148] An output interface of vehicle 800 (e.g., output interface 108 (FIG. 1)) may transmit bitstream 808 to one or more other devices. Bitstream 808 may include many fewer bits than the unencoded point cloud data obtained by the G-PCC encoder. Thus, vehicle 800 may be able to transmit bitstream 808 to other devices more quickly than the unencoded point cloud data. Additionally, bitstream 808 may require less data storage capacity.
[0149] In the example of FIG. 8, vehicle 800 may transmit bitstream 808 to another vehicle 810. Vehicle 810 may include a G-PCC decoder, such as G-PCC decoder 300 (FIG. 1). The G-PCC decoder of vehicle 810 may decode bitstream 808 to reconstruct point cloud data. Reconstructing the point cloud data may include determining coordinates of points of the point cloud data and / or determining attribute values of points of the point cloud data. Vehicle 810 may 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 therefore to begin slowing down, even before the driver of vehicle 810 recognizes, for example, that pedestrian 806 is on the road. Thus, in some examples, vehicle 810 may perform autonomous navigation operations based on the reconstructed point cloud data.
[0150] 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 the point cloud data along with other data (e.g., vehicle telemetry data generated by vehicle 800) to train an autonomous driving system. In another example, server system 812 may store bitstream 808 for subsequent reconstruction for forensic accident investigation (e.g., if vehicle 800 collides with pedestrian 806).
[0151]
[0125] Techniques of this disclosure may further reduce the complexity and hardware costs associated with determining a context for coding planar mode plane positions. For example, with respect to Figure 8, this may 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 costs of vehicle 800, 810 and server system 812.
[0152] FIG. 9 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of this disclosure may be used. Extended reality (XR) is a term used to cover a range of technologies, including augmented reality (AR), mixed reality (MR), and virtual reality (VR). In the example of FIG. 9, a user 900 is located at a first location 902. The user 900 is wearing an XR headset 904. As an alternative to the XR headset 904, the user 900 may use a mobile device (e.g., a mobile phone, a tablet computer, etc.). The XR headset 904 includes a depth detection sensor, such as a distance measurement system, that detects the position of a point on an object 906 at the location 902. A data source in the XR headset 904 may use signals generated by the depth detection sensor to generate point cloud data representing the object 906 at the location 902. The XR headset 904 may include a G-PCC encoder (e.g., the G-PCC encoder 200 of FIG. 1) configured to encode the point cloud data to generate a bitstream 908.
[0153] The XR headset 904 may transmit the bitstream 908 (e.g., via a network such as the Internet) to an XR headset 910 worn by a user 912 at a second location 914. The XR headset 910 may decode the bitstream 908 to reconstruct point cloud data. The XR headset 910 may use the point cloud data to generate an XR visualization (e.g., an AR, MR, or VR visualization) representing the object 906 at the location 902. Thus, in some examples, the user 912 may have a 3D immersive experience of the location 902, such as when the XR headset 910 generates a VR visualization. In some examples, the XR headset 910 may determine the position of a virtual object based on the reconstructed point cloud data. For example, the XR headset 910 may determine, based on the reconstructed point cloud data, that the environment (e.g., the location 902) includes a flat surface and then determine that a virtual object (e.g., a cartoon character) should be placed on the flat surface. The XR headset 910 may generate an XR visualization of the virtual object in the determined position. For example, the XR headset 910 may show a cartoon character sitting on a flat surface.
[0154]
[0128] The techniques of this disclosure may further reduce the complexity and hardware costs associated with determining a context for coding planar mode plane positions. For example, with respect to Figure 9, this may accelerate the ability of XR headset 904 to encode point cloud data, accelerate the ability of XR headset 910 to decode point cloud data, and reduce the cost of XR headsets 940 and 910.
[0155] FIG. 10 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of the present disclosure may be used. In the example of FIG. 10, a mobile device 1000, such as a mobile phone or tablet computer, includes a distance measurement system, such as a LIDAR system, that detects the positions of points on an object 1002 in the environment of the mobile device 1000. A data source of the mobile device 1000 may use signals generated by a depth detection sensor to generate point cloud data representing the object 1002. The mobile device 1000 may include a G-PCC encoder (e.g., the G-PCC encoder 200 of FIG. 1) configured to encode the point cloud data to generate a bitstream 1004. In the example of FIG. 10, the mobile device 1000 may transmit the bitstream to a remote device 1006, such as a server system or another mobile device. The remote device 1006 may decode the bitstream 1004 to reconstruct the point cloud data. The remote device 1006 may use the point cloud data for various purposes. For example, the remote device 1006 may use the point cloud data to generate a map of the environment of the mobile device 1000. For example, the remote device 1006 may generate a map of an interior of a building based on the reconstructed point cloud data. In another example, the remote device 1006 may generate imagery (e.g., computer graphics) based on the point cloud data. For example, the remote device 1006 may use points of the point cloud data as vertices of a polygon and use color attributes of the points as a basis for shading the polygon. In some examples, the remote device 1006 may use the reconstructed point cloud data for facial recognition or other security applications.
[0156]
[0130] The techniques of this disclosure may further reduce the complexity and hardware costs associated with determining a context for coding planar mode plane positions. For example, with respect to Figure 10, this may accelerate the ability of mobile device 1000 to encode point cloud data and may reduce the cost of mobile device 1000.
[0157]
[0131] The examples in the various aspects of the present disclosure may be used individually or in any combination.
[0158]
[0132] The following is a non-limiting list of examples consistent with one or more techniques of this disclosure.
[0159]
[0133] Aspect 1A: A method for coding point cloud data includes determining a context for a planar mode plane position from a plurality of contexts, wherein determining the context for the planar mode comprises determining a context index indicating the context without checking neighbor occupancy, entropy coding the planar mode plane position using the determined context, and coding at least one point in the point cloud based on the planar mode plane position.
[0160]
[0134] Aspect 2A: A method for coding point cloud data includes determining a context for a planar mode plane position from a plurality of contexts, wherein determining the context for the planar mode comprises determining a context index indicating the context, wherein determining the context index comprises determining a distance value representing a distance between a current node and a most recently coded node position 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; entropy coding the planar mode plane position using the determined context; and coding at least one point in the point cloud based on the planar mode plane position.
[0161]
[0135] Aspect 3A: The method described in aspect 2A, wherein the method further comprises storing a maximum value of the coordinates of the most recently coded nodes in a buffer, wherein determining the distance value comprises determining the distance value based on the maximum value of the coordinates of the most recently coded nodes stored in the buffer.
[0162] Aspect 4A: Planar Mode The method of any of aspects 2A or 3A, wherein determining a context for the planar position comprises determining a context index without checking neighbor occupancy.
[0163]
[0137] Aspect 5A: The method of any of Aspects 1A-4A, further comprising generating a point cloud.
[0164] Aspect 6A: A device for processing a point cloud, the device comprising one or more means for performing the method according to any of aspects 1A to 5A.
[0165] Aspect 7A: The device of aspect 6A, wherein the one or more means comprise one or more processors implemented in circuitry.
[0166] Aspect 8A: A device according to any of aspects 6A or 7A, further comprising a memory for storing data representing the point cloud.
[0167]
[0141] Aspect 9A: The device of any one of aspects 6A to 8A, comprising a decoder.
[0168]
[0142] Aspect 10A: The device of any one of aspects 6A to 9A, comprising an encoder.
[0169]
[0143] Aspect 11A: The device of any of Aspects 6A to 10A, further comprising a device for generating a point cloud.
[0170]
[0144] Aspect 12A: The device of any of Aspects 6A-11A, further comprising a display for presenting an image based on the point cloud.
[0171] Aspect 13A: A computer-readable storage medium storing instructions that, when executed, cause one or more processors to perform a method according to any of aspects 1A to 5A.
[0172]
[0146] Aspect 1B. A method for encoding point cloud data, comprising: storing in a buffer a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is a most recently encoded node having the same position as the current node along the applicable axis, the coordinate pair being for an axis other than the applicable axis; determining a context for a planar mode plane position of a current node from among a plurality of contexts, wherein determining a context for the planar mode plane position comprises determining a context index indicating the context, wherein determining the context index comprises determining a distance value representing a distance between the current node and the applicable node 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 other than the applicable axis; determining an increment value indicating whether the distance value is greater than a threshold; and determining a context index based on the increment value.
[0173] Aspect 2B. The method of Aspect 1B, further comprising encoding at least one point of the point cloud data based on a planar mode plane position.
[0174]
[0148] Aspect 3B. A method according to any of aspects 1B to 2B, wherein storing the maximum coordinate of the applicable node coordinate pair comprises retaining the fourth through eighth most significant bits of the maximum coordinate of the applicable node coordinate pair and discarding the three least significant bits of the maximum coordinate of the applicable node coordinate pair.
[0175]
[0149] Aspect 4B. A method as described in any of aspects 1B to 3B, wherein determining the incremental value comprises determining the incremental value as equal to either 1 or 0 based on whether the distance value is greater than 1 or less than 1.
[0176]
[0150] Aspect 5B. The method of any of Aspects 1B-3B, further comprising generating point cloud data.
[0177]
[0151] Aspect 6B. A method for decoding point cloud data, comprising: storing in a buffer a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is a most recently decoded node having the same position as the current node along the applicable axis, the coordinate pair being for an axis other than the applicable axis; determining a context for a planar mode plane position of a current node from among a plurality of contexts, wherein determining a context for the planar mode plane position comprises determining a context index indicating the context, wherein determining the context index comprises determining a distance value representing a distance between the current node and the applicable node 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 other than the applicable axis; determining an increment value indicating whether the distance value is greater than a threshold; and determining a context index based on the increment value.
[0178] Aspect 7B. The method of aspect 6B, further comprising decoding at least one point of the point cloud data based on the planar mode plane position.
[0179]
[0153] Aspect 8B. A method according to any of aspects 6B to 7B, wherein storing the maximum coordinate of the applicable node coordinate pair comprises retaining the fourth through eighth most significant bits of the maximum coordinate of the applicable node coordinate pair and discarding the three least significant bits of the maximum coordinate of the applicable node coordinate pair.
[0180]
[0154] Aspect 9B. A method according to any of aspects 6B to 8B, wherein determining the incremental value comprises determining the incremental value as equal to either 1 or 0 based on whether the distance value is greater than 1 or less than 1.
[0181]
[0155] Aspect 10B. 1. A device for encoding point cloud data, the device comprising: a buffer configured to store a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node; and one or more processors implemented in a circuit, wherein the applicable node is a node most recently encoded having the same position as the current node along the applicable axis, the coordinate pair being for an axis different from the applicable axis; wherein the one or more processors are configured to: determine a context for a planar mode planar position of the current node from among a plurality of contexts; and, as part of determining the context for the planar mode planar position, determine a context index indicating the context, and, as part of determining the context index, determine a distance value representing a distance between the current node and the applicable node 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 the 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.
[0182] Aspect 11B. The device of Aspect 10B, wherein the one or more processors are further configured to encode at least one point of the point cloud data based on a planar mode plane position.
[0183]
[0157] Aspect 12B. A device described in any of aspects 10B to 11B, wherein the one or more processors are configured to retain the fourth through eighth most significant bits of the maximum coordinate of the applicable node coordinate pair and discard the three least significant bits of the maximum coordinate of the applicable node coordinate pair as part of storing the maximum coordinate of the applicable node coordinate pair in the buffer.
[0184]
[0158] Aspect 13B. A device described in any of aspects 10B to 12B, wherein the one or more processors are configured to, as part of determining the incremental value, determine the incremental value as equal to either 1 or 0 based on whether the distance value is greater than 1 or less than 1.
[0185]
[0159] Aspect 14B. The device of any of Aspects 10B-13B, further comprising a display for presenting an image based on the point cloud data.
[0186]
[0160] Aspect 15B. The device of any of Aspects 10B-14B, further comprising a device for generating point cloud data.
[0187]
[0161] Aspect 16B. The device of Aspect 15B, wherein the one or more processors are configured to generate point cloud data based on signals from the LIDER device as part of generating the point cloud data.
[0188] Aspect 17B. The device of any of Aspects 10B-16B, wherein the device is one of a mobile phone or a tablet computer.
[0189]
[0163] Aspect 18B. The device of any one of Aspects 10B to 16B, wherein the device is a vehicle.
[0190]
[0164] Aspect 19B. The device of any one of Aspects 10B to 16B, wherein the device is an extended reality device.
[0191] Aspect 20B. The device of any of Aspects 10B-19B, wherein the device comprises an interface configured to transmit point cloud data.
[0192]
[0166] Aspect 21B. a buffer configured to store a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, where the applicable node is a most recently decoded node having the same position as the current node along the applicable axis, the coordinate pair being for an axis different from the applicable axis; and one or more processors implemented in a circuit, wherein the one or more processors are configured to: determine a context for a planar mode planar position of the current node from among a plurality of contexts; and, as part of determining the context for the planar mode planar position, determine a context index indicating the context, and, as part of determining the context index, the one or more processors are configured to: determine a distance value representing a distance between the current node and the applicable node 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 the 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.
[0193] Aspect 22B. The device of aspect 21B, wherein the one or more processors are further configured to decode at least one point of the point cloud data based on the planar mode plane position.
[0194]
[0168] Aspect 23B. A device described in any of aspects 21B to 22B, wherein the one or more processors are configured to retain the fourth through eighth most significant bits of the maximum coordinate of the applicable node coordinate pair and discard the three least significant bits of the maximum coordinate of the applicable node coordinate pair as part of storing the maximum coordinate of the applicable node coordinate pair in the buffer.
[0195]
[0169] Aspect 24B. A device described in any of aspects 21B to 23B, wherein the one or more processors are configured to, as part of determining the incremental value, determine the incremental value as equal to either 1 or 0 based on whether the distance value is greater than 1 or less than 1.
[0196]
[0170] Aspect 25B. A device described in any of aspects 21B to 24B, wherein the one or more processors are further configured to reconstruct point cloud data, wherein the one or more processors are configured to determine the position of one or more points of the point cloud data based on the planar mode plane position as part of reconstructing the point cloud data.
[0197]
[0171] Aspect 26B. The device of aspect 25B, wherein the one or more processors are further configured to generate a map of the interior of the building based on the reconstructed point cloud data.
[0198] Aspect 27B. The device of any of aspects 25B-26B, wherein the one or more processors are further configured to perform autonomous navigation operations based on the reconstructed point cloud data.
[0199]
[0173] Aspect 28B. A device described in any of aspects 25B to 27B, wherein the one or more processors are further configured to generate computer graphics based on the reconstructed point cloud data.
[0200]
[0174] Aspect 29B. The device described in aspect 28B, wherein the one or more processors are configured to determine a position of a virtual object based on the reconstructed point cloud data, and generate an extended reality (XR) visualization in which the virtual object is at the determined position.
[0201] Aspect 30B. The device of any one of aspects 21B to 29B, wherein the device is one of a mobile phone or a tablet computer.
[0202]
[0176] Aspect 31B. The device of any one of Aspects 21B to 29B, wherein the device is a vehicle.
[0203]
[0177] Aspect 32B. A device described in any one of aspects 21B to 29B, wherein the device is an extended reality device.
[0204]
[0178] Embodiment 33B. The device of any of embodiments 21B-32B, further comprising a display for presenting an image based on the point cloud data.
[0205]
[0179] Aspect 34B. A device for encoding point cloud data, comprising: means for storing a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node; where the applicable node is a most recently encoded node having the same position as the current node along the applicable axis, and the coordinate pair is for an axis other than the applicable axis; means for determining a context for a planar mode plane position of a current node from among a plurality of contexts; and wherein the means for determining a context for the planar mode plane position of the current node comprises means for determining a context index indicative of the context, the means for determining the context index comprising: means for determining a distance value representing a distance between the current node and the applicable node 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 other than the applicable axis; and means for entropy encoding the planar mode plane position using the determined context.
[0206]
[0180] Aspect 35B. A device for decoding point cloud data, comprising: means for storing a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node; where the applicable node is a most recently decoded node having the same position as the current node along the applicable axis, and the coordinate pair is for an axis other than the applicable axis; means for determining a context for a planar mode plane position of a current node from among a plurality of contexts; and wherein the means for determining a context for the planar mode plane position of the current node comprises: means for determining a context index indicative of the context, the means for determining the context index comprising: means for determining a distance value representing a distance between the current node and the applicable node 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 other than the applicable axis; and means for entropy decoding the planar mode plane position using the determined context.
[0207] Aspect 36B. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to: store in a buffer a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, where the applicable node is a 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 for a planar mode planar position of a current node from among a plurality of contexts; and, wherein the instructions that, when executed, cause the one or more processors to determine a context for a planar mode planar position, indicate a context to the one or more processors. a context index that determines a distance value representing a distance between the current node and the applicable node based on a maximum coordinate of a pair of coordinates of the applicable node and a larger coordinate of a pair of coordinates of the current node along an axis different from the applicable axis, determining an increment value that indicates whether the distance value is greater than a threshold, and determining a context index based on the increment value; and entropy encoding a planar mode plane position using the determined context.
[0208]
[0182] Aspect 37B. A computer-readable storage medium having stored thereon instructions which, when executed, cause one or more processors to store in a buffer the maximum coordinate of a pair of coordinates of an applicable node rather than the smaller coordinate of the pair of coordinates of the applicable node, where the applicable node is the most recently decoded node having 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; and determine a context for a planar mode planar position of the current node from among a plurality of contexts; a computer-readable storage medium for entropy decoding the planar mode plane position using the determined context; wherein the instructions for causing one or more processors to determine a context index indicating the context, when executed, comprise instructions for causing the one or more processors to determine a distance value representing a distance between the current node and the applicable node based on a maximum coordinate of a pair of coordinates of the applicable node and a larger coordinate of a pair of coordinates of the current node along an axis other than the applicable axis stored in a buffer;
[0209]
[0183] Aspect 1C. A method for encoding point cloud data, comprising: storing in a buffer a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is a most recently encoded node having the same position as the current node along the applicable axis, the coordinate pair being for an axis other than the applicable axis; determining a context for a planar mode plane position of a current node from among a plurality of contexts, wherein determining a context for the planar mode plane position comprises determining a context index indicating the context, wherein determining the context index comprises determining a distance value representing a distance between the current node and the applicable node 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 other than the applicable axis; determining an increment value indicating whether the distance value is greater than a threshold; and determining a context index based on the increment value.
[0210] Aspect 2C. The method of Aspect 1C, further comprising encoding at least one point of the point cloud data based on a planar mode plane position.
[0211]
[0185] Aspect 3C. The method of aspect 1C, wherein storing the maximum coordinate of the applicable node coordinate pair comprises retaining the fourth through eighth most significant bits of the maximum coordinate of the applicable node coordinate pair and discarding the three least significant bits of the maximum coordinate of the applicable node coordinate pair.
[0212]
[0186] Aspect 4C. The method of aspect 1C, wherein determining the incremental value comprises determining the incremental value as equal to either 1 or 0 based on whether the distance value is greater than 1 or less than 1.
[0213]
[0187] Aspect 5C. The method of aspect 1C, further comprising generating point cloud data.
[0214]
[0188] Aspect 6C. A method for decoding point cloud data, comprising: storing in a buffer a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is a most recently decoded node having the same position as the current node along the applicable axis, the coordinate pair being for an axis other than the applicable axis; determining a context for a planar mode plane position of a current node from among a plurality of contexts, wherein determining a context for the planar mode plane position comprises determining a context index indicating the context, wherein determining the context index comprises determining a distance value representing a distance between the current node and the applicable node 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 other than the applicable axis; determining an increment value indicating whether the distance value is greater than a threshold; and determining a context index based on the increment value.
[0215] Aspect 7C. The method of aspect 6C, further comprising decoding at least one point of the point cloud data based on the planar mode plane position.
[0216]
[0190] Aspect 8C. The method of aspect 6C, wherein storing the maximum coordinate of the applicable node coordinate pair comprises retaining the fourth through eighth most significant bits of the maximum coordinate of the applicable node coordinate pair and discarding the three least significant bits of the maximum coordinate of the applicable node coordinate pair.
[0217]
[0191] Aspect 9C. The method of aspect 6C, wherein determining the incremental value comprises determining the incremental value as equal to either 1 or 0 based on whether the distance value is greater than 1 or less than 1.
[0218]
[0192] Aspect 10C. 1. A device for encoding point cloud data, the device comprising: a buffer configured to store a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node; and one or more processors implemented in a circuit, wherein the applicable node is a node most recently encoded having the same position as the current node along the applicable axis, the coordinate pair being for an axis different from the applicable axis; wherein the one or more processors are configured to: determine a context for a planar mode planar position of the current node from among a plurality of contexts; and, as part of determining the context for the planar mode planar position, determine a context index indicating the context, and, as part of determining the context index, determine a distance value representing a distance between the current node and the applicable node 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 the 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.
[0219] Aspect 11C. The device of Aspect 10C, wherein the one or more processors are further configured to encode at least one point of the point cloud data based on a planar mode plane position.
[0220]
[0194] Aspect 12C. A device as described in aspect 10C, wherein the one or more processors are configured to retain the fourth through eighth most significant bits of the maximum coordinate of the applicable node coordinate pair and discard the three least significant bits of the maximum coordinate of the applicable node coordinate pair as part of storing the maximum coordinate of the applicable node coordinate pair in the buffer.
[0221]
[0195] Aspect 13C. A device as described in aspect 10C, wherein the one or more processors are configured to, as part of determining the incremental value, determine the incremental value as equal to either 1 or 0 based on whether the distance value is greater than 1 or less than 1.
[0222] Aspect 14C. The device of Aspect 10C, further comprising a display for presenting an image based on the point cloud data.
[0223] Aspect 15C. The device of Aspect 10C, further comprising a device for generating point cloud data.
[0224]
[0198] Aspect 16C. The device of Aspect 15C, wherein the one or more processors are configured to generate point cloud data based on signals from the LIDER device as part of generating the point cloud data.
[0225] Aspect 17C. The device of aspect 10C, wherein the device is one of a mobile phone or a tablet computer.
[0226] Aspect 18C. The device of Aspect 10C, wherein the device is a vehicle.
[0227]
[0201] Aspect 19C. A device according to Aspect 10C, wherein the device is an extended reality device.
[0228]
[0202] Aspect 20C. The device of aspect 10C, wherein the device comprises an interface configured to transmit point cloud data.
[0229]
[0203] Aspect 21C. a buffer configured to store a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, where the applicable node is a most recently decoded node having the same position as the current node along the applicable axis, the coordinate pair being for an axis different from the applicable axis; and one or more processors implemented in a circuit, wherein the one or more processors are configured to: determine a context for a planar mode planar position of the current node from among a plurality of contexts; and, as part of determining the context for the planar mode planar position, determine a context index indicating the context, and, as part of determining the context index, the one or more processors are configured to: determine a distance value representing a distance between the current node and the applicable node 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 the 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.
[0230] Aspect 22C. The device of aspect 21C, wherein the one or more processors are further configured to decode at least one point of the point cloud data based on the planar mode plane position.
[0231]
[0205] Aspect 23C. A device as described in aspect 21C, wherein the one or more processors are configured to retain the fourth through eighth most significant bits of the maximum coordinate of the applicable node coordinate pair and discard the three least significant bits of the maximum coordinate of the applicable node coordinate pair as part of storing the maximum coordinate of the applicable node coordinate pair in the buffer.
[0232]
[0206] Aspect 24C. A device as described in aspect 21C, wherein the one or more processors are configured to, as part of determining the incremental value, determine the incremental value as equal to either 1 or 0 based on whether the distance value is greater than 1 or less than 1.
[0233]
[0207] Aspect 25C. The device of Aspect 21C, wherein the one or more processors are further configured to reconstruct point cloud data, wherein the one or more processors are configured to determine the position of one or more points of the point cloud data based on the planar mode plane position as part of reconstructing the point cloud data.
[0234]
[0208] Aspect 26C. The device of aspect 25C, wherein the one or more processors are further configured to generate a map of the interior of the building based on the reconstructed point cloud data.
[0235] Aspect 27C. The device of aspect 25C, wherein the one or more processors are further configured to perform autonomous navigation operations based on the reconstructed point cloud data.
[0236]
[0210] Aspect 28C. The device of aspect 25C, wherein the one or more processors are further configured to generate computer graphics based on the reconstructed point cloud data.
[0237]
[0211] Aspect 29C. A device as described in aspect 28C, wherein the one or more processors are configured to determine a position of a virtual object based on the reconstructed point cloud data and generate an extended reality (XR) visualization in which the virtual object is at the determined position.
[0238] Aspect 30C. The device of aspect 21C, wherein the device is one of a mobile phone or a tablet computer.
[0239] Aspect 31C. A device according to Aspect 21C, wherein the device is a vehicle.
[0240]
[0214] Aspect 32C. The device of Aspect 21C, wherein the device is an extended reality device.
[0241]
[0215] Aspect 33C. The device of Aspect 21C, further comprising a display for presenting an image based on the point cloud data.
[0242]
[0216] Aspect 34C. A device for encoding point cloud data, comprising: means for storing a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node; where the applicable node is a most recently encoded node having the same position as the current node along the applicable axis, and the coordinate pair is for an axis other than the applicable axis; means for determining a context for a planar mode plane position of a current node from among a plurality of contexts; and wherein the means for determining a context for the planar mode plane position of the current node comprises means for determining a context index indicative of the context, the means for determining the context index comprising: means for determining a distance value representing a distance between the current node and the applicable node 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 other than the applicable axis; and means for entropy encoding the planar mode plane position using the determined context.
[0243]
[0217] Aspect 35C. A device for decoding point cloud data, comprising: means for storing a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node; where the applicable node is a most recently decoded node having the same position as the current node along the applicable axis, and the coordinate pair is for an axis other than the applicable axis; means for determining a context for a planar mode plane position of a current node from among a plurality of contexts; and wherein the means for determining a context for the planar mode plane position of the current node comprises: means for determining a context index indicative of the context, the means for determining the context index comprising: means for determining a distance value representing a distance between the current node and the applicable node 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 other than the applicable axis; and means for entropy decoding the planar mode plane position using the determined context.
[0244] Aspect 36C. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to store in a buffer a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, where the applicable node is a 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 determine a context for a planar mode planar position of a current node from among a plurality of contexts; wherein the instructions that, when executed, cause the one or more processors to determine a context for a planar mode planar position, indicate a context to the one or more processors. a context index that determines a distance value representing a distance between the current node and the applicable node based on a maximum coordinate of a pair of coordinates of the applicable node and a larger coordinate of a pair of coordinates of the current node along an axis different from the applicable axis, determining an increment value that indicates whether the distance value is greater than a threshold, and determining a context index based on the increment value; and entropy encoding a planar mode plane position using the determined context.
[0245]
[0219] Aspect 37C. A computer-readable storage medium having stored thereon instructions which, when executed, cause one or more processors to store in a buffer the maximum coordinate of a pair of coordinates of an applicable node rather than the smaller coordinate of the pair of coordinates of the applicable node, where the applicable node is the most recently decoded node having 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; and determine a context for a planar mode planar position of the current node from among a plurality of contexts; a computer-readable storage medium for entropy decoding the planar mode plane position using the determined context; wherein the instructions for causing one or more processors to determine a context index indicating the context, when executed, comprise instructions for causing the one or more processors to determine a distance value representing a distance between the current node and the applicable node based on a maximum coordinate of a pair of coordinates of the applicable node and a larger coordinate of a pair of coordinates of the current node along an axis other than the applicable axis stored in a buffer;
[0246]
[0220] In accordance with the above examples, it should be recognized that some acts or events of any of the techniques described herein may be performed in a different sequence, added, merged, or entirely excluded (e.g., not all described acts or events may be required to practice the techniques). Moreover, in some examples, acts or events may be performed simultaneously rather than sequentially, for example, through multithreaded processing, interrupt processing, or multiple processors.
[0247] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted via a computer-readable medium as one or more instructions or code and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which correspond to tangible media such as data storage media, or communication media, including any medium that facilitates transfer of a computer program from one place to another, for example according to a communication protocol. In this manner, computer-readable media may generally correspond to (1) tangible computer-readable storage media that are non-transitory, or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementing the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[0248]
[0222] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic 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 that can be accessed by a computer. Also, any connection is properly termed 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, the 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 transitory media, but instead cover non-transitory, tangible storage media. As used herein, disk and disc include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), and Blu-ray discs, where disks typically reproduce data magnetically and discs reproduce data optically with a laser. Combinations of the above should also be included within the scope of computer-readable media.
[0249]
[0223] The instructions may 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 circuitry. Accordingly, the terms "processor" and "processing circuitry" as used herein may refer to any of the above structures or any other structure suitable for implementing the techniques described herein. Furthermore, in some aspects, the functionality described herein may be provided in dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined codec. Also, the techniques may be fully implemented in one or more circuits or logic elements.
[0250] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chipsets). In this disclosure, various components, modules, or units are described to highlight functional aspects of devices configured to implement the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, the various units may be combined in a codec hardware unit or provided by a collection of interoperable hardware units, including one or more processors described above, along with suitable software and / or firmware.
[0251]
[0225] Various examples have been described. These and other examples are within the scope of the following claims. The inventions described in the claims of the present application as originally filed are set forth below. [C1] 1. A method for encoding point cloud data, comprising: storing in a buffer the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is the most recently coded 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 mode planar position of the current node from among a plurality of contexts; wherein determining the context for the planar mode plane position comprises determining a context index indicating the context, wherein determining the context index includes: determining a distance value representing a distance between the current node and the applicable node 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 the 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. Equipped with entropy coding the planar mode plane position using the determined context; and A method for providing the above. [C2] The method of C1, further comprising encoding at least one point of the point cloud data based on the planar mode plane position. [C3] Storing the maximum coordinate of the pair of coordinates of the applicable node may include: retaining the fourth through eighth most significant bits of the maximum coordinate of the pair of coordinates of the applicable nodes; and discarding the three least significant bits of the maximum coordinate of the pair of coordinates of the applicable nodes. The method of C1, comprising: [C4] The method of C1, wherein determining the increment value comprises determining the increment value as equal to either 1 or 0 based on whether the distance value is greater than or less than 1. [C5] The method of C1, further comprising generating the point cloud data. [C6] 1. A method for decoding point cloud data, comprising: storing in a buffer the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate 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 mode planar position of the current node from among a plurality of contexts; wherein determining the context for the planar mode plane position comprises determining a context index indicating the context, wherein determining the context index includes: determining a distance value representing a distance between the current node and the applicable node based on the maximum coordinate of the pair of coordinates of the applicable node and a larger coordinate of the pair of coordinates of the current node along the 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. Equipped with entropy decoding the planar mode plane position using the determined context; and A method for providing the above. [C7] The method of C6, further comprising decoding at least one point of the point cloud data based on the planar mode plane position. [C8] Storing the maximum coordinate of the pair of coordinates of the applicable node may include: retaining the fourth through eighth most significant bits of the maximum coordinate of the pair of coordinates of the applicable nodes; and discarding the three least significant bits of the maximum coordinate of the pair of coordinates of the applicable nodes. The method of C6, comprising: [C9] The method of C6, wherein determining the increment value comprises determining the increment value as equal to either 1 or 0 based on whether the distance value is greater than or less than 1. [C10] 1. A device for encoding point cloud data, comprising: a buffer configured to store the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate 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; one or more processors implemented in the circuit; wherein the one or more processors: determining a context for a planar mode planar position of the current node from among a plurality of contexts, wherein the one or more processors are configured to determine a context index indicating the context as part of determining the context for the planar mode planar position, and wherein the one or more processors, as part of determining the context index, determining a distance value representing a distance between the current node and the applicable node based on the maximum coordinate of the pair of coordinates of the applicable node and a larger coordinate of the pair of coordinates of the current node along the 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. configured to: entropy coding the planar mode plane position using the determined context; and A device configured to: [C11] The device of C10, wherein the one or more processors are further configured to encode at least one point of the point cloud data based on the planar mode plane position. [C12] The device described in C10, wherein the one or more processors are configured to retain the fourth through eighth most significant bits of the maximum coordinate of the pair of coordinates of the applicable node as part of storing the maximum coordinate of the pair of coordinates of the applicable node in the buffer, and discard the three least significant bits of the maximum coordinate of the pair of coordinates of the applicable node. [C13] The device of C10, wherein the one or more processors are configured, as part of determining the incremental value, to determine the incremental value as equal to either 1 or 0 based on whether the distance value is greater than or less than 1. [C14] The device of C10, further comprising a display for presenting an image based on the point cloud data. [C15] The device of C10, wherein the device is configured to generate the point cloud data. [C16] The device of C15, wherein the one or more processors are configured to generate the point cloud data based on signals from a LIDAR device as part of generating the point cloud data. [C17] The device of C10, wherein the device is one of a mobile phone or a tablet computer. [C18] The device of C10, wherein the device is a vehicle. [C19] The device of C10, wherein the device is an extended reality device. [C20] The device of C10, wherein the device comprises an interface configured to transmit the point cloud data. [C21] 1. A device for decoding point cloud data, comprising: a buffer configured to store the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is a 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; one or more processors implemented in the circuit; wherein the one or more processors: determining a context for a planar mode planar position of the current node from among a plurality of contexts, wherein the one or more processors are configured to determine a context index indicating the context as part of determining the context for the planar mode planar position, and wherein the one or more processors, as part of determining the context index, determining a distance value representing a distance between the current node and the applicable node based on the maximum coordinate of the pair of coordinates of the applicable node and a larger coordinate of the pair of coordinates of the current node along the 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. configured to: entropy decoding the planar mode plane position using the determined context; and A device configured to: [C22] The device of C21, wherein the one or more processors are further configured to decode at least one point of the point cloud data based on the planar mode plane position. [C23] The device described in C21, wherein the one or more processors are configured to retain the fourth through eighth most significant bits of the maximum coordinate of the pair of coordinates of the applicable nodes as part of storing the maximum coordinate of the pair of coordinates of the applicable nodes in the buffer, and discard the three least significant bits of the maximum coordinate of the pair of coordinates of the applicable nodes. [C24] The device of C21, wherein the one or more processors are configured, as part of determining the incremental value, to determine the incremental value as equal to either 1 or 0 based on whether the distance value is greater than or less than 1. [C25] the one or more processors are further configured to reconstruct the point cloud data; wherein the one or more processors are configured to determine, as part of reconstructing the point cloud data, positions of one or more points of the point cloud data based on the planar mode plane position. The device described in C21. [C26] The device of C25, wherein the one or more processors are further configured to generate a map of the interior of a building based on the reconstructed point cloud data. [C27] The device of C25, wherein the one or more processors are further configured to perform autonomous navigation operations based on the reconstructed point cloud data. [C28] The device of C25, wherein the one or more processors are further configured to generate computer graphics based on the reconstructed point cloud data. [C29] the one or more processors: determining a position of a virtual object based on the reconstructed point cloud data; and generating an extended reality (XR) visualization in which the virtual object is at the determined position; and 20. The device of claim 19, wherein the device is configured to: [C30] The device of C21, wherein the device is one of a mobile phone or a tablet computer. [C31] The device of C21, wherein the device is a vehicle. [C32] The device of C21, wherein the device is an extended reality device. [C33] The device of C21, further comprising a display for presenting an image based on the point cloud data. [C34] 1. A device for encoding point cloud data, comprising: means for storing the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is the most recently coded 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 for a planar mode planar position of the current node from among a plurality of contexts; wherein the means for determining the context for the planar mode planar position of the current node comprises means for determining a context index indicating the context, and the means for determining the context index comprises: means for determining a distance value representing a distance between the current node and the applicable node 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 the axis different from the applicable axis; means for determining an increment value indicative of whether the distance value is greater than a threshold value; means for determining the context index based on the increment value; Equipped with means for entropy coding the planar mode plane position using the determined context; 1. A device comprising: [C35] 1. A device for decoding point cloud data, comprising: means for storing a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is a most recently decoded 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; means for determining a context for a planar mode planar position of the current node from among a plurality of contexts, wherein the means for determining the context for the planar mode planar position of the current node comprises means for determining a context index indicating the context, and the means for determining the context index comprises: means for determining a distance value representing a distance between the current node and the applicable node 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 the axis different from the applicable axis; means for determining an increment value indicative of whether the distance value is greater than a threshold value; means for determining the context index based on the increment value; Equipped with means for entropy decoding the planar mode plane position using the determined context; 1. A device comprising: [C36] A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to: storing in a buffer the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is the most recently coded 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 mode planar position of the current node from among a plurality of contexts; wherein the instructions that cause the one or more processors to determine the context for the planar mode plane position comprise instructions that, when executed, cause the one or more processors to determine a context index that indicates the context, wherein the instructions that cause the one or more processors to determine the context index, when executed, cause the one or more processors to: determining a distance value representing a distance between the current node and the applicable node based on the maximum coordinate of the pair of coordinates of the applicable node and a larger coordinate of the pair of coordinates of the current node along the 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 coding the planar mode plane position using the determined context; and A computer-readable storage medium that causes the [C37] A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to: storing in a buffer the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate 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 mode planar position of the current node from among a plurality of contexts; wherein the instructions that cause the one or more processors to determine the context for the planar mode plane position comprise instructions that, when executed, cause the one or more processors to determine a context index that indicates the context, wherein the instructions that cause the one or more processors to determine the context index, when executed, cause the one or more processors to: determining a distance value representing a distance between the current node and the applicable node 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 the 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 mode plane position using the determined context; and A computer-readable storage medium that causes the
Claims
1. 1. A method for encoding point cloud data, comprising: storing in a buffer the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is the most recently coded 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 mode planar position of the current node from among a plurality of contexts; wherein determining the context for the planar mode plane position comprises determining a context index indicating the context, wherein determining the context index includes: determining a distance value representing a distance between the current node and the applicable node 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 the axis different from the applicable axis; determining an increment value indicative of whether the distance value is greater than a threshold; determining the context index based on the increment value; Equipped with entropy coding the planar mode plane position using the determined context; and A method for providing the above.
2. The method of claim 1 , further comprising encoding at least one point of the point cloud data based on the planar mode plane position.
3. Storing the maximum coordinate of the pair of coordinates of the applicable node may include: retaining the fourth through eighth most significant bits of the maximum coordinate of the pair of coordinates of the applicable node; and discarding the three least significant bits of the maximum coordinate of the pair of coordinates of the applicable node. The method of claim 1 , comprising:
4. 2. The method of claim 1, wherein determining the increment value comprises determining the increment value as equal to either 1 or 0 based on whether the distance value is greater than or less than 1.
5. The method of claim 1 , further comprising generating the point cloud data.
6. 1. A method for decoding point cloud data, comprising: storing in a buffer the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate 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 mode planar position of the current node from among a plurality of contexts; wherein determining the context for the planar mode plane position comprises determining a context index indicating the context, wherein determining the context index includes: determining a distance value representing a distance between the current node and the applicable node based on the maximum coordinate of the pair of coordinates of the applicable node and a larger coordinate of the pair of coordinates of the current node along the axis different from the applicable axis; determining an increment value indicative of whether the distance value is greater than a threshold; determining the context index based on the increment value; Equipped with entropy decoding the planar mode plane position using the determined context; and A method for providing the above.
7. The method of claim 6 , further comprising decoding at least one point of the point cloud data based on the planar mode plane position.
8. Storing the maximum coordinate of the pair of coordinates of the applicable node may include: retaining the fourth through eighth most significant bits of the maximum coordinate of the pair of coordinates of the applicable node; and discarding the three least significant bits of the maximum coordinate of the pair of coordinates of the applicable node. The method of claim 6 , comprising:
9. 7. The method of claim 6, wherein determining the increment value comprises determining the increment value as equal to either 1 or 0 based on whether the distance value is greater than or less than 1.
10. 1. A device for encoding point cloud data, comprising: a buffer configured to store the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate 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; one or more processors implemented in the circuit; wherein the one or more processors: determining a context for a planar mode planar position of the current node from among a plurality of contexts, wherein the one or more processors are configured to determine a context index indicating the context as part of determining the context for the planar mode planar position, and wherein the one or more processors, as part of determining the context index, determining a distance value representing a distance between the current node and the applicable node based on the maximum coordinate of the pair of coordinates of the applicable node and a larger coordinate of the pair of coordinates of the current node along the axis different from the applicable axis; determining an increment value indicative of whether the distance value is greater than a threshold; determining the context index based on the increment value; configured to: entropy coding the planar mode plane position using the determined context; and A device configured to:
11. 1. A device for decoding point cloud data, comprising: a buffer configured to store the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is a 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; one or more processors implemented in the circuit; wherein the one or more processors: determining a context for a planar mode planar position of the current node from among a plurality of contexts, wherein the one or more processors are configured to determine a context index indicating the context as part of determining the context for the planar mode planar position, and wherein the one or more processors, as part of determining the context index, determining a distance value representing a distance between the current node and the applicable node based on the maximum coordinate of the pair of coordinates of the applicable node and a larger coordinate of the pair of coordinates of the current node along the axis different from the applicable axis; determining an increment value indicative of whether the distance value is greater than a threshold; determining the context index based on the increment value; configured to: entropy decoding the planar mode plane position using the determined context; and A device configured to:
12. 1. A device for encoding point cloud data, comprising: means for storing the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is the most recently coded 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 for a planar mode planar position of the current node from among a plurality of contexts; wherein the means for determining the context for the planar mode planar position of the current node comprises means for determining a context index indicating the context, and the means for determining the context index comprises: means for determining a distance value representing a distance between the current node and the applicable node based on the maximum coordinate of the pair of coordinates of the applicable node and a larger coordinate of the pair of coordinates of the current node along the axis different from the applicable axis; means for determining an increment value indicative of whether the distance value is greater than a threshold value; means for determining the context index based on the increment value; Equipped with means for entropy coding the planar mode plane position using the determined context; 1. A device comprising:
13. 1. A device for decoding point cloud data, comprising: means for storing a maximum coordinate of a pair of coordinates of an applicable node rather than a smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is a most recently decoded 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; means for determining a context for a planar mode planar position of the current node from among a plurality of contexts, wherein the means for determining the context for the planar mode planar position of the current node comprises means for determining a context index indicating the context, and the means for determining the context index comprises: means for determining a distance value representing a distance between the current node and the applicable node based on the maximum coordinate of the pair of coordinates of the applicable node and a larger coordinate of the pair of coordinates of the current node along the axis different from the applicable axis; means for determining an increment value indicative of whether the distance value is greater than a threshold value; means for determining the context index based on the increment value; Equipped with means for entropy decoding the planar mode plane position using the determined context; 1. A device comprising:
14. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to: storing in a buffer the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate of the pair of coordinates of the applicable node, wherein the applicable node is the most recently coded 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 mode planar position of the current node from among a plurality of contexts; wherein the instructions that cause the one or more processors to determine the context for the planar mode plane position comprise instructions that, when executed, cause the one or more processors to determine a context index that indicates the context, wherein the instructions that cause the one or more processors to determine the context index, when executed, cause the one or more processors to: determining a distance value representing a distance between the current node and the applicable node based on the maximum coordinate of the pair of coordinates of the applicable node and a larger coordinate of the pair of coordinates of the current node along the axis different from the applicable axis; determining an increment value indicative of whether the distance value is greater than a threshold; determining the context index based on the increment value; and entropy coding the planar mode plane position using the determined context; and A computer-readable storage medium that causes the
15. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to: storing in a buffer the maximum coordinate of the pair of coordinates of the applicable node rather than the smaller coordinate 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 mode planar position of the current node from among a plurality of contexts; wherein the instructions that cause the one or more processors to determine the context for the planar mode plane position comprise instructions that, when executed, cause the one or more processors to determine a context index that indicates the context, wherein the instructions that cause the one or more processors to determine the context index, when executed, cause the one or more processors to: determining a distance value representing a distance between the current node and the applicable node 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 the axis different from the applicable axis; determining an increment value indicative of whether the distance value is greater than a threshold; determining the context index based on the increment value; and entropy decoding the planar mode plane position using the determined context; and A computer-readable storage medium that causes the
Citation Information
Patent Citations
Context determination for planar mode in octree-based point cloud coding
US10693492B1
Adaptive distance based point cloud compression
US20190311499A1
Angular mode syntax for tree-based point cloud coding
US20220351423A1
Methods and devices for binary entropy coding of point clouds
WO2019195920A1
Planar mode in octree-based point cloud coding
WO2020259978A1