Predictive geometry coding in G-PCC

By adopting a modified zero-prediction mode and using a single syntax element for secondary residuals in G-PCC, the inefficiencies of existing point cloud coding methods are addressed, resulting in improved computational efficiency and reduced errors.

JP7850144B2Active Publication Date: 2026-04-22QUALCOMM INC
View PDF 7 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
QUALCOMM INC
Filing Date
2021-09-28
Publication Date
2026-04-22

AI Technical Summary

Technical Problem

Existing point cloud coding methods, particularly in G-PCC, face inefficiencies due to lossy rounding errors and high computational complexity from using many context-coded bins for signaling residuals, and the zero-prediction mode is inefficient.

Method used

Implement a modified zero-prediction mode in G-PCC where only the azimuth angle and laser index are inherited from the parent node, reducing the need to signal the radius, and use a single syntax element for signaling the absolute value of a secondary residual, thereby reducing the number of contexts and context-coded bins.

Benefits of technology

This approach enhances coding efficiency by minimizing computational complexity and reducing lossy errors in point cloud encoding and decoding processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007850144000051
    Figure 0007850144000051
  • Figure 0007850144000052
    Figure 0007850144000052
  • Figure 0007850144000053
    Figure 0007850144000053
Patent Text Reader

Abstract

An exemplary method for encoding a point cloud includes obtaining a value of a quadratic residual for geometry coding a current prediction tree node of the point cloud, and encoding the value of the quadratic residual, wherein encoding the value includes encoding prefix bins of a syntax element having a value specifying the absolute value of the value of the quadratic residual minus 2 using a first set of context-adaptive binary arithmetic coding (CABAC) contexts, and encoding suffix bins of the syntax element using a second set of CABAC contexts different from the first set of contexts.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] This application claims priority to U.S. Patent Application No. 17 / 449,003 filed on 27 September 2021, U.S. Provisional Patent Application No. 63 / 088,831 filed on 7 October 2020, and U.S. Provisional Patent Application No. 63 / 114,317 filed on 16 November 2020, the entire contents of these applications being incorporated herein by reference. U.S. Patent Application No. 17 / 449,003 filed on 27 September 2021 claims the benefits of U.S. Provisional Patent Application No. 63 / 088,831 filed on 7 October 2020 and U.S. Provisional Patent Application No. 63 / 114,317 filed on 16 November 2020.

[0002] This disclosure relates to the encoding and decoding of point clouds. [Background technology]

[0003] A point cloud is a collection of points in three-dimensional space. A point can correspond to a point on an object in three-dimensional space. Therefore, a point cloud can be used to represent the physical content of three-dimensional space. Point clouds can be useful in a wide variety of situations. For example, a point cloud can be used in the context of an autonomous vehicle to represent the location of an object on a road. In another example, a point cloud can be used in augmented reality (AR) or mixed reality (MR) applications to represent the physical content of an environment for the purpose of positioning virtual objects. Point cloud compression is the process of encoding and decoding a point cloud. Encoding a point cloud can reduce the amount of data required to store and transmit it. [Overview of the project] [Means for solving the problem]

[0004] In general, this disclosure describes techniques for coding nodes in a point cloud, for example, for currently developed Geometry-PCC (G-PCC) standards. However, the exemplary techniques are not limited to the G-PCC standard. In some examples of G-PCC, the coordinates of the location of a node (also called a point) in the point cloud can be converted into an (r,φ,i) domain, where the node's location is represented by three parameters: radius r, azimuth angle φ, and laser index i. When using the angular mode for predictive geometry coding in G-PCC, the G-PCC coder can perform predictions in the (r,φ,i) domain. For example, the G-PCC coder may determine the predicted location of a node and add the predicted location of the node to the first-order residual data to determine the reconstructed location of the node. Accordingly, in at least some examples, the first-order residuals can be coded in the (r,φ,i) domain. Coding in r,φ,i may be lossy due to errors in rounding (e.g., with respect to coordinate transformations). In some cases, this loss can be reduced or eliminated by coding a second set of residuals that may be in the Cartesian domain. However, some implementations of G-PCC may require many context-coded bins to signal primary and secondary residuals, which is computationally intensive and undesirable.

[0005] According to one or more aspects of the present disclosure, a G-PCC coder may signal a secondary residual using a reduced number of contexts and / or context-coded bins. For example, instead of signaling the absolute value of a secondary residual using two separate syntax elements (e.g., ptn_sec_residual_abs_minus2 coded with contexts 0...15, and ptn_sec_residual_abs_minus17 having 0 as the prefix context and bypassing the suffix coding), a G-PCC coder may signal the absolute value of a secondary residual using a single syntax element. For example, a G-PCC coder may signal a single syntax element specifying the absolute value of a 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 the present disclosure can reduce the number of contexts and / or context-coded bins used to signal a secondary residual. Therefore, the techniques of this disclosure can reduce the complexity of point cloud coding calculations.

[0006] As explained above, when using the angular mode for predictive geometry coding in G-PCC, the G-PCC coder can determine the predicted position of a node and then add the predicted position to the residual data to determine the reconstructed position of the node. G-PCC can offer several techniques for determining the predicted position of a node. As an example, G-PCC offers a zero-prediction mode in which the r, φ, and i of the predicted position can all be assumed to be zero. As another example, G-PCC offers a delta-prediction mode in which the r, φ, and i of the predicted position are inherited (e.g., copied) from the r, φ, and i of the reconstructed node (e.g., the parent node of the current node). However, the zero-prediction mode can be very inefficient and, as a result, is rarely used.

[0007] According to one or more techniques of the present disclosure, a G-PCC coder may perform a modified zero prediction mode in which 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 of the predicted position components r, φ, and i from the parent node, the G-PCC coder may inherit φ and i from the parent node and infer that r is a minimum value (e.g., 0 or a minimum value individually signaled). By inheriting φ and i but not r, the G-PCC coder can avoid the need to signal a large value in the residual data for r, where the values ​​of φ and i are similar but not so (and therefore have small values ​​for the residual data). In this way, the techniques of the present disclosure can improve the coding efficiency of point cloud coding.

[0008] For example, a method for encoding a point cloud includes the steps of obtaining the value of a quadratic residual to geometrically code the current predict tree node of the point cloud, and encoding the value of the quadratic residual, the steps of encoding the prefix bin of a syntax element having a value that specifies the absolute value of the quadratic residual minus 2 using a first set of context-adaptive binary arithmetic coding (CABAC) contexts, and encoding the suffix bin of the syntax element using a second set of CABAC contexts different from the first set of contexts.

[0009] In another example, a method for decoding a point cloud includes the steps of obtaining the value of a quadratic residual to geometrically code the current predict tree node of the point cloud, and decoding the value of the quadratic residual, the steps of decoding the prefix bin of a syntax element having a value that specifies the absolute value of the quadratic residual minus 2 using a first set of CABAC contexts, and decoding the suffix bin of the syntax element using a second set of CABAC contexts different from the first set of contexts.

[0010] In another example, a device 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. The one or more processors are configured to obtain a value of a second-order residual for geometrically coding a current prediction tree node of the point cloud and to encode the value of the second-order residual. To encode the value, the one or more processors are configured to encode a prefix bin of a syntax element having a value that specifies the absolute value of the second-order residual minus 2 using a first set of CABAC contexts and to encode a suffix bin of the syntax element using a second set of CABAC contexts different from the first set of contexts.

[0011] In another example, a device 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. The one or more processors are configured to obtain a value of a second-order residual for geometrically coding a current prediction tree node of the point cloud and to decode the value of the second-order residual. To decode the value, the one or more processors are configured to decode a prefix bin of a syntax element having a value that specifies the absolute value of the second-order residual minus 2 using a first set of CABAC contexts and to decode a suffix bin of the syntax element using a second set of CABAC contexts different from the first set of contexts.

[0012] In another example, a computer-readable storage medium stores instructions, which, when executed, cause one or more processors of a point cloud encoder to obtain a value of a quadratic residual for geometry coding the current predict tree node of the point cloud, and to encode the value of the quadratic residual, the instructions causing one or more processors to encode a value, which includes instructions causing one or more processors to encode a prefix bin of a syntax element having a value specifying the absolute value of the quadratic residual minus 2 using a first set of CABAC contexts, and to encode a suffix bin of the syntax element using a second set of CABAC contexts different from the first set of contexts.

[0013] In another example, a computer-readable storage medium stores instructions, which, when executed, cause one or more processors of a point cloud decoder to obtain the value of a quadratic residual in order to geometrically code the current predict tree node of the point cloud, and to decode the value of the quadratic residual, the instructions causing one or more processors to decode the value include instructions that cause one or more processors to decode the prefix bin of a syntax element having a value that specifies the absolute value of the quadratic residual minus 2 using a first set of CABAC contexts, and to decode the suffix bin of the syntax element using a second set of CABAC contexts different from the first set of contexts.

[0014] In another example, a method for decoding a point cloud includes a step of selecting a prediction mode for performing predictive geometric coding of the position of the current prediction tree node of the point cloud from a plurality of predetermined prediction modes, where the plurality of prediction modes includes at least a zero prediction mode and a delta prediction mode; a step of determining the radius, azimuth angle, and laser index of the parent node of the current prediction tree node in response to selecting the zero prediction mode; a step of inferring the azimuth angle and laser index of the predicted position of the current prediction tree node as the azimuth angle and laser index of the parent node; a step of inferring that the radius of the predicted position is a minimum radius value, where the minimum radius value is different from the radius of the parent node; and a step of determining the position of the current prediction tree node based on the predicted position of the current prediction tree node.

[0015] In another example, a method for encoding a point cloud includes a step of selecting a prediction mode for performing predictive geometric coding of the position of the current prediction tree node of the point cloud from a plurality of predetermined prediction modes, where the plurality of prediction modes includes at least a zero prediction mode and a delta prediction mode; a step of determining the radius, azimuth angle, and laser index of the parent node of the current prediction tree node when the selected mode is the zero prediction mode; a step of inferring the azimuth angle and laser index of the predicted position of the current prediction tree node as the azimuth angle and laser index of the parent node; a step of inferring that the radius of the predicted position is a minimum radius value, where the minimum radius value is different from the radius of the parent node; and a step of 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 device 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 the circuit, the one or more processors being configured to select a prediction mode for performing predictive geometry coding of the current predictive tree node's position in the point cloud from a plurality of predetermined prediction modes, the plurality of prediction modes including at least a zero prediction mode and a delta prediction mode, and in response to selecting the zero prediction mode, to determine the radius, azimuth, and laser index of the parent node of the current predictive tree node, to infer the azimuth and laser index of the predicted position of the current predictive tree node as the azimuth and laser index of the parent node, to infer that the radius of the predicted position is the minimum radius value, which is different from the radius of the parent node, and to determine the position of the current predictive tree node based on the predicted position of the current predictive tree node.

[0017] In another example, a device 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 the circuit, the one or more processors being configured to select a prediction mode for performing predictive geometry coding of the current predictive tree node's position in the point cloud from a plurality of predetermined prediction modes, the plurality of prediction modes including at least a zero prediction mode and a delta prediction mode, and when the selected mode is a zero prediction mode, to determine the radius, azimuth, and laser index of the parent node of the current predictive tree node, to infer the azimuth and laser index of the predicted position of the current predictive tree node as the azimuth and laser index of the parent node, to infer that the radius of the predicted position is the minimum radius value, which is different from the radius of the parent node, and to determine the position of the current predictive tree node based on the predicted position of the current predictive tree node.

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

[0019] In another example, a computer-readable storage medium stores instructions, which, when executed, cause one or more processors in a point cloud coding device to select a prediction mode from a plurality of predetermined prediction modes for performing predictive geometry coding of the current location of a predictive tree node in the point cloud, wherein the plurality of prediction modes include at least a zero prediction mode and a delta prediction mode; if the selected prediction mode is a zero prediction mode, to determine the radius, azimuth, and laser index of the parent node of the current predictive tree node; to infer the azimuth and laser index of the predicted position of the current predictive tree node as the azimuth and laser index of the parent node; to infer that the radius of the predicted position is the minimum radius value, which is different from the radius of the parent node; and to determine the position of the current predictive tree node based on the predicted position of the current predictive tree node.

[0020] Details of one or more examples are described in the accompanying drawings and the following description. Other features, purposes, and advantages will become apparent from the description, drawings, and claims. [Brief explanation of the drawing]

[0021] [Figure 1] Block diagram shows an exemplary encoding and decoding system that can implement the techniques of this disclosure. [Figure 2] This is a block diagram showing an exemplary geometry point cloud compression (G-PCC) encoder. [Figure 3] This is a block diagram showing an exemplary G-PCC decoder. [Figure 4] This is a conceptual diagram of a prediction tree for predictive geometry coding. [Figure 5A] This is a conceptual diagram of a rotating LIDAR acquisition model. [Figure 5B] This is a conceptual diagram of a rotating LIDAR acquisition model. [Figure 6] This is a conceptual diagram illustrating an exemplary distance measurement system that may be used in conjunction with one or more techniques of the present disclosure. [Figure 7] This is a conceptual diagram illustrating an exemplary vehicle-based scenario in which one or more of the techniques of this disclosure may be used. [Figure 8] This is a conceptual diagram illustrating an exemplary extended reality system in which one or more of the techniques of this disclosure may be used. [Figure 9] This is a conceptual diagram illustrating an exemplary mobile device system in which one or more of the techniques of this disclosure may be used. [Figure 10A] This is a conceptual diagram illustrating the range update process in binary arithmetic coding. [Figure 10B] This is a conceptual diagram illustrating the range update process in binary arithmetic coding. [Figure 11] This is a conceptual diagram illustrating the output process in binary arithmetic coding. [Figure 12] This is a block diagram of the context-adaptive binary arithmetic coder within the G-PCC encoder. [Figure 13] This is a block diagram of the context-adaptive binary arithmetic coder within the G-PCC decoder. [Figure 14]This flowchart illustrates exemplary techniques for processing point clouds using one or more techniques of the present disclosure. [Figure 15] This flowchart illustrates exemplary techniques for processing point clouds using one or more techniques of the present disclosure. [Modes for carrying out the invention]

[0022] Figure 1 is a block diagram showing an exemplary coding and decoding system 100 capable of implementing the techniques of the present disclosure. The techniques of the present disclosure generally concern coding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. Generally, point cloud data includes any data for processing a point cloud. Coding may be effective for compressing and / or decompressing point cloud data.

[0023] As shown in Figure 1, system 100 includes a source device 102 and a destination device 116. The source device 102 provides encoded point cloud data to be decoded by the destination device 116. In detail, in the example of Figure 1, the source device 102 provides the point cloud data to the destination device 116 via a computer-readable medium 110. The source device 102 and destination device 116 may comprise any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, land or sea vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, and the like. In some cases, the source device 102 and destination device 116 may be compatible with wireless communication.

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

[0025] System 100, as shown in Figure 1, is merely an example. In general, other digital coding and / or decoding devices may perform the techniques of this disclosure relating to predictive geometry coding. Source device 102 and destination device 116 are merely examples of devices such that source device 102 generates coded data for transmission to destination device 116. This disclosure refers to devices that perform coding (encoding and / or decoding) of data as “coding” devices. Thus, G-PCC encoder 200 and G-PCC decoder 300 represent examples of coding devices, specifically encoders and decoders, respectively. In some examples, source device 102 and destination device 116 may operate in a substantially symmetrical manner such that each of source device 102 and destination device 116 includes coding and decoding components. Thus, system 100 may support one-way or two-way transmission between source device 102 and destination device 116 for, for example, streaming, playback, broadcast, telephone, navigation, and other applications.

[0026] Generally, the data source 104 represents the source of data (i.e., raw, unencoded point cloud data) and may provide the G-PCC encoder 200 with a sequential series of "frames" of data, which the encoder 200 encodes. The data source 104 of the source device 102 may include point cloud capture devices such as various cameras or sensors, e.g., a 3D scanner or a LiDAR (light detection and ranging) device, one or more video cameras, an archive containing previously captured data, and / or a data feed interface for receiving data from a data content provider. Alternatively or additionally, the point cloud data may be computer-generated from scanner, camera, sensor, or other data. For example, the data source 104 may generate computer graphics-based data as source data, or it may result in a combination of live data, archived data, and computer-generated data. In each case, the G-PCC encoder 200 encodes the captured, previously captured, or computer-generated data. The G-PCC encoder 200 can rearrange the frames from the order in which they were received (sometimes called the "display order") to a coding order for coding. The G-PCC encoder 200 may generate one or more bitstreams containing encoded data. The source device 102 may then output the encoded data onto a computer-readable medium 110 via the output interface 108 for reception and / or retrieval by, for example, the input interface 122 of the destination device 116.

[0027] Memory 106 of source device 102 and memory 120 of destination device 116 may represent general-purpose memory. In some examples, memory 106 and memory 120 may store raw data, for example, raw data from data source 104 and raw decoded data from G-PCC decoder 300. Additionally or alternatively, memory 106 and memory 120 may store, for example, software instructions executable by G-PCC encoder 200 and G-PCC decoder 300, respectively. 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 may store encoded data, for example, 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 storing, for example, raw decoded and / or encoded data. For example, memory 106 and memory 120 may store data representing a point cloud.

[0028] The computer-readable medium 110 may represent any type of medium or device capable of transporting encoded data from the source device 102 to the destination device 116. For example, the computer-readable medium 110 may represent a communication medium that enables the source device 102 to directly transmit encoded data to the destination device 116 in real time, for example, over a radio frequency network or a computer-based network. According to a communication standard such as a wireless communication protocol, the output interface 108 may modulate the transmit signal containing the encoded data, and the input interface 122 may demodulate the received transmit signal. The communication medium may comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful in facilitating communication from the source device 102 to the destination device 116.

[0029] In some examples, the source device 102 may output encoded data to the storage device 112 via the output interface 108. Similarly, the destination device 116 may access the encoded data from the storage device 112 via the input interface 122. The storage device 112 may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, Blu-ray disc, DVD, CD-ROM, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded data.

[0030] In some examples, source device 102 may output encoded data to a file server 114 or another intermediate storage device capable of storing encoded data generated by source device 102. Destination device 116 may access the stored data from file server 114 via streaming or download. File server 114 may be any type of server device capable of storing encoded data and transmitting that encoded data to destination device 116. File server 114 may represent a web server (for example, for a website), a File Transfer Protocol (FTP) server, a Content Delivery Network device, or a Network Attached Storage (NAS) device. Destination device 116 may access the encoded data from file server 114 through any standard data connection, including an Internet connection. This may include wireless channels (e.g., Wi-Fi connection), wired connections (e.g., digital subscriber line (DSL), cable modem, etc.), or a combination of both suitable for accessing encoded data stored on file server 114. File server 114 and input interface 122 may be configured to operate according to a streaming transmission protocol, a download transmission protocol, or a combination thereof.

[0031] The output interface 108 and input interface 122 may represent a wireless transmitter / receiver, a modem, a wired networking component (e.g., an Ethernet card), a wireless communication component operating according to any of the various IEEE 802.11 standards, or other physical components. In examples where the output interface 108 and input interface 122 include wireless components, the output interface 108 and input interface 122 may be configured to transfer data, such as encoded data, according to cellular communication standards such as 4G, 4G-LTE (Long Term Evolution), LTE Advanced, or 5G. In some examples where the output interface 108 includes a wireless transmitter, the output interface 108 and input interface 122 may be configured to transfer data, such as encoded data, according to other wireless standards such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee®), or the Bluetooth® standard. In some examples, the source device 102 and / or destination device 116 may include their respective system-on-chip (SoC) devices. For example, the source device 102 may include an SoC device for implementing functionality resulting from the G-PCC encoder 200 and / or the output interface 108, and the destination device 116 may include an SoC device for implementing functionality resulting from the G-PCC decoder 300 and / or the input interface 122.

[0032] The techniques of this disclosure may be applied to encoding and decoding that support any of a variety of applications, such as communication between autonomous vehicles, communication between scanners, cameras, sensors and processing devices such as local or remote servers, geographical mapping, or other applications.

[0033] The input interface 122 of the destination device 116 receives an encoded bitstream from a computer-readable medium 110 (e.g., a communication medium, a storage device 112, a file server 114, etc.). The encoded bitstream may contain 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 ​​that describe the characteristics and / or processing of encoded units (e.g., slices, 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 have a display for presenting an image based on a point cloud.

[0034] The G-PCC encoder 200 and the G-PCC decoder 300 may each be implemented 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, among other suitable encoder and / or decoder circuit configurations. When the technique is partially implemented in software, the device may store instructions for the software in a suitable non-temporary computer-readable medium and execute the instructions in hardware using one or more processors to implement the technique of this disclosure. Each of the G-PCC encoder 200 and the G-PCC decoder 300 may be included in one or more encoders or decoders, any of which may be integrated as part of a composite encoder / decoder (codec) within their respective devices. A device including the G-PCC encoder 200 and / or G-PCC decoder 300 may comprise one or more integrated circuits, microprocessors, and / or other types of devices.

[0035] The G-PCC encoder 200 and G-PCC decoder 300 may operate according to a coding standard such as the Video Point Cloud Compression (V-PCC) standard or the Geometry Point Cloud Compression (G-PCC) standard. This disclosure may refer to the coding of a picture (e.g., encoding and decoding) to include the process of encoding or decoding data in general. The encoded bitstream generally contains a set of values ​​for syntax elements that represent a coding decision (e.g., coding mode).

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

[0037] ISO / IEC MPEG (JTC1 / SC29 / WG11) is investigating the potential need for standardization of point cloud coding techniques with compression capabilities significantly exceeding those of current methods, and aims to create a standard. This group is working on this investigation in collaboration with the 3-Dimensional Graphics Team (3DG), a joint research group known as the 3-Dimensional Graphics Team, to evaluate the designs of compression techniques proposed by experts in the field.

[0038] Point cloud compression activities are categorized into two distinct methods. The first method is "video point cloud compression" (V-PCC), which segments a 3D object and projects the segments onto multiple 2D planes (represented as "patches" in a 2D frame), which are then further coded by legacy 2D video codecs such as the High Efficiency Video Coding (HEVC) (ITU-T H.265) codec. The second method is "geometry-based point cloud compression" (G-PCC), which directly compresses 3D geometry, i.e., the positions 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 both Category 1 (static point clouds) and Category 3 (dynamically acquired point clouds). The latest draft of the G-PCC standard is available in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19328, Brussels, Belgium, January 2020, and the codec description is available in G-PCC Codec Description v8, ISO / IEC JTC1 / SC29 / WG11 w19525, Brussels, Belgium, January 2020.

[0039] A point cloud contains a set of points in 3D space and may have attributes associated with each point. These attributes may be color information such as R, G, B or Y, Cb, Cr, or reflectance information, or other attributes. Point clouds may be captured by various cameras or sensors, such as LIDAR sensors and 3D scanners, or they may be computer-generated. 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 used to aid navigation).

[0040] The 3D space occupied by point cloud data may be enclosed by a virtual bounding box. The positions of points within the bounding box may be represented with a certain degree of precision, and therefore the positions of one or more points may be quantized based on precision. At the smallest level, the bounding box is divided into voxels, which are the smallest units of space, represented by a unit cube. Voxels within the bounding box may be associated with zero, one, or more points. The bounding box may be divided into multiple cubic / rectangular regions, which may be called tiles. Each tile may be coded into one or more slices. The division of the bounding box into slices and tiles may be based on the number of points in each division or on other factors (for example, certain regions may be coded as tiles). Slice regions may be further divided using division decisions similar to those in video codecs.

[0041] Figure 2 provides an overview of the G-PCC encoder 200. Figure 3 provides an overview of the G-PCC decoder 300. The illustrated modules are logical and do not necessarily have a one-to-one correspondence with the standard implementation of the G-PCC codec, i.e., the code implemented in the TMC13 test model software studied by ISO / IEC MPEG (JTC1 / SC29 / WG11).

[0042] In both the G-PCC encoder 200 and the G-PCC decoder 300, the point cloud position is coded first. Attribute coding depends on the decoded geometry. In Figures 2 and 3, the gray shaded module is the option typically used for Category 1 data. The module with diagonal parallel lines is the option typically used for Category 3 data. All other modules are common to both Categories 1 and 3.

[0043] For Category 3 data, the compressed geometry is typically represented as an octane tree from the root to the leaf level of individual voxels. For Category 1 data, the compressed geometry is typically represented by a pruned octane tree (i.e., an octane tree from the root to the leaf level for blocks larger than voxels) with a model that approximates the surface within each leaf of the pruned octane tree. In this way, both Category 1 and 3 data share an octane tree coding mechanism, and Category 1 data may be further approximated to voxels within each leaf with a surface model. The surface model used is a triangulation containing 1 to 10 triangles per block, resulting in a triangulation soup. The Category 1 geometry codec is therefore known as the Trisoup geometry codec, and the Category 3 geometry codec is known as the octane tree geometry codec.

[0044] For each node in the octree, occupation is signaled (if not inferred) for one or more of its child nodes (up to eight nodes). Multiple neighborhoods are specified, including (a) nodes that share a face with the current octree node, and (b) nodes that share a face, edge, or vertex with the current octree node. Within each neighborhood, the occupation of a node and / or its children may be used to predict the occupation of the current node or its children. For sparse points in some nodes of the octree, the codec also supports a direct coding mode in which the 3D location of the point is directly coded. A flag may be signaled to indicate that direct mode is being signaled. At the lowest level, the number of points associated with an octree node / leaf node may also be coded.

[0045] When geometry is coded, attributes corresponding to the geometric points are coded. When there are multiple attribute points corresponding to a single reconstructed / decoded geometric point, an attribute value representing the reconstructed point may be derived.

[0046] G-PCC offers three attribute coding methods: Region Adaptive Hierarchical Transform (RAHT) coding, interpolation-based hierarchical nearest neighbor prediction (predictive transformation), and interpolation-based hierarchical nearest neighbor prediction with update / lifting steps (lifting transformation). RAHT and lifting are typically used for Category 1 data, while prediction is typically used for Category 3 data. However, any method can be used for any data; the attribute coding method used to code the point cloud is simply specified in the bitstream, as is the case with geometry codecs in G-PCC.

[0047] Attribute coding may be performed at a certain level of detail (LOD), and each level of detail may be used to obtain a more precise representation of the point cloud attributes. Each level of detail may be specified based on a distance metric from neighboring nodes or based on the sampling distance.

[0048] In the G-PCC encoder 200, the residuals obtained as the output of the attribute coding method are quantized. The quantized residuals may be coded using context-adaptive arithmetic coding.

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

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

[0051] The coordinate transformation unit 202 may apply a transformation to the coordinates of a point so as to transform the coordinates from the initial domain to the transformation domain. In this disclosure, the transformed coordinates may be referred to as the transformed coordinates. The color transformation unit 204 may apply a transformation to transform the color information of an attribute to a different domain. For example, the color transformation unit 204 may transform the color information from the RGB color space to the YCbCr color space.

[0052] Furthermore, in the example in Figure 2, the voxelization unit 206 may voxelize the transformed coordinates. Voxelization of the transformed coordinates may involve quantization and the removal of some points from the point cloud. In other words, multiple points in the point cloud may be contained within a single "voxel," which may then be treated as a single point from several viewpoints. Furthermore, the octree analysis unit 210 may generate an octree based on the voxelized transformed coordinates. Furthermore, in the example in Figure 2, the surface approximation analysis unit 212 may analyze the points to determine the surface representation of the set of points. The arithmetic coding unit 214 may entropy code syntax elements representing the surface information determined by the octree and / or the surface approximation analysis unit 212. The G-PCC encoder 200 may output these syntax elements in a geometry bitstream.

[0053] The geometry reconstruction unit 216 may reconstruct the transformed coordinates of points in the point cloud based on an octree, data indicating surfaces determined by the surface approximation analysis unit 212, and / or other information. The number of transformed coordinates reconstructed by the geometry reconstruction unit 216 may differ from the original number of points in the point cloud due to voxelization and surface approximation. In this disclosure, the resulting points may be referred to as reconstructed points. The attribute transfer unit 208 may transfer the attributes of the original points in the point cloud to the reconstructed points in the point cloud.

[0054] Furthermore, the RAHT unit 218 may apply RAHT coding to the attributes of the reconstruction point. Alternatively or additionally, the LOD generation unit 220 and the lifting unit 222 may apply LOD processing and lifting to the attributes of the reconstruction point, respectively. The RAHT unit 218 and the lifting unit 222 may generate coefficients based on the attributes. The coefficient quantization unit 224 may quantize the coefficients generated by the RAHT unit 218 or the lifting unit 222. The arithmetic coding unit 226 may apply arithmetic coding to the syntax elements representing the quantized coefficients. The G-PCC encoder 200 may output these syntax elements in the attribute bitstream.

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

[0056] The G-PCC decoder 300 can obtain a geometry bitstream and an attribute bitstream. The geometry arithmetic decoding unit 302 of the decoder 300 may apply arithmetic decoding (for example, context-adaptive binary arithmetic coding (CABAC) or other types of arithmetic decoding) to the syntax elements in the geometry bitstream. Similarly, the attribute arithmetic decoding unit 304 may apply arithmetic decoding to the syntax elements in the attribute bitstream.

[0057] The octree synthesis unit 306 may synthesize an octree based on syntax elements analyzed from the geometry bitstream. In cases where surface approximation is used in the geometry bitstream, the surface approximation synthesis unit 310 may determine the surface model based on syntax elements analyzed from the geometry bitstream and on the octree.

[0058] Furthermore, the geometry reconstruction unit 312 may perform reconstruction to determine the coordinates of points in the point cloud. The inverse coordinate transformation unit 320 may apply an inverse transformation to the reconstructed coordinates so as to convert the reconstructed coordinates (positions) of points in the point cloud back from the transformation domain to the initial domain.

[0059] Furthermore, in the example in Figure 3, the inverse quantization unit 308 can inverse quantize the attribute values. The attribute values ​​can be obtained based on syntax elements obtained from the attribute bitstream (for example, syntax elements decoded by the attribute arithmetic decoding unit 304).

[0060] Depending on how the attribute values ​​are encoded, the RAHT unit 314 may perform RAHT coding to determine the color values ​​for the points in the point cloud based on the inversely quantized attribute values. Alternatively, the LOD generation unit 316 and the inverse lifting unit 318 may determine the color values ​​for the points in the point cloud using a detail-based technique.

[0061] Furthermore, in the example shown in Figure 3, the inverse color conversion unit 322 may apply an inverse color conversion to the color values. The inverse color conversion may be the reverse of the color conversion applied by the color conversion unit 204 of the encoder 200. For example, the color conversion unit 204 may convert the color information from the RGB color space to the YCbCr color space. Therefore, the inverse color conversion unit 322 may convert the color information from the YCbCr color space to the RGB color space.

[0062] The various units shown in Figures 2 and 3 are presented to help understand the operations performed by the encoder 200 and decoder 300. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Fixed-function circuits refer to circuits that provide specific functionality and are preset for the operations they may perform. Programmable circuits refer to circuits that can be programmed to perform various tasks and offer flexible functionality in the operations they may perform. For example, a programmable circuit may execute software or firmware that operates the programmable circuit in a manner defined by software or firmware instructions. Fixed-function circuits may execute software instructions (e.g., to receive or output parameters), but the type of operation performed by a fixed-function circuit is generally immutable. In some examples, one or more of the units may be different circuit blocks (fixed-function or programmable), and in some examples, one or more units may be integrated circuits.

[0063] Predictive geometry coding was introduced as an alternative to octree geometry coding, where nodes are placed 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 associated with its predictor. Figure 4 is a conceptual diagram showing an example of a prediction tree, a directed graph, where arrows point in the direction of prediction. Horizontally shaded nodes are root vertices and have no predictors, grid-shaded nodes have two children, diagonally shaded nodes have three children, unshaded nodes have one child, and vertically shaded nodes are leaf nodes and have no children. Each node has only one parent node.

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

[0065] The encoder (e.g., G-PCC encoder 200) may employ any algorithm to generate the prediction tree, the algorithm used may be determined based on the application / use case, and several strategies may be used. For each node, the encoder may encode the residual coordinate value in the bitstream starting from the root node in depth-first order. Predictive geometry coding can be particularly useful for Category 3 (e.g., LIDAR-acquired) point cloud data, for example, for low-latency applications.

[0066] The angular mode may also be used in predictive geometry coding, where the characteristics of the LIDAR sensor can be utilized to code the predictive tree more efficiently. The position coordinates are converted to (r,φ,i) (radius, azimuth, and laser index), and the prediction is performed within this domain (the residuals are coded within the r,φ,i domain). Due to errors in rounding, the coding in r,φ,i is not lossless, and therefore a second set of residuals corresponding to Cartesian coordinates may be coded. A description of the coding and decoding strategies used for the angular mode for predictive geometry coding is reproduced below. The description is based on Figures 5A and 5B, which are conceptual diagrams of a rotating LIDAR acquisition model.

[0067] The method focuses on point clouds acquired using a rotating LIDAR model. Here, the LIDAR has N lasers (e.g., N=16, 32, 64) that rotate around the Z axis according to the azimuth angle φ (see Figures 5A and 5B). Each laser has a different elevation angle θ(i) i=1...N and height

[0068]

number

[0069] It may have the following characteristics. Assume that laser i strikes a point M having Cartesian integer coordinates (x, y, z) defined according to the coordinate system described in Figure 5A.

[0070] The position of M is modeled by three parameters (r, φ, i), which are as follows:

[0071]

number

[0072] It is calculated as follows.

[0073] More specifically, the G-PCC coder is,

[0074]

number

[0075] We may also use the quantized version of (r,φ,i) shown by, where three integers

[0076]

number

[0077] ,

[0078]

number

[0079] And i are the following

[0080]

number

[0081] It is calculated as follows, and in the above formula, · (q r ,o r ) and (qφ , o φ ) is

[0082]

Number

[0083] and

[0084]

Number

[0085] the quantization parameters that control the respective precisions with, · sign(t) is a function that returns 1 if t is positive and (-1) otherwise. · |t| is the absolute value of t.

[0086] To avoid reconstruction inconsistencies caused by the use of floating-point arithmetic,

[0087]

Number

[0088] and tan(θ(i)) i=1…N the values of

[0089]

Number

[0090] may be precomputed and quantized as, in the above formula, · (q ζ , o ζ ) and (q θ , o θ ) are

[0091]

Number

[0092] and

[0093]

number

[0094] These are quantization parameters that control the precision of each. The reconstructed Cartesian coordinates are as follows:

[0095]

number

[0096] The values ​​are obtained as follows, and in the above formula, app_cos(.) and app_sin(.) are approximations of cos(.) and sin(.). Calculations can be performed using fixed-point representation, reference tables, and linear interpolation.

[0097]

number

[0098] For various reasons - Quantization - Approximate value - Model inaccuracies - Inaccuracy of model parameters Please note that this may result in (x,y,z) being different from the given values.

[0099] (r x ,r y ,r z ) is as follows

[0100]

number

[0101] This is defined as the reconstruction residual.

[0102] In this method, the G-PCC encoder 200 may proceed as follows: • Model parameters

[0103]

number

[0104] and

[0105]

number

[0106] and the quantization parameter q r , q ζ , q θ , and q φ Encode • Represents the geometry prediction scheme described in G-PCC DIS.

[0107]

number

[0108] Applies to ○ New predictors that take advantage of the properties of lidar can be introduced. For example, the rotation speed of a lidar scanner around the z axis is usually constant. Therefore, current

[0109]

number

[0110] However, the following

[0111]

number

[0112] It can be predicted as follows: In the above equation, ○ (δφ(k)) k=1...Kis the set of possible speeds from which the encoder can select. The index k can either be explicitly written to the bitstream or inferred from the context based on the deterministic strategy applied by both the encoder and the decoder. ○ n(j) is the number of skipped points, which can either be explicitly written to the bitstream or inferred from the context based on the deterministic strategy applied by both the encoder and decoder. • Reconstruct the residuals using each node (r x ,r y ,r z Encode ).

[0113] The G-PCC decoder 300 can proceed as follows: • Model parameters

[0114]

number

[0115] and

[0116]

number

[0117] and the quantization parameter q r , q ζ , q θ , and q φ Decode • In G-PCC DIS, the node is associated with the geometry prediction scheme described below.

[0118]

number

[0119] Decode the parameters • As explained above, reconstruction coordinates

[0120]

number

[0121] Calculate · Residual (r x ,r y ,r z ) decrypt ○ As will be explained in the next section, lossy compression results in a reconstruction residual (r x ,r y ,r z This can be supported by quantizing ) The original coordinates (x, y, z) are calculated as follows:

[0122]

number

[0123] Loss-inducing compression results in a reconstruction residual (r x ,r y ,r z This can be achieved by applying quantization to the points, or by dropping points.

[0124] The quantized reconstruction residuals are as follows:

[0125]

number

[0126] It is calculated as follows: In the above formula, (q x, o x ), (q y, o y ) and (q z, o z )teeth,

[0127]

number

[0128] ,

[0129]

number

[0130] and

[0131]

number

[0132] These are quantization parameters that control the precision of each element.

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

[0134] The following is a table of the syntax, semantics, syntax binary, and context of an exemplary predictive geometry coding.

[0135] [Table 1A]

[0136] [Table 1B]

[0137] ptn_qp_offset_eq0_flag, ptn_qp_offset_sign_flag, and ptn_qp_offset_abs_minus1, when present, collectively specify the offset for the slice geometry quantization parameter. If either ptn_qp_offset_sign_flag or ptn_qp_offset_abs_minus1 is not present, it is assumed to be 0. When nodeIdx % PtnQpInterval is equal to 0, the node QP for the next PtnQpInterval node in the decoding order is determined as follows: When geom_scaling_enabled_flag is equal to 1, PtnQp[nodeIdx / PtnQpInterval] = geom_base_qp + geom_slice_qp_offset + (2×ptn_qp_offset_sign_flag - 1) ×(!ptn_qp_offset_eq0_flag + ptn_qp_offset_abs_minus1) Otherwise, PtnQp[nodeIdx] is set to equal to 0. ptn_point_cnt_gt1_flag and ptn_point_cnt_minus2 together specify the number of points represented by the current prediction tree node. If neither exists, the values ​​of ptn_point_cnt_gt1_flag and ptn_point_cnt_minus2 are assumed to be 0. The number of points represented by the current prediction tree node is derived as follows: PtnPointCount[nodeIdx] = 1 + ptn_point_cnt_gt1_flag + ptn_point_cnt_minus2 ptn_child_cut[nodeIdx] is the number of direct child nodes of the current prediction tree node that exist within the geometry prediction tree. ptn_pred_mode[nodeIdx] is the mode used to predict the current node's relative position. 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 specify together the multiplication coefficients used in delta angle prediction. ptn_phi_mult_eq0_flag, if present, specifies whether the coefficient is equal to zero. ptn_phi_mult_eq1_flag, if present, specifies whether the magnitude of the coefficient is equal to 1. ptn_phi_mult_sign_flag equal to 1 indicates that the coefficient has a positive sign. ptn_phi_mult_sign_flag equal to 0 indicates that the coefficient has a negative sign. Any non-existent ptn_phi_mult_sign_flag, ptn_phi_mult_abs_minus2, or ptn_phi_mult_abs_minus17 is presumed to be 0. Any non-existent ptn_phi_mult_eq0_flag or ptn_phi_mult_eq1_flag is presumed to be 1. The phi factor for the current tree node is derived as follows: PtnPhiMult[nodeIdx] = (2×ptn_phi_mult_sign_flag - 1) ×(!ptn_phi_mult_eq0_flag+!ptn_phi_mult_eq1_flag +ptn_phi_mult_abs_minus2+ptn_phi_mult_abs_minus17) ptn_residual_eq0_flag[k], ptn_residual_sign_flag[k], ptn_residual_abs_log2[k], and ptn_residual_abs_remaining[k] collectively specify the first predicted residual of the k-th geometric position 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 of the non-existent ptn_residual_sign_flag[k], ptn_residual_abs_log2[k], or ptn_residual_abs_remaining[k] are presumed to be 0. The first predicted residual related to the current tree node is derived as follows: for (k = 0; k < 3; k++) PtnResidual[nodeIdx][k] = (2 ×ptn_residual_sign_flag - 1) ×(!ptn_residual_eq0_flag[k] + ((1 << ptn_residual_abs_log2[k]) >> 1) + ptn_residual_abs_remaining[k]) 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] collectively specify the second-order residual of the k-th geometric position component. ptn_sec_residual_eq0_flag[k] specifies whether the residual component is equal to zero. ptn_sec_residual_eq1_flag[k], if present, specifies whether the magnitude of the residual component is equal to 1. ptn_sec_residual_sign_flag[k] equal to 1 indicates that the sign of the residual component is positive. A 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 presumed to be 0. Any non-existent ptn_sec_residual_eq0_flag[k] or ptn_sec_residual_eq1_flag[k] is presumed to be 1. The second predicted residual related to the current tree node is derived as follows: for (k = 0; k < 3; k++) PtnSecResidual[nodeIdx][k] = (2×ptn_sec_residual_sign_flag - 1) ×(!ptn_sec_residual_eq0_flag[k] + !ptn_sec_residual_eq1_flag[k] + ptn_sec_residual_abs_minus2[k] + ptn_sec_residual_abs_minus17[k])

[0138] [Table 2]

[0139] [Table 3]

[0140] The above implementation of predictive geometry coding may present one or more drawbacks. For example, the above implementation of predictive geometry coding using angle coding mode involves primary (r,φ,i) and secondary (r x ,r y ,r z Since coding is required for both residuals of ), many context-coded bins may be needed, which is computationally intensive. As another example, for signaling of predictor index and signaling of the number of children (both cases have a total of 4 candidates), the above implementation of predictive geometry coding uses 2-bit fixed-length coding, which is not optimal because the candidates are not equally probable. As yet another example, for the first-order residual in the above implementation of predictive geometry coding, the signaling associated with the laser index (i) can be redundant, for example, when the point count is captured using a single laser. As yet another example, in the above implementation of predictive geometry coding, the zero predictor (or "no predictor" as described above) is highly inefficient and is rarely used for prediction. Moreover, for the "r" part, it is non-negative and the prediction is always zero, so the sign of the residual for the "r" component can always be inferred, and therefore the corresponding signaling is redundant.

[0141] According to one or more techniques of the present disclosure, an encoder (e.g., G-PCC encoder 200) and / or decoder (e.g., G-PCC decoder 300) can overcome the aforementioned disadvantages. As a first example, the encoder and / or decoder can perform context and context-coded bin reduction for quadratic residuals and phi multipliers. As a second example, the encoder and / or decoder can perform variable-length coding for the number of children and predictor index signaling. As a third example, the encoder and / or decoder can remove laser index signaling when the context is captured by a single laser. As a fourth example, the encoder and / or decoder can correct zero prediction by utilizing the azimuth and laser index of the parent's neighbor, as well as sign estimation.

[0142] Some detailed examples of the techniques described herein are as follows:

[0143] As described above, according to the first example, the encoder and / or decoder may perform context and context-coded bin reduction for the quadratic residual and phi multiplier. For example, the quadratic residual coding may be simplified by removing the ptn_sec_residual_abs_minus17[k] syntax element and the associated 3*15=45 contexts. In some examples, the binariness and context for ptn_sec_residual_abs_minus2[k] may be modified. Several exemplary modifications are, <add> . . . < / add> Adding tags and <remove> . . . < / remove> This is shown below, along with the removal of tags.

[0144] [Table 4]

[0145] 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> ptn_sec_residual_eq0_flag[k] specifies 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. ptn_sec_residual_eq1_flag[k], if present, specifies whether the magnitude of the residual component is equal to 1. ptn_sec_residual_sign_flag[k] equal to 1 indicates that the sign of the residual component is positive. ptn_sec_residual_sign_flag[k] equal to 0 indicates that the sign of the residual component is negative. ptn_src_residual_sign_flag[k] does not exist. <add> or < / add> ptn_sec_residual_abs_minus2[ k ], <remove> or ptn_sec_residual_abs_minus17[k]< / remove> It is presumed that one of them is 0. Either ptn_sec_residual_eq0_flag[k] or ptn_sec_residual_eq1_flag[k] that does not exist is presumed to be 1. The second predicted residual related to the current tree node is derived as follows: for (k = 0; k < 3; k++) PtnSecResidual[nodeIdx][k] = (2×ptn_sec_residual_sign_flag - 1) ×(!ptn_sec_residual_eq0_flag[k] + !ptn_sec_residual_eq1_flag[k] + ptn_sec_residual_abs_minus2[k] <remove> + ptn_sec_residual_abs_minus17[k]< / remove> )

[0146] [Table 5]

[0147] [Table 6]

[0148] Alternatively, a G-PCC coder may perform signaling using a certain number of prefix contexts (e.g., a context) and suffix contexts (e.g., b context) for exponential Golomb coding. The use of prefix and suffix contexts can be effective when there is considerable energy in the second-order residual components (e.g., it can provide coding gain). In one example, a=5 and b=4.

[0149] [Table 7]

[0150] Secondly, the syntax related to phi multipliers has been simplified by removing eight contexts and modifying the signaling, as detailed below.

[0151] [Table 8]

[0152] 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 specifies the multiplication coefficient used in the delta angle prediction. ptn_phi_mult_eq0_flag, if present, specifies whether the coefficient is equal to zero. ptn_phi_mult_eq1_flag, if present, specifies whether the magnitude of the coefficient is equal to 1. ptn_phi_mult_sign_flag equal to 1 indicates that the coefficient has a positive sign. ptn_phi_mult_sign_flag equal to 0 indicates that the coefficient has a negative sign. ptn_phi_mult_sign_flag, ptn_phi_mult_abs_minus2, or if none exist, are not applicable. <remove> ptn_phi_mult_abs_minus17< / remove> <add> ptn_phi_mult_abs_minus9< / add> It is presumed that either of these is 0. Either the non-existent ptn_phi_mult_eq0_flag or ptn_phi_mult_eq1_flag is presumed to be 1. The phi factor for the current prediction tree node is derived as follows: PtnPhiMult[nodeIdx] = (2×ptn_phi_mult_sign_flag - 1) ×(!ptn_phi_mult_eq0_flag+!ptn_phi_mult_eq1_flag + ptn_phi_mult_abs_minus2 + <remove> ptn_phi_mult_abs_minus17< / remove> <add> ptn_phi_mult_abs_minus9< / add> )

[0153] [Table 9]

[0154] [Table 10]

[0155] As described above, according to the second example, the encoder and / or decoder may perform variable-length coding for the number of children and predictor index signaling. Currently, both the predictor mode and the number of children signaling information are signaled in a 2-bit fixed-length coding with three contexts using the following mapping.

[0156] [Table 11]

[0157] However, to account for unequal probability symbolic statistics, it has been proposed to signal using variable-length binaryization, such as truncated unary binaryization. This can reduce the total number of bins involved in signaling. Since the statistics of predMode may differ depending on whether an angular mode is applied, different mappings may be used depending on whether the angular mode already signaled in the corresponding geometry parameter set is enabled or not.

[0158] [Table 12]

[0159] [Table 13]

[0160] [Table 14]

[0161] As explained above, according to the third example, the encoder and / or decoder may eliminate the signaling of the laser index (e.g., neither encode nor decode) when the context is captured by a single laser. When num_lasers_minus1 is equal to 0, the laser index is the same for all points in the point cloud. Therefore, the residual signaling associated with the laser index can be redundant (i.e., the residual of the third component does not need to be signaled). The changes in the syntax are shown below, taking into account the third component corresponding to the laser index. (It may change if an axis transformation is present).

[0162] [Table 15]

[0163] If axis transformation is present, the component corresponding to the laser index will not be signaled.

[0164] Furthermore, when num_lasers_minus1 is 1 (only two lasers exist), the residual can be zero, -1, or +1, but for the non-zero case, the sign and subsequent information can be inferred and does not need to be signaled. For example, if we assume we have two lasers with laserIdx of 0 and 1, and the predicted laserIdx is 1 and the residual is non-zero, then we can infer that the current laserIdx = 0. Therefore, in that case, it is sufficient to signal ptn_residual_eq0_flag[2]. Accordingly, the following changes in syntax can be put into practice.

[0165] [Table 16]

[0166] As described above, according to the fourth example, the encoder and / or decoder may correct the zero prediction by utilizing the azimuth and laser index of the parent's neighbor, as well as the sign estimation.

[0167] Currently, zero prediction in the angular domain corresponds to all components that are equal to zero. However, the current implementation of zero prediction can be inefficient and is therefore rarely used.

[0168] According to one or more techniques of this disclosure, an encoder or decoder may inherit the azimuth and laser index from a parentNode (ancestor) if one is available. Thus, in a sense, it is similar to delta prediction, except that the radius is set to zero (or the minimum radius value).

[0169] The following changes are required in the position prediction process (Section 8.2.6.4) [w19522]. ############################################################################# When predMode is equal to 0, the predicted point position is: <remove> 0< / remove> : for (k = 0; k < 3; k++){ predPos[k] = 0 <add>if(geometry_angular_enabled_flag && k) predPos[k] = aPos0[k]< / add> } When predMode is equal to 1, the predicted position of the point is the position related to the first ancestor. for (k = 0; k < 3; k++) predPos[k] = aPos0[k] When predMode is equal to 2, the predicted point position is a linear combination of the positions related to the first two ancestors. for (k = 0; k < 3; k++) predPos[k] = aPos0[k] + aPos0[k] - aPos1[k] Instead, when predMode is equal to 3, the position of the predicted point is a linear combination of the positions associated with all three ancestors. for (k = 0; k < 3; k++) predPos[k] = aPos0[k] + aPos1[k] - aPos2[k] ##

[0170] Second, when the zero predictor is used, the predicted radius is zero, so the corresponding residual is presumed to be positive and, accordingly, the corresponding sign need not be signaled and is presumed. The same is true when the angle mode is invalid.

[0171]

Table 17

[0172] Alternatively, the minimum value of the radius (the minimum radius among all points) can be signaled in the slice header, which can be used as the radius for the zero predictor instead of 0.

[0173] To improve the zero predictor, a phi multiplier can be applied to all predictors, not just the delta predictor. The following changes in the syntax are as follows.

[0174]

Table 18

[0175] FIG. 6 is a conceptual diagram showing an exemplary distance measurement system 600 that can be used with one or more techniques of the present disclosure. In the example of FIG. 6, the distance measurement system 600 includes a illuminator 602 and a sensor 604. The illuminator 602 can emit light 606. In some examples, the illuminator 602 can emit the light 606 as one or more laser beams. The light 606 can be one or more wavelengths, such as infrared wavelengths or visible light wavelengths. In other examples, the light 606 is non-coherent laser light. When the light 606 encounters an object, such as the object 608, the light 606 generates returning light 610. The returning light 610 can include backscattered light and / or reflected light. The returning light 610 can pass through a lens 611 that guides the returning light 610 to generate an image 612 of the object 608 on the sensor 604. The sensor 604 generates a signal 614 based on the image 612. The image 612 can include a set of points (such as represented by dots in the image 612 of FIG. 6).

[0176] In some examples, the illuminator 602 and the sensor 604 can be mounted on a rotating structure to capture a 360-degree environmental field of view. In other examples, the distance measurement system 600 can include one or more optical components (such as mirrors, collimators, diffraction gratings, etc.) that enable the illuminator 602 and the sensor 604 to detect the distance of objects within a specific range (such as up to 360 degrees). The example of FIG. 6 shows only a single illuminator 602 and sensor 604, but the distance measurement system 600 can include multiple sets of illuminators and sensors.

[0177] In some examples, the illuminator 602 generates a structured light pattern. In such examples, the distance measuring system 600 may include a plurality of sensors 604 from which each image of the structured light pattern is formed. The distance measuring system 600 may use the parallax between the images of the structured light pattern to determine the distance to an object 608 from which the structured light pattern is backscattered. A structured light-based distance measuring system can have a high level of accuracy (e.g., accuracy within the range of less than a millimeter) when the object 608 is relatively close to the sensors 604 (e.g., 0.2 meters to 2 meters). This high level of accuracy may be useful in facial recognition applications, such as for unlocking and security applications of mobile devices (e.g., cell phones, tablet computers, etc.).

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

[0179] In other examples, point clouds may be generated without using the illuminator 602. For example, in some examples, the sensor 604 of the distance measuring system 600 may include two or more optical cameras. In such examples, the distance measuring system 600 may use the optical cameras to capture a stereoscopic image of the environment including the object 608. The distance measuring system 600 may include a point cloud generator 616 that can calculate the parallax between locations in the stereoscopic image. The distance measuring system 600 may then use the parallax to determine the distance to the locations shown in the stereoscopic image. From these distances, the point cloud generator 616 may generate a point cloud.

[0180] Sensor 604 may also detect other attributes of object 608, such as color and reflectance information. In the example in Figure 6, point cloud generator 616 may generate a point cloud based on the signal 614 generated by sensor 604. Distance measuring system 600 and / or point cloud generator 616 may form part of data source 104 (Figure 1). Thus, the point cloud generated by distance measuring system 600 may be encoded and / or decoded according to any of the techniques of this disclosure.

[0181] Figure 7 is a conceptual diagram illustrating an exemplary vehicle-based scenario in which one or more techniques of the present disclosure may be used. In the example of Figure 7, the vehicle 700 includes a distance measuring system 702. The distance measuring system 702 may be implemented in the manner described with respect to Figure 7. Not shown in Figure 7, the vehicle 700 may also include a data source, such as a data source 104 (Figure 1), and a G-PCC encoder, such as a G-PCC encoder 200 (Figure 1). In the example of Figure 7, the distance measuring system 702 emits a laser beam 704 that reflects off pedestrians 706 or other objects in the road. The data source of the vehicle 700 may generate a point cloud based on the signal generated by the distance measuring system 702. The G-PCC encoder of the vehicle 700 may encode the point cloud to generate a bitstream 708, such as a geometry bitstream (Figure 2) and an attribute bitstream (Figure 2). The bitstream 708 may contain far fewer bits than the unencoded point cloud obtained by the G-PCC encoder.

[0182] The output interface of the vehicle 700 (for example, output interface 108 (Figure 1)) can transmit bitstream 708 to one or more other devices. Bitstream 808 may contain far fewer bits than the unencoded point cloud acquired by the G-PCC encoder. Therefore, the vehicle 700 may be able to transmit bitstream 708 to other devices more quickly than the unencoded point cloud data. In addition, the data strategy capabilities required by bitstream 708 may be less.

[0183] In the example shown in Figure 7, vehicle 700 may transmit 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 in vehicle 710 may decode bitstream 708 and reconstruct the point cloud. Vehicle 710 may use the reconstructed point cloud for various purposes. For example, based on the reconstructed point cloud, vehicle 710 may determine that pedestrian 706 is in the road ahead of vehicle 700, and therefore may begin to decelerate even before the driver of vehicle 710 notices that pedestrian 706 is in the road. Thus, in some examples, vehicle 710 may perform autonomous navigation operations based on the reconstructed point cloud.

[0184] As an addition or alternative, vehicle 700 may transmit 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 to reconstruct the point cloud later. In this example, server system 712 may use the point cloud together with other data (e.g., vehicle telemetry data generated by vehicle 700) to train an autonomous driving system. In another example, server system 712 may store bitstream 708 to reconstruct later for forensic crash investigation (e.g., if vehicle 700 collides with pedestrian 706).

[0185] Figure 8 is a conceptual diagram showing an exemplary extended reality system in which one or more of the techniques of this disclosure may be used. Extended reality (XR) is a term used to cover a range of techniques including augmented reality (AR), mixed reality (MR), and virtual reality (VR). In the example of Figure 8, user 800 is located at a first location 802. User 800 is wearing an XR headset 804. As an alternative to the XR headset 804, user 800 may use a mobile device (e.g., a cell phone, tablet computer, etc.). The XR headset 804 includes depth-sensing sensors, such as a distance measuring system, that detect the position of points on an object 806 at location 802. The data source of the XR headset 804 may use signals generated by the depth-sensing sensors to generate a point cloud representation of object 806 at location 802. The XR headset 804 may include a G-PCC encoder (e.g., the G-PCC encoder 200 in Figure 1) configured to encode the point cloud to produce a bitstream 808.

[0186] The XR headset 804 may transmit the bitstream 808 (for example, via a network such as the Internet) to an XR headset 810 worn by a user 812 at a second location 814. The XR headset 810 may decode the bitstream 808 and reconstruct a point cloud. The XR headset 810 may use the point cloud to generate an XR visualization (e.g., an AR, MR, or VR visualization) representing an object 806 at location 802. Thus, in some examples, for example, when the XR headset 810 generates a VR visualization, the user 812 may have a 3D immersive experience of location 802. In some examples, the XR headset 810 may determine the position of a virtual object based on the reconstructed point cloud. For example, the XR headset 810 may determine, based on the reconstructed point cloud, that the environment (e.g., location 802) includes a plane, and therefore determine that a virtual object (e.g., an anime character) should be placed on that plane. The XR headset 810 may generate an XR visualization in which the virtual object is at the determined position. For example, the XR headset 810 could display an animated character sitting on a flat surface.

[0187] Figure 9 is a conceptual diagram showing an exemplary mobile device system in which one or more techniques of the present disclosure may be used. In the example of Figure 9, a mobile device 900, such as a mobile phone or tablet computer, includes a distance measuring system, such as a LiDAR system, which detects the location of a point on an object 902 in the environment of the mobile device 900. The data source of the mobile device 900 may generate a point cloud representation of the object 902 using signals generated by the depth sensing sensor. The mobile device 900 may include a G-PCC encoder (e.g., the G-PCC encoder 200 in Figure 1) configured to encode the point cloud to generate a bitstream 904. In the example of Figure 9, the mobile device 900 may transmit the bitstream to a remote device 906, such as a server system or another mobile device. The remote device 906 may decode the bitstream 904 to reconstruct the point cloud. The remote device 906 may use the point cloud for various purposes. For example, the remote device 906 may use the point cloud to generate a map of the environment of the mobile device 900. For example, the remote device 906 may generate a map of the interior of a building based on the reconstructed point cloud. In another example, the remote device 906 may generate an image (e.g., computer graphics) based on the point cloud. For example, the remote device 906 may use the points of the point cloud as vertices of a polygon and the color attributes of the points as a basis for shading the polygon. In some examples, the remote device 906 may use the reconstructed point cloud for facial recognition or other security applications.

[0188] Figures 10A and 10B show an example of this process in bin n. In example 201 in Figure 10A, the range in bin n is LPS(p σThis includes RangeMPS and RangeLPS, which are given by a certain probability. Example 201 shows the update of the range in bin n+1 when the value in bin n is equal to MPS. In this example, the row remains the same, but the range value in bin n+1 is lowered to the value of RangeMPS in bin n. Example 203 in Figure 10B shows the update of the range in bin n+1 when the value in bin n is not equal to MPS (i.e., equal to LPS). In this example, the row is moved to a lower range value of RangeLPS in bin n. In addition, the range value in bin n+1 is lowered to the value of RangeLPS in bin n.

[0189] In some examples, the range is represented by 9 bits and the low by 10 bits. There is a renormalization process to maintain the range and low values ​​with sufficient precision. Renormalization occurs whenever the range is less than 256. Therefore, the range is always 256 or greater after renormalization. Depending on the range and low values, the BAC outputs either "0" or "1" to the bitstream, or updates an internal variable (called BO: unresolved bits) to prepare for future outputs. Figure 11 shows an example of range-dependent BAC output. For example, when the range and low are above a certain threshold (e.g., 512), "1" is output to the bitstream. When the range and low are below a certain threshold (e.g., 512), "0" is output to the bitstream. When the range and lower are between some thresholds, nothing is output to the bitstream. Instead, the BO value is incremented and the next bin is encoded.

[0190] As described above, arithmetic coding can be used to achieve high compression efficiency. This is achieved by first converting non-binary syntax elements to a binary representation (e.g., 0, 1) using a process called binarization. The resulting converted entries are called bins or bin strings. These bins or bin strings are then fed into the arithmetic coding process. Figure 11 shows an exemplary context-adaptive binary arithmetic coding (CABAC) coding stage. An exemplary CABAC coding stage can be implemented in a G-PCC encoder, for example, by the arithmetic coding units 214 and / or 226 of the G-PCC encoder 200 in Figure 2.

[0191] In some G-PCC examples, context-adaptive binary arithmetic coding (CABAC) may be used to generate bins through the binarid process. For each coded bin value, an appropriate context model is selected. These context models are used to encode each bin value into output bits based on bin probability values. The CABAC engine bypasses context modeling and bin coding when bins are equally likely to be either 0 or 1. This is the bypass coding stage described below. In some cases, an appropriate context model is specified when the bin values ​​are coded and modeled based on the probability of the bin values. The context adapts as the encoder codes more bins. Finally, the context-coded bin values ​​or raw bitstream are sent to or otherwise supplied to the decoder.

[0192] Figure 12 is a block diagram of an exemplary arithmetic coding unit 214 that may be configured to perform CABAC according to the technique of the present disclosure. A syntax element 1180 is input to the arithmetic coding unit 214. If the syntax element is already a binary value syntax element (e.g., a flag or other syntax element that has only values ​​of 0 and 1), the binarization step may be skipped. If the syntax element is a non-binary value syntax element (e.g., a syntax element that may have values ​​other than 1 or 0), the non-binary value syntax element is binarized by the binaryizer 1200. The binaryizer 1200 performs a mapping of the non-binary value syntax element to a sequence of binary decisions. These binary decisions are often called “bins”. For example, for a transformation coefficient level, the value of the level can be decomposed into a series of bins, each bin indicating whether the absolute value of the coefficient level is greater than a certain value. For example, bin 0 (sometimes called the significance flag) indicates whether the absolute value of the transformation coefficient level is greater than 0. Bin 1 indicates whether the absolute value of the transformation coefficient level is greater than 1, and so on. For each non-binary value syntax element, a unique mapping may be developed.

[0193] Each bin generated by the binaryizer 1200 is fed to the binary arithmetic coding side of the arithmetic coding unit 214. That is, for a given set of non-binary value syntax elements, each bin type (e.g., bin 0) is coded before the next bin type (e.g., bin 1). Coding can be performed in either normal mode or bypass mode. In bypass mode, the bypass coding engine 1260 performs arithmetic coding using a fixed probability model, for example, Golomb-Rice coding or exponential Golomb coding. Bypass mode is generally used for more predictable syntax elements.

[0194] Coding in normal mode involves performing CABAC. Normal mode CABAC codes bin values ​​when the probability of a bin value is predictable given previously coded bin values. The probability that a bin is LPS is determined by the context modeler 1220. The context modeler 1220 outputs the bin value and a stochastic state for the context (e.g., a stochastic state σ containing the value of LPS and the probability of LPS occurring). The context may be an initial context for a set of bins, or it may be determined based on the coded values ​​of previously coded bins. The identity of the context may be expressed and / or determined based on the value of the variable ctxInc (a context increment, such as the value of ctxInc representing an increment to be added to the previous context). As described above, the context modeler 1220 may update its state based on whether the received bin was MPS or LPS. After the context and stochastic state σ have been determined by the context modeler 1220, the normal coding engine 1240 performs BAC on the bin value.

[0195] Figure 13 is a block diagram of an exemplary arithmetic decoding unit 302 that may be configured to perform CABAC using the technique of the present disclosure. The arithmetic decoding unit 302 in Figure 13 performs CABAC in the reverse manner of the arithmetic coding unit 214 described in Figure 12. Coated bits from bitstream 2180 are input to the arithmetic decoding unit 302. The coded bits are fed to either the context modeler 2200 or the bypass decoding engine 2220, based on whether the coded bits were entropy coded using normal mode or bypass mode. If the coded bits were coded in bypass mode, the bypass decoding engine will use Golomb-Rice or exponential Golomb decoding to extract, for example, the binary syntax elements or the non-binary syntax elements.

[0196] When the coded bits are coded in the normal mode, the context modeler 2200 may determine a probability model for the coded bits, and the normal decoder engine 2240 may decode the coded bits to generate bins (or, if the value is binary, the syntax element itself) of non-binary-valued syntax elements. After the context and probability state σ are determined by the context modeler 2200, the normal decoder engine 2240 performs BAC to decode the bin values. In other words, the normal decoder engine 2240 may determine the probability state of the context and decode the bin value based on the previously coded bins and the current range. After decoding the bins, the context modeler 2200 may update the probability state of the context based on the window size and the value of the decoded bins.

[0197] FIG. 14 is a flowchart showing an exemplary method for encoding a current prediction tree node according to one or more techniques of the present disclosure. The current prediction tree node (PTN) may be included in a point cloud. Although described with respect to the G-PCC encoder 200 (FIGS. 1 and 2), it should be understood that other devices may be configured to perform a method similar to that of FIG. 14. For example, a G-PCC decoder, such as the G-PCC decoder 300 (FIGS. 1 and 3), may perform an interpolation method for the method of FIG. 14 (e.g., decode instead of encode).

[0198] The G-PCC encoder 200 may obtain the value of a quadratic residual to geometrically code the current predicted tree node (PTN) of the point cloud (1402). As described above, when using the angular mode for predictive geometry coding in G-PCC, the G-PCC encoder 200 may perform predictions in the (r,φ,i) domain. Due to errors in rounding, coding in r,φ,i may be lossy. In some cases, this loss can be reduced or eliminated by coding a second set of residuals (called quadratic residuals) that may be in the Cartesian domain. For example, the current PTN has three quadratic residuals (r x ,r y ,r z ) include, and one or more of them can be encoded using the technique shown in Figure 14.

[0199] The G-PCC encoder 200 can encode the value of a second-order residual. To encode the value of a second-order residual, the G-PCC encoder 200 may encode the prefix bin of a syntax element having a value specifying the absolute value of the second-order residual minus 2 using a first set of context-adaptive binary arithmetic coding (CABAC) contexts (1404), and encode the suffix bin of the syntax element using a second set of CABAC contexts different from the first set of contexts (1406). For example, the arithmetic encoding unit 214 of the G-PCC encoder 200 may encode the prefix bin of the ptn_sec_residual_abs_minus2 syntax element using a context with a context index (ctxIdx) between 0 and a-1, and encode the suffix bin of the ptn_sec_residual_abs_minus2[k] syntax element using a context with a context index (ctxIdx) between a and a+b-1. In some examples, a could be 5 and b could be 4.

[0200] In some examples, in addition to a syntax element having a value that specifies the absolute value of the secondary residual minus 2, the G-PCC encoder 200 may encode one or more other syntax elements that specify the value of the secondary residual. For example, the G-PCC encoder 200 may encode a syntax element having a value that specifies whether the value of the secondary residual is equal to zero (e.g., ptn_sec_residual_eq0_flag). In another example, if the value of the secondary residual is not equal to zero, the G-PCC encoder 200 may encode a syntax element having a value that specifies the sign of the value of the secondary residual (e.g., ptn_sec_residual_sign_flag) and a syntax element having a value that specifies whether the value of the secondary residual is greater than 1 (e.g., ptn_sec_residual_eq1_flag).

[0201] However, as described above in accordance with one or more techniques of the present disclosure, the G-PCC encoder 200 may avoid encoding a syntax element specifying the absolute value of the secondary residual minus 17 (e.g., ptn_sec_residual_abs_minus17) even when the absolute value of the secondary residual is greater than 17. By not encoding a syntax element specifying the absolute value of the secondary residual minus 17, and by context coding the prefix and suffix of a syntax element specifying the absolute value of the secondary residual minus 2, the G-PCC encoder 200 may reduce the number of contexts and / or context-coded bins used to signal the secondary residual. Thus, the techniques of the present disclosure may reduce the complexity of point cloud coding calculations.

[0202] The techniques of this disclosure may be applicable to signaling beyond quadratic residuals. For example, the G-PCC encoder 200 may obtain the value of the phi multiplier to geometrically code the current predicted tree node of the point cloud (1408) and encode the value of the phi multiplier by encoding at least a syntax element having a value that specifies the absolute value of the phi multiplier minus 9 (e.g., ptn_phi_mult_abs_minus9) (1410). However, as with quadratic residuals, the G-PCC encoder 200 may avoid encoding a syntax element that specifies the absolute value of the phi multiplier minus 17 (e.g., even if the absolute value of the phi multiplier is greater than 17).

[0203] As described above, in some examples, the G-PCC encoder may signal the number of direct child nodes of a PTN. For example, the G-PCC encoder 200 may encode a syntax element representing the number of direct child nodes (e.g., Ptn_child_cnt) of the current predictor tree node that exists in the geometry predictor tree representing the point cloud. In some examples, the G-PCC encoder 200 may utilize fixed-length coding to encode (e.g., binariconstitute) the syntax element. For example, the G-PCC encoder 200 may utilize the following table to encode the syntax element representing the number of direct child nodes.

[0204] [Table 19]

[0205] However, in some cases, the use of fixed-length coding may be undesirable. For example, the probability distribution of the number of child nodes may result in more PTNs having one child node than PTNs having 0, 2, or 3 child nodes. According to one or more techniques of this disclosure, the G-PCC encoder 200 may encode a syntax element representing the number of direct child nodes (e.g., Ptn_child_cnt) of a current predictor tree node present in the geometry predictor tree representing the point cloud using variable-length coding (1412). For example, the G-PCC encoder 200 may utilize the following table to encode a syntax element representing the number of direct child nodes.

[0206] [Table 20]

[0207] As can be seen in the table above, variable-length coding of the syntax element representing the number of direct child nodes may involve using a shorter codeword when there is one direct child node than when there are zero direct child nodes (for example, using the codeword "10" when there are zero child nodes, compared to using the codeword "0" when there are one child node).

[0208] Figure 15 is a flowchart illustrating an exemplary method for decoding a current predictive tree node using one or more techniques of the present disclosure. The current predictive tree node (PTN) may be contained within a point cloud. While the G-PCC decoder 300 (Figures 1 and 3) is described in reference, it should be understood that other devices may be configured to perform a method similar to that of Figure 15. For example, a G-PCC encoder such as the G-PCC encoder 200 (Figures 1 and 2) may perform an interpolation method relative to the method of Figure 15 (encoding rather than decoding, for example, within a reconstruction loop performed by the GRU216).

[0209] The G-PCC decoder 300 may select a prediction mode for performing predictive geometry coding of the current predicted tree node positions in the point cloud from a plurality of predetermined prediction modes. As described above, the plurality of prediction modes may include at least a zero prediction mode and a delta prediction mode. In some examples, the G-PCC decoder 300 may select a prediction mode based on the value of a syntax element. For example, the geometry arithmetic decoder unit 302 may decode a ptn_pred_mode syntax element that has a value specifying which prediction mode should be selected.

[0210] In response to selecting zero prediction mode (1502), the G-PCC decoder 300 may perform zero prediction to determine the current PTN position. To perform zero prediction, the G-PCC decoder 300 may 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 may retrieve the parent node's radius, azimuth, and laser index from memory (for example, since they have been previously determined by the G-PCC decoder 300).

[0211] The G-PCC decoder 300 can infer the azimuth and laser index of the current prediction tree node's predicted position 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 current node's predicted position.

[0212] The G-PCC decoder 300 may infer that the radius of the predicted position is the minimum radius value (1508). For example, the G-PCC decoder 300 may always be set so that the radius of the predicted position is the minimum radius value. In some examples, the minimum radius value may always be zero. In some examples, the minimum radius value may be greater than zero. For example, the G-PCC decoder 300 may decode a syntax element that specifies the minimum radius value (for example, from a slice header).

[0213] To complete the zero prediction, the G-PCC decoder 300 may determine the position of the current prediction tree node based on the predicted position of the current prediction tree node (1510). For example, the G-PCC decoder 300 may 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 position of the current prediction tree node. In some examples, such as when the selected mode is zero prediction mode, the G-PCC decoder 300 may infer that the sign of the residual radius value is positive (and avoid the need to signal whether the sign is positive or negative). The G-PCC decoder 300 may add the residual radius value to the minimum radius value (e.g., the radius value of the predicted position of the current PTN) to obtain the radius value of the position of the current PTN. The G-PCC decoder 300 may similarly obtain and add residuals for other components (e.g., azimuth and laser index).

[0214] In some cases, the G-PCC decoder 300 may modify the decoding based on the amount of laser used to generate the point cloud. For example, the G-PCC decoder 300 may determine the amount of laser used to capture the light detection and ranging (LIDAR) data representing the point cloud (1512), and in response to the determination that the amount of laser is one, it may infer that the laser index for all nodes in the point cloud is the same value (e.g., a laser index value of 0) (1514). In this way, the G-PCC decoder 300 may avoid the need to signal and / or predict the laser index. Thus, the techniques of the present disclosure may reduce the number of bits required to represent the point cloud and / or reduce the complexity of point cloud coding.

[0215] The following numbered clauses may represent one or more aspects of this disclosure.

[0216] Clause 1A. A method for processing a point cloud, comprising the steps of obtaining a value greater than 17 for the quadratic residual of the point cloud's geometric coding, and coding the value of the quadratic residual without coding a syntax element specifying the value of the quadratic residual minus 17.

[0217] Clause 2A. Syntax elements are those described in Clause 1A, including the ptn_sec_residual_abs_minus17 syntax element.

[0218] Clause 3A. The method according to Clause 1A or 2A, further comprising the steps of obtaining a phi multiplier value greater than 17 for the geometry coding of a point cloud, and coding a phi multiplier value without coding a syntax element specifying a phi multiplier value minus 17.

[0219] Clause 4A. The syntax element specifying the value of the phi multiplier minus 17 is the syntax element ptn_phi_mult_abs_minus17, as described in Clause 3A.

[0220] Clause 5A. The method of Clause 3A or 4A, further comprising the step of coding a syntax element that specifies a value of minus 9 for the phi multiplier.

[0221] Clause 6A. The method according to any one of Clauses 1A to 5A, wherein the step of coding a value of a quadratic residual includes the step of coding the bits of a syntax element specifying a value of the quadratic residual minus N using exponential Golomb coding with a prefix context and b suffix contexts.

[0222] Clause 7A. The method described in Clause 6A, where N is 2.

[0223] Clause 8A. a is 5, as described in Clause 6A or 7A.

[0224] Clause 9A.b is 4, the method described in any one of Clauses 6A through 8A.

[0225] Clause 1B. A method for processing a point cloud, comprising the steps of coding a syntax element representing the number of direct child nodes of a current predictor tree node in a geometry predictor tree representing the point cloud, using variable-length coding, and coding a syntax element representing a mode used to predict a position associated with the current predictor tree node, using variable-length coding.

[0226] Clause 2B. The syntax element representing the number of direct child nodes of the current prediction tree node present in the geometry prediction tree is the method described in Clause 1B, including the ptn_child_cnt syntax element.

[0227] Clause 3B. The syntax element representing the mode used to predict the position associated with the current prediction tree node is the method described in Clause 1B or 2B, which includes the ptn_pred_mode syntax element.

[0228] Clause 1C. A method for processing a point cloud, comprising the step of suppressing signaling of the laser index value of a single laser in response to a determination that a single laser was used to capture light detection and ranging (LIDAR) data representing a point cloud.

[0229] Clause 1D. A method for processing a point cloud, comprising the step of performing zero prediction of the point cloud based on the azimuth angle of the parent's neighbor, the laser index, and the sign estimation.

[0230] Clause 1E. A method for encoding a point cloud, comprising the steps of: obtaining a value of a quadratic residual to geometrically code the current predict tree node of the point cloud; and encoding the value of a quadratic residual, wherein the step of encoding the value comprises: encoding a prefix bin of a syntax element having a value specifying the absolute value of the quadratic residual minus 2 using a first set of context-adaptive binary arithmetic coding (CABAC) contexts; and encoding a suffix bin of the syntax element using a second set of CABAC contexts different from the first set of contexts.

[0231] Clause 2E. Syntax elements include the ptn_sec_residual_abs_minus2 syntax element, as described in Clause 1E.

[0232] Clause 3E. The method according to any one of Clauses 1E to 2E, wherein the absolute value of the quadratic residual is greater than 17, and the step of encoding the value of the quadratic residual does not include the step of encoding a syntax element that specifies the absolute value of the quadratic residual minus 17.

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

[0234] Clause 5E. The method described in Clause 4E, where a is 5 and b is 4.

[0235] Clause 6E. The method according to any one of Clauses 1E to 5E, wherein the syntax element includes a first syntax element, and the step of encoding a value of a quadratic residual further includes the steps of encoding a second syntax element having a value specifying whether the value of the quadratic residual is equal to zero, encoding a third syntax element having a value specifying the sign of the value of the quadratic residual if the value of the quadratic residual is not equal to zero, encoding a fourth syntax element having a value specifying whether the value of the quadratic residual is greater than 1, and encoding the first syntax element if the value of the quadratic residual is greater than 1.

[0236] Clause 7E. The method according to any one of Clauses 1E to 6E, wherein the current prediction tree node is a first prediction tree node and the syntax element includes a first syntax element, and the method further comprises the steps of obtaining a phi multiplier value to geometrically code a second prediction tree node of the point cloud, and encoding the phi multiplier value, wherein the step of encoding the phi multiplier value includes encoding a fifth syntax element having a value that specifies the absolute value of the phi multiplier minus 9.

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

[0238] Clause 9E. The method according to any one of Clauses 1E to 8E, wherein the current prediction tree node is a first prediction tree node and the syntax element contains a first syntax element, and the method further comprises the step of encoding a sixth syntax element having a value representing the number of direct child nodes of a second prediction tree node that exist in a geometry prediction tree representing a point cloud, using variable-length coding.

[0239] Clause 10E. The sixth syntax element representing the number of direct child nodes of a second predictor tree node present in the geometry predictor tree is the method described in Clause 9E, including the ptn_child_cnt syntax element.

[0240] Clause 11E. The method according to Clause 9E, wherein the step of encoding a sixth syntax element using variable-length coding includes the step of using a shorter codeword when the number of direct child nodes is 1 than when the number of direct child nodes is 0.

[0241] Clause 12E. A method for decoding a point cloud, comprising the steps of: obtaining a value of a quadratic residual to geometrically code the current predict tree node of the point cloud; and decoding the value of the quadratic residual, wherein the step of encoding the value comprises the steps of decoding a prefix bin of a syntax element having a value specifying the absolute value of the quadratic residual minus 2 using a first set of context-adaptive binary arithmetic coding (CABAC) contexts; and decoding a suffix bin of the syntax element using a second set of CABAC contexts different from the first set of contexts.

[0242] Clause 13E. Syntax elements include the ptn_sec_residual_abs_minus2 syntax element, as described in Clause 12E.

[0243] Clause 14E. The method of any one of Clauses 12E to 13E, wherein the absolute value of the quadratic residual is greater than 17, and the step of decoding the value of the quadratic residual does not include the step of decoding a syntax element specifying the absolute value of the quadratic residual minus 17.

[0244] Clause 15E. The method described in any one of Clauses 12E to 14E, wherein a first set of CABAC contexts includes CABAC contexts having context indices between 0 and a-1, and a second set of CABAC contexts includes CABAC contexts having context indices between a and a+b-1.

[0245] Clause 16E. The method described in Clause 15E, where a is 5 and b is 4.

[0246] Clause 17E. The method according to any one of Clauses 12E to 16E, wherein the syntax element includes a first syntax element, and the step of decoding the value of a quadratic residual further includes the steps of decoding a second syntax element having a value that specifies whether the value of the 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 that specifies whether the value of the quadratic residual is greater than 1, and decoding the first syntax element if the value of the quadratic residual is greater than 1.

[0247] Clause 18E. The method according to any one of Clauses 12E to 17E, wherein the current prediction tree node is a first prediction tree node and the syntax element contains a first syntax element, and the method further comprises the steps of obtaining a phi multiplier value to geometrically code a second prediction tree node of the point cloud, and decoding the phi multiplier value, wherein the step of decoding the phi multiplier value includes decoding a fifth syntax element having a value that specifies the absolute value of the phi multiplier minus 9.

[0248] Clause 19E. The method of Clause 18E, wherein the absolute value of the phi multiplier is greater than 17, and the step of decoding the value of the phi multiplier does not include the step of decoding a syntax element specifying the value of the phi multiplier minus 17.

[0249] Clause 20E. The method according to any one of Clauses 12E to 19E, wherein the current prediction tree node is a first prediction tree node, the syntax element contains a first syntax element, and the method further comprises the step of decoding a sixth syntax element having a value representing the number of direct child nodes of a second prediction tree node that exist in a geometry prediction tree representing a point cloud, using variable-length coding.

[0250] Clause 21E. The sixth syntax element representing the number of direct child nodes of a second predictor tree node present in the geometry predictor tree is the method described in Clause 20E, including the ptn_child_cnt syntax element.

[0251] Clause 22E. The method according to Clause 20E, wherein the step of decoding a sixth syntax element using variable-length coding includes the step of utilizing a shorter codeword when the number of direct child nodes is 1 than when the number of direct child nodes is 0.

[0252] Clause 23E. 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 the circuit, the one or more processors configured to obtain a quadratic residual value for geometry coding the current predict tree node of the point cloud, and to encode the quadratic residual value, the one or more processors configured to encode a prefix bin of a syntax element having a value specifying the absolute value of the quadratic residual minus 2 using a first set of context-adaptive binary arithmetic coding (CABAC) contexts, and a suffix bin of a syntax element using a second set of CABAC contexts different from the first set of contexts.

[0253] Clause 24E. The syntax elements include the ptn_sec_residual_abs_minus2 syntax element, as described in Clause 23E.

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

[0255] A device as described in any one of the clauses 23E to 25E, wherein a first set of CABAC contexts includes CABAC contexts having context indices between 0 and a-1, and a second set of CABAC contexts includes CABAC contexts having context indices between a and a+b-1.

[0256] Clause 27E. The device described in Clause 26E, where a is 5 and b is 4.

[0257] Clause 28E. A device according to any one of Clauses 23E to 27E, wherein the syntax element includes a first syntax element, and one or more processors are configured to encode a second syntax element having a value specifying whether the value of the second residual is equal to zero, a third syntax element having a value specifying the sign of the value of the second residual if the value of the second residual is not equal to zero, a fourth syntax element having a value specifying whether the value of the second residual is greater than 1, and the first syntax element if the value of the second residual is greater than 1.

[0258] Clause 29E. The device according to any one of Clauses 23E to 29E, wherein the current prediction tree node is a first prediction tree node, the syntax element contains a first syntax element, and one or more processors are further configured to obtain a phi multiplier value and encode the phi multiplier value in order to geometry code a second prediction tree node of the point cloud, and in order to encode the phi multiplier value, one or more processors are configured to encode a fifth syntax element having a value that specifies the absolute value of the phi multiplier minus 9.

[0259] Clause 30E. The absolute value of the phi multiplier is greater than 17, and one or more processors are not configured to encode a syntax element specifying the value of the phi multiplier minus 17, as described in Clause 29E.

[0260] Clause 31E. The device described in any one of Clauses 23E to 30E, wherein the current prediction tree node is a first prediction tree node, the syntax element contains a first syntax element, and one or more processors are further configured to encode a sixth syntax element having a value representing the number of direct child nodes of a second prediction tree node that exist in a geometry prediction tree representing a point cloud, using variable-length coding.

[0261] Clause 32E. The sixth syntax element representing the number of direct child nodes of a second predictive tree node present in the geometry predictive tree is the device described in Clause 31E, which includes the ptn_child_cnt syntax element.

[0262] Clause 33E. A device as described in Clause 31E, in which one or more processors are configured to utilize a shorter codeword when the number of direct child nodes is 1 than when the number of direct child nodes is 0, in order to encode a sixth syntax element using variable-length coding.

[0263] Clause 34E. 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 the circuit, the one or more processors configured to retrieve a quadratic residual value for geometry coding the current predict tree node of the point cloud, and to decode the quadratic residual value, the one or more processors configured to decode the value by decoding the prefix bin of a syntax element having a value specifying the absolute value of the quadratic residual minus 2 using a first set of context-adaptive binary arithmetic coding (CABAC) contexts, and decoding the suffix bin of a syntax element using a second set of CABAC contexts different from the first set of contexts.

[0264] Clause 35E. The syntax elements include the ptn_sec_residual_abs_minus2 syntax element, as described in Clause 34E.

[0265] Clause 36E. A device according to any one of Clauses 34E to 35E, wherein the absolute value of the second-order residual is greater than 17, and one or more processors are not configured to decode a syntax element specifying the absolute value of the second-order residual minus 17 in order to decode the value of the second-order residual.

[0266] A device as described in any one of the clauses 34E to 36E, wherein a first set of CABAC contexts includes CABAC contexts having context indices between 0 and a-1, and a second set of CABAC contexts includes CABAC contexts having context indices between a and a+b-1.

[0267] Clause 38E. The device described in Clause 37E, where a is 5 and b is 4.

[0268] Clause 39E. A device according to any one of Clauses 34E to 38E, wherein the syntax element includes a first syntax element, and one or more processors are configured to decode a second syntax element having a value specifying whether the value of the second-order residual is equal to zero; if the value of the second-order residual is not equal to zero, decode a third syntax element having a value specifying the sign of the value of the second-order residual; if the value of the second-order residual is not equal to zero, decode a fourth syntax element having a value specifying whether the value of the second-order residual is greater than 1; and if the value of the second-order residual is greater than 1, decode the first syntax element.

[0269] Clause 40E. The device according to any one of Clauses 34E to 39E, wherein the current prediction tree node is a first prediction tree node, the syntax element contains a first syntax element, and one or more processors are further configured to obtain a phi multiplier value for geometry coding a second prediction tree node of the point cloud and to decode the phi multiplier value, and in order to decode the phi multiplier value, one or more processors are configured to decode a fifth syntax element having a value that specifies the absolute value of the phi multiplier minus 9.

[0270] Clause 41E. A device as described in any one of Clauses 34E to 40E, in which the absolute value of the phi multiplier is greater than 17, and one or more processors are not configured to decode a syntax element specifying the value of the phi multiplier minus 17 in order to decode the value of the phi multiplier.

[0271] Clause 42E. The device described in any one of Clauses 34E to 41E, wherein the current prediction tree node is the first prediction tree node, the syntax element contains the first syntax element, and one or more processors are further configured to decode a sixth syntax element having a value representing the number of direct child nodes of the second prediction tree node that exist in the geometry prediction tree representing the point cloud, using variable-length coding.

[0272] Clause 43E. The sixth syntax element representing the number of direct child nodes of a second predictive tree node present in the geometry predictive tree is the device described in Clause 42E, which includes the ptn_child_cnt syntax element.

[0273] Clause 44E. A device as described in Clause 42E, in which one or more processors are configured to utilize a shorter codeword when the number of direct child nodes is 1 than when the number of direct child nodes is 0, in order to decode a sixth syntax element using variable-length coding.

[0274] Clause 45E. A computer-readable storage medium for storing instructions, wherein, when executed, the instructions cause one or more processors of a point cloud encoder to obtain a value of a quadratic residual for geometry coding the current predict tree node of the point cloud, and to encode the value of the quadratic residual, and the instructions causing one or more processors to encode a value include instructions causing one or more processors to encode a prefix bin of a syntax element having a value specifying the absolute value of the quadratic residual minus 2 using a first set of context-adaptive binary arithmetic coding (CABAC) contexts, and to encode a suffix bin of a syntax element using a second set of CABAC contexts different from the first set of contexts.

[0275] Clause 46E. A computer-readable storage medium for storing instructions, wherein, when executed, the instructions cause one or more processors of a point cloud decoder to obtain a value of a quadratic residual for geometry coding the current predict tree node of the point cloud, and to decode the value of the quadratic residual, the instructions causing one or more processors to decode the value include instructions causing one or more processors to decode a prefix bin of a syntax element having a value specifying the absolute value of the quadratic residual minus 2 using a first set of context-adaptive binary arithmetic coding (CABAC) contexts, and to decode a suffix bin of a syntax element using a second set of CABAC contexts different from the first set of contexts.

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

[0277] The method according to Clause 1F, further comprising the step of inferring the radius, azimuth, and laser index of the predicted position of the current prediction tree node as the radius, azimuth, and laser index of the parent node in response to selecting a delta prediction mode.

[0278] Clause 3F. The method described in any one of Clauses 1F to 2F, wherein the minimum radius value is zero.

[0279] Clause 4F. The method described in any one of Clauses 1F to 3F, wherein the minimum radius value is greater than zero.

[0280] Clause 5F. The method according to any one of Clauses 1F to 4F, wherein the step of determining the current node's position based on the predicted position includes the step of obtaining a residual radius value representing the difference between the radius value of the current predicted tree node's predicted position and the radius value of the current predicted tree node's position.

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

[0282] The method according to any one of the clauses 1F to 6F, further comprising the steps of determining the amount of laser used to capture light detection and ranging (LIDAR) data representing a point cloud, and, in response to the determination that the amount of laser is one, inferring that the laser index for all nodes in the point cloud is the same value.

[0283] Clause 8F. The method according to any one of Clauses 1F to 7F, wherein the step of selecting a prediction mode includes the step of decoding a syntax element having a value indicating the selected prediction mode.

[0284] Clause 9F. A method for encoding a point cloud, comprising the steps of: selecting a prediction mode from a plurality of predetermined prediction modes for performing predictive geometry coding 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 a delta prediction mode; determining the radius, azimuth, and laser index of the parent node of the current prediction tree node when the selected mode is a zero prediction mode; 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 that the radius of the predicted position is the 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.

[0285] The method according to Clause 10F, further comprising the step of inferring the radius, azimuth, and laser index of the predicted position of the current prediction tree node as the radius, azimuth, and laser index of the parent node in response to selecting a delta prediction mode.

[0286] Clause 11F. The method described in any one of Clauses 9F to 10F, wherein the minimum radius value is zero.

[0287] Clause 12F. The method described in any one of Clauses 9F to 11F, wherein the minimum radius value is greater than zero.

[0288] Clause 13F. The method according to any one of Clauses 9F to 12F, wherein the step of determining the current node's position based on the predicted position includes the step of obtaining a residual radius value representing the difference between the radius value of the current predicted tree node's predicted position and the radius value of the current predicted tree node's position.

[0289] Clause 14F. The method according to Clause 13F, wherein the step of obtaining a residual radius value includes the step of assuming that the sign of the residual radius value is positive when the selected mode is a zero prediction mode.

[0290] Clause 15F. The method according to any one of Clauses 9F to 14F, further comprising the steps of determining the amount of laser used to capture light detection and ranging (LIDAR) data representing a point cloud, and, in response to the determination that the amount of laser is one, inferring that the laser index for all nodes in the point cloud is the same value.

[0291] Clause 16F. The method according to any one of Clauses 9F to 15F, wherein the step of selecting a prediction mode includes the step of encoding a syntax element having a value indicating the selected prediction mode.

[0292] Clause 17F. 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 the circuit, the one or more processors being configured to select a prediction mode from a plurality of predetermined prediction modes for performing predictive geometry coding of the current predictive tree node's position in the point cloud, the plurality of prediction modes comprising at least a zero prediction mode and a delta prediction mode, and in response to selecting a zero prediction mode, determining the radius, azimuth, and laser index of the parent node of the current predictive tree node, inferring the azimuth and laser index of the predicted position of the current predictive tree node as the azimuth and laser index of the parent node, inferring that the radius of the predicted position is the minimum radius value, which is different from the radius of the parent node, and determining the position of the current predictive tree node based on the predicted position of the current predictive tree node.

[0293] Clause 18F. The device described in Clause 17F, wherein one or more processors are further configured to infer the radius, azimuth, and laser index of the predicted position of the current prediction tree node as the radius, azimuth, and laser index of the parent node in response to selecting a delta prediction mode.

[0294] Clause 19F. A device described in any one of Clauses 17F through 18F, wherein the minimum radius value is zero.

[0295] Clause 20F. A device described in any one of Clauses 17F through 19F, wherein the minimum radius value is greater than zero.

[0296] Clause 21F. A device according to any one of Clauses 17F to 20F, wherein one or more processors are configured to obtain a residual radius value representing the difference between the radius value of the predicted position of the current predicted tree node and the radius value of the position of the current predicted tree node, in order to determine the position of the current node based on the predicted position.

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

[0298] Clause 23F. The device described in any one of Clauses 17F to 22F, further configured to determine the amount of laser used to capture light detection and ranging (LIDAR) data representing a point cloud, and, in response to the determination that the amount of laser is one, to infer that the laser index for all nodes in the point cloud is the same value.

[0299] Clause 24F. A device according to any one of Clauses 17F to 23F, wherein one or more processors are further configured to decode a syntax element having a value indicating the selected prediction mode.

[0300] Clause 25F. 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 the circuit, the one or more processors being configured to select a prediction mode for performing predictive geometry coding of the current predictive tree node's position in the point cloud from a plurality of predetermined prediction modes, the plurality of prediction modes comprising at least a zero prediction mode and a delta prediction mode, and when the selected mode is a zero prediction mode, to determine the radius, azimuth, and laser index of the parent node of the current predictive tree node, to infer the azimuth and laser index of the predicted position of the current predictive tree node as the azimuth and laser index of the parent node, to infer that the radius of the predicted position is the minimum radius value, which is different from the radius of the parent node, and to determine the position of the current predictive tree node based on the predicted position of the current predictive tree node.

[0301] Clause 26F. The device according to Clause 25F, wherein one or more processors are further configured to infer the radius, azimuth, and laser index of the predicted position of the current prediction tree node as the radius, azimuth, and laser index of the parent node in response to selecting a delta prediction mode.

[0302] Clause 27F. A device described in any one of Clauses 25F to 26F, wherein the minimum radius value is zero.

[0303] Clause 28F. A device described in any one of Clauses 25F to 27F, wherein the minimum radius value is greater than zero.

[0304] Clause 29F. A device according to any one of Clauses 25F to 28F, wherein one or more processors are configured to obtain a residual radius value representing the difference between the radius value of the predicted position of the current predicted tree node and the radius value of the position of the current predicted tree node, in order to determine the position of the current node based on the predicted position.

[0305] Clause 30F. The device according to Clause 29F, wherein one or more processors are configured to predict that the sign of the residual radius value is positive in response to selecting a zero prediction mode in order to obtain a residual radius value.

[0306] Clause 31F. The device according to any one of Clauses 25F to 30F, further configured to determine the amount of laser used to capture light detection and ranging (LIDAR) data representing a point cloud, and, in response to the determination that the amount of laser is one, to infer that the laser index for all nodes in the point cloud is the same value.

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

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

[0309] Clause 34F. A computer-readable storage medium for storing instructions, the instructions, when executed, cause one or more processors of a point cloud coding device to select a prediction mode from a plurality of predetermined prediction modes for performing predictive geometry coding of the current location of a predictive tree node of a point cloud, wherein the plurality of prediction modes include at least a zero prediction mode and a delta prediction mode; if the selected prediction mode is a zero prediction mode, to determine the radius, azimuth, and laser index of the parent node of the current predictive tree node; to infer the azimuth and laser index of the predicted position of the current predictive tree node as the azimuth and laser index of the parent node; to infer that the radius of the predicted position is the minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and to determine the location of the current predictive tree node based on the predicted position of the current predictive tree node.

[0310] Clause 1Z. A device for processing point clouds, comprising one or more means for performing the method described in any one of Clauses 1A to 1F.

[0311] Clause 2Z. The device according to Clause 1Z, wherein one or more means include one or more processors implemented in the circuit.

[0312] Clause 3Z. A device as described in Clause 1Z or 2Z, further including memory for storing data representing a point cloud.

[0313] Clause 4Z. A device is a device described in any one of Clauses 1Z through 3Z, including a decoder.

[0314] Clause 5Z. A device is a device described in any one of Clauses 1Z through 4Z, including an encoder.

[0315] Clause 6Z. A device as described in any one of Clauses 1Z to 5Z, further comprising a device for generating a point cloud.

[0316] Clause 7Z. A device according to any one of Clauses 1Z to 6Z, further comprising a display for presenting images based on a point cloud.

[0317] Clause 8Z. A computer-readable storage medium storing instructions, wherein, when executed, the instructions cause one or more processors to perform the method described in any one of Clauses 1A to 1F.

[0318] The examples in various aspects of this disclosure may be used individually or in any combination.

[0319] In some examples, it should be noted that some of the actions or events among the techniques described herein may be performed in different sequences, added, combined, or completely excluded (for example, not all actions or events described may be necessary for the practice of the technique). Furthermore, in some examples, the actions or events may be performed not sequentially, but in parallel, for example, through multithreading, interrupt handling, or across multiple processors.

[0320] In one or more examples, the described functions may be implemented as hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or codes on a computer-readable medium or transmitted via a computer-readable medium and executed by a hardware-based processing unit. The computer-readable medium may include computer-readable storage media corresponding to tangible media such as data storage media, or communication media including any medium that facilitates the transfer of computer programs from one location to another, for example, according to a communication protocol. Thus, the computer-readable medium may generally correspond to (1) non-temporary tangible computer-readable storage media, or (2) communication media such as signals or carrier waves. The data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementing the techniques described in this disclosure. A computer program product may include computer-readable media.

[0321] As an example, and not an limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is appropriately called computer-readable media. For example, if instructions are transmitted from a website, server or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of media. However, it should be understood that computer-readable storage media and data storage media do not include connections, carriers, signals, or other temporary media, but instead refer to non-temporary tangible storage media. The terms "disk" and "disc" as used herein include Compact Disc (CD), LaserDisc (registered trademark) (disc), Optical Disc (disc), Digital Multipurpose Disc (disc) (DVD), Floppy Disk (disk), and Blu-ray Disc (disc), where a Disk typically reproduces data magnetically, and a Disc (disc) reproduces data optically using a laser. Any combination of the above should also be included within the scope of computer-readable media.

[0322] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, the terms “processor” and “processing circuit configuration” as used herein may refer to any of the above-described configurations or any other configuration suitable for implementing the techniques described herein. In addition, in some embodiments, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a composite codec. Furthermore, the techniques may be fully implemented in one or more circuits or logic elements.

[0323] The techniques of this disclosure may be implemented in a wide variety of devices or apparatus, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chipsets). While various components, modules, or units have been described in this disclosure to highlight the functional aspects of devices configured to implement the disclosed techniques, they do not necessarily require implementation by different hardware units. Rather, as described above, the various units may be combined in a codec hardware unit, or provided by a set of interoperable hardware units, including one or more processors as described above, along with appropriate software and / or firmware.

[0324] We have described various examples. These and other examples fall within the scope of the following claims. [Explanation of Symbols]

[0325] 100 coding and decoding systems 102 Source Device 104 Data Sources 106 memory 108 Output Interfaces 110 Computer-readable media 112 Storage Devices 114 File Server 116 Destination device 118 Data Consumers 120 memory 122 Input Interfaces 200 Geometry Point Cloud Compression (G-PCC) Encoders 201 examples 202 Coordinate Transformation Unit 203 examples 204 Color Conversion Unit 206 Voxelization Unit 208 Attribute Transfer Unit 210 8-tree analysis unit 212 Surface Approximation Analysis Unit 214 Arithmetic coding units 216 Geometry Reconstruction Unit (GRU) 218 RAHT Unit 220 LOD generation unit 222 Lifting Unit 224 coefficient quantization units 226 Arithmetic coding units 300 G-PCC Decoder 302 Geometry Arithmetic Decoding Unit 304 Attribute Arithmetic Decoding Unit 306 8-tree composite unit 308 Inverse Quantization Unit 310 Surface Approximation Synthesis Unit 312 Geometry Reconstruction Unit 314 RAHT Unit 316 LoD generation unit 318 Reverse Lifting Unit 320 Inverse Coordinate Transformation Unit 322 Reverse Color Conversion Unit 600 Distance Measurement System 602 Lighting fixtures 604 Sensor 606 light 608 objects 610 Reflected light 611 Lens 612 images 614 signal 616 Point cloud generator 700 vehicles 702 Distance Measurement System 704 Laser beam 706 Pedestrians 708 bitstream 710 vehicles 712 Server System 800 users 802 First location 804 Extended Reality (XR) Headset 806 objects 808 bitstream 810 XR Headset 812 users 814 Second location 900 mobile devices 902 Object 904 bitstream 906 Remote Device 1180 Syntax Elements 1200 Binaryizer 1220 Context Modeler 1240 Standard coding engine 1260 Bypass Coding Engine 2180 bitstream 2200 Context Modeler 2220 Bypass Decoding Engine 2240 Standard CON Engine 2300 Reverse Binaryizer

Claims

1. A method for encoding a point cloud, A step to obtain the value of the quadratic residual in order to geometrically code the position of the current predictive tree node of the point cloud, The aforementioned position is associated with Cartesian coordinates from which the corresponding coordinates in the angular domain are obtained. The second-order residual is obtained in Cartesian coordinates and is the residual between the Cartesian coordinates of the position and the corresponding Cartesian coordinates reconstructed from one or more of the coordinates in the angular domain, step, The steps of encoding the value of the second-order residual and The step of encoding the value includes, The steps include: encoding a prefix bin of a syntax element having a value that specifies the absolute value minus 2 of the aforementioned second-order residual using a first set of context-adaptive binary arithmetic coding (CABAC) contexts; The steps include: encoding the suffix bin of the syntax element using a second set of CABAC contexts that is different from the first set of contexts; Methods that include...

2. The aforementioned syntax element includes the ptn_sec_residual_abs_minus2 syntax element and / or The method according to claim 1, wherein the angular domain is a radius, azimuth angle, and laser index (r,φ,i) domain.

3. The absolute value of the aforementioned secondary residual is greater than 17. The method according to claim 1, wherein the step of encoding the value of the second-order residual does not include the step of encoding a syntax element having a value that specifies the absolute value of the value of the second-order residual minus 17.

4. The first set of CABAC contexts includes CABAC contexts having context indices between 0 and a-1, The aforementioned second set of CABAC contexts includes CABAC contexts having context indices between a and a+b-1, The method according to claim 1, wherein a is 5 and b is 4.

5. The syntax element includes a first syntax element, and the step of encoding the value of the quadratic residual is: The steps include encoding a second syntax element having a value that specifies whether the value of the second-order residual is equal to zero, If the aforementioned value of the secondary residual is not equal to zero, A step of encoding a third syntax element having a value that specifies the sign of the value of the second-order residual, and A step of encoding a fourth syntax element having a value that specifies whether the value of the second-order residual is greater than 1, If the value of the second-order residual is greater than 1, the first syntax element is encoded. The method according to claim 1, further comprising:

6. The current prediction tree node is a first prediction tree node, the syntax element includes a first syntax element, and the method is The method according to claim 1, further comprising the step of encoding a sixth syntax element having a value representing the number of direct child nodes of a second predictive tree node present in the geometry predictive tree representing the point cloud, using variable-length coding.

7. The method according to claim 6, wherein the sixth syntax element representing the number of direct child nodes of the second prediction tree node present in the geometry prediction tree includes the ptn_child_cnt syntax element.

8. The method according to claim 6, wherein the step of encoding the sixth syntax element using variable-length coding includes the step of using a shorter codeword when the number of direct child nodes is 1 than when the number of direct child nodes is 0.

9. A method for decoding a point cloud, The steps include obtaining the value of the quadratic residual in order to geometrically code the position of the current predicted tree node in the point cloud, The steps of decoding the value of the second-order residual and The step of encoding the value includes, The steps include decoding the prefix bin of a syntax element having a value that specifies the absolute value minus 2 of the aforementioned second-order residual using a first set of context-adaptive binary arithmetic coding (CABAC) contexts, The steps include: decoding the suffix bin of the syntax element using a second set of CABAC contexts that is different from the first set of contexts; A method comprising, wherein the second-order residual is obtained in Cartesian coordinates and is the residual between the Cartesian coordinates of the position and the corresponding Cartesian coordinates reconstructed from one or more coordinates of the position in the angular domain.

10. The aforementioned syntax element includes the ptn_sec_residual_abs_minus2 syntax element and / or The method according to claim 9, wherein the angular domain is a radius, azimuth angle, and laser index (r,φ,i) domain.

11. A device for encoding a point cloud, wherein the device is A memory configured to store at least a portion of the point cloud, One or more processors implemented in the circuit and The one or more processors include, To geometrically code the position of the current predicted tree node in the point cloud, the value of the quadratic residual is obtained, The aforementioned position is associated with Cartesian coordinates from which the corresponding coordinates in the angular domain are obtained. The aforementioned quadratic residual is obtained in Cartesian coordinates and is the residual between the Cartesian coordinates of the position and the corresponding Cartesian coordinates reconstructed from one or more of the coordinates in the angular domain, and is obtained as follows: Encoding the aforementioned value of the second-order residual The one or more processors are configured to perform the following, and in order to encode the value, The prefix bin of a syntax element having a value that specifies the absolute value minus 2 of the aforementioned second-order residual is encoded using a first set of context-adaptive binary arithmetic coding (CABAC) contexts, The suffix bin of the syntax element is encoded using a second set of CABAC contexts that is different from the first set of contexts. A device configured to perform the following actions.

12. The device according to claim 11, wherein the one or more processors are configured to perform the method described in any one of claims 1 to 8.

13. A device for decoding a point cloud, wherein the device is A memory configured to store at least a portion of the point cloud, One or more processors implemented in the circuit and The one or more processors include, To geometrically encode the current position of the predicted tree node in the aforementioned point cloud, the value of the quadratic residual is obtained, Decoding the aforementioned value of the second-order residual The one or more processors are configured to perform the following, and in order to decode the value, Decode the prefix bin of a syntax element having a value that specifies the absolute value minus 2 of the aforementioned second-order residual using a first set of context-adaptive binary arithmetic coding (CABAC) contexts, The suffix bin of the aforementioned syntax element is decoded using a second set of CABAC contexts that is different from the first set of contexts. A device configured to perform the following, wherein the second-order residual is obtained in Cartesian coordinates and is the residual between the Cartesian coordinates of the position and the corresponding Cartesian coordinates reconstructed from one or more coordinates of the position in the angular domain.

14. The device according to claim 13, wherein one or more processors are configured to perform the method described in claim 9 or 10.

15. A computer-readable storage medium storing instructions, wherein, when executed, the instructions cause one or more processors to perform the method according to any one of claims 1 to 10.

Citation Information

Patent Citations

  • System and method for ordered representation and feature extraction for point clouds obtained by detection and ranging sensor

    US20200302237A1

  • Method and apparatus for point cloud compression

    US20200394822A1

  • Angular mode syntax for tree-based point cloud coding

    US20220351423A1

  • Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device

    WO2020075862A1

  • Angular priors for improved prediction in tree-based point cloud coding

    WO2021084295A1