Predictive geometry encoding and decoding in G-PCC

By reducing the number of context and context coding bins in G-PCC and using a single syntax element signaling to notify the absolute value of the secondary residual, the high computational complexity of G-PCC is solved, and the encoding and decoding efficiency is improved.

CN116325756BActive Publication Date: 2026-03-10QUALCOMM INC
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2021-09-28
Publication Date
2026-03-10

AI Technical Summary

Technical Problem

In G-PCC, existing technologies suffer from high computational complexity when using angle patterns for predictive geometry encoding and decoding, especially due to the large number of context coding bins used for signaling notification of secondary residuals, resulting in low encoding and decoding efficiency.

Method used

By reducing the number of context and/or context encoding bins to signal secondary residuals, and by using a single syntax element's prefix and suffix context set to encode and decode the absolute value of the secondary residual, encoding and decoding efficiency is improved.

Benefits of technology

It reduces the computational complexity of point cloud encoding and decoding, improves encoding and decoding efficiency, and reduces the number of context encoding bins.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116325756B_ABST
    Figure CN116325756B_ABST
Patent Text Reader

Abstract

Example methods for encoding point clouds include obtaining the value of the quadratic residual used for geometric encoding and decoding of the current prediction tree node of the point cloud; and encoding the value of the quadratic residual, wherein encoding the value includes: encoding the prefix bin of a syntax element using a first set of context-adaptive binary arithmetic encoding and decoding (CABAC) contexts, the syntax element having a value that is the absolute value of the specified quadratic residual minus 2; and encoding the suffix bin of the syntax element using a second set of contexts different from the first set of CABAC contexts.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references

[0002] This application claims priority to U.S. Application No. 17 / 449,003, filed September 27, 2021; U.S. Provisional Patent Application No. 63 / 088,831, filed October 7, 2020; and U.S. Provisional Patent Application No. 63 / 114,317, filed November 16, 2020, the entire contents of which are incorporated herein by reference. U.S. Patent Application No. 17 / 449,003, filed September 27, 2021, claims the benefit of U.S. Provisional Patent Application No. 63 / 088,831, filed October 7, 2020, and U.S. Provisional Patent Application No. 63 / 114,317, filed November 16, 2020. Technical Field

[0003] This disclosure relates to point cloud encoding and decoding. Background Technology

[0004] A point cloud is a collection of points in three-dimensional space. These points can correspond to points on objects within that space. Therefore, point clouds can be used to represent the physical content of three-dimensional space. Point clouds can be useful in a variety of situations. For example, point clouds can be used to represent the position of objects on a road in the context of an autonomous vehicle. In another example, point clouds can be used to represent the physical content of an environment in order to locate virtual objects in augmented reality (AR) or mixed reality (MR) applications. Point cloud compression is the process of encoding and decoding point clouds. Encoding point clouds can reduce the amount of data required for point cloud storage and transmission. Summary of the Invention

[0005] In general, this disclosure describes techniques for encoding and decoding nodes in point clouds, such as those used in the currently developing Geometric Point Cloud Compression (G-PCC) standard. However, the example techniques are not limited to the G-PCC standard. In some examples of G-PCC, the position coordinates of nodes (also called points) in a point cloud can be transformed to a (r, φ, i) domain where the node's position is represented by three parameters: radius r, azimuth φ, and laser index i. When performing predictive geometry encoding and decoding using an angle pattern in G-PCC, the G-PCC encoder can perform prediction in the (r, φ, i) domain. For example, the G-PCC encoder can determine the predicted position of a node and add that predicted position to the master residual data to determine the reconstructed position of the node. Therefore, in at least some examples, the master residual can be encoded and decoded in the (r, φ, i) domain. Encoding and decoding of r, φ, i can be lossy due to rounding errors (e.g., for coordinate transformation). In some examples, this loss can be reduced or eliminated by encoding and decoding a second set of residuals that can be in the Cartesian domain. However, some implementations of G-PCC may require many context-coded bins to signal the primary and secondary residuals, which can be undesirably computationally intensive.

[0006] According to one or more aspects of this disclosure, the G-PCC codec can use a reduced number of bins of context and / or context encoding to signal the absolute value of the secondary residual. For example, instead of using two separate syntax elements (e.g., ptn_sec_residual_abs_minus2 encoded with contexts 0...15, and ptn_sec_residual_abs_minus17 with a prefix context of 0 and bypassing encoding of the suffix) to signal the absolute value of the secondary residual, the G-PCC codec can use a single syntax element to signal the absolute value of the secondary residual. For instance, the G-PCC encoder can signal a single syntax element specifying the absolute value of the secondary residual, having a first set of prefix contexts (e.g., 0...4) and a second set of suffix contexts (e.g., 5...8). In this way, the techniques of this disclosure reduce the number of bins of context and / or context encoding used for signaling the secondary residual. Thus, the techniques of this disclosure can reduce the computational complexity of point cloud encoding and decoding.

[0007] As described above, when using angular patterns for predictive geometry encoding and decoding in G-PCC, the G-PCC encoder can determine the predicted location of a node and add it to the residual data to determine the reconstructed location of the node. G-PCC can provide several techniques to determine the predicted location of a node. As an example, G-PCC provides a zero-prediction mode, in which the r, φ, i of the predicted location can be inferred to be all zero. As another example, G-PCC provides an incremental prediction mode, where the r, φ, i of the predicted location is inherited (e.g., copied) from the r, φ, i of the reconstructed node (e.g., the parent node of the current node). However, the zero-prediction mode can be very inefficient and therefore may be rarely used.

[0008] According to one or more techniques of this disclosure, a G-PCC encoder can perform a modified zero-prediction mode, where a subset of the components of the predicted position of the current node is inherited from the parent node. For example, instead of inheriting all three r, φ, i of the predicted position from the parent node, the G-PCC codec can inherit φ and i of the predicted position from the parent node and infer r as a minimum (e.g., 0 or the minimum value indicated by individual signaling). By inheriting φ and i of the predicted position instead of r, the G-PCC codec can avoid having to signal large residual data values ​​of r, where the values ​​of φ and i are similar in other respects (and therefore have small residual data values). In this way, the techniques of this disclosure can improve the encoding and decoding efficiency of point cloud encoding and decoding.

[0009] In one example, a method for encoding a point cloud includes obtaining the value of a quadratic residual for geometric encoding and decoding the current prediction tree node of the point cloud; and encoding the value of the quadratic residual, wherein encoding the value includes: encoding the prefix bin of a syntax element using a first set of context-adaptive binary arithmetic encoding and decoding (CABAC) contexts, the syntax element having a value that is the absolute value of the specified quadratic residual minus 2; and encoding the suffix bin of the syntax element using a second set of the contexts that is different from the first set of CABAC contexts.

[0010] In another example, a method for decoding a point cloud includes obtaining the value of a quadratic residual for geometrically encoding and decoding the current prediction tree node of the point cloud; and decoding the value of the quadratic residual, wherein encoding the value includes: decoding the prefix bin of a syntax element using a first set of CABAC contexts, the syntax element having a value that is the absolute value of the specified quadratic residual minus 2; and decoding the suffix bin of the syntax element using a second set of the contexts, which is different from the first set of CABAC contexts.

[0011] In another example, an apparatus for encoding a point cloud includes: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in a circuit and configured to: obtain the value of a quadratic residual for geometric encoding and decoding of the current prediction tree node of the point cloud; and encode the value of the quadratic residual, wherein, in order to encode the value, the one or more processors are configured to: encode the prefix bin of a syntax element using a first set of CABAC contexts, the syntax element having a value that specifies the absolute value of the quadratic residual minus 2; and encode the suffix bin of the syntax element using a second set of the contexts different from the first set of CABAC contexts.

[0012] In another example, an apparatus for decoding a point cloud includes: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in a circuit and configured to: obtain the value of a quadratic residual for geometric encoding and decoding of the current prediction tree node of the point cloud; and decode the value of the quadratic residual, wherein, in order to decode the value, the one or more processors are configured to: decode the prefix bin of a syntax element using a first set of CABAC contexts, the syntax element having a value that is the absolute value of the specified quadratic residual minus 2; and decode the suffix bin of the syntax element using a second set of the contexts different from the first set of CABAC contexts.

[0013] In another example, a computer-readable storage medium stores instructions that, when executed, cause one or more processors of a point cloud encoder to: obtain the value of a quadratic residual for geometric encoding and decoding of the current prediction tree node of the point cloud; and encode the value of the quadratic residual, wherein the instructions causing the one or more processors to encode the value include instructions causing the one or more processors to: encode the prefix bin of a syntax element using a first set of CABAC contexts, the syntax element having a value that is the absolute value of the specified quadratic residual minus 2; and encode the suffix bin of the syntax element using a second set of the contexts different from the first set of CABAC contexts.

[0014] In another example, a computer-readable storage medium stores instructions that, when executed, cause one or more processors of a point cloud decoder to: obtain the value of a quadratic residual for geometric encoding and decoding of the current prediction tree node of the point cloud; and decode the value of the quadratic residual, wherein the instructions causing the one or more processors to decode the value include instructions causing the one or more processors to: decode the prefix bin of a syntax element using a first set of CABAC contexts, the syntax element having a value that is the absolute value of the specified quadratic residual minus 2; and decode the suffix bin of the syntax element using a second set of the contexts different from the first set of CABAC contexts.

[0015] In another example, a method for decoding a point cloud includes: selecting a prediction mode from a plurality of predefined prediction modes for performing predictive geometry encoding and decoding of the position of a current prediction tree node of the point cloud, wherein the plurality of prediction modes include at least: a zero prediction mode and an incremental prediction mode; in response to selecting the zero prediction mode: determining the radius, azimuth, and laser index of the parent node of the current prediction tree node; inferring the azimuth and laser index of the predicted position of the current prediction tree node as the azimuth and laser index of the parent node; inferring the radius of the predicted position as a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determining the position of the current prediction tree node based on the predicted position of the current prediction tree node.

[0016] In another example, a method for encoding a point cloud includes: selecting a prediction mode from a plurality of predefined prediction modes for performing predictive geometry encoding and decoding of the position of a current prediction tree node of the point cloud, wherein the plurality of prediction modes include at least: a zero prediction mode and an incremental prediction mode; wherein the selected mode is the zero prediction mode; determining the radius, azimuth, and laser index of the parent node of the current prediction tree node; inferring the azimuth and laser index of the predicted position of the current prediction tree node as the azimuth and laser index of the parent node; inferring the radius of the predicted position as a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determining the position of the current prediction tree node based on the predicted position of the current prediction tree node.

[0017] In another example, an apparatus for decoding a point cloud includes: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in a circuit and configured to: select a prediction mode from a plurality of predefined prediction modes for performing predictive geometry encoding and decoding of the position of a current prediction tree node of the point cloud, wherein the plurality of prediction modes include at least: a zero prediction mode and an incremental prediction mode; in response to selecting the zero prediction mode: determine the radius, azimuth, and laser index of the parent node of the current prediction tree node; infer the azimuth and laser index of the predicted position of the current prediction tree node as the azimuth and laser index of the parent node; infer the radius of the predicted position as a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determine the position of the current prediction tree node based on the predicted position of the current prediction tree node.

[0018] In another example, an apparatus for encoding a point cloud includes: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in a circuit and configured to: select a prediction mode from a plurality of predefined prediction modes for performing predictive geometry encoding and decoding of the position of a current prediction tree node of the point cloud, wherein the plurality of prediction modes include at least: a zero prediction mode and an incremental prediction mode; wherein the selected mode is the zero prediction mode; determine the radius, azimuth, and laser index of the parent node of the current prediction tree node; infer the azimuth and laser index of the predicted position of the current prediction tree node as the azimuth and laser index of the parent node; infer the radius of the predicted position as a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determine the position of the current prediction tree node based on the predicted position of the current prediction tree node.

[0019] In another example, a computer-readable storage medium storing instructions that, when executed, cause one or more processors of a point cloud decoding device to: select a prediction mode from a plurality of predefined prediction modes for performing predictive geometry encoding and decoding of the position of a current prediction tree node of a point cloud, wherein the plurality of prediction modes include at least: a zero prediction mode and an incremental prediction mode; in response to selecting the zero prediction mode: determine the radius, azimuth, and laser index of the parent node of the current prediction tree node; infer the azimuth and laser index of the predicted position of the current prediction tree node as the azimuth and laser index of the parent node; infer the radius of the predicted position as a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determine the position of the current prediction tree node based on the predicted position of the current prediction tree node.

[0020] In another example, a computer-readable storage medium storing instructions that, when executed, cause one or more processors of a point cloud encoding device to: select a prediction mode from a plurality of predefined prediction modes for performing predictive geometry encoding and decoding of the position of a current prediction tree node of a point cloud, wherein the plurality of prediction modes include at least: a zero prediction mode and an incremental prediction mode; wherein the selected prediction mode is the zero prediction mode; determine the radius, azimuth, and laser index of the parent node of the current prediction tree node; infer the azimuth and laser index of the predicted position of the current prediction tree node as the azimuth and laser index of the parent node; infer the radius of the predicted position as a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determine the position of the current prediction tree node based on the predicted position of the current prediction tree node.

[0021] Details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the specification, drawings, and claims. Attached Figure Description

[0022] Figure 1 This is a block diagram illustrating an example encoding and decoding system that can perform the techniques of this disclosure.

[0023] Figure 2 This is a block diagram illustrating an example geometric point cloud compression (G-PCC) encoder.

[0024] Figure 3 This is a block diagram showing an example G-PCC decoder.

[0025] Figure 4 It is a conceptual diagram of a prediction tree used for predictive geometric encoding and decoding.

[0026] Figure 5A and Figure 5B This is a conceptual diagram of a rotating LiDAR acquisition model.

[0027] Figure 6 This is a conceptual diagram illustrating an example ranging system that can be used with one or more techniques disclosed herein.

[0028] Figure 7 This is a conceptual diagram illustrating an example vehicle-based scenario where one or more technologies of this disclosure can be used.

[0029] Figure 8 This is a conceptual diagram illustrating an example extended reality system in which one or more techniques of this disclosure can be used.

[0030] Figure 9 This is a conceptual diagram illustrating an example mobile device system in which one or more technologies of this disclosure may be used.

[0031] Figure 10A and Figure 10B This is a conceptual diagram illustrating range update processing in binary arithmetic encoding and decoding.

[0032] Figure 11 This is a conceptual diagram illustrating output processing in binary arithmetic encoding and decoding.

[0033] Figure 12 This is a block diagram illustrating the context-adaptive binary arithmetic codec in the G-PCC encoder.

[0034] Figure 13 This is a block diagram illustrating the context-adaptive binary arithmetic codec in the G-PCC decoder.

[0035] Figure 14 This is a flowchart illustrating an example technique for processing point clouds according to one or more techniques according to this disclosure.

[0036] Figure 15 This is a flowchart illustrating an example technique for processing point clouds according to one or more techniques according to this disclosure. Detailed Implementation

[0037] Figure 1 This is a block diagram illustrating an example encoding and decoding system 100 capable of implementing the techniques of this disclosure. The techniques of this disclosure are generally aimed at encoding and / or decoding point cloud data, i.e., supporting point cloud compression. Typically, point cloud data includes any data used for processing point clouds. Encoding and decoding can efficiently compress and / or decompress point cloud data.

[0038] like Figure 1 As shown, system 100 includes a source device 102 and a target device 116. The source device 102 provides encoded point cloud data to be decoded by the target device 116. Specifically, in Figure 1 In this example, source device 102 provides point cloud data to target device 116 via computer-readable medium 110. Source device 102 and target device 116 can include any of a variety of devices, including desktop computers, laptops, tablets, set-top boxes, handheld devices such as smartphones, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, land or sea vehicles, spacecraft, aircraft, robots, LiDAR devices, satellites, etc. In some cases, source device 102 and target device 116 may be equipped for wireless communication.

[0039] exist Figure 1In the example, source device 102 includes a data source 104, a memory 106, a G-PCC encoder 200, and an output interface 108. Target device 116 includes an input interface 122, a G-PCC decoder 300, a memory 120, and a data consumer 118. According to the invention, the G-PCC encoder 200 of source device 102 and the G-PCC decoder 300 of target device 116 can be configured to apply the predictive geometry encoding / decoding techniques of the invention. Thus, source device 102 represents an example of an encoding device, while target device 116 represents an example of a decoding device. In other examples, source device 102 and target device 116 may include other components or arrangements. For example, source device 102 may receive data (e.g., point cloud data) from an internal or external source. Similarly, target device 116 may interface with an external data consumer, rather than including the data consumer in the same device.

[0040] like Figure 1 The system 100 shown is merely an example. Generally, other digital encoding and / or decoding devices can perform the predictive geometry encoding / decoding techniques of this disclosure. The source device 102 and target device 116 are merely examples of such devices, where the source device 102 generates encoded / decoded data to be sent to the target device 116. This disclosure refers to "encoding / decoding" devices as devices that perform the encoding and / or decoding of data. Thus, the G-PCC encoder 200 and G-PCC decoder 300 represent examples of encoding / decoding devices, specifically encoders and decoders. In some examples, the source device 102 and target device 116 can operate in a substantially symmetrical manner, such that each of the source device 102 and target device 116 includes both encoding and decoding components. Therefore, system 100 can support unidirectional or bidirectional transmission between the source device 102 and target device 116, for example, for streaming, playback, broadcasting, telephone, navigation, and other applications.

[0041] Generally, data source 104 represents a data source (i.e., raw, unencoded point cloud data) and can provide a continuous series of "frames" of data to the G-PCC encoder 200, which encodes the data in the frames. The data source 104 of source device 102 may include a point cloud capture device, such as any of various cameras or sensors, such as a 3D scanner or a light detection and ranging (LIDAR) device, one or more cameras, an archive containing previously captured data, and / or a data feed interface that receives data from a data content provider. Alternatively or additionally, the point cloud data may be generated by a computer from a scanner, camera, sensor, or other data source. For example, data source 104 may generate computer graphics-based data as source data, or a combination of real-time data, archived data, and computer-generated data. In each case, the G-PCC encoder 200 encodes the captured, pre-captured, or computer-generated data. The G-PCC encoder 200 may rearrange the frames from the received order (sometimes referred to as the "display order") into an encoding / decoding order for encoding and decoding. The G-PCC encoder 200 can generate one or more bit streams including encoded data. The source device 102 can then output the encoded data to a computer-readable medium 110 via the output interface 108 for reception and / or retrieval by, for example, the input interface 122 of the target device 116.

[0042] The memory 106 of source device 102 and the memory 120 of target device 116 can represent general-purpose memory. In some examples, memory 106 and memory 120 can store raw data, such as raw data from data source 104 and raw decoded data from G-PCC decoder 300. Additionally or alternatively, memory 106 and memory 120 can store software instructions executable by, for example, G-PCC encoder 200 and G-PCC decoder 300. Although memory 106 and memory 120 are shown separately from G-PCC encoder 200 and G-PCC decoder 300 in this example, it should be understood that G-PCC encoder 200 and G-PCC decoder 300 may also include internal memory for functionally similar or equivalent purposes. Furthermore, memory 106 and memory 120 can store encoded data, such as data output from G-PCC encoder 200 and input to G-PCC decoder 300. In some examples, portions of memory 106 and memory 120 may be allocated as one or more buffers, for example, for storing raw, decoded, and / or encoded data. For instance, memory 106 and memory 120 may store data representing point clouds.

[0043] Computer-readable medium 110 can represent any type of medium or device capable of transmitting encoded data from source device 102 to target device 116. In one example, computer-readable medium 110 represents a communication medium that enables source device 102 to transmit encoded data directly to target device 116 in real time, for example, via a radio frequency network or a computer-based network. Output interface 108 can modulate the transmitted signal including the encoded data, and input interface 122 can demodulate the received transmitted signal according to a communication standard such as a wireless communication protocol. The communication medium can include any wireless or wired communication medium, such as radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium can include a router, switch, base station, or any other device that can be used to facilitate communication from source device 102 to target device 116.

[0044] In some examples, source device 102 can output encoded data from output interface 108 to storage device 112. Similarly, target device 116 can access encoded data from storage device 112 via input interface 122. Storage device 112 can include any of a variety of distributed or locally accessed data storage media, such as hard disk drives, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded data.

[0045] In some examples, source device 102 may output encoded data to file server 114 or another intermediate storage device that may store the encoded data generated by source device 102. Target device 116 may access the stored data from file server 114 via streaming or downloading. File server 114 may be any type of server device capable of storing and sending encoded data to target 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. Target device 116 may access the encoded data from file server 114 via any standard data connection, including an internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of both, adapted to access the encoded data stored on file server 114. File server 114 and input interface 122 may be configured to operate according to a streaming protocol, a download transfer protocol, or a combination thereof.

[0046] Output interface 108 and input interface 122 can represent a wireless transmitter / receiver, a modem, a wired network component (e.g., an Ethernet card), a wireless communication component operating according to any of the various IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 include wireless components, output interface 108 and input interface 122 can be configured to transmit data, such as encoded data, according to cellular communication standards (e.g., 4G, 4G-LTE (Long Term Evolution), LTE Advanced, 5G, etc.). In some examples where output interface 108 includes a wireless transmitter, output interface 108 and input interface 122 can be configured to operate according to other wireless standards (e.g., the IEEE 802.11 specification, the IEEE 802.15 specification, or ZigBee). TM ),Bluetooth TM Data is transmitted via standards, such as encoded data. In some examples, source device 102 and / or target device 116 may include corresponding system-on-chip (SoC) devices. For example, source device 102 may include an SoC device for performing functions attributed to G-PCC encoder 200 and / or output interface 108, and target device 116 may include an SoC device for performing functions attributed to G-PCC decoder 300 and / or input interface 122.

[0047] The techniques disclosed herein can be applied to encoding and decoding to support any of a variety of applications, such as communication between autonomous vehicles, communication between scanners, cameras, sensors and processing devices (e.g., local or remote servers), geomapping, or other applications.

[0048] The input interface 122 of the destination device 116 receives an encoded bitstream from a computer-readable medium 110 (e.g., a communication medium, storage device 112, file server 114, etc.). The encoded bitstream may include signaling information defined by the G-PCC encoder 200, which is also used by the G-PCC decoder 300, such as syntax elements having values ​​describing the characteristics and / or processing of the encoded / decoded units (e.g., stripes, pictures, picture groups, 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 to present an image based on a point cloud.

[0049] The G-PCC encoder 200 and G-PCC decoder 300 can 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 these technologies are partially implemented in software, the device may store instructions for the software in a suitable non-transitory computer-readable medium and execute those instructions in hardware using one or more processors to perform the technologies of this disclosure. Each of the G-PCC encoder 200 and G-PCC decoder 300 may be included in one or more encoders or decoders, and either may be integrated into the respective device as part of a combined encoder / decoder (CODEC). Devices including the G-PCC encoder 200 and / or G-PCC decoder 300 may include one or more integrated circuits, microprocessors, and / or other types of devices.

[0050] The G-PCC encoder 200 and G-PCC decoder 300 can operate according to encoding / decoding standards, such as the Video Point Cloud Compression (V-PCC) standard or the Geometric Point Cloud Compression (G-PCC) standard. This disclosure can generally relate to encoding and decoding (e.g., encoding and decoding) images, including processes of encoding or decoding data. Encoded bitstreams typically include a series of values ​​for syntax elements representing encoding / decoding decisions (e.g., encoding / decoding modes).

[0051] This disclosure can generally refer to "signaling notification" of certain information, such as syntax elements. The term "signaling notification" can generally refer to communication of values ​​for syntax elements and / or other data used to decode encoded data. That is, the G-PCC encoder 200 can signal the values ​​of syntax elements in the bitstream. Generally, signaling notification refers to generating values ​​in the bitstream. As described above, source device 102 can deliver the bitstream to target device 116 substantially in real time, or non-real time, such as when storing syntax elements in storage device 112 for later retrieval by target device 116.

[0052] ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) is investigating the potential need for standardization of point cloud encoding and decoding technologies whose compression capabilities far exceed current methods, and will work towards creating such a standard. The group is conducting this exploratory activity through a collaborative effort called the 3D Graphics Team (3DG) to evaluate compression technology designs proposed by experts in the field.

[0053] Point cloud compression activities fall into two distinct categories. The first is “Video Point Cloud Compression” (V-PCC), which segments a 3D object and projects these segments onto multiple 2D planes (represented as “patches” in a 2D frame). These segments are further encoded by a traditional 2D video codec, such as the High Efficiency Video Codec (HEVC) (ITU-TH.265) codec. The second approach is “Geometry-Based Point Cloud Compression” (G-PCC), which directly compresses 3D geometry—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 point cloud compression in categories 1 (static point clouds) and 3 (dynamically acquired point clouds). The latest draft of the G-PCC standard is available in G-PCCDIS, ISO / IEC JTC1 / SC29 / WG11w19328, Brussels, Belgium, January 2020, and the codec description is available in G-PCC Codec Description v8, ISO / IEC JTC1 / SC29 / WG11w19525, Brussels, Belgium, January 2020.

[0054] A point cloud contains a set of points in 3D space and may have properties associated with those points. These properties can be color information, such as R, G, B or Y, Cb, Cr, or reflectance information, or other attributes. Point clouds can be captured by various cameras or sensors, such as LiDAR sensors and 3D scanners, or generated by computers. Point cloud data is used in a variety of applications, including but not limited to construction (modeling), graphics (3D models for visualization and animation), and the automotive industry (LiDAR sensors for navigation aids).

[0055] The 3D space occupied by point cloud data can be surrounded by virtual bounding boxes. The positions of points within the bounding box can be represented with a certain precision; therefore, the positions of one or more points can be quantized based on this precision. At the smallest level, the bounding box is segmented into voxels, the smallest spatial unit represented by a unit cube. A voxel within the bounding box can be associated with zero, one, or more points. The bounding box can be segmented into multiple cubic / cuboid regions, which can be called tiles. Each tile can be encoded into one or more stripes. Dividing the bounding box into stripes and tiles can be based on the number of points in each partition, or on other considerations (e.g., a specific region can be encoded into a tile). Strip regions can be further subdivided using segmentation decisions similar to those in video codecs.

[0056] Figure 2 An overview of the G-PCC encoder 200 is provided. Figure 3An overview of the G-PCC decoder 300 is provided. The modules shown are logical and do not necessarily correspond one-to-one with the code implemented in the reference implementation of the G-PCC codec, namely the TMC13 test model software studied by ISO / IEC MPEG (JTC 1 / SC 29 / WG 11).

[0057] In the G-PCC encoder 200 and G-PCC decoder 300, point cloud locations are first encoded and decoded. Attribute encoding and decoding depend on the decoded geometry. Figure 2 and Figure 3 In the diagram, the gray shading module is the option typically used for Category 1 data. The diagonal crossover module is the option typically used for Category 3 data. All other modules are interchangeable between Category 1 and Category 3.

[0058] For Category 3 data, the compressed geometry is typically represented as an octree at the leaf level, descending from the root down to individual voxels. For Category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree at the leaf level, descending from the root down to blocks larger than voxels) plus a model approximating the surface within each leaf of the pruned octree. In this way, Category 1 and Category 3 data share the octree encoding / decoding mechanism, while Category 1 data can additionally approximate the voxels within each leaf using a surface model. The surface model used is a triangulation of each block comprising 1-10 triangles, producing a triangle soup. Therefore, the Category 1 geometry codec is called the Trisoup geometry codec, while the Category 3 geometry codec is called the octree geometry codec.

[0059] At each node of the octree, signaling notifications (when not inferred) the occupancy of one or more of its child nodes (up to eight nodes). Multiple neighborhoods are specified, including (a) nodes sharing faces with the current octree node, (b) nodes sharing faces, edges, or vertices with the current octree node, etc. Within each neighborhood, the occupancy of the node and / or its child nodes can be used to predict the occupancy of the current node or its child nodes. For points sparsely filled in some nodes of the octree, the codec also supports a direct encoding / decoding mode, in which the 3D position of the point is directly encoded. Signaling notification flags can be used to indicate the direct signaling notification mode. At the lowest level, the number of points associated with an octree node / leaf node can also be encoded / decoded.

[0060] Once the geometry is encoded / decoded, the attributes corresponding to the points on the geometry are also encoded / decoded. When multiple attribute points correspond to a single reconstructed / decoded geometric point, the attribute values ​​representing the reconstructed point can be derived.

[0061] G-PCC employs three attribute encoding / decoding methods: Region Adaptive Hierarchical Transform (RAHT) encoding / decoding, interpolation-based hierarchical nearest neighbor prediction (prediction transform), and interpolation-based hierarchical nearest neighbor prediction (lifting transform) with update / lifting steps. RAHT and lifting are typically used for Class 1 data, while prediction is typically used for Class 3 data. However, any method can be used for any data, just like the geometry codec in G-PCC. The attribute encoding / decoding method used for encoding and decoding point clouds is specified in the bitstream.

[0062] Attribute encoding and decoding can be performed at the level of detail (LOD), where a finer representation of the point cloud attributes can be obtained using each level of detail. Each level of detail can be specified based on a distance metric from neighboring nodes or based on sampling distance.

[0063] At the G-PCC encoder 200, the residuals obtained as the output of the attribute encoding / decoding method are quantized. The quantized residuals can be encoded / decoded using context-adaptive arithmetic encoding / decoding.

[0064] exist Figure 2 In the example, the G-PCC encoder 200 may include a coordinate transformation unit 202, a color transformation unit 204, a voxelization unit 206, an attribute transfer unit 208, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic coding unit 214, a geometric reconstruction unit (GRU) 216, a RAHT unit 218, a LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, and an arithmetic coding unit 226.

[0065] like Figure 2 As shown in the example, the G-PCC encoder 200 can receive a set of locations and a set of attributes. These locations can include the coordinates of points in the point cloud. Attributes can include information about the points in the point cloud, such as the color associated with a point in the point cloud.

[0066] The coordinate transformation unit 202 can apply transformations to the coordinates of a point to transform the coordinates from the initial domain to the transformation domain. The transformed coordinates can be referred to as transformed coordinates. The color transformation unit 204 can apply transformations to change the color information of an attribute to different domains. For example, the color transformation unit 204 can transform color information from the RGB color space to the YCbCr color space.

[0067] In addition, Figure 2In the example, voxelization unit 206 can voxelize the transformed coordinates. Voxelization of the transformed coordinates can include quantization and removal of some points in the point cloud. In other words, multiple points in the point cloud can be grouped into a single 'voxel,' which can then be considered a point in some respects. Furthermore, octree analysis unit 210 can generate an octree based on the voxelized transformed coordinates. Additionally, in Figure 2 In the example, the surface approximation analysis unit 212 can analyze these points to potentially determine the surface representation of the point set. The arithmetic coding unit 214 can entropy encode the syntax elements representing information about the octree and / or surface determined by the surface approximation analysis unit 212. The G-PCC encoder 200 can output these syntax elements in a geometric bitstream.

[0068] The geometric reconstruction unit 216 can reconstruct the transformed coordinates of points in the point cloud based on an octree, data indicating the surface determined by the surface approximation analysis unit 212, and / or other information. Due to voxelization and surface approximation, the number of transformed coordinates reconstructed by the geometric reconstruction unit 216 may differ from the original number of points in the point cloud. This disclosure may refer to the resulting points as reconstructed points. The attribute transfer unit 208 can transfer attributes of the original points in the point cloud to the reconstructed points.

[0069] Furthermore, RAHT unit 218 can apply RAHT encoding / decoding to the attributes of the reconstructed points. Alternatively or additionally, LOD generation unit 220 and lifting unit 222 can apply LOD processing and lifting to the attributes of the reconstructed points, respectively. RAHT unit 218 and lifting unit 222 can generate coefficients based on the attributes. Coefficient quantization unit 224 can quantize the coefficients generated by RAHT unit 218 or lifting unit 222. Arithmetic encoding unit 226 can apply arithmetic encoding / decoding to the syntax elements representing the quantized coefficients. G-PCC encoder 200 can output these syntax elements in the attribute bitstream.

[0070] exist Figure 3 In the example, the G-PCC decoder 300 may include a geometric arithmetic decoding unit 302, an attribute arithmetic decoding unit 304, an octree synthesis unit 306, an inverse quantization unit 308, a surface approximation synthesis unit 310, a geometric reconstruction unit 312, a RAHT unit 314, a LoD generation unit 316, an inverse lifting unit 318, an inverse coordinate transformation unit 320, and an inverse color transformation unit 322.

[0071] The G-PCC decoder 300 can obtain a geometric bitstream and an attribute bitstream. The geometric arithmetic decoding unit 302 of the decoder 300 can apply arithmetic decoding (e.g., context-adaptive binary arithmetic codec (CABAC) or other types of arithmetic decoding) to the syntax elements in the geometric bitstream. Similarly, the attribute arithmetic decoding unit 304 can apply arithmetic decoding to the syntax elements in the attribute bitstream.

[0072] Octree synthesis unit 306 can synthesize octrees based on syntax elements parsed from the geometric bitstream. In the case of using surface approximation in the geometric bitstream, surface approximation synthesis unit 310 can determine the surface model based on syntax elements parsed from the geometric bitstream and based on the octree.

[0073] Furthermore, the geometric reconstruction unit 312 can perform reconstruction to determine the coordinates of points in the point cloud. The inverse coordinate transformation unit 320 can apply an inverse transformation to the reconstructed coordinates to transform the reconstructed coordinates (positions) of points in the point cloud from the transformation domain back to the initial domain.

[0074] In addition, Figure 3 In the example, the inverse quantization unit 308 reversibly quantizes the attribute value. The attribute value may be based on syntax elements obtained from the attribute bitstream (e.g., including syntax elements decoded by the attribute arithmetic decoding unit 304).

[0075] Depending on how the attribute values ​​are encoded, RAHT unit 314 can perform RAHT encoding / decoding to determine the color values ​​of the points in the point cloud based on the inversely quantized attribute values. Alternatively, LOD generation unit 316 and inverse lifting unit 318 can use level-of-detail techniques to determine the color values ​​of the points in the point cloud.

[0076] In addition, Figure 3 In the example, the inverse color transformation unit 322 can apply an inverse color transformation to color values. The inverse color transformation can be the inverse of the color transformation applied by the color transformation unit 204 of the encoder 200. For example, the color transformation unit 204 can transform color information from the RGB color space to the YCbCr color space. Therefore, the inverse color transformation unit 322 can transform color information from the YCbCr color space to the RGB color space.

[0077] It shows Figure 2 and Figure 3Various units are provided to aid in understanding the operations performed by the encoder 200 and decoder 300. These units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit is a circuit that provides a specific function and is pre-defined for executable operations. A programmable circuit is a circuit that can be programmed to perform various tasks and provide flexible functionality within executable operations. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by instructions from software or firmware. Fixed-function circuits can execute software instructions (e.g., to receive or output parameters), but the type of operation performed by a fixed-function circuit is typically constant. In some examples, one or more units may be different circuit blocks (fixed-function or programmable), and in some examples, one or more units may be integrated circuits.

[0078] Predictive geometry encoding and decoding was introduced as an alternative to octree geometry encoding and decoding, in which nodes are arranged in a tree structure (which defines the prediction structure), and various prediction strategies are used to predict the coordinates of each node in the tree relative to its predictor. Figure 4 This is a conceptual diagram illustrating an example of a prediction tree, which is a directed graph with arrows pointing in the direction of prediction. Horizontal shaded nodes are the root vertices and have no predictors; grid shaded nodes have two child nodes; diagonal shaded nodes have three child nodes; non-shaded nodes have one child node; and vertical shaded nodes are leaf nodes that have no child nodes. Each node has only one parent node.

[0079] Four prediction strategies can be specified for each node based on its parent node (p0), great-grandfather node (p1), and great-great-grandfather node (p2). The prediction strategies include no prediction, incremental prediction (p0), linear prediction (2*p0-p1), and parallelogram prediction (2*p0+p1-p2).

[0080] The encoder (e.g., G-PCC encoder 200) can employ any algorithm to generate the prediction tree; the algorithm used can be determined based on the application / use case, and several strategies can be used. For each node, the encoder can encode the residual coordinate values ​​in the bitstream starting from the root node in a depth-first manner. Predictive geometry encoding and decoding can be particularly useful for Class 3 (e.g., LiDAR-acquired) point cloud data, for example, for low-latency applications.

[0081] Angle patterns can be used for predictive geometry encoding and decoding, where the characteristics of the LiDAR sensor can be used to more efficiently encode and decode the prediction tree. Position coordinates are converted to (r, φ, i) (radius, azimuth, and laser index), and prediction is performed in this domain (residuals are encoded and decoded in the r, φ, i domain). Due to rounding errors, the encoding and decoding in r, φ, i is not lossless, therefore a second set of residuals corresponding to Cartesian coordinates can be encoded and decoded. The following reiterates the description of the encoding and decoding strategies for angle patterns used in predictive geometry encoding and decoding. This description is based on... Figure 5A and Figure 5B , Figure 5A and Figure 5B This is a conceptual diagram of a rotating LiDAR acquisition model.

[0082] This method focuses on point clouds acquired using a rotated LiDAR model. Here, the LiDAR has N lasers (e.g., N = 16, 32, 64) that rotate about the Z-axis according to an azimuth angle φ (see [link to LiDAR model]). Figure 5A and Figure 5B Each laser can have a different elevation angle θ(i). i=1...N and height Assuming laser i hits according to Figure 5A The coordinate system described in the figure defines a point M with Cartesian integer coordinates (x, y, z).

[0083] The position of M is modeled using three parameters (r, φ, i), and calculated as follows:

[0084]

[0085] ·φ=atan2(y,x)

[0086]

[0087] More precisely, the G-PCC encoder can use a quantized version of (r, φ, i), represented as Among the three integers The calculation of i is as follows:

[0088]

[0089]

[0090]

[0091] in

[0092] ·(q r o r ) and (q φ o φ These are control Know The quantization parameters for precision.

[0093] ·sign(t) is a function that returns 1 if t is positive, otherwise returns (-1).

[0094] ·|t| is the absolute value of t.

[0095] To avoid mismatches in reconstruction due to the use of floating-point operations, andtan(θ(i)) i=1...N The value can be pre-calculated and quantified as follows:

[0096]

[0097]

[0098] in

[0099] · and(q θ o θ These are control Know The quantization parameters for the accuracy.

[0100] The reconstructed Cartesian coordinates are obtained as follows:

[0101]

[0102]

[0103]

[0104] Here, app_cos(.) and app_sin(.) are approximations of cos(.) and sin(.). The calculations can be performed using fixed-point representation, lookup tables, and linear interpolation.

[0105] Please note that due to the following various reasons, Possibly different from (x, y, z):

[0106] Quantitative

[0107] -approximation

[0108] - Model inaccuracy

[0109] - Inaccurate model parameters

[0110] Let (r) x r y r z To reconstruct the residuals, the following definition is used:

[0111] -

[0112] -

[0113] -

[0114] In this method, the G-PCC encoder 200 can be operated as follows:

[0115] • Model parameters Know and quantization parameters and q φ Encode

[0116] • Apply the geometric prediction scheme described in G-PCC DIS to the representation

[0117] This allows for the introduction of new predictors that utilize the characteristics of LiDAR. For example, the rotational speed of a LiDAR scanner around the z-axis is typically constant. Therefore, we can predict the current... as follows:

[0118]

[0119] in

[0120] ο(δ φ (k)) k=1...K It is the set of potential speeds that the encoder can choose from. The index k can be explicitly written into the bitstream, or it can be inferred from the context based on a deterministic strategy applied by both the encoder and decoder.

[0121] οn(j) is the number of points skipped, which can be explicitly written into the bitstream or inferred from the context based on a deterministic strategy applied by both the encoder and decoder.

[0122] • Reconstruct the residual (r) using the encoding of each node. x r y r z )

[0123] The G-PCC decoder 300 can be configured as follows:

[0124] • Decoding model parameters Know and quantization parameters and q φ

[0125] • Decode the node-associated data according to the geometric prediction scheme described in the G-PCC DIS. parameter

[0126] • Calculate the reconstructed coordinates as described above

[0127] • Decoding residual (r x r y r z )

[0128] As discussed in the next section, lossy compression can be reconstructed from the residuals (r) through quantization. x r y r z To support

[0129] The original coordinates (x, y, z) are calculated as follows.

[0130] ο

[0131] ο

[0132] ο

[0133] Lossy compression can be achieved by adjusting the reconstructed residual (r) x r y r z This can be achieved by applying quantization or by discarding points.

[0134] The quantified reconstruction residuals are calculated as follows:

[0135]

[0136]

[0137]

[0138] Among them, (q) x o x ), (q y o y )and(q z o z These are control and The quantization parameters for the accuracy.

[0139] In some examples, the G-PCC encoder 200 and / or G-PCC decoder 300 can use mesh quantization to further improve RD (rate distortion) performance results. Quantization parameters can be varied at the sequence / frame / strip / block level to achieve region-adaptive quality and for rate control purposes.

[0140] The following are examples of predictive geometry encoding / decoding syntax, semantics, syntax binaryization, and context tables:

[0141]

[0142]

[0143]

[0144] ptn_qp_offset_eq0_flag, ptn_qp_offset_sign_flag, and ptn_qp_offset_abs_minus1 together specify the offset of the strip geometry quantization parameter (if it exists). Any non-existent ptn_qp_offset_sign_flag or ptn_qp_offset_abs_minus1 is inferred to be 0.

[0145] When nodeIdx%PtnQpInterval equals 0, the node QP of the next PtnQpInterval node in the decoding order is determined as follows:

[0146] When geom_scaling_enabled_flag equals 1:

[0147] PtnQp[nodeIdx / PtnQpInterval]=

[0148] geom_base_qp+geom_slice_qp_offset

[0149] +(2×ptn_qp_offset_sign_flag-1)

[0150] ×(!ptn_qp_offset_eq0_flag+ptn_qp_offset_abs_minus1)

[0151] Otherwise, PtnQp[nodeIdx] is set to 0.

[0152] The `ptn_point_cnt_gt1_flag` and `ptn_point_cnt_minus2` together specify the number of points represented by the current prediction tree node. When they do not exist, the values ​​of both `ptn_point_cnt_gt1_flag` and `ptn_point_cnt_minus2` are inferred to be 0. The derivation of the number of points represented by the current prediction tree node is as follows:

[0153] PtnPointCount[nodeIdx]=1+ptn_point_cnt_gt1_flag+ptn_point_cnt_minus2

[0154] ptn_child_cnt[nodeIdx] is the number of direct child nodes of the current prediction tree node in the geometric prediction tree.

[0155] ptn_pred_mode[nodeIdX] is the mode used to predict the location associated with the current node.

[0156] `ptn_phi_mult_eq0_flag`, `ptn_phi_mult_sign_flag`, `ptn_phi_mult_eq1_flag`, `ptn_phi_mult_abs_minus2`, and `ptn_phi_mult_abs_minus17` collectively specify the multiplication factor used in incremental angle prediction. When `ptn_phi_mult_eq0_flag` exists, it specifies whether the factor is equal to zero. When `ptn_phi_mult_eq1_flag` exists, it specifies whether the factor's magnitude is equal to 1. `ptn_phi_mult_sign_flag` equal to 1 indicates that the factor's sign is positive. `ptn_phi_mult_sign_flag` equal to 0 indicates that the factor's sign is negative. Any non-existent `ptn_phi_mult_sign_flag`, `ptn_phi_mult_abs_minus2`, or `ptn_phi_mult_abs_minus17` is inferred as 0. Any non-existent ptn_phi_mult_eq0_flag or ptn_phi_mult_eq1_flag is inferred to be 1.

[0157] The derivation of the phi factor of the current tree node is as follows:

[0158] PtnPhiMult[nodeIdx] =

[0159] (2×ptn_phi_mult_sign_flag-1)

[0160] ×(!ptn_phi_mult_eq0_flag+!ptn_phi_mult_eq1_flag

[0161] +ptn_phi_mult_abs_minus2+ptn_phi_mult_abs_minus17)

[0162] The `ptn_residual_eq0_flag[k]`, `ptn_residual_sign_flag[k]`, `ptn_residual_abs_log2[k]`, and `ptn_residual_abs_remaining[k]` together specify the first predicted residual for the k-th geometric location component. `ptn_residual_eq0_flag[k]` specifies whether the residual component is equal to zero. `ptn_residual_sign_flag[k]` equal to 1 indicates that the residual component has a positive sign. `ptn_residual_sign_flag[k]` equal to 0 indicates that the residual component has a negative sign. Any non-existent `ptn_residual_sign_flag[k]`, `ptn_residual_abs_log2[k]`, or `ptn_residual_absremaining[k]` is inferred as 0.

[0163] The derivation of the first prediction residual associated with the current tree node is as follows:

[0164] for(k=0;k<3;k++)

[0165] PtnResidual[nodeIdx][k]=

[0166] (2×ptnresidual_sign_flag-1)

[0167] ×(!ptnresidual_eq0_flag[k]

[0168] +((1<<ptnresidual_abs_log2[k])>>1)

[0169] +ptnresidual_abs_remaining[k])

[0170] `ptn_sec_residual_eq0_flag[k]`, `ptn_sec_residual_eq1_flag[k]`, `ptn_sec_residual_sign_flag[k]`, `ptn_sec_residual_abs_minus2[k]`, and `ptn_sec_residual_abs_minus17[k]` together specify the quadratic residual of the k-th geometric position component. `ptn_sec_residual_eq0_flag[k]` specifies whether the residual component is equal to zero. When `ptn_sec_residual_eq1_flag[k]` exists, it specifies whether the residual component amplitude is equal to 1. `ptn_sec_residual_sign_flag[k]` equal to 1 indicates that the residual component has a positive sign. `ptn_sec_residual_sign_flag[k]` equal to 0 indicates that the residual component has a negative sign. Any non-existent ptn_src_residual_sign_flag[k], ptn_sec_residual_abs_minus2[k], or ptn_sec_residual_abs_minus17[k] is inferred as 0. Any non-existent ptn_sec_residual_eq0_flag[k] or ptn_sec_residual_eq1_flag[k] is inferred as 1.

[0171] The derivation of the second prediction residual associated with the current tree node is as follows:

[0172] for(k=0;k<3;k++)

[0173] PtnSecResidual[nodeIdX][k]=

[0174] (2×ptn_sec_residual_sign_flag-1)

[0175] ×(!ptn_sec_residual_eq0_flag[k]+!ptn_sec_residual_eql_flag[k]

[0176] +ptn_sec_residual_abs_minus2[k]+ptn_sec_residual_abs_minus17[k])

[0177]

[0178]

[0179]

[0180]

[0181] The above-described implementation of predictive geometry encoding / decoding may have one or more drawbacks. As an example, the above-described implementation of predictive geometry encoding / decoding with angle encoding / decoding modes may require many context-encoded bins because the above implementation requires primary (r, φ, i) and secondary (r... x r y r z The encoding and decoding of both residuals is computationally intensive. As another example, for the number of signaling for the predictor index and child node signaling (a total of 4 candidates in both cases), the above implementation of predictive geometry encoding and decoding uses a 2-bit fixed-length encoding and decoding, which may not be optimal because the candidates are not equally probable. As another example, for the main residuals in the above implementation of predictive geometry encoding and decoding, the signaling associated with the laser index (i) may be redundant, for example, when using a single laser capture point count. As another example, in the above implementation of predictive geometry encoding and decoding, a zero predictor (or the aforementioned "no prediction") is very inefficient and may be rarely used for prediction. Furthermore, for the "r" part, since it is non-negative and because the prediction is always zero, the residual sign of the "r" component can always be inferred, thus the corresponding signaling is redundant.

[0182] According to one or more techniques disclosed herein, encoders (e.g., G-PCC encoder 200) and / or decoders (e.g., G-PCC decoder 300) can overcome the aforementioned drawbacks. As a first example, the encoder and / or decoder can perform context and context-encoded bin reduction on the quadratic residual and phi multiplier. As a second example, the encoder and / or decoder can perform variable-length encoding / decoding for the number of child nodes and predictor index signaling. As a third example, when content is captured by a single laser, the encoder and / or decoder can remove laser index signaling. As a fourth example, the encoder and / or decoder can modify zero prediction by utilizing the azimuth of the parent neighbor and the laser index, along with sign inference.

[0183] Some detailed examples of the technology disclosed herein are as follows:

[0184] As described above, according to the first example, the encoder and / or decoder can perform context and context-encoded bin reduction on the quadratic residual and phi multiplier. For example, the second residual encoding / decoding can be simplified by removing the ptn_sec_residual_abs_minus17[k] syntax element and the associated 3*15=45 contexts. In some examples, the binarization and context of ptn_sec_residual_abs_minus2[k] can be modified. Some example modifications are shown below, where... <add> ...< / add> Content was added to the tag, and in <remove> ...< / remove> Content has been deleted from the tag.

[0185]

[0186] ptn_sec_residual_eq0_flag[k], ptn_sec_residual_eq1_flag[k], ptn_sec_residual_sign_flag[k], <add> and< / add> ptn_sec_residual_abs_minus2[k], <remove> and ptn_sec_residual_abs_minus17[k]< / remove> This specifies the quadratic residual of the k-th geometric position component. `ptn_secresidual_eq0_flag[k]` specifies whether the residual component is equal to zero. When `ptn_sec_residual_eql_flag[k]` exists, it specifies whether the residual component amplitude is equal to 1. `ptn_sec_residual_sign_flag[k]` equal to 1 indicates that the residual component has a positive sign. `ptn_sec_residual_sign_flag[k]` equal to 0 indicates that the residual component has a negative sign. Any non-existent `ptn_src_residual_sign_flag[k]`... <add> or< / add> ptn_sec_residual_abs_minus2[k] <remove> Or ptn_sec_residual_abs_minus17[k]< / remove> All are inferred as 0. Any non-existent ptn_sec_residualeq0_flag[k] or ptn_secresidual_eq1_flag[k] is inferred as 1.

[0187] The derivation of the second prediction residual associated with the current tree node is as follows:

[0188] for(k=0;k<3;k++)

[0189] PtnSecResidual[nodeIdX][k]=

[0190] (2×ptn_secresidual_sign_flag-1)

[0191] ×(!ptn_sec_residual_eq0_flag[k]+!ptn_sec_residual_eq1_flag[k]

[0192] +ptn_sec_residual_abs_minus2[k] <remove> +ptn_sec_residual_abs_minus17[k]< / remove> )

[0193]

[0194]

[0195] Alternatively, the G_PCC codec can use a specific number of prefix contexts (e.g., a context) and suffix contexts (e.g., b context) used for exponential Golomb coding to perform signaling. The use of prefix and suffix contexts can be effective (e.g., providing codec gain) when there is considerable energy in the quadratic residual components. In one example: a = 5, b = 4.

[0196]

[0197] Secondly, the syntax associated with the phi multiplier was simplified by removing eight contexts and modifying the signaling, as detailed below:

[0198]

[0199] ptn_phi_mult_eq0_flag, ptn_phi_mult_sign_flag, ptn_phi_mult_eq1_flag, ptn_phi_mult_abs_minus2 and <remove> ptn_phi_mult_abs_minus17< / remove> <add> ptn_phi_mult_abs_minus9< / add> This section specifies the multiplication factor used in incremental angle prediction. When `ptn_phi_mult_eq0_flag` exists, it specifies whether the factor is equal to zero. When `ptn_phi_mult_eq1_flag` exists, it specifies whether the factor's magnitude is equal to 1. `ptn_phi_mult_sign_flag` equal to 1 indicates the factor's sign is positive. `ptn_phi_mult_sign_flag` equal to 0 indicates the factor's sign is negative. Any non-existent `ptn_phi_mult_sign_flag`, `ptn_phi_mult_abs_minus2`, or... <remove> ptn_phi_mult_abs_minus17< / remove> <add> ptn_phi_mult_abs_minus9< / add>All are inferred as 0. Any non-existent ptn_phi_mult_eq0_flag or ptn_phi_mult_eq1_flag is inferred as 1.

[0200] The derivation of the phi factor of the current tree node is as follows:

[0201] PtnPhiMult[nodeIdx] =

[0202] (2×ptn_phi_mult_signflag-1)

[0203] ×(!ptn_phi_mult_eq0_flag+!ptn_phi_mult_eq1_flag

[0204] +ptn_phi_mult_abs_minus2+ <remove> ptn_phi_mult_abs_minus17< / remove> <add> ptn_phi_mult_abs_minus9< / add> )

[0205]

[0206]

[0207]

[0208] As described above, according to the second example, the encoder and / or decoder can perform variable-length encoding / decoding for the number of child nodes and predictor index signaling. Currently, the number of predictor modes and child node signaling information is notified in 2-bit fixed-length encoding / decoding, where the three contexts have the following mappings:

[0209] predict Ptn_pred_mode Number of child nodes Ptn_child_cnt Zero prediction 00 0 00 Incremental forecasting 01 1 01 Linear prediction 10 2 10 Parallelogram prediction 11 3 11

[0210] However, to address the issue of non-equal probability symbol statistics, it is recommended to use variable-length binary representation for signaling notification, such as truncated unary binary representation. This can reduce the total number of bins associated with the signaling. Since the statistics of predMode may differ depending on whether angular mode is applied, different mappings can be used depending on whether angular mode is enabled, which is already being used for signaling notification in the corresponding geometric parameter set.

[0211]

[0212]

[0213]

[0214]

[0215] As described above, according to the third example, when content is captured by a single laser, the encoder and / or decoder can remove the signaling for the laser index (e.g., neither encoding nor decoding). When num_lasers_minus1 equals 0, the laser indexes of all points in the point cloud are the same. Therefore, the associated residual signaling for the laser index may be redundant (i.e., no signaling is needed to inform the residual of the third component). Considering that the third component corresponds to the laser index, the syntax changes are as follows. (It may change if an axis transformation exists).

[0216]

[0217]

[0218] If an axis transformation exists, the component corresponding to the laser index will not be signaled.

[0219] Furthermore, when num_lasers_minus1 is 1 (only two lasers), the residual can be zero, -1, or +1. However, for non-zero cases, the sign and subsequent information can be inferred without signaling notification. For example, if we have two lasers with laserIdx of 0 and 1, then if the predicted laserIdx is 1 and the residual is non-zero, then the current laserIdx = 0 can be inferred. Therefore, in this case, it is sufficient to simply signal ptn_residual_eq0_flag[2]. Therefore, the following syntax changes can be implemented:

[0220]

[0221] As described above, according to the fourth example, the encoder and / or decoder can modify the zero prediction by utilizing the azimuth and laser index of the parent neighbor, as well as symbol inference.

[0222] Currently, zero prediction in the angle domain corresponds to all components that are equal to zero. However, current implementations of zero prediction are likely inefficient and are therefore rarely used.

[0223] According to one or more techniques disclosed herein, if a parent node is available, the encoder or decoder can inherit the azimuth and laser index from the parent node (ancestor). Therefore, in some respects, it is similar to incremental prediction, except that the radius is set to zero (or the minimum radius value).

[0224] The following changes are required to the location prediction process (Section 8.2.6.4) [w19522]:

[0225] #####################################################################

[0226] When predMode equals 0, the predicted point position is: <remove> 0< / remove> :

[0227] for(k=0;k<3;k++){

[0228] predPos[k]=0

[0229] <add>if(geometry_angular_enabled_flag&&k)

[0230] predPos[k]=aPos0[k]< / add>

[0231] }

[0232] When predmode equals 1, the predicted point location is the location associated with the first ancestor.

[0233] for(k=0;k<3;k++)

[0234] predPos[k] = aPos0[k]

[0235] When predmode equals 2, the predicted point location is a linear combination of the locations associated with the first two ancestors.

[0236] for(k=0;k<3;k++)

[0237] predPos[k]=aPos0[k]+aPos0[k]-aPos1[k]

[0238] Otherwise, if predmode equals 3, the predicted point location is a linear combination of the locations associated with all three ancestors.

[0239] for(k=0;k<3;k++)

[0240] predPos[k]=aPos0[k]+aPos1[k]-aPos2[k]

[0241] #####################################################################

[0242] Secondly, when using the zero predictor, since the prediction radius is zero, the corresponding residual is inferred to be positive. Therefore, the corresponding sign does not need to be signaled but is inferred. The same applies when the angle mode is disabled.

[0243]

[0244]

[0245] Alternatively, the minimum radius (the smallest radius among all points) can be signaled in the strip header, and it can be used as the radius of the zero predictor instead of 0.

[0246] To improve zero predictors, the phi multiplier can be applied to all predictors, not just delta predictors. The following changes are made to the syntax:

[0247]

[0248] Figure 6 This is a conceptual diagram illustrating an example ranging system 600 that can be used with one or more technologies disclosed herein. Figure 6 In one example, the ranging system 600 includes an illuminator 602 and a sensor 604. The illuminator 602 may emit light 606. In some examples, the illuminator 602 may emit light 606 as one or more laser beams. Light 606 may be one or more wavelengths, such as infrared wavelengths or visible light wavelengths. In other examples, light 606 is not a coherent laser. When light 606 encounters an object such as object 608, light 606 produces reflected light 610. The reflected light 610 may include backscattered light and / or reflected light. The reflected light 610 may pass through a lens 611, which guides the reflected light 610 to create an image 612 of object 608 on sensor 604. Sensor 604 generates a signal 614 based on the image 612. The image 612 may include a set of points (e.g., by...). Figure 6 (Representation of points in image 612).

[0249] In some examples, illuminator 602 and sensor 604 can be mounted on a rotating structure, allowing illuminator 602 and sensor 604 to capture a 360-degree view of the environment. In other examples, ranging system 600 may include one or more optical components (e.g., mirrors, collimators, diffraction gratings, etc.) enabling illuminator 602 and sensor 604 to detect a range of objects within a specific area (e.g., up to 360 degrees). Although Figure 6 The example shows only a single illuminator 602 and sensor 604, but the ranging system 600 may include a collection of multiple illuminators and sensors.

[0250] In some examples, illuminator 602 generates a structured light pattern. In such examples, ranging system 600 may include multiple sensors 604 on which individual images of the structured light pattern are formed. Ranging system 600 can use the differences between the images of the structured light pattern to determine the distance to object 608 from which the structured light pattern is backscattered. When object 608 is relatively close to sensor 604 (e.g., 0.2 meters to 2 meters), structured light-based ranging systems can have a high level of accuracy (e.g., sub-millimeter accuracy). This high level of accuracy can be useful in facial recognition applications (e.g., unlocking mobile devices (e.g., mobile phones, tablets, etc.)) and security applications.

[0251] In some examples, the ranging system 600 is a time-of-flight (ToF) based system. In some examples where the ranging system 600 is a ToF based system, an illuminator 602 generates a light pulse. In other words, the illuminator 602 can modulate the amplitude of the emitted light 606. In such an example, a sensor 604 detects the return light 610 from the light pulse 606 generated by the illuminator 602. The ranging system 600 can then determine the distance to the object 608 from which the light 606 is backscattered based on the time delay between the time the light 606 is emitted and detected and the known speed of light in air. In some examples, the illuminator 602 can modulate the phase of the emitted light 606 instead of (or otherwise) modulating the amplitude of the emitted light 606. In such an example, the sensor 604 can detect the phase of the light 610 returning from the object 608 and use the speed of light and the time difference between the time when the illuminator 602 generates the light 606 at a particular phase and the time when the sensor 604 detects the return light 610 at that particular phase to determine the distance to a point on the object 608.

[0252] In other examples, point clouds can be generated without using illuminator 602. For example, in some examples, sensor 604 of ranging system 600 may include two or more optical cameras. In such examples, ranging system 600 can use optical cameras to capture stereo images of the environment including object 608. Ranging system 600 may include point cloud generator 616, which can calculate differences between positions in the stereo image. Ranging system 600 can then use these differences to determine distances to positions shown in the stereo image. Based on these distances, point cloud generator 616 can generate point clouds.

[0253] Sensor 604 can also detect other properties of object 608, such as color and reflection information. Figure 6 In the example, point cloud generator 616 can generate a point cloud based on signal 614 generated by sensor 604. Ranging system 600 and / or point cloud generator 616 can form data source 104 ( Figure 1As part of this disclosure, the point cloud generated by the ranging system 600 can be encoded and / or decoded according to any technique disclosed herein.

[0254] Figure 7 This is a conceptual diagram illustrating an example vehicle-based scenario where one or more technologies of this disclosure can be used. Figure 7 In the example, vehicle 700 includes a ranging system 702. The ranging system 702 can be referenced... Figure 7 The discussion was conducted in a manner that was implemented. Although in Figure 7 The example is not shown, but vehicle 700 may also include a data source, such as data source 104. Figure 1 ), and G-PCC encoders, such as G-PCC encoder 200 ( Figure 1 ).exist Figure 7 In the example, ranging system 702 emits a laser beam 704, which is reflected from a pedestrian 706 or other objects in the road. The data source of vehicle 700 can generate a point cloud based on the signal generated by ranging system 702. The G-PCC encoder of vehicle 700 can encode the point cloud to generate a bitstream 708, such as a geometric bitstream. Figure 2 ) and attribute bitstream ( Figure 2 Bitstream 708 can contain far fewer bits than the unencoded point cloud obtained by the G-PCC encoder.

[0255] The output interfaces of vehicle 700 (e.g., output interface 108) Figure 1 The bitstream 708 can be sent to one or more other devices. The bitstream 708 can contain significantly fewer bits than the unencoded point cloud obtained by the G-PCC encoder. Therefore, the vehicle 700 can send the bitstream 708 to other devices much faster than the unencoded point cloud data. Furthermore, the bitstream 708 may require less data storage capacity.

[0256] exist Figure 7 In the example, vehicle 700 can send bitstream 708 to another vehicle 710. Vehicle 710 may include a G-PCC decoder, such as G-PCC decoder 300. Figure 1 The G-PCC decoder of vehicle 710 can decode bitstream 708 to reconstruct a point cloud. Vehicle 710 can use the reconstructed point cloud for various purposes. For example, vehicle 710 can determine, based on the reconstructed point cloud, that pedestrian 706 is in the road ahead of vehicle 700 and thus begin to decelerate, for example, even before the driver of vehicle 710 becomes aware that pedestrian 706 is in the road. Therefore, in some examples, vehicle 710 can perform autonomous navigation operations based on the reconstructed point cloud.

[0257] Additionally or alternatively, vehicle 700 may send bitstream 708 to server system 712. Server system 712 may use bitstream 708 for various purposes. For example, server system 712 may store bitstream 708 for subsequent reconstruction of point clouds. In this example, server system 712 may use point clouds and other data (e.g., vehicle telemetry data generated by vehicle 700) to train an autonomous driving system. In other examples, server system 712 may store bitstream 708 for subsequent reconstruction of forensic collision investigations (e.g., if vehicle 700 collides with pedestrian 706).

[0258] Figure 8 This is a conceptual diagram illustrating an example extended reality system in which one or more of the technologies disclosed herein may be used. Extended reality (XR) is a term used to encompass a range of technologies, including augmented reality (AR), mixed reality (MR), and virtual reality (VR). Figure 8 In the example, user 800 is located at a first position 802. User 800 wears an XR headset 804. Alternatively, user 800 may use a mobile device (e.g., a mobile phone, tablet, etc.). The XR headset 804 includes a depth detection sensor, such as a ranging system, which detects the position of a point on an object 806 at position 802. The data source of the XR headset 804 may use signals generated by the depth detection sensor to generate a point cloud representation of the object 806 at position 802. The XR headset 804 may include a G-PCC encoder (e.g., Figure 1 The G-PCC encoder 200 is configured to encode point clouds to generate bitstream 808.

[0259] XR headset 804 can send a bitstream 808 (e.g., via a network such as the Internet) to XR headset 810 worn by user 812 at a second location 814. XR headset 810 can decode bitstream 808 to reconstruct a point cloud. XR headset 810 can use the point cloud to generate an XR visualization (e.g., AR, MR, VR visualization) representing object 806 at location 802. Thus, in some examples, such as when XR headset 810 generates a VR visualization, user 812 can have a 3D immersive experience at location 802. In some examples, XR headset 810 can determine the position of a virtual object based on the reconstructed point cloud. For example, XR headset 810 can determine that the environment (e.g., location 802) includes a flat surface based on the reconstructed point cloud, and then determine that a virtual object (e.g., a cartoon character) will be positioned on the flat surface. XR headset 810 can generate an XR visualization in which the virtual object is located at the determined position. For example, XR headset 810 can display a cartoon character sitting on a flat surface.

[0260] Figure 9This is a conceptual diagram illustrating an example mobile device system in which one or more technologies of this disclosure may be used. Figure 9 In the example, a mobile device 900, such as a mobile phone or tablet, includes a ranging system, such as a LiDAR system, which detects the position of points on an object 902 in the environment of the mobile device 900. The data source of the mobile device 900 can use signals generated by a depth detection sensor to generate a point cloud representation of the object 902. The mobile device 900 may include a G-PCC encoder (e.g., Figure 1 The G-PCC encoder 200 is configured to encode point clouds to generate a bitstream 904. Figure 9 In the example, mobile device 900 can send a bitstream to remote device 906 (e.g., a server system or other mobile device). Remote device 906 can decode bitstream 904 to reconstruct a point cloud. Remote device 906 can use the point cloud for various purposes. For example, remote device 906 can use the point cloud to generate an environmental map of mobile device 900. For example, remote device 906 can generate a map of the interior of a building based on the reconstructed point cloud. In another example, remote device 906 can generate an image (e.g., computer graphics) based on the point cloud. For example, remote device 906 can use the points of the point cloud as vertices of polygons and use the color attributes of the points as the basis for coloring the polygons. In some examples, remote device 906 can use the reconstructed point cloud for facial recognition or other security applications.

[0261] Figure 10A and Figure 10B An example of this process at bin n is shown. Figure 10A In Example 201, the range at bin n includes the probability (p) of the LPS given a particular context state (σ). σ The RangeMPS and RangeLPS are given. Example 201 shows the update of the range at binn+1 when the value of bin n equals the MPS. In this example, the lower bound remains unchanged, but the range value at binn+1 decreases to the value of RangeMPS at bin n. Figure 10B Example 203 illustrates the update of the range at bin n+1 when the value of bin n is not equal to MPS (i.e., equal to LPS). In this example, the lower bound is moved to the lower bound range value of RangeLPS at bin n, and the range value at bin n+1 is reduced to the value of RangeLPS at bin n.

[0262] In some examples, the range can be represented using 9 bits, and the lower bound using 10 bits. There is a renormalization process to maintain the range and lower bound with sufficient precision. Renormalization occurs whenever the range is less than 256. Therefore, after renormalization, the range is always equal to or greater than 256. Depending on the values ​​of the range and lower bound, the BAC outputs '0' or '1' to the bitstream, or updates an internal variable (called BO: bits-outstanding) for future output. Figure 11 An example of BAC output depending on the range is shown. For instance, when the range and lower limit are above a certain threshold (e.g., 512), '1' is output to the bitstream. When the range and lower limit are below a certain threshold (e.g., 512), '0' is output to the bitstream. When the range and lower limit are between a certain threshold, nothing is output to the bitstream. Instead, the BO value increments, and the next bin is encoded.

[0263] As described above, arithmetic encoding / decoding methods can be used to provide high compression efficiency. This is achieved by first converting non-binary syntax elements into binary representations (e.g., 0, 1) using a process called binarization. The resulting transformed entries are called bins or bin-strings. These bins or bin-strings are then fed into the arithmetic encoding / decoding process. Figure 11 An example context-adaptive binary arithmetic codec (CABAC) encoding stage is shown. This example CABAC encoding stage can be implemented in a G-PCC encoder, for example, via... Figure 2 The arithmetic coding unit 214 and / or arithmetic coding unit 226 of the G-PCC encoder 200 are implemented.

[0264] In some examples of G-PCC, Context Adaptive Binary Arithmetic Encoding / Decoding (CABAC) can be used to generate bins through a binaryization process. For each encoded bin value, an appropriate context model is selected. These context models are used to encode each bin value into output bits based on the bin probability value. When the probability of a bin being 0 or 1 is equal, the CABAC engine bypasses context modeling and bin encoding. This is the bypass encoding / decoding stage discussed below. Otherwise, as bin values ​​are encoded and the model is based on the probability of the bin value, an appropriate context model is specified. As the encoder encodes more bins, the context is adjusted. Finally, the context-encoded bin values ​​or the original bitstream are sent or otherwise provided to the decoder.

[0265] Figure 12This is a block diagram of an example arithmetic coding unit 214 that can be configured to perform CABAC according to the techniques of this disclosure. Syntax elements 1180 are input into the arithmetic coding unit 214. If the syntax element is already a binary value syntax element (e.g., a flag or other syntax element with only 0 and 1 values), the binarization step can be skipped. If the syntax element is a non-binary value syntax element (e.g., a syntax element that can have values ​​other than 1 or 0), the non-binary value syntax element is binarized by the binarizer 1200. The binarizer 1200 performs a mapping from the non-binary value syntax elements to a sequence of binary decisions. These binary decisions are typically referred to as “bins.” For example, for transform coefficient levels, the level values ​​can be decomposed into consecutive bins, each bin indicating whether the absolute value of the coefficient level is greater than a certain value. For example, bin 0 (sometimes called an importance flag) indicates whether the absolute value of the transform coefficient level is greater than 0. bin 1 indicates whether the absolute value of the transform coefficient level is greater than 1, and so on. A unique mapping can be developed for each non-binary value syntax element.

[0266] Each bin produced by the binary converter 1200 is fed to the binary arithmetic encoding / decoding side of the arithmetic coding unit 214. That is, for a predetermined set of non-binary value syntax elements, each bin type (e.g., bin 0) is encoded / decoded before the next bin type (e.g., bin 1). Encoding / decoding can be performed in normal mode or bypass mode. In bypass mode, the bypass coding engine 1260 performs arithmetic encoding / decoding using a fixed probability model, such as Golomb-Rice or exponential Golomb encoding / decoding. Bypass mode is typically used for more predictable syntax elements.

[0267] The codec design in normal mode performs CABAC. Normal mode CABAC is used to encode and decode bin values, where the probability of a bin value is predictable given the value of a previously encoded bin. The probability that a bin is an LPS is determined by the context modeler 1220. The context modeler 1220 outputs the bin value and probability state of the context (e.g., probability state σ, including the value of the LPS and the probability of the LPS occurring). This context can be the initial context of a series of bins, or it can be determined based on the encoded values ​​of previously encoded bins. The identifier of the context can be expressed and / or determined based on the value of the variable ctxInc (context increment, e.g., the value of ctxInc representing the increment applied to the previous context). As described above, the context modeler 1220 can update the state based on whether the received bin is an MPS or an LPS. After the context modeler 1220 determines the context and probability state σ, the normal encoding engine 1240 performs BAC on the bin values.

[0268] Figure 13This is a block diagram of an example arithmetic decoding unit 302 that can be configured to perform CABAC according to the techniques of this disclosure. Figure 13 The arithmetic decoding unit 302 and Figure 12 The arithmetic coding unit 214 described in the diagram performs CABAC in the opposite manner. Encoded bits from bitstream 2180 are input to arithmetic decoding unit 302. Based on whether the encoded bits are entropy encoded using regular mode or bypass mode, the encoded bits are fed to either context modeler 2200 or bypass decoding engine 2220. If the encoded bits are encoded in bypass mode, the bypass decoding engine uses, for example, Golomb-Rice or exponential Golomb decoding to retrieve bins of binary value syntax elements or non-binary syntax elements.

[0269] If the encoded bits are encoded in a regular mode, the context modeler 2200 can determine the probabilistic model of the encoded bits, and the regular decoding engine 2240 can decode the encoded bits to produce a bin of non-binary value syntax elements (or the syntax element itself, if it is a binary value). After the context modeler 2200 determines the context and probability state σ, the regular decoding engine 2240 performs BAC to decode the bin value. In other words, the regular decoding engine 2240 can determine the probability state of the context and decode the bin based on the previously encoded bin and the current range. After decoding the bin, the context modeler 2200 can update the probability state of the context based on the window size and the value of the decoded bin.

[0270] Figure 14 This is a flowchart illustrating an example method for encoding a current prediction tree node according to one or more techniques of this disclosure. The current prediction tree node (PTN) can be included in a point cloud. Although regarding the G-PCC encoder 200 ( Figure 1 and Figure 2 This description is provided, but it should be understood that other devices can be configured to perform similar actions. Figure 14 Similar methods. For example, the G-PCC decoder, such as the G-PCC decoder 300 ( Figure 1 and Figure 3 ) can execute with Figure 14 Complementary methods (e.g., decoding instead of encoding).

[0271] The G-PCC encoder 200 obtains the value (1402) of the quadratic residual for geometric encoding and decoding of the current prediction tree node (PTN) of the point cloud. As described above, when performing prediction geometric encoding and decoding using an angle pattern in G-PCC, the G-PCC encoder 200 can perform prediction in the (r, φ, i) domain. Due to rounding errors, the encoding and decoding of r, φ, i may be lossy. In some examples, this loss can be reduced or eliminated by encoding and decoding a second set of residuals (called quadratic residuals) that can be in the Cartesian domain. For example, the current PTN may include three quadratic residuals (r x r y r z ), one or more of which can be used Figure 14 The technology is used for encoding.

[0272] The G-PCC encoder 200 can encode the value of the quadratic residual. To encode the value of the quadratic residual, the G-PCC encoder 200 can encode the prefix bin of a syntax element using a first set of context-adaptive binary arithmetic codec (CABAC) contexts, which has a value equal to the absolute value of the specified quadratic residual minus 2 (1404); and encode the suffix bin of the syntax element using a second set of the same contexts, different from the first set of CABAC contexts (1406). For example, the arithmetic coding unit 214 of the G-PCC encoder 200 can use a context with a context index (ctxIdx) between 0 and a-1 to encode the prefix bin of the ptn_sec_residual_abs_minus2 syntax element, and use a context with a context index (ctxIdx) between a and a+b-1 to encode the suffix bin of the ptn_sec_residual_abs_minus2[k] syntax element. In some examples, a can be 5 and b can be 4.

[0273] In some examples, besides syntax elements that have a value equal to the absolute value of the specified quadratic residual minus 2, the G-PCC encoder 200 can encode one or more other syntax elements that specify the value of the quadratic residual. As an example, the G-PCC encoder 200 can encode syntax elements that specify whether the value of the quadratic residual is equal to zero (e.g., ptn_sec_residual_eq0_flag). As another example, when the value of the quadratic residual is not equal to zero, the G-PCC encoder 200 can encode syntax elements that have a value equal to the sign of the specified quadratic residual (e.g., ptn_sec_residual_sign_flag) and syntax elements that specify whether the value of the quadratic residual is greater than one (e.g., ptn_sec_residual_eq1_flag).

[0274] However, as discussed above and according to one or more techniques of this disclosure, the G-PCC encoder 200 can avoid encoding syntax elements that specify the absolute value of a quadratic residual minus 17 (e.g., ptn_sec_residual_abs_minus17), even if the absolute value of the quadratic residual is greater than 17. By not encoding syntax elements that specify the absolute value of a quadratic residual minus 17, and by context-encoding and decoding the prefixes and suffixes of syntax elements that specify the absolute value of a quadratic residual minus 2, the G-PCC encoder 200 can reduce the number of context and / or context-encoded bins used for signaling notification of the quadratic residual. Thus, the techniques of this disclosure can reduce the computational complexity of point cloud encoding and decoding.

[0275] The techniques disclosed herein can be applied to signaling beyond quadratic residuals. For example, the G-PCC encoder 200 can obtain the value of the phi multiplier (1408) for geometric encoding and decoding of the current prediction tree node of the point cloud, and encode the value of the phi multiplier (1410) by encoding at least a syntax element having a value of the absolute value of the specified phi multiplier minus 9 (e.g., ptn_phi_mult_abs_minus9). However, similar to quadratic residuals, the G-PCC encoder 200 can avoid encoding syntax elements that have the absolute value of the specified phi multiplier minus 17 (e.g., even if the absolute value of the phi multiplier is greater than 17).

[0276] As described above, in some examples, the G-PCC encoder can signal the number of direct children of the PTN. For example, the G-PCC encoder 200 can encode a syntax element (e.g., Ptn_child_cnt) representing the number of direct children of the current prediction tree node in the geometric prediction tree representing the point cloud. In some examples, the G-PCC encoder 200 can utilize fixed-length encoding / decoding to encode the syntax element (e.g., binary encoding). For example, the G-PCC encoder 200 can utilize the following table to encode the syntax element representing the number of direct children.

[0277] Number of child nodes Ptn_child_cnt 0 00 1 01 2 10 3 11

[0278] However, in some examples, using fixed-length encoding and decoding may be undesirable. For example, the probability distribution of the number of child nodes may result in more PTNs with one child node than PTNs with 0, 2, or 3 child nodes. According to one or more techniques of this disclosure, the G-PCC encoder 200 can use variable-length encoding and decoding to encode a syntax element (e.g., Ptn_child_cnt) representing the number of direct child nodes of the current prediction tree node in the geometric prediction tree representing the point cloud (1412). For example, the G-PCC encoder 200 can utilize the following table to encode a syntax element representing the number of direct child nodes.

[0279] Number of child nodes Ptn_child_cnt 0 10 1 0 2 110 3 111

[0280] As can be seen from the table above, variable-length encoding and decoding of syntax elements that represent the number of direct children can include using a shorter codeword when the number of direct children is 1 than when the number of direct children is 0 (e.g., using codeword "0" when the number of children is 1, and using codeword "10" when the number of direct children is 0).

[0281] Figure 15 This is a flowchart illustrating an example method for decoding a current prediction tree node according to one or more techniques of this disclosure. The current prediction tree node (PTN) can be included in the point cloud. Although regarding the G-PCC decoder 300 ( Figure 1 and Figure 3 This description is provided, but it should be understood that other devices can be configured to perform similar actions. Figure 15 Similar methods. For example, G-PCC encoders, such as the G-PCC encoder 200 ( Figure 1 and Figure 2 ) can execute with Figure 1 5. Complementary methods (e.g., encoding opposite to decoding, such as in the reconstruction loop performed by GRU 216).

[0282] The G-PCC decoder 300 can select a prediction mode from multiple predefined prediction modes for performing predictive geometry encoding and decoding on the position of the current prediction tree node of the point cloud. As mentioned above, the multiple prediction modes may include at least: a zero prediction mode and an incremental prediction mode. In some examples, the G-PCC decoder 300 can select a prediction mode based on the value of a syntax element. For example, the geometry arithmetic decoder unit 302 can decode a ptn_pred_mode syntax element with a value specifying which prediction mode will be selected.

[0283] In response to selecting the zero prediction mode (1502), the G-PCC decoder 300 can perform zero prediction to determine the current PTN position. To perform zero prediction, the G-PCC decoder 300 can determine the radius, azimuth, and laser index of the parent node of the current prediction tree node (1504). For example, the G-PCC decoder 300 can obtain the radius, azimuth, and laser index of the parent node from memory (e.g., as previously determined by the G-PCC decoder 300).

[0284] The G-PCC decoder 300 can infer the azimuth and laser index of the predicted position of the current prediction tree node as the azimuth and laser index of the parent node (1506). For example, the G-PCC decoder 300 can copy the azimuth and laser index of the parent node as the azimuth and laser index of the predicted position of the current node.

[0285] The G-PCC decoder 300 can infer the radius of the predicted location as a minimum radius value (1508). For example, the G-PCC decoder 300 can always set the radius of the predicted location to the minimum radius value. In some examples, the minimum radius value can always be zero. In some examples, the minimum radius value can be greater than zero. For example, the G-PCC decoder 300 can decode syntax elements that specify a minimum radius value (e.g., from a stripe header).

[0286] To perform zero prediction, the G-PCC decoder 300 can determine the position of the current prediction tree node based on its predicted position (1510). For example, the G-PCC decoder 300 can obtain a residual radius value representing the difference between the radius value of the predicted position of the current prediction tree node and the radius value of the current prediction tree node's position. In some examples, such as when the selected mode is zero prediction mode, the G-PCC decoder 300 can infer that the sign of the residual radius value is positive (e.g., and avoid having to signal whether the sign is positive or negative). The G-PCC decoder 300 can add the residual radius value to a minimum radius value (e.g., the radius value of the predicted position of the current PTN) to obtain the radius value of the current PTN's position. The G-PCC decoder 300 can similarly obtain and add residuals of other components (e.g., azimuth and laser index).

[0287] In some examples, the G-PCC decoder 300 can modify the decoding based on the number of lasers used to generate the point cloud. For example, the G-PCC decoder 300 can determine the number of lasers used to capture light detection and ranging (LIDAR) data representing the point cloud (1512); and in response to determining that the number of lasers is 1, infer that the laser index of all nodes in the point cloud is the same value (e.g., the laser index value is 0) (1514). In this way, the G-PCC decoder 300 can avoid having to signal and / or predict the laser index. Thus, the techniques of this disclosure can reduce the number of bits required to represent the point cloud and / or reduce the complexity of point cloud encoding and decoding.

[0288] The following numbered clauses may describe one or more aspects of this disclosure:

[0289] Clause 1A. A method for processing a point cloud, the method comprising: obtaining a value of a quadratic residual for geometric encoding and decoding of the point cloud, the value being greater than 17; and encoding and decoding the value of the quadratic residual without encoding and decoding a syntax element specifying the value of the quadratic residual minus 17.

[0290] Clause 2A. The method of Clause 1A, wherein the syntax elements include the ptn_sec_residual_abs_minus17 syntax element.

[0291] Clause 3A. The method according to Clause 1A or 2A further includes: obtaining a value of a phi multiplier for geometric encoding and decoding of a point cloud, the value of the phi multiplier being greater than 17; and encoding and decoding the value of the phi multiplier without encoding and decoding a syntax element that specifies the value of the phi multiplier minus 17.

[0292] Clause 4A. According to the method of Clause 3A, the syntax element that specifies the value of the phi multiplier minus 17 includes the ptn_phi_mult_abs_minus17 syntax element.

[0293] Clause 5A. The method pursuant to Clause 3A or Clause 4A also includes: encoding and decoding the syntax element that subtracts 9 from the value of the specified phi multiplier.

[0294] Clause 6A. The method of any of Clauses 1A-5A, wherein encoding or decoding the value of a quadratic residual comprises: encoding or decoding the bits of the syntax element of the specified quadratic residual minus N using exponential Golomb encoding or decoding with a prefix context and a suffix context.

[0295] Clause 7A. The method according to Clause 6A, where N is 2.

[0296] Clause 8A. The method according to Clause 6A or 7A, where a is 5.

[0297] Clause 9A. The method pursuant to any of Clauses 6A-8A, where b is 4.

[0298] Item 1B. A method for processing point clouds, the method comprising: encoding and decoding a syntax element using variable-length encoding and decoding, the syntax element representing the number of direct child nodes of a current prediction tree node existing in a geometric prediction tree representing the point cloud; and encoding and decoding a syntax element representing a pattern used to predict the location associated with the current prediction tree node using variable-length encoding and decoding.

[0299] Clause 2B. According to the method of Clause 1B, the syntax element representing the number of direct child nodes of the current prediction tree node existing in the geometric prediction tree includes the ptn_child_cnt syntax element.

[0300] Clause 3B. According to the method of Clause 1B or 2B, the syntax element representing the mode used to predict the position associated with the current prediction tree node includes the ptn_pred_mode syntax element.

[0301] Clause 1C. A method for processing point clouds, the method comprising: in response to determining that a single laser is used to capture optical detection and ranging (LIDAR) data representing a point cloud, avoiding signaling to the laser index value of the single laser.

[0302] Clause 1D. A method for processing point clouds, the method comprising: performing zero prediction of the point cloud based on the azimuth of the parent neighbor, laser index, and symbol inference.

[0303] Item 1E. A method for encoding a point cloud, the method comprising: obtaining a value of a quadratic residual for geometric encoding and decoding a current prediction tree node of the point cloud; and encoding the value of the quadratic residual, wherein encoding the value comprises: encoding a prefix bin of a syntax element using a first set of context-adaptive binary arithmetic encoding and decoding (CABAC) contexts, the syntax element having a value that is the absolute value of the specified quadratic residual minus 2; and encoding a suffix bin of the syntax element using a second set of the contexts that is different from the first set of CABAC contexts.

[0304] Clause 2E. The method according to Clause 1E, wherein the syntax elements include the ptn_sec_residual_abs_minus2 syntax element.

[0305] Clause 3E. The method according to any of Clauses 1E-2E, wherein the absolute value of the quadratic residual is greater than 17, and wherein encoding the value of the quadratic residual does not include encoding the syntax element of the absolute value of the specified quadratic residual minus 17.

[0306] Clause 4E. The method according to any of Clauses 1E-3E, wherein the first set of CABAC contexts includes CABAC contexts having context indices between 0 and a-1, and wherein the second set of CABAC contexts includes CABAC contexts having context indices between a and a+b-1.

[0307] Clause 5E. The method according to Clause 4E, where a is 5 and where b is 4.

[0308] Clause 6E. The method according to any of Clauses 1E-5E, wherein the syntax element includes a first syntax element, and wherein encoding the value of the quadratic residual further includes: encoding a second syntax element having a value indicating whether the value of the specified quadratic residual is equal to zero; in the case that the value of the quadratic residual is not equal to zero: encoding a third syntax element having a value indicating the sign of the specified quadratic residual; and encoding a fourth syntax element having a value indicating whether the value of the specified quadratic residual is greater than one; wherein if the value of the quadratic residual is greater than one, the first syntax element is encoded.

[0309] Clause 7E. A method pursuant to any of Clauses 1E-6E, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element includes a first syntax element, the method further comprising: obtaining a value of a phi multiplier for geometrically encoding and decoding a second prediction tree node of a point cloud; and encoding the value of the phi multiplier, wherein encoding the value of the phi multiplier comprises: encoding a fifth syntax element having an absolute value of the specified phi multiplier minus 9.

[0310] Clause 8E. The method according to Clause 7E, wherein the absolute value of the phi multiplier is greater than 17, and wherein encoding the value of the phi multiplier does not include encoding the syntax element that specifies the value of the phi multiplier minus 17.

[0311] Clause 9E. The method of any of Clauses 1E-8E, wherein the current prediction tree node is the first prediction tree node and wherein the syntax element includes the first syntax element, the method further comprising: encoding a sixth syntax element using a variable-length codec having a value representing the number of direct child nodes of the second prediction tree node present in the geometric prediction tree representing the point cloud.

[0312] Clause 10E. According to the method of Clause 9E, the sixth syntax element representing the number of direct child nodes of the second prediction tree node existing in the geometric prediction tree includes the ptn_child_cnt syntax element.

[0313] Clause 11E. The method according to Clause 9E, wherein the use of variable-length encoding / decoding to encode the sixth syntax element includes using a shorter codeword when the number of direct children is 1 than when the number of direct children is 0.

[0314] Item 12E. A method for decoding a point cloud, the method comprising: obtaining a value of a quadratic residual for geometrically encoding and decoding a current prediction tree node of the point cloud; and decoding the value of the quadratic residual, wherein encoding the value comprises: decoding a prefix bin of a syntax element using a first set of context-adaptive binary arithmetic encoding and decoding (CABAC) contexts, the syntax element having a value that is the absolute value of the specified quadratic residual minus 2; and decoding a suffix bin of the syntax element using a second set of the contexts that is different from the first set of CABAC contexts.

[0315] Clause 13E. The method according to Clause 12E, wherein the syntax elements include the ptn_sec_residual_abs_minus2 syntax element.

[0316] Clause 14E. The method according to any of Clauses 12E-13E, wherein the absolute value of the quadratic residual is greater than 17, and wherein decoding the value of the quadratic residual does not include decoding the syntax element of the absolute value of the specified quadratic residual minus 17.

[0317] Clause 15E. The method pursuant to any of Clauses 12E-14E, wherein the first set of CABAC contexts comprises CABAC contexts having context indices between 0 and a-1, and wherein the second set of CABAC contexts comprises CABAC contexts having context indices between a and a+b-1.

[0318] Clause 16E. The method according to Clause 15E, where a is 5 and where b is 4.

[0319] Clause 17E. The method pursuant to any of Clauses 12E-16E, wherein the syntax element comprises a first syntax element, and wherein decoding the value of the quadratic residual further comprises: decoding a second syntax element having a value indicating whether the value of the specified quadratic residual is equal to zero; if the value of the quadratic residual is not equal to zero: decoding a third syntax element having a value indicating the sign of the specified quadratic residual; and decoding a fourth syntax element having a value indicating whether the value of the specified quadratic residual is greater than one; wherein if the value of the quadratic residual is greater than one, the first syntax element is decoded.

[0320] Clause 18E. A method pursuant to any of Clauses 12E-17E, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element includes a first syntax element, the method further comprising: obtaining a value of a phi multiplier for geometrically encoding and decoding a second prediction tree node of a point cloud; and decoding the value of the phi multiplier, wherein decoding the value of the phi multiplier comprises: decoding a fifth syntax element having an absolute value of the specified phi multiplier minus 9.

[0321] Clause 19E. The method according to Clause 18E, wherein the absolute value of the phi multiplier is greater than 17, and wherein decoding the value of the phi multiplier does not include decoding the syntax element that specifies the value of the phi multiplier minus 17.

[0322] Clause 20E. A method pursuant to any of Clauses 12E-19E, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element includes the first syntax element, the method further comprising: decoding a sixth syntax element using a variable-length codec having a value representing the number of direct child nodes of a second prediction tree node present in the geometric prediction tree representing the point cloud.

[0323] Clause 21E. According to the method of Clause 20E, the sixth syntax element representing the number of direct child nodes of the second prediction tree node existing in the geometric prediction tree includes the ptn_child_cnt syntax element.

[0324] Clause 22E. The method according to Clause 20E, wherein using variable-length encoding / decoding to decode the sixth syntax element includes using a shorter codeword when the number of direct children is 1 than when the number of direct children is 0.

[0325] Item 23E. An apparatus for encoding a point cloud, the apparatus comprising: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in circuitry and configured to: obtain a value of a quadratic residual for geometric encoding and decoding a current prediction tree node of the point cloud; and encode the value of the quadratic residual, wherein, in order to encode the value, the one or more processors are configured to: encode a prefix bin of a syntax element using a first set of context-adaptive binary arithmetic codec (CABAC) contexts, the syntax element having a value that specifies the absolute value of the quadratic residual minus 2; and encode a suffix bin of the syntax element using a second set of the contexts different from the first set of CABAC contexts.

[0326] Clause 24E. Devices pursuant to Clause 23E, wherein the syntax elements include the ptn_sec_residual_abs_minus2 syntax element.

[0327] Clause 25E. A device pursuant to any of Clauses 23E-24E, wherein the absolute value of the quadratic residual is greater than 17, and wherein, in order to encode the value of the quadratic residual, one or more processors are not configured to encode a syntax element of the absolute value of the specified quadratic residual minus 17.

[0328] Clause 26E. A device pursuant to any of Clauses 23E-25E, wherein a first set of CABAC contexts comprises CABAC contexts having context indices between 0 and a-1, and wherein a second set of CABAC contexts comprises CABAC contexts having context indices between a and a+b-1.

[0329] Clause 27E. Equipment pursuant to Clause 26E, wherein a is 5 and wherein b is 4.

[0330] Clause 28E. An apparatus pursuant to any of Clauses 23E-27E, wherein the syntax elements include a first syntax element, and wherein, for further encoding the value of the quadratic residual, the one or more processors are configured to: encode a second syntax element having a value specifying whether the value of the quadratic residual is equal to zero; if the value of the quadratic residual is not equal to zero: encode a third syntax element having a value specifying the sign of the value of the quadratic residual; and encode a fourth syntax element having a value specifying whether the value of the quadratic residual is greater than one; wherein if the value of the quadratic residual is greater than one, the first syntax element is encoded.

[0331] Clause 29E. A device pursuant to any of Clauses 23E-29E, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element includes a first syntax element, and wherein the one or more processors are further configured to: obtain the value of the phi multiplier for geometrically encoding and decoding a second prediction tree node of a point cloud; and encode the value of the phi multiplier, wherein, in order to encode the value of the phi multiplier, the one or more processors are configured to: encode a fifth syntax element having the absolute value of the specified phi multiplier minus 9.

[0332] Clause 30E. A device pursuant to Clause 29E, wherein the absolute value of the phi multiplier is greater than 17, and wherein, in order to encode the value of the phi multiplier, one or more processors are not configured to encode a syntax element of the specified phi multiplier value minus 17.

[0333] Clause 31E. A device pursuant to any of Clauses 23E-30E, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element includes a first syntax element, and wherein one or more processors are further configured to: encode a sixth syntax element using a variable-length codec having a value representing the number of direct child nodes of a second prediction tree node present in the geometric prediction tree representing the point cloud.

[0334] Clause 32E. The device according to Clause 31E, wherein the sixth syntax element representing the number of direct child nodes of the second prediction tree node existing in the geometric prediction tree includes the ptn_child_cnt syntax element.

[0335] Clause 33E. A device according to Clause 31E, wherein, in order to encode a sixth syntax element using a variable-length codec, one or more processors are configured to use a shorter codeword when the number of direct children is 1 than when the number of direct children is 0.

[0336] Item 34E. An apparatus for decoding a point cloud, the apparatus comprising: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in circuitry and configured to: obtain a value of a quadratic residual for geometric encoding and decoding a current prediction tree node of the point cloud; and decode the value of the quadratic residual, wherein, in order to decode the value, the one or more processors are configured to: decode a prefix bin of a syntax element having a value that is the absolute value of the specified quadratic residual minus 2 using a first set of context-adaptive binary arithmetic encoding and decoding (CABAC) contexts; and decode a suffix bin of the syntax element using a second set of the contexts different from the first set of CABAC contexts.

[0337] Clause 35E. Devices pursuant to Clause 34E, wherein the syntax elements include the ptn_sec_residual_abs_minus2 syntax element.

[0338] Clause 36E. A device pursuant to any of Clauses 34E-35E, wherein the absolute value of the quadratic residual is greater than 17, and wherein, in order to decode the value of the quadratic residual, one or more processors are not configured to decode a syntax element whose absolute value of the specified quadratic residual is less than 17.

[0339] Clause 37E. A device pursuant to any of Clauses 34E-36E, wherein a first set of CABAC contexts includes CABAC contexts having context indices between 0 and a-1, and wherein a second set of CABAC contexts includes CABAC contexts having context indices between a and a+b-1.

[0340] Clause 38E. Equipment pursuant to Clause 37E, wherein a is 5 and b is 4.

[0341] Clause 39E. An apparatus pursuant to any of Clauses 34E-38E, wherein the syntax element comprises a first syntax element, and wherein, for further decoding the value of the quadratic residual, the one or more processors are configured to: decode a second syntax element having a value indicating whether the value of the specified quadratic residual is equal to zero; if the value of the quadratic residual is not equal to zero: decode a third syntax element having a value indicating the sign of the specified quadratic residual; and decode a fourth syntax element having a value indicating whether the value of the specified quadratic residual is greater than one; wherein if the value of the quadratic residual is greater than one, the first syntax element is decoded.

[0342] Clause 40E. A device pursuant to any of Clauses 34E-39E, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element includes a first syntax element, and wherein the one or more processors are further configured to: obtain the value of the phi multiplier for geometrically encoding and decoding a second prediction tree node of a point cloud; and decode the value of the phi multiplier, wherein, in order to decode the value of the phi multiplier, the one or more processors are configured to: decode a fifth syntax element having the absolute value of the specified phi multiplier minus 9.

[0343] Clause 41E. A device pursuant to any of Clauses 34E-40E, wherein the absolute value of the phi multiplier is greater than 17, and wherein, in order to decode the value of the phi multiplier, one or more processors are not configured to decode a syntax element of the specified phi multiplier value minus 17.

[0344] Clause 42E. A device pursuant to any of Clauses 34E-41E, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element includes a first syntax element, and wherein one or more processors are further configured to: decode a sixth syntax element using a variable-length codec, the sixth syntax element having a value representing the number of direct child nodes of a second prediction tree node present in the geometric prediction tree representing the point cloud.

[0345] Clause 43E. In the device pursuant to Clause 42E, the sixth syntax element representing the number of direct child nodes of the second prediction tree node existing in the geometric prediction tree includes the ptn_child_cnt syntax element.

[0346] Clause 44E. A device according to Clause 42E, wherein, in order to use variable-length encoding and decoding to decode the sixth syntax element, one or more processors are configured to use a shorter codeword when the number of direct children is 1 than when the number of direct children is 0.

[0347] Item 45E. A computer-readable storage medium storing instructions that, when executed, cause one or more processors of a point cloud encoder to: obtain a value of a quadratic residual for geometric encoding and decoding of a current prediction tree node of a point cloud; and encode the value of the quadratic residual, wherein the instructions causing the one or more processors to encode the value include instructions causing the one or more processors to: encode a prefix bin of a syntax element using a first set of context-adaptive binary arithmetic encoding and decoding (CABAC) contexts, the syntax element having a value that is the absolute value of the specified quadratic residual minus 2; and encode a suffix bin of the syntax element using a second set of the contexts different from the first set of CABAC contexts.

[0348] Item 46E. A computer-readable storage medium storing instructions that, when executed, cause one or more processors of a point cloud decoder to: obtain a value of a quadratic residual for geometric encoding and decoding of a current prediction tree node of a point cloud; and decode the value of the quadratic residual, wherein the instructions causing the one or more processors to decode the value include instructions causing the one or more processors to: decode a prefix bin of a syntax element using a first set of context-adaptive binary arithmetic encoding and decoding (CABAC) contexts, the syntax element having a value that is the absolute value of the specified quadratic residual minus 2; and decode a suffix bin of the syntax element using a second set of the contexts different from the first set of CABAC contexts.

[0349] Clause 1F. A method for decoding a point cloud, the method comprising: selecting a prediction mode from a plurality of predefined prediction modes for performing predictive geometry encoding and decoding of the position of a current prediction tree node of the point cloud, wherein the plurality of prediction modes include at least: a zero prediction mode and an incremental prediction mode; in response to selecting the zero prediction mode: determining the radius, azimuth, and laser index of the parent node of the current prediction tree node; inferring the azimuth and laser index of the predicted position of the current prediction tree node as the azimuth and laser index of the parent node; inferring the radius of the predicted position as a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determining the position of the current prediction tree node based on the predicted position of the current prediction tree node.

[0350] Clause 2F. The method according to Clause 1F further includes: in response to selecting an incremental prediction mode: inferring the radius, azimuth, and laser index of the predicted location of the current prediction tree node as the radius, azimuth, and laser index of the parent node.

[0351] Clause 3F. The method of any of Clauses 1F-2F, wherein the minimum radius is zero.

[0352] Clause 4F. The method of any of Clauses 1F-3F, wherein the minimum radius value is greater than zero.

[0353] Clause 5F. The method according to any of Clauses 1F-4F, wherein determining the position of the current node based on the predicted position comprises: obtaining a residual radius value representing the difference between the radius value of the predicted position of the current prediction tree node and the radius value of the position of the current prediction tree node.

[0354] Clause 6F. The method according to Clause 5F, wherein obtaining the residual radius value includes: in response to selecting a zero prediction mode, inferring that the sign of the residual radius value is positive.

[0355] Clause 7F. The method pursuant to any of Clauses 1F-6F further includes: determining the number of lasers used to capture optical detection and ranging (LIDAR) data representing a point cloud; and in response to determining that the number of lasers is one, inferring that the laser indices of all nodes in the point cloud are the same.

[0356] Clause 8F. The method of any of Clauses 1F-7F, wherein selecting a prediction mode comprises: decoding a syntax element having a value indicating the selected prediction mode.

[0357] Clause 9F. A method for encoding a point cloud, the method comprising: selecting a prediction mode from a plurality of predefined prediction modes for performing predictive geometry encoding and decoding of the position of a current prediction tree node of the point cloud, wherein the plurality of prediction modes include at least: a zero prediction mode and an incremental prediction mode; wherein the selected mode is a zero prediction mode; determining the radius, azimuth, and laser index of the parent node of the current prediction tree node; inferring the azimuth and laser index of the predicted position of the current prediction tree node as the azimuth and laser index of the parent node; inferring the radius of the predicted position as a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determining the position of the current prediction tree node based on the predicted position of the current prediction tree node.

[0358] Clause 10F. The method according to Clause 9F further includes: in response to selecting an incremental prediction mode: inferring the radius, azimuth, and laser index of the predicted location of the current prediction tree node as the radius, azimuth, and laser index of the parent node.

[0359] Clause 11F. The method of any of Clauses 9F-10F, wherein the minimum radius is zero.

[0360] Clause 12F. The method of any of Clauses 9F-11F, wherein the minimum radius value is greater than zero.

[0361] Clause 13F. The method according to any of Clauses 9F-12F, wherein determining the position of the current node based on the predicted position comprises: obtaining a residual radius value representing the difference between the radius value of the predicted position of the current prediction tree node and the radius value of the position of the current prediction tree node.

[0362] Clause 14F. The method according to Clause 13F, wherein obtaining the residual radius value includes: in the case that the selected mode is a zero prediction mode, inferring that the sign of the residual radius value is positive.

[0363] Clause 15F. The method pursuant to any of Clauses 9F-14F further includes: determining the number of lasers used to capture optical detection and ranging (LIDAR) data representing a point cloud; and in response to determining that the number of lasers is one, inferring that the laser indices of all nodes in the point cloud are the same.

[0364] Clause 16F. The method according to any of Clauses 9F-15F, wherein selecting a prediction mode comprises: encoding a syntax element having a value indicating the selected prediction mode.

[0365] Clause 17F. An apparatus for decoding a point cloud, the apparatus comprising: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in circuitry and configured to: select a prediction mode from a plurality of predefined prediction modes for performing predictive geometry encoding and decoding of the position of a current prediction tree node of the point cloud, wherein the plurality of prediction modes include at least: a zero prediction mode and an incremental prediction mode; in response to selecting the zero prediction mode: determine the radius, azimuth, and laser index of the parent node of the current prediction tree node; infer the azimuth and laser index of the predicted position of the current prediction tree node as the azimuth and laser index of the parent node; infer the radius of the predicted position as a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determine the position of the current prediction tree node based on the predicted position of the current prediction tree node.

[0366] Clause 18F. In a device pursuant to Clause 17F, one or more processors are further configured to: in response to selecting an incremental prediction mode: infer the radius, azimuth, and laser index of the predicted location of the current prediction tree node as the radius, azimuth, and laser index of the parent node.

[0367] Clause 19F. Equipment pursuant to any of Clauses 17F-18F, wherein the minimum radius is zero.

[0368] Clause 20F. Equipment pursuant to any of Clauses 17F-19F, wherein the minimum radius value is greater than zero.

[0369] Clause 21F. An apparatus pursuant to any of Clauses 17F-20F, wherein, in order to determine the position of a current node based on a predicted position, one or more processors are configured to: obtain a residual radius value representing the difference between a radius value representing the predicted position of the current prediction tree node and a radius value representing the position of the current prediction tree node.

[0370] Clause 22F. A device according to Clause 21F, wherein, in order to obtain a residual radius value, one or more processors are configured to: in response to selecting a zero prediction mode, infer that the sign of the residual radius value is positive.

[0371] Clause 23F. An apparatus pursuant to any of Clauses 17F-22F, wherein one or more processors are further configured to: determine the number of lasers used to capture light detection and ranging (LIDAR) data representing a point cloud; and, in response to determining that the number of lasers is one, infer that the laser indices of all nodes in the point cloud are the same value.

[0372] Clause 24F. A device pursuant to any of Clauses 17F-23F, wherein, in order to select a prediction mode, one or more processors are further configured to: decode a syntax element having a value indicating the selected prediction mode.

[0373] Clause 25F. An apparatus for encoding a point cloud, the apparatus comprising: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in circuitry and configured to: select a prediction mode from a plurality of predefined prediction modes for performing predictive geometry encoding and decoding of the position of a current prediction tree node of the point cloud, wherein the plurality of prediction modes include at least: a zero prediction mode and an incremental prediction mode; wherein the selected mode is the zero prediction mode; determine the radius, azimuth, and laser index of the parent node of the current prediction tree node; infer the azimuth and laser index of the predicted position of the current prediction tree node as the azimuth and laser index of the parent node; infer the radius of the predicted position as a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determine the position of the current prediction tree node based on the predicted position of the current prediction tree node.

[0374] Clause 26F. In the device pursuant to Clause 25F, one or more processors are further configured to: in response to selecting an incremental prediction mode: infer the radius, azimuth, and laser index of the predicted location of the current prediction tree node as the radius, azimuth, and laser index of the parent node.

[0375] Clause 27F. Equipment pursuant to any of Clauses 25F-26F, wherein the minimum radius is zero.

[0376] Clause 28F. Equipment pursuant to any of Clauses 25F-27F, wherein the minimum radius value is greater than zero.

[0377] Clause 29F. An apparatus pursuant to any of Clauses 25F-28F, wherein, in order to determine the position of the current node based on the predicted position, one or more processors are configured to: obtain a residual radius value representing the difference between a radius value representing the predicted position of the current prediction tree node and a radius value representing the position of the current prediction tree node.

[0378] Clause 30F. A device pursuant to Clause 29F, wherein, in order to obtain a residual radius value, one or more processors are configured to: in response to selecting a zero prediction mode, infer the sign of the residual radius value as positive.

[0379] Clause 31F. An apparatus pursuant to any of Clauses 25F-30F, wherein one or more processors are further configured to: determine the number of lasers used to capture light detection and ranging (LIDAR) data representing a point cloud; and, in response to determining that the number of lasers is one, infer that the laser indices of all nodes in the point cloud are the same value.

[0380] Clause 32F. A device pursuant to any of Clauses 25F-31F, wherein, in order to select a prediction mode, one or more processors are further configured to: encode a syntax element having a value indicating the selected prediction mode.

[0381] Clause 3F. A computer-readable storage medium storing instructions that, when executed, cause one or more processors of a point cloud decoding apparatus to: select from a plurality of predefined prediction modes a prediction mode for performing predictive geometry encoding and decoding of the position of a current prediction tree node of a point cloud, wherein the plurality of prediction modes include at least: a zero prediction mode and an incremental prediction mode; in response to selecting the zero prediction mode: determine the radius, azimuth, and laser index of the parent node of the current prediction tree node; infer the azimuth and laser index of the predicted position of the current prediction tree node as the azimuth and laser index of the parent node; infer the radius of the predicted position as a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determine the position of the current prediction tree node based on the predicted position of the current prediction tree node.

[0382] Clause 34F. A computer-readable storage medium storing instructions that, when executed, cause one or more processors of a point cloud encoding apparatus to: select from a plurality of predefined prediction modes a prediction mode for performing predictive geometry encoding and decoding of the position of a current prediction tree node of a point cloud, wherein the plurality of prediction modes includes at least: a zero prediction mode and an incremental prediction mode; wherein the selected prediction mode is the zero prediction mode; determine the radius, azimuth, and laser index of the parent node of the current prediction tree node; infer the azimuth and laser index of the predicted position of the current prediction tree node as the azimuth and laser index of the parent node; infer the radius of the predicted position as a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determine the position of the current prediction tree node based on the predicted position of the current prediction tree node.

[0383] Clause 1Z. An apparatus for processing point clouds, the apparatus comprising one or more components for performing the methods of any one of Clauses 1A-1F.

[0384] Clause 2Z. A device pursuant to Clause 1Z, wherein one or more components include one or more processors implemented in a circuit.

[0385] Clause 3Z. The device pursuant to any of Clauses 1Z or 2Z also includes a memory for storing data representing the point cloud.

[0386] Clause 4Z. A device pursuant to any of Clauses 1Z-3Z, wherein the device includes a decoder.

[0387] Clause 5Z. Devices pursuant to any of Clauses 1Z-4Z, wherein the device includes an encoder.

[0388] Clause 6Z. Devices pursuant to any of Clauses 1Z-5Z also include devices for generating point clouds.

[0389] Clause 7Z. Devices pursuant to any of Clauses 1Z-6Z also include displays that render images based on point clouds.

[0390] Clause 8Z. A computer-readable storage medium having instructions stored thereon, which, when executed, cause one or more processors to perform any one of the clauses 1A-1F.

[0391] Examples in various aspects of this disclosure may be used individually or in any combination.

[0392] It should be recognized that, depending on the examples, certain actions or events of any of the techniques described herein may be performed in a different order, and may be added, combined, or excluded entirely (e.g., not all described actions or events are necessary for the practice of the technique). Furthermore, in some examples, actions or events may be performed in parallel, for example through multithreading, interrupt handling, or multiple processors, rather than sequentially.

[0393] In one or more examples, the functionality may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, these functions may be stored or transmitted thereon as one or more instructions or code and executed by a hardware-based processing unit. A computer-readable medium may include a computer-readable storage medium corresponding to a tangible medium (e.g., a data storage medium), or a communication medium that includes any medium that facilitates the transfer of a computer program from one place to another (e.g., according to a communication protocol). In this way, a computer-readable medium may generally correspond to (1) a non-transitory tangible computer-readable storage medium or (2) a communication medium such as a signal or carrier wave. A data storage medium may be any available medium accessible by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementing the techniques described in this disclosure. Computer program products may include computer-readable media.

[0394] By way of example, and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disc storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store required program code in the form of instructions or data structures and that can be accessed by a computer. Furthermore, any connection is appropriately referred to as a computer-readable medium. For example, if instructions are sent from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies (such as infrared, radio, and microwave), then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies (such as infrared, radio, and microwave) are included in the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other temporary media, but rather refer to non-temporary tangible storage media. Disks and optical discs as used herein include optical discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where disks typically reproduce data magnetically and optical discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0395] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, the terms "processor" and "processing circuit" as used herein can refer to any of the above-described structures or any other structure suitable for implementing the techniques described herein. Furthermore, in some aspects, the functionality described herein can be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into combined codecs. Moreover, these techniques can be fully implemented in one or more circuit or logic elements.

[0396] The techniques disclosed herein can be implemented in a variety of devices or apparatuses, including wireless handheld devices, integrated circuits (ICs), or IC sets, such as chip sets. Various components, modules, or units are described in this disclosure to emphasize functional aspects of a device configured to perform the disclosed techniques, but they do not necessarily need to be implemented by different hardware units. Rather, as described above, various units can be combined in a codec hardware unit or provided by a collection of interoperable hardware units (including one or more processors as described above) along with suitable software and / or firmware.

[0397] Various examples have been described. These and other examples are within the scope of the following claims.

Claims

1. A method of encoding a point cloud, the method comprising: obtaining a value of a quadratic residual used for geometrically coding a position of a current prediction tree node of the point cloud, wherein the position is associated with Cartesian coordinates, a respective coordinate in an angular domain is obtained based on the Cartesian coordinates, and wherein the quadratic residual is obtained in Cartesian coordinates and is a residual between the Cartesian coordinates of the position and a respective Cartesian coordinate reconstructed from one or more coordinates in the angular domain; and encoding the value of the quadratic residual, wherein encoding the value comprises: encoding, using a first set of context adaptive binary arithmetic coding (CABAC) contexts, prefix bins of a syntax element having a value that specifies an absolute value of the value of the quadratic residual minus 2; and encoding, using a second set of the contexts that are different from the first set of CABAC contexts, suffix bins of the syntax element.

2. The method of claim 1, wherein the syntax element comprises a ptn_sec_residual_abs_minus2 syntax element, and / or wherein the angular domain is a radius, azimuth, and laser index r, f, domain.

3. The method of claim 1, wherein an absolute value of the quadratic residual is greater than 17, and wherein encoding the value of the quadratic residual does not include encoding a syntax element that specifies an absolute value of the quadratic residual minus 17.

4. The method of claim 1, wherein the first set of CABAC contexts comprises CABAC contexts having context indices between 0 and a-1, and wherein the second set of CABAC contexts comprises CABAC contexts having context indices between a and a+b-1.

5. The method of claim 4, wherein a is 5, and wherein b is 4.

6. The method of claim 1, wherein the syntax element comprises a first syntax element, and wherein encoding the value of the quadratic residual further comprises: encoding a second syntax element having a value that specifies whether the value of the quadratic residual is equal to zero; in the case that the value of the quadratic residual is not equal to zero: encoding a third syntax element having a value that specifies a sign of the value of the quadratic residual; and encoding a fourth syntax element having a value that specifies whether the value of the quadratic residual is greater than one; in the case that the value of the quadratic residual is greater than one, encoding the first syntax element.

7. The method of claim 1, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element comprises a first syntax element, the method further comprising: obtaining a value of a phi multiplier used for geometrically coding a second prediction tree node of the point cloud; and encoding the value of the phi multiplier, wherein encoding the value of the phi multiplier comprises: encoding a fifth syntax element having a value that specifies an absolute value of the value of the phi multiplier minus 9. ​ ​ 8. The method of claim 7, wherein an absolute value of the phi multiplier is greater than 17, and wherein encoding a value of the phi multiplier does not include encoding a syntax element that specifies the value of the phi multiplier minus 17.

9. The method of claim 1, wherein the current prediction tree node is a first prediction tree node, and wherein the syntax element comprises a first syntax element, the method further comprising: encoding a sixth syntax element using variable length coding, the sixth syntax element having a value that represents a number of direct children of a second prediction tree node that exists in a geometry prediction tree that represents the point cloud.

10. The method of claim 9, wherein the sixth syntax element that represents a number of direct children of the second prediction tree node that exists in the geometry prediction tree comprises a ptn child cnt syntax element.

11. The method of claim 9, wherein encoding the sixth syntax element using variable length coding comprises using a shorter codeword in the case of a direct child count of 1 than in the case of a direct child count of 0.

12. A method of decoding a point cloud, the method comprising: obtaining a value of a quadratic residual used for geometry coding of a position of a current prediction tree node of the point cloud; and decoding the value of the quadratic residual, wherein encoding the value comprises: decoding a prefix bin of a syntax element using a first set of context adaptive binary arithmetic coding (CABAC) contexts, the syntax element having a value that specifies an absolute value of the value of the quadratic residual minus 2; and decoding a suffix bin of the syntax element using a second set of the contexts that are different than the first set of CABAC contexts, wherein the quadratic residual is obtained in Cartesian coordinates, and the quadratic residual is a residual between Cartesian coordinates of the position and respective Cartesian coordinates reconstructed from one or more coordinates of the position in an angular domain.

13. The method of claim 12, wherein the syntax element comprises a ptn sec residual abs minus2 syntax element, and / or wherein the angular domain is a radius, azimuth, and laser index r, f, i domain.

14. The method of claim 12, wherein an absolute value of the quadratic residual is greater than 17, and wherein decoding the value of the quadratic residual does not include decoding a syntax element that specifies the absolute value of the quadratic residual minus 17.

15. The method of claim 12, wherein the first set of CABAC contexts comprises CABAC contexts having context indices between 0 and a - 1, and wherein the second set of CABAC contexts comprises CABAC contexts having context indices between a and a + b - 1.

16. The method of claim 15, wherein a is 5, and wherein b is 4.

17. The method of claim 12, wherein the syntax element comprises a first syntax element, and wherein decoding the value of the quadratic residual further comprises: decoding a second syntax element having a value that specifies whether the value of the quadratic residual is equal to zero; in the case that the value of the quadratic residual is not equal to zero: decoding a third syntax element having a value that specifies a sign of the value of the quadratic residual; and decoding a fourth syntax element having a value that specifies whether the value of the quadratic residual is greater than one; in the case that the value of the quadratic residual is greater than one, decoding the first syntax element.

18. The method of claim 12, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element comprises a first syntax element, the method further comprising: obtaining a value of a phi multiplier used for geometrically coding a second prediction tree node of the point cloud; and decoding the value of the phi multiplier, wherein decoding the value of the phi multiplier comprises: decoding a fifth syntax element having a value that specifies an absolute value of the value of the phi multiplier minus 9.

19. The method of claim 18, wherein the absolute value of the phi multiplier is greater than 17, and wherein decoding the value of the phi multiplier does not comprise decoding a syntax element that specifies the value of the phi multiplier minus 17.

20. The method of claim 12, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element comprises a first syntax element, the method further comprising: decoding a sixth syntax element using variable length coding, the sixth syntax element having a value that represents a number of direct children of a second prediction tree node present in a geometric prediction tree representing the point cloud.

21. The method of claim 20, wherein the sixth syntax element that represents the number of direct children of the second prediction tree node present in the geometric prediction tree comprises a ptn child cnt syntax element.

22. The method of claim 20, wherein decoding the sixth syntax element using variable length coding comprises using a shorter codeword in the case that the number of direct children is one than in the case that the number of direct children is zero.

23. A device for encoding a point cloud, the device comprising: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in circuitry and configured to: obtain a value of a quadratic residual used for geometrically coding a position of a current prediction tree node of the point cloud, wherein the position is associated with Cartesian coordinates, respective coordinates in an angular domain are obtained based on the Cartesian coordinates, and wherein the quadratic residual is obtained in Cartesian coordinates and is a residual between the Cartesian coordinates of the position and respective Cartesian coordinates reconstructed from the one or more coordinates in the angular domain; and encode the value of the quadratic residual, wherein to encode the value, the one or more processors are configured to: ​ ​ ​ encoding, using a first set of context adaptive binary arithmetic coding (CABAC) contexts, prefix bins of a syntax element having values that specify absolute values of the quadratic residual minus 2; and encoding, using a second set of the contexts that are different than the first set of CABAC contexts, suffix bins of the syntax element.

24. The device of claim 23, wherein the syntax element comprises a ptn sec residual abs minus2 syntax element, and / or wherein the angular domain is a radius, azimuth, and laser index r, f, domain.

25. The device of claim 23, wherein the absolute value of the quadratic residual is greater than 17, and wherein to encode the value of the quadratic residual, the one or more processors are not configured to encode a syntax element that specifies the value of the quadratic residual minus 17.

26. The device of claim 23, wherein the first set of CABAC contexts comprises CABAC contexts having context indices between 0 and a - 1, and wherein the second set of CABAC contexts comprises CABAC contexts having context indices between a and a + b - 1.

27. The device of claim 26, wherein a is 5, and wherein b is 4.

28. The device of claim 23, wherein the syntax element comprises a first syntax element, and wherein to further encode the value of the quadratic residual, the one or more processors are configured to: encode a second syntax element having a value that specifies whether the value of the quadratic residual is equal to zero; in the case that the value of the quadratic residual is not equal to zero: encode a third syntax element having a value that specifies a sign of the value of the quadratic residual; and encode a fourth syntax element having a value that specifies whether the value of the quadratic residual is greater than one; in the case that the value of the quadratic residual is greater than one, encode the first syntax element.

29. The device of claim 23, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element comprises a first syntax element, and wherein the one or more processors are further configured to: obtain a value of a phi multiplier used to geometrically code a second prediction tree node of the point cloud; and to encode the value of the phi multiplier, the one or more processors are configured to: encoding a value of the phi multiplier, wherein encode a fifth syntax element having a value that specifies an absolute value of the value of the phi multiplier minus 9.

30. The device of claim 29, wherein the absolute value of the phi multiplier is greater than 17, and wherein to encode the value of the phi multiplier, the one or more processors are not configured to encode a syntax element that specifies the value of the phi multiplier minus 17. ​ 31. The device of claim 23, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element comprises a first syntax element, and wherein the one or more processors are further configured to: encode a sixth syntax element using variable length coding, the sixth syntax element having a value that represents a number of direct children of a second prediction tree node that exists in a geometry prediction tree that represents the point cloud.

32. The device of claim 31, wherein the sixth syntax element that represents a number of direct children of the second prediction tree node that exists in the geometry prediction tree comprises a ptn child cnt syntax element.

33. The apparatus of claim 31, wherein, To encode the sixth syntax element using variable length coding, the one or more processors are configured to use a shorter codeword in the case of a number of direct children being 1 than in the case of a number of direct children being 0.

34. A device for decoding a point cloud, the device comprising: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in circuitry and configured to: obtain a value of a quadratic residual used for geometry coding of a position of a current prediction tree node of the point cloud; and decode the value of the quadratic residual, wherein, to decode the value, the one or more processors are configured to: decode, using a first set of context adaptive binary arithmetic coding (CABAC) contexts, prefix bins of a syntax element having a value that specifies an absolute value of the value of the quadratic residual minus 2; and decode, using a second set of the contexts that are different from the first set of CABAC contexts, suffix bins of the syntax element, wherein the quadratic residual is obtained in Cartesian coordinates and is a residual between Cartesian coordinates of the position and respective Cartesian coordinates reconstructed from one or more coordinates of the position in an angular domain.

35. The device of claim 34, wherein the syntax element comprises a ptn sec residual abs minus2 syntax element, and / or wherein the angular domain is a radius, azimuth, and laser index (r, f, i) domain.

36. The device of claim 34, wherein an absolute value of the quadratic residual is greater than 17, and wherein, to decode the value of the quadratic residual, the one or more processors are not configured to decode a syntax element that specifies an absolute value of the quadratic residual minus 17.

37. The device of claim 34, wherein the first set of CABAC contexts comprises CABAC contexts having context indices between 0 and a - 1, and wherein the second set of CABAC contexts comprises CABAC contexts having context indices between a and a + b - 1.

38. The device of claim 37, wherein a is 5, and wherein b is 4.

39. The device of claim 34, wherein the syntax element comprises a first syntax element, and wherein to further decode the value of the secondary residual, the one or more processors are configured to: decode a second syntax element having a value that specifies whether the value of the secondary residual is equal to zero; in the case that the value of the secondary residual is not equal to zero: decode a third syntax element having a value that specifies a sign of the value of the secondary residual; and decode a fourth syntax element having a value that specifies whether the value of the secondary residual is greater than one; in the case that the value of the secondary residual is greater than one, decode the first syntax element.

40. The device of claim 34, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element comprises a first syntax element, and wherein the one or more processors are further configured to: obtain a value of a phi multiplier used to geometrically code a second prediction tree node of the point cloud; and to decode the value of the phi multiplier, the one or more processors are configured to: decoding a value of the phi multiplier, wherein decode a fifth syntax element having a value that specifies an absolute value of the value of the phi multiplier minus 9.

41. The device of claim 40, wherein the absolute value of the phi multiplier is greater than 17, and wherein to decode the value of the phi multiplier, the one or more processors are not configured to decode a syntax element that specifies the value of the phi multiplier minus 17.

42. The device of claim 34, wherein the current prediction tree node is a first prediction tree node, wherein the syntax element comprises a first syntax element, and wherein the one or more processors are further configured to: decode, using variable length coding, a sixth syntax element having a value that represents a number of direct children of a second prediction tree node present in a geometry prediction tree that represents the point cloud.

43. The device of claim 42, wherein the sixth syntax element that represents the number of direct children of the second prediction tree node present in the geometry prediction tree comprises a ptn child cnt syntax element. to decode the sixth syntax element using variable length coding, the one or more processors are configured to use a shorter codeword in the case that the number of direct children is one than in the case that the number of direct children is zero.

44. The apparatus of claim 42, wherein, 45. A computer-readable storage medium storing instructions that, when executed, cause one or more processors to perform the method of any of claims 1-11.

46. A computer-readable storage medium storing instructions that, when executed, cause one or more processors to perform the method of any of claims 12-22. ​

Citation Information

Patent Citations

  • A method and apparatus for depth encoding and decoding

    EP3713237A1

  • Apparatus and method for processing point cloud data

    WO2020189976A1