Predictive Geometry Coding in G-PCC
By optimizing the G-PCC coder to use fewer contexts and contexts-coded bins, and modifying the zero-prediction mode, the computational complexity and inefficiencies in predictive geometry coding are addressed, resulting in improved coding efficiency for point clouds.
Patent Information
- Application Number
- JP2023520501
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-09-27
- Filing Date
- 2021-09-28
- Publication Date
- 2025-10-07
- Estimated Expiration
- 2041-09-28
AI Technical Summary
Existing Geometry Point Cloud Compression (G-PCC) techniques require many context-coded bins for signaling first and second-order residuals, leading to high computational complexity and inefficiencies, particularly in predictive geometry coding due to lossy rounding errors and inefficient zero prediction modes.
Implement a G-PCC coder that signals the secondary residual using a reduced number of contexts and context-coded bins by combining prefix and suffix contexts, and introduce a modified zero-prediction mode where only azimuth angle and laser index are inherited from the parent node, while assuming a minimum radius value.
Reduces computational complexity and improves coding efficiency by minimizing the number of contexts and context-coded bins used for signaling secondary residuals, enhancing the overall performance of point cloud coding.
Smart Images

Figure 0007750944000051 
Figure 0007750944000052 
Figure 0007750944000053
Abstract
Description
[Technical Field]
[0001] This application claims priority to U.S. Application No. 17 / 449,013, filed September 27, 2021, and U.S. Provisional Application No. 63 / 088,831, filed October 7, 2020, and U.S. Provisional Application No. 63 / 114,317, filed November 16, 2020, the entire contents of which are incorporated herein by reference. U.S. Application No. 17 / 449,013, filed September 27, 2021, claims the benefit of U.S. Provisional Application No. 63 / 088,831, filed October 7, 2020, and U.S. Provisional Application No. 63 / 114,317, filed November 16, 2020.
[0002] The present disclosure relates to encoding and decoding point clouds. [Background technology]
[0003] A point cloud is a collection of points in three-dimensional space. The points may correspond to points on an object in three-dimensional space. Thus, a point cloud may be used to represent the physical content of a three-dimensional space. Point clouds may have utility in a wide variety of situations. For example, a point cloud may be used in the context of autonomous vehicles to represent the location of objects on a road. In another example, a point cloud may be used in the context of representing the physical content of an environment for purposes of positioning virtual objects in an augmented reality (AR) or mixed reality (MR) application. Point cloud compression is the process for encoding and decoding a point cloud. Encoding a point cloud can reduce the amount of data required to store and transmit the point cloud. Summary of the Invention [Means for solving the problem]
[0004] In general, this disclosure describes techniques for coding nodes of a point cloud, for example, for the currently developing Geometry Point Cloud Compression (G-PCC) standard. However, the example techniques are not limited to the G-PCC standard. In some examples of G-PCC, coordinates of the location of a node (also called a point) of a point cloud may be converted to the (r, φ, i) domain, where the node's location is represented by three parameters: radius r, azimuth angle φ, and laser index i. When using an angle mode for predictive geometry coding in G-PCC, the G-PCC coder may perform prediction in the (r, φ, i) domain. For example, the G-PCC coder may determine a predicted location of the node and add the predicted location of the node to primary residual data to determine the reconstructed location of the node. Accordingly, in at least some examples, the primary residual may be coded in the (r, φ, i) domain. Due to errors in rounding (e.g., for coordinate transformations), coding in r, φ, i may be lossy. In some examples, this loss can be reduced or eliminated by coding a second set of possible residuals in the Cartesian domain. However, some implementations of G-PCC may require many context-coded bins to signal the first and second order residuals, which is computationally intensive and undesirable.
[0005] According to one or more aspects of the present disclosure, a G-PCC coder may signal the secondary residual using a reduced number of contexts and / or context-coded bins. For example, rather than signaling the absolute value of the secondary residual value using two separate syntax elements (e.g., ptn_sec_residual_abs_minus2 coded with contexts 0...15 and ptn_sec_residual_abs_minus17 with 0 as prefix context and bypass coding the suffix), the G-PCC coder may signal the absolute value of the secondary residual value using a single syntax element. For example, the G-PCC coder may signal a single syntax element specifying the absolute value of the secondary residual value with a first set of prefix contexts (e.g., 0...4) and a second set of suffix contexts (e.g., 5...8). In this manner, the techniques of this disclosure may reduce the number of contexts and / or context-coded bins used to signal the secondary residual. As such, the techniques of this disclosure may reduce the computational complexity of point cloud coding.
[0006] As described above, when using the angle mode for predictive geometry coding in G-PCC, the G-PCC coder may determine a predicted position of a node and add the predicted position of the node to residual data to determine a reconstructed position of the node. G-PCC may provide several techniques for determining the predicted position of a node. As an example, G-PCC provides a zero prediction mode in which the r,φ,i of the predicted position may be assumed to be all zero. As another example, G-PCC provides a delta prediction mode in which the r,φ,i of the predicted position is inherited (e.g., copied) from the r,φ,i of the reconstructed node (e.g., the parent node of the current node). However, the zero prediction mode may be very inefficient, and as a result, the zero prediction mode is rarely used.
[0007] According to one or more techniques of this disclosure, a G-PCC coder may implement a modified zero-prediction mode in which a subset of components of a prediction position of a current node is inherited from a parent node. For example, rather than inheriting all three of the prediction positions r, φ, and i from the parent node, the G-PCC coder may inherit the prediction position's φ and i from the parent node and assume that r is a minimum value (e.g., 0 or a separately signaled minimum value). By inheriting the prediction position's φ and i but not r, the G-PCC coder may avoid the need to signal a large value of the residual data for r, where the values of φ and i are instead similar (and therefore have small values for the residual data). In this manner, the techniques of this disclosure may improve the coding efficiency of point cloud coding.
[0008] In one example, a 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.
[0009] In another example, a method for decoding a point cloud includes obtaining a value of a quadratic residual for geometry coding a current prediction tree node of the point cloud, and decoding the value of the quadratic residual, wherein encoding the value includes decoding prefix bins of syntax elements having values specifying the absolute value of the value of the quadratic residual minus 2 using a first set of CABAC contexts, and decoding suffix bins of the syntax elements 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 circuitry, wherein the one or more processors are configured to obtain values of a quadratic residual for geometry coding a current prediction tree node of the point cloud and encode the values of the quadratic residual, wherein to encode the values, the one or more processors are configured to encode 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 CABAC contexts and encode suffix bins 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 circuitry, wherein the one or more processors are configured to obtain values of a quadratic residual for geometry coding a current prediction tree node of the point cloud and decode the values of the quadratic residual, wherein to decode the values, the one or more processors are configured to decode prefix bins of syntax elements having values specifying the absolute value of the value of the quadratic residual minus 2 using a first set of CABAC contexts and decode suffix bins of the syntax elements 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 that, when executed, cause one or more processors of a point cloud encoder to obtain a value of a quadratic residual for geometry coding a current prediction tree node of the point cloud and encode the value of the quadratic residual, wherein the instructions causing the one or more processors to encode the value include instructions causing the one or more processors to encode prefix bins 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 suffix bins 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 that, when executed, cause one or more processors of a point cloud decoder to obtain a value of a quadratic residual for geometry coding a current prediction tree node of the point cloud and decode the value of the quadratic residual, wherein the instructions causing the one or more processors to decode the value include instructions causing the one or more processors to decode prefix bins of syntax elements having values specifying the absolute value of the quadratic residual minus 2 using a first set of CABAC contexts and to decode suffix bins of the syntax elements 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 the steps of: selecting a prediction mode for performing predictive geometry coding of a position of a current predicted tree node of 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; determining a radius, an azimuth angle, and a laser index of a parent node of the current predicted tree node in response to selecting the zero prediction mode; estimating the azimuth angle and laser index of a predicted position of the current predicted tree node as the azimuth angle and laser index of the parent node; estimating that the radius of the predicted position is a minimum radius value, the minimum radius value being different from the radius of the parent node; and determining a position of the current predicted tree node based on the predicted position of the current predicted tree node.
[0015] In another example, a method for encoding a point cloud includes the steps of: selecting a prediction mode for performing predictive geometry coding of a position of a current predicted tree node of 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; if the selected mode is the zero prediction mode, determining a radius, an azimuth angle and a laser index of a parent node of the current predicted tree node; estimating the azimuth angle and laser index of a predicted position of the current predicted tree node as the azimuth angle and laser index of the parent node; estimating 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 determining a position of the current predicted tree node based on the predicted position of the current predicted 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 a circuit, wherein the one or more processors are configured to: select a prediction mode for performing predictive geometry coding of a position of a current predicted tree node of 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; in response to selecting the zero prediction mode, determine a radius, an azimuth angle, and a laser index of a parent node of the current predicted tree node; estimate the azimuth angle and laser index of a predicted position of the current predicted tree node as the azimuth angle and laser index of the parent node; estimate the radius of the predicted position to be a minimum radius value, where the minimum radius value is different from the radius of the parent node; and determine a position of the current predicted tree node based on the predicted position of the current predicted 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 a circuit, wherein the one or more processors are configured to: select a prediction mode for performing predictive geometry coding of a position of a current predicted tree node of 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; if the selected mode is the zero prediction mode, determine a radius, an azimuth angle, and a laser index of a parent node of the current predicted tree node; estimate the azimuth angle and laser index of a predicted position of the current predicted tree node as the azimuth angle and laser index of the parent node; estimate the radius of the predicted position to be a minimum radius value, where the minimum radius value is different from the radius of the parent node; and determine a position of the current predicted tree node based on the predicted position of the current predicted tree node.
[0018] In another example, a computer-readable storage medium stores instructions that, when executed, 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 a position of a current predicted tree node of a point cloud, the plurality of prediction modes including at least a zero prediction mode and a delta prediction mode; in response to selecting the zero prediction mode, determine a radius, an azimuth angle, and a laser index of a parent node of the current predicted tree node; estimate the azimuth angle and laser index of a predicted position of the current predicted tree node as the azimuth angle and laser index of the parent node; estimate the radius of the predicted position to be a minimum radius value, where the minimum radius value is different from the radius of the parent node; and determine a position of the current predicted tree node based on the predicted position of the current predicted tree node.
[0019] In another example, a computer-readable storage medium stores instructions that, when executed, cause one or more processors of a point cloud encoding device to: select a prediction mode for performing predictive geometry coding of a position of a current predicted tree node of a 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; if the selected prediction mode is the zero prediction mode, determine a radius, an azimuth angle, and a laser index of a parent node of the current predicted tree node; estimate the azimuth angle and laser index of a predicted position of the current predicted tree node as the azimuth angle and laser index of the parent node; estimate the radius of the predicted position to be a minimum radius value, where the minimum radius value is different from the radius of the parent node; and determine a position of the current predicted tree node based on the predicted position of the current predicted tree node.
[0020] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will become apparent from the description, drawings, and claims. [Brief explanation of the drawings]
[0021] [Figure 1] FIG. 1 is a block diagram illustrating an example encoding and decoding system that may implement techniques of this disclosure. [Figure 2] FIG. 1 is a block diagram illustrating an example geometry point cloud compression (G-PCC) encoder. [Figure 3] FIG. 2 is a block diagram illustrating an exemplary G-PCC decoder. [Figure 4] FIG. 1 is a conceptual diagram of a prediction tree for predictive geometry coding. [Figure 5A] A conceptual diagram of a rotating LIDAR acquisition model. [Figure 5B] A conceptual diagram of a rotating LIDAR acquisition model. [Figure 6] FIG. 1 is a conceptual diagram illustrating an example distance measurement system that may be used in conjunction with one or more techniques of the present disclosure. [Figure 7] FIG. 1 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of the present disclosure may be used. [Figure 8] FIG. 1 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of this disclosure may be used. [Figure 9] FIG. 1 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of the present disclosure may be used. [Figure 10A] FIG. 1 is a conceptual diagram illustrating the range update process in binary arithmetic coding. [Figure 10B] FIG. 1 is a conceptual diagram illustrating the range update process in binary arithmetic coding. [Figure 11] FIG. 1 is a conceptual diagram illustrating the output process in binary arithmetic coding. [Figure 12] FIG. 1 is a block diagram illustrating a context-adaptive binary arithmetic coder in a G-PCC encoder. [Figure 13] FIG. 1 is a block diagram illustrating a context-adaptive binary arithmetic coder in a G-PCC decoder. [Figure 14]FIG. 1 is a flow diagram illustrating an example technique for processing point clouds, in accordance with one or more techniques of this disclosure. [Figure 15] FIG. 1 is a flow diagram illustrating an example technique for processing point clouds, in accordance with one or more techniques of this disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0022] 1 is a block diagram illustrating an example encoding and decoding system 100 that may implement the techniques of this disclosure. The techniques of this disclosure are generally directed to coding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. In general, point cloud data includes any data for processing a point cloud. Coding may be effective to compress and / or decompress the point cloud data.
[0023] 1, the 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 particular, in the example of FIG. 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 the destination device 116 may comprise any of a wide range of devices, including a desktop computer, a notebook (i.e., laptop) computer, a tablet computer, a set-top box, a telephone handset such as a smartphone, a television, a camera, a display device, a digital media player, a video gaming console, a video streaming device, a land or sea vehicle, a spacecraft, an aircraft, a robot, a LIDAR device, a satellite, etc. In some cases, the source device 102 and the destination device 116 may be capable of wireless communication.
[0024] In the example of FIG. 1 , source device 102 includes a data source 104, memory 106, a G-PCC encoder 200, and an output interface 108. Destination device 116 includes an input interface 122, a G-PCC decoder 300, memory 120, and a data consumer 118. According to this disclosure, G-PCC encoder 200 of source device 102 and G-PCC decoder 300 of destination device 116 may be configured to apply techniques of this disclosure related to predictive geometry coding. Thus, source device 102 represents an example of an encoding device, and destination device 116 represents an example of a decoding device. In other examples, source device 102 and destination device 116 may include other components or arrangements. For example, source device 102 may receive data (e.g., point cloud data) from an internal or external source. Similarly, destination device 116 may interface with an external data consumer rather than including the data consumer within the same device.
[0025] System 100 as shown in FIG. 1 is merely an example. In general, other digital encoding and / or decoding devices may perform the techniques of this disclosure related to predictive geometry coding. Source device 102 and destination device 116 are merely examples of devices in which 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. Accordingly, 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 encoding and decoding components. Thus, system 100 may support unidirectional or bidirectional transmission between source device 102 and destination device 116, for example, streaming, playback, broadcast, telephony, navigation, and other applications.
[0026] Generally, the data source 104 represents a source of data (i.e., raw, unencoded point cloud data) and may provide a sequential series of “frames” of data to the G-PCC encoder 200, which encodes the data for the frames. The data source 104 of the source device 102 may include a point cloud capture device, such as any of a variety of cameras or sensors, e.g., a 3D scanner or light detection and ranging (LIDAR) device, one or more video cameras, an archive containing previously captured data, and / or a data feed interface for receiving data from a data content provider. Alternatively or additionally, the point cloud data may be computer-generated from scanners, cameras, sensors, or other data. For example, the data source 104 may generate computer-graphics-based data as source data, or may result in a combination of live data, archived data, and computer-generated data. In each case, the G-PCC encoder 200 encodes the captured, pre-captured, or computer-generated data. The G-PCC encoder 200 may reorder frames from the order in which they were received (sometimes referred to as "display order") into a coding order for coding. The G-PCC encoder 200 may generate one or more bitstreams including the encoded data. The source device 102 may then output the encoded data onto a computer-readable medium 110 via an output interface 108, for receipt and / or retrieval by, for example, an input interface 122 of a destination device 116.
[0027] The memory 106 of the source device 102 and the memory 120 of the destination device 116 may represent general-purpose memory. In some examples, the memory 106 and the memory 120 may store raw data, e.g., raw data from the data source 104 and raw decoded data from the G-PCC decoder 300. Additionally or alternatively, the memory 106 and the memory 120 may store software instructions executable by the G-PCC encoder 200 and the G-PCC decoder 300, respectively. While the memory 106 and the memory 120 are shown separate from the G-PCC encoder 200 and the G-PCC decoder 300 in this example, it should be understood that the G-PCC encoder 200 and the G-PCC decoder 300 may also include internal memory for functionally similar or equivalent purposes. Additionally, the memory 106 and the memory 120 may store encoded data, e.g., output from the G-PCC encoder 200 and input to the G-PCC decoder 300. In some examples, portions of memory 106 and memory 120 may be allocated as one or more buffers, e.g., for storing raw decoded and / or encoded data. For example, memory 106 and memory 120 may store data representing point clouds.
[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. In one example, the computer-readable medium 110 represents a communication medium that enables the source device 102 to transmit encoded data directly to the destination device 116 in real time, for example, via a radio frequency network or a computer-based network. The output interface 108 may modulate a transmission signal containing the encoded data, and the input interface 122 may demodulate a received transmission signal, in accordance with a communication standard such as a wireless communication protocol. The communication medium may comprise any wireless or wired communication medium, such as the radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful for facilitating communication from the source device 102 to the destination device 116.
[0029] In some examples, source device 102 may output the encoded data from output interface 108 to storage device 112. Similarly, destination device 116 may access the encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, a Blu-ray disc, a DVD, a 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 the encoded data to file server 114 or another intermediate storage device, which may store the encoded data generated by source device 102. Destination device 116 may access the stored data from file server 114 via streaming or download. File server 114 may be any type of server device capable of storing encoded data and transmitting the encoded data to destination device 116. File server 114 may represent a web server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network-attached storage (NAS) device. Destination device 116 may access the encoded data from file server 114 through any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of both suitable for accessing 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] Output interface 108 and input interface 122 may represent a wireless transmitter / receiver, a modem, a wired networking component (e.g., an Ethernet card), a wireless communication component operating according to any of the various IEEE 802.11 standards, or other physical components. In examples in which output interface 108 and input interface 122 comprise wireless components, output interface 108 and input interface 122 may be configured to transfer data, such as encoded data, according to a cellular communication standard, such as 4G, 4G-LTE (Long Term Evolution), LTE-Advanced, 5G, etc. In some examples in which output interface 108 comprises a wireless transmitter, output interface 108 and input interface 122 may be configured to transfer data, such as encoded data, according to other wireless standards, such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee™), the Bluetooth™ standard, etc. In some examples, source device 102 and / or destination device 116 may include respective system-on-chip (SoC) devices. For example, the source device 102 may include an SoC device for implementing functionality attributed to the G-PCC encoder 200 and / or the output interface 108, and the destination device 116 may include an SoC device for implementing functionality attributed to the G-PCC decoder 300 and / or the input interface 122.
[0032] The techniques of this disclosure may be applied to encoding and decoding in support of any of a variety of applications, such as communication between autonomous vehicles, communication between processing devices such as scanners, cameras, sensors and local or remote servers, geographic mapping, or other applications.
[0033] The input interface 122 of the destination device 116 receives the encoded bitstream from the computer-readable medium 110 (e.g., a communication medium, a storage device 112, a file server 114, etc.). The encoded bitstream may include signaling information defined by the G-PCC encoder 200 that is also used by the G-PCC decoder 300, such as syntax elements having values that describe the characteristics and / or processing of a coded unit (e.g., a slice, a picture, a group of pictures, a sequence, etc.). The data consumer 118 uses the decoded data. For example, the data consumer 118 may use the decoded data to determine the location of a physical object. In some examples, the data consumer 118 may include a display for presenting imagery based on the point cloud.
[0034] The G-PCC encoder 200 and the G-PCC decoder 300 may each be implemented as any of a variety of suitable encoder and / or decoder circuit configurations, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the techniques are implemented partially in software, a device may store instructions for the software on a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to implement the techniques of this disclosure. The G-PCC encoder 200 and the G-PCC decoder 300 may each be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (codec) within the respective device. A device including the G-PCC encoder 200 and / or the G-PCC decoder 300 may comprise one or more integrated circuits, microprocessors, and / or other types of devices.
[0035] The G-PCC encoder 200 and the G-PCC decoder 300 may operate according to a coding standard such as the Video Point Cloud Compression (V-PCC) standard or the Geometry Point Cloud Compression (G-PCC) standard. This disclosure may generally refer to coding (e.g., encoding and decoding) of pictures to include the processes of encoding or decoding data. An encoded bitstream generally includes a series of values for syntax elements that represent coding decisions (e.g., coding modes).
[0036] This disclosure generally refers to “signaling” certain information, such as syntax elements. The term “signaling” may generally refer to communication of values for syntax elements and / or other data used to decode encoded data. That is, G-PCC encoder 200 may signal values for syntax elements in a bitstream. Generally, signaling refers to generating values in a bitstream. As mentioned above, source device 102 may transport the bitstream to destination device 116 substantially in real time or not in real time, such as may occur when storing syntax elements to storage device 112 for later retrieval by destination device 116.
[0037] ISO / IEC MPEG (JTC1 / SC29 / WG11) is investigating the potential need for, and aims to develop, a standard for, point cloud coding techniques with compression capabilities significantly beyond those of current methods. The group is working together on this research in a collaborative effort known as the 3-Dimensional Graphics Team (3DG) to evaluate compression design proposals by experts in the field.
[0038] Point cloud compression activities are categorized into two different approaches. The first approach is "video point cloud compression" (V-PCC), which segments a 3D object and projects the segments into multiple 2D planes (represented as "patches" in a 2D frame), which are further coded by a legacy 2D video codec such as the High Efficiency Video Coding (HEVC) (ITU-T H.265) codec. The second approach is "geometry-based point cloud compression" (G-PCC), which directly compresses the 3D geometry, i.e., the locations of a set of points in 3D space and the associated attribute values (for each point associated with the 3D geometry). G-PCC addresses the compression of point clouds in both category 1 (static point clouds) and category 3 (dynamically acquired point clouds). The latest draft of the G-PCC standard is available at G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19328, Brussels, Belgium, January 2020, and the codec description is available at G-PCC Codec Description v8, ISO / IEC JTC1 / SC29 / WG11 w19525, Brussels, Belgium, January 2020.
[0039] A point cloud includes a set of points in 3D space and may have attributes associated with the points. The 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 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 the 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 precision, and therefore, the positions of one or more points may be quantized based on the precision. At the smallest level, the bounding box is divided into voxels, which are the smallest units of space, represented by a unit cube. A voxel in a bounding box may be associated with zero, one, or multiple 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 other considerations (e.g., a particular region may be coded as a tile). The 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 modules shown are logical and do not necessarily correspond one-to-one to the code implemented in the reference implementation of the G-PCC codec, i.e., the TMC13 test model software studied by ISO / IEC MPEG (JTC1 / SC29 / WG11).
[0042] In both the G-PCC encoder 200 and the G-PCC decoder 300, the point cloud location is coded first. The attribute coding depends on the decoded geometry. In Figures 2 and 3, the gray shaded module is the commonly used option for Category 1 data. The diagonal crosshatched module is the commonly used option for Category 3 data. All other modules are common between Categories 1 and 3.
[0043] For Category 3 data, the compressed geometry is typically represented as an octree from the root to the leaf level of individual voxels. For Category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree from the root to the leaf level of blocks larger than a voxel) plus a model that approximates the surface within each leaf of the pruned octree. In this way, both Category 1 and 3 data share the octree coding mechanism, and Category 1 data may further approximate the voxels within each leaf with a surface model. The surface model used is a triangulation involving 1 to 10 triangles per block, resulting in a triangle soup. Category 1 geometry codecs are therefore known as Trisoup geometry codecs, and Category 3 geometry codecs are known as Octree geometry codecs.
[0044] At each node in the octree, occupancy is signaled (when not inferred) for one or more of its child nodes (up to eight nodes). Multiple neighborhoods are specified, including (a) nodes that share a face with the current octree node, (b) nodes that share a face, edge, or vertex with the current octree node, etc. Within each neighborhood, the occupancy of the node and / or its children can be used to predict the occupancy 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 positions of the points are directly coded. A flag may be signaled to indicate that direct mode is 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 geometry points are coded. When there are multiple attribute points corresponding to one reconstructed / decoded geometry point, an attribute value representing the reconstruction point may be derived.
[0046] G-PCC has three attribute coding methods: region-adaptive hierarchical transform (RAHT) coding, interpolation-based hierarchical nearest neighbor prediction (prediction transform), and interpolation-based hierarchical nearest neighbor prediction with update / lifting steps (lifting transform). RAHT and lifting are typically used for category 1 data, and prediction is typically used for category 3 data. However, either method can be used for any data; just like with geometry codecs in G-PCC, the attribute coding method used to code the point cloud is specified in the bitstream.
[0047] The coding of attributes may be performed at a level of detail (LOD), with each level of detail being used to obtain a more precise representation of the point cloud attributes, which may be specified based on a distance metric from neighboring nodes or based on a sampling distance.
[0048] In the G-PCC encoder 200, the residual obtained as the output of the attribute-directed coding method is quantized. The quantized residual may be coded using context-adaptive arithmetic coding.
[0049] In the example of FIG. 2, the G-PCC encoder 200 may include a coordinate transformation unit 202, a color transformation unit 204, a voxelization unit 206, an attribute transfer unit 208, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic coding unit 214, a geometry reconstruction unit (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] 2, the G-PCC encoder 200 may receive a set of locations and a set of attributes. The locations may include coordinates of points in the point cloud. The attributes may include information about the points in the point cloud, such as a color associated with the points in the point cloud.
[0051] The coordinate transformation unit 202 may apply a transform to the coordinates of the points to convert the coordinates from an initial domain to a transformation domain. In this disclosure, the transformed coordinates may be referred to as transformed coordinates. The color transformation unit 204 may apply a transform to convert color information of the attributes to a different domain. For example, the color transformation unit 204 may convert color information from an RGB color space to a YCbCr color space.
[0052] Further, in the example of FIG. 2, the voxelization unit 206 may voxelize the transformed coordinates. Voxelizing the transformed coordinates may include quantization and removing some points of the point cloud. In other words, multiple points of the point cloud may be contained within a single "voxel," which may then be treated as one point in some respects. Further, the octree analysis unit 210 may generate an octree based on the voxelized transformed coordinates. Further, in the example of FIG. 2, the surface approximation analysis unit 212 may analyze the points to determine a surface representation of the set of points. The arithmetic coding unit 214 may entropy code syntax elements representing the octree and / or surface information determined by the surface approximation analysis unit 212. The G-PCC encoder 200 may output these syntax elements in a geometry bitstream.
[0053] The geometry reconstruction unit 216 may reconstruct transformation coordinates of points in the point cloud based on the octree, the data indicative of the surface determined by the surface approximation analysis unit 212, and / or other information. The number of transformation coordinates reconstructed by the geometry reconstruction unit 216 may differ from the original number of points in the point cloud due to voxelization and surface approximation. In this disclosure, the resulting points may be referred to as reconstructed points. The attribute transfer unit 208 may transfer attributes of the original points of the point cloud to the reconstructed points of the point cloud.
[0054] Furthermore, the RAHT unit 218 may apply RAHT coding to the attributes of the reconstruction points. Alternatively or additionally, the LOD generation unit 220 and the lifting unit 222 may apply LOD processing and lifting, respectively, to the attributes of the reconstruction points. The RAHT unit 218 and the lifting unit 222 may generate coefficients based on the attributes. The coefficient quantization unit 224 may quantize the coefficients generated by the RAHT unit 218 or the lifting unit 222. The arithmetic coding unit 226 may apply arithmetic coding to syntax elements representing the quantized coefficients. The G-PCC encoder 200 may output these syntax elements in an attribute bitstream.
[0055] In the example of FIG. 3, the G-PCC decoder 300 may include a geometry arithmetic decoding unit 302, an attribute arithmetic decoding unit 304, an octree synthesis unit 306, an inverse quantization unit 308, a surface approximation synthesis unit 310, a geometry reconstruction unit 312, a RAHT unit 314, an LoD generation unit 316, an inverse lifting unit 318, an inverse coordinate transformation unit 320, and an inverse color transformation unit 322.
[0056] The G-PCC decoder 300 may obtain a geometry bitstream and an attribute bitstream. A geometry arithmetic decoding unit 302 of the decoder 300 may apply arithmetic decoding (e.g., context-adaptive binary arithmetic coding (CABAC) or other types of arithmetic decoding) to syntax elements in the geometry bitstream. Similarly, an attribute arithmetic decoding unit 304 may apply arithmetic decoding to syntax elements in the attribute bitstream.
[0057] The octree synthesis unit 306 may synthesize an octree based on syntax elements parsed from the geometry bitstream. In cases where surface approximation is used in the geometry bitstream, the surface approximation synthesis unit 310 may determine a surface model based on the syntax elements parsed from the geometry bitstream and based on the octree.
[0058] Additionally, the geometry reconstruction unit 312 may perform a reconstruction to determine the coordinates of the points in the point cloud. The inverse coordinate transformation unit 320 may apply an inverse transform to the reconstructed coordinates to convert the reconstructed coordinates (positions) of the points in the point cloud from the transformed domain back to the original domain.
[0059] 3, the inverse quantization unit 308 may inverse quantize the attribute values, which may be based on syntax elements obtained from the attribute bitstream (e.g., including 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 color values for the points of the point cloud based on the dequantized attribute values. Alternatively, the LOD generation unit 316 and the inverse lifting unit 318 may use level-of-detail-based techniques to determine color values for the points of the point cloud.
[0061] 3, the inverse color transform unit 322 may apply an inverse color transform to the color values. The inverse color transform may be the inverse of the color transform applied by the color transform unit 204 of the encoder 200. For example, the color transform unit 204 may transform the color information from the RGB color space to the YCbCr color space. Thus, the inverse color transform unit 322 may transform the color information from the YCbCr color space to the RGB color space.
[0062] The various units shown in FIGS. 2 and 3 are presented to aid in understanding the operations performed by the encoder 200 and the decoder 300. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit refers to a circuit that provides specific functionality and is preset for the operations that may be performed. A programmable circuit refers to a circuit that can be programmed to perform various tasks and provides flexible functionality in the operations that may be performed. For example, a programmable circuit may execute software or firmware that causes the programmable circuit to operate in a manner defined by the software or firmware instructions. A fixed-function circuit may execute software instructions (e.g., to receive parameters or output parameters), but the types of operations that the fixed-function circuit performs are generally invariant. In some examples, one or more of the units may be different circuit blocks (fixed function or programmable), and in some examples, one or more units may be integrated circuits.
[0063] Predictive geometry coding is introduced as an alternative to octree geometry coding, where nodes are arranged in a tree structure (defining the prediction structure) and various prediction strategies are used to predict the coordinates of each node in the tree relative to its predictor. Figure 4 shows an example of a prediction tree, a directed graph, conceptually with arrows pointing in the prediction direction. Horizontally shaded nodes are root vertices and have no predictors; grid-shaded nodes have two children; diagonal-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), grandfather (p1), and great-grandfather (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 predictive tree, and the algorithm used may be determined based on the application / use case, and several strategies may be used. For each node, the encoder may depth-first encode the residual coordinate values in the bitstream starting from the root node. Predictive geometry coding may be particularly useful for category 3 (e.g., LIDAR-acquired) point cloud data, e.g., for low-latency applications.
[0066] An angular mode may be used in predictive geometry coding, where the characteristics of the LIDAR sensor can be exploited in coding the prediction tree more efficiently. Position coordinates are converted to (r,φ,i) (radius, azimuth, and laser index), and prediction is performed in this domain (residuals are coded in the r,φ,i domain). Due to rounding errors, coding in r,φ,i is not lossless, so a second set of residuals corresponding to Cartesian coordinates may be coded. A description of the encoding and decoding strategy 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 the acquired point cloud using a rotating LIDAR model, where the LIDAR has N lasers (e.g., N=16, 32, 64) that rotate around the Z axis according to an azimuth angle φ (see Figures 5A and 5B). Each laser is focused at a different elevation angle θ(i). i=1...N and height
[0068]
number
[0069] Assume that laser i strikes a point M with Cartesian integer coordinates (x, y, z), defined according to the coordinate system described in FIG. 5A.
[0070] The position of M is modeled by three parameters (r, φ, i), which are given by
[0071]
number
[0072] It is calculated as:
[0073] More specifically, the G-PCC coder:
[0074]
number
[0075] One may use a quantized version of (r,φ,i), denoted by
[0076]
number
[0077] ,
[0078]
number
[0079] and i is
[0080]
number
[0081] It is calculated as follows: (q r ,o r ) and (qφ ,o φ )teeth,
[0082]
number
[0083] and
[0084]
number
[0085] is a quantization parameter that controls the precision of each of · 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 due to the use of floating-point arithmetic,
[0087]
number
[0088] and tan(θ(i)) i=1…N The value of is
[0089]
number
[0090] may be pre-computed and quantized as (q ζ ,o ζ ) and (q θ ,o θ )teeth,
[0091]
number
[0092] and
[0093]
number
[0094] is a quantization parameter that controls the precision of each of The reconstructed Cartesian coordinates are:
[0095]
number
[0096] where app_cos(.) and app_sin(.) are approximations of cos(.) and sin(.). The calculations can use fixed-point representation, look-up tables, and linear interpolation.
[0097]
number
[0098] There are various reasons - Quantization - Approximate value - Model inaccuracies - Inaccuracy of model parameters Note that this may differ from (x,y,z) due to
[0099] (r x ,r y ,r z ) is
[0100]
number
[0101] Let σ be the reconstruction residual defined as:
[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 the Represents the geometry prediction scheme described in G-PCC DIS
[0107]
number
[0108] Apply to New predictors can be introduced that exploit the properties of the lidar. For example, the rotation speed of a lidar scanner around the z-axis is typically constant. Therefore, the current
[0109]
number
[0110] But the following
[0111]
number
[0112] can be predicted as: ○ (δφ(k)) k=1...Kis the set of possible rates from which the encoder can choose. The index k may be explicitly written into the bitstream or may be inferred from the context based on a deterministic strategy applied by both the encoder and decoder. o n(j) is the number of skipped points, which can be explicitly written into the bitstream or inferred from the context based on a deterministic strategy applied by both the encoder and decoder. Each node is used to calculate the reconstruction residual (r x ,r y ,r z ) is encoded.
[0113] The G-PCC decoder 300 may proceed as follows. Model parameters
[0114]
number
[0115] and
[0116]
number
[0117] and the quantization parameter q r , q ζ , q θ , and q φ Decrypt Associated with nodes according to the geometry prediction scheme described in the G-PCC DIS
[0118]
number
[0119] Decrypt the parameters Reconstruction coordinates, as explained above
[0120]
number
[0121] Calculate · Residual (r x ,r y ,r z ) As we will see in the next section, lossy compression reduces the reconstructed residual (r x ,r y ,r z ) can be supported by quantizing Calculate the original coordinates (x,y,z) as follows:
[0122]
number
[0123] Lossy compression is achieved by reducing the reconstruction residual (r x ,r y ,r z ) or by dropping points.
[0124] The quantized reconstruction residual is
[0125]
number
[0126] 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] is a quantization parameter that controls the precision of each of the
[0133] In some examples, the G-PCC encoder 200 and / or the G-PCC decoder 300 may use trellis quantization to further improve RD (rate-distortion) performance results. The quantization parameters may be varied at the sequence / frame / slice / block level to achieve region adaptive quality and for rate control purposes.
[0134] Below is a table of example predictive geometry coding syntax, semantics, syntax binarization, and context.
[0135] [Table 1A]
[0136] [Table 1B]
[0137] When present, ptn_qp_offset_eq0_flag, ptn_qp_offset_sign_flag, and ptn_qp_offset_abs_minus1 together 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 inferred to be 0. When nodeIdx % PtnQpInterval is equal to 0, the node QP for the next PtnQpInterval node in 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 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. When not present, the values of ptn_point_cnt_gt1_flag and ptn_point_cnt_minus2 are both inferred 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 in the geometry prediction tree. ptn_pred_mode[nodeIdx] is the mode used to predict the position relative to the current node. 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 together specify the multiplication coefficients used in the delta angle prediction. ptn_phi_mult_eq0_flag, when present, specifies whether the coefficients are equal to zero. ptn_phi_mult_eq1_flag, when present, specifies whether the magnitude of the coefficients is equal to 1. ptn_phi_mult_sign_flag equal to 1 indicates the sign of the coefficients is positive. ptn_phi_mult_sign_flag equal to 0 indicates the sign of the coefficients is negative. Any of ptn_phi_mult_sign_flag, ptn_phi_mult_abs_minus2, or ptn_phi_mult_abs_minus17 that is not present is inferred to be 0. Any of ptn_phi_mult_eq0_flag or ptn_phi_mult_eq1_flag that is not present is inferred to be 1. The phi divisor 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 ] together specify the first prediction residual for the kth geometry location component. ptn_residual_eq0_flag[ k ] specifies whether the residual component is equal to zero. ptn_residual_sign_flag[ k ] equal to 1 indicates that the sign of the residual component is positive. ptn_residual_sign_flag[ k ] equal to 0 indicates that the sign of the residual component is negative. Any of ptn_residual_sign_flag[ k ], ptn_residual_abs_log2[ k ], or ptn_residual_abs_remaining[ k ] that is not present is inferred to be 0. The first prediction residual associated with 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 ] together specify the second-order residual of the kth geometry position component. ptn_sec_residual_eq0_flag[ k ] specifies whether the residual component is equal to zero. ptn_sec_residual_eq1_flag[ k ], when 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. Any of ptn_src_residual_sign_flag[ k ], ptn_sec_residual_abs_minus2[ k ], or ptn_sec_residual_abs_minus17[ k ] that is not present is inferred to be 0. Any of ptn_sec_residual_eq0_flag[ k ] or ptn_sec_residual_eq1_flag[ k ] that is not present is inferred to be 1. The second prediction residual associated with 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 implementations of predictive geometry coding may exhibit one or more disadvantages. As an example, the above implementations of predictive geometry coding using angle coding modes may exhibit one or more disadvantages. x ,r y ,r z ), which may require many context-coded bins, which is computationally intensive. As another example, for the signaling of the predictor index and the signaling of the number of children (both cases have a total of four candidates), the above implementation of predictive geometry coding uses 2-bit fixed-length coding, which is not optimal because the candidates are not equiprobable. As another example, for the first-order residual in the above implementation of predictive geometry coding, signaling related to the laser index (i) may be redundant, for example, when point counts are captured using a single laser. As another example, in the above implementation of predictive geometry coding, a zero predictor (or "no prediction" as described above) is very inefficient and is rarely used for prediction. Moreover, since for the "r" part, it is non-negative and the prediction is always zero, 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 this disclosure, an encoder (e.g., G-PCC encoder 200) and / or decoder (e.g., G-PCC decoder 300) may overcome the aforementioned disadvantages. As a first example, the encoder and / or decoder may perform context and context-coded bin reduction on the quadratic residual and the phi multiplier. As a second example, the encoder and / or decoder may perform variable-length coding on the number of children and predictor index signaling. As a third example, the encoder and / or decoder may remove laser index signaling when the context is captured by a single laser. As a fourth example, the encoder and / or decoder may correct zero prediction by utilizing the azimuth angle and laser index of the parent's neighbors, as well as code estimation.
[0142] Some detailed examples of the techniques of this disclosure are as follows.
[0143] As described above, according to a first example, the encoder and / or decoder may perform a reduction of the context and context-coded bins for the secondary residual and the phi multiplier. For example, the secondary 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 binarization and context for ptn_sec_residual_abs_minus2[ k ] may be modified. Some exemplary modifications are: <add> . . . < / add> Additions and deletions in tags <remove> . . . < / remove> Shown below with removal in 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> together specify the second-order residual of the kth geometry location component. ptn_sec_residual_eq0_flag[ k ] specifies whether the residual component is equal to zero. ptn_sec_residual_eq1_flag[ k ], when present, specifies whether the magnitude of the residual component is equal to 1. ptn_sec_residual_sign_flag[ k ] equal to 1 indicates the sign of the residual component is positive. ptn_sec_residual_sign_flag[ k ] equal to 0 indicates the sign of the residual component is negative. ptn_src_residual_sign_flag[ k ] not present, <add> or < / add> ptn_sec_residual_abs_minus2[ k ], <remove> or ptn_sec_residual_abs_minus17[ k ]< / remove> Any of ptn_sec_residual_eq0_flag[ k ] or ptn_sec_residual_eq1_flag[ k ] that is not present is inferred to be 1. The second prediction residual associated with 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 fixed number of prefix contexts (e.g., a contexts) and suffix contexts (e.g., b contexts) for exponential-Golomb coding. The use of prefix and suffix contexts may be effective (e.g., may provide coding gain) when there is significant energy in the second-order residual components. In one example, a=5, b=4.
[0149] [Table 7]
[0150] Second, the syntax related to the phi multiplier 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>together specify the multiplication coefficients used in the delta angle prediction. ptn_phi_mult_eq0_flag, when present, specifies whether the coefficient is equal to zero. ptn_phi_mult_eq1_flag, when present, specifies whether the magnitude of the coefficient is equal to 1. ptn_phi_mult_sign_flag equal to 1 indicates the sign of the coefficient is positive. ptn_phi_mult_sign_flag equal to 0 indicates the sign of the coefficient is negative. ptn_phi_mult_sign_flag, ptn_phi_mult_abs_minus2, or <remove> ptn_phi_mult_abs_minus17< / remove> <add> ptn_phi_mult_abs_minus9< / add> Any of ptn_phi_mult_eq0_flag or ptn_phi_mult_eq1_flag that is not present is inferred to be 1. The phi factor for the current predicted 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 explained 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 take into account unequal probability symbol statistics, it is proposed to signal using a variable length binarization, e.g., truncated unary binarization, which may reduce the total number of bins involved in the signaling. Since the statistics of predMode may differ depending on whether an angular mode is applied or not, different mappings may be used depending on whether an angular mode already signaled in the corresponding geometry parameter set is valid 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 remove (e.g., do not encode or decode) the signaling of the laser index 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 related to the laser index may 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 (which may change if an axis transformation is present).
[0162] [Table 15]
[0163] If an axis change is present, the component corresponding to the laser index is not signaled.
[0164] Furthermore, when num_lasers_minus1 is 1 (there are only two lasers), the residual can be either zero, -1, or +1, but here for the non-zero case, the sign and subsequent information can be inferred and do not need to be signaled. For example, assuming we have two lasers with laserIdx of 0 and 1, if the predicted laserIdx is 1 and the residual is non-zero, it can be inferred that the current laserIdx = 0. Therefore, in that case, it is sufficient to signal ptn_residual_eq0_flag[2]. Accordingly, the following changes in the syntax can be implemented:
[0165] [Table 16]
[0166] As explained above, according to a fourth example, the encoder and / or decoder may modify the zero prediction by utilizing the azimuth angle and laser index of the parent neighbors, as well as the code estimate.
[0167] Currently, zero prediction in the angle domain corresponds to all components equal to zero. However, current implementations of zero prediction can be inefficient and therefore are rarely used.
[0168] According to one or more techniques of this disclosure, an encoder or decoder may inherit the azimuth angle and laser index from a parentNode (ancestor) if the parentNode is available. Thus, in some sense, it is similar to delta prediction, except that the radius is set to zero (or the minimum radius value).
[0169] The following changes in the location prediction process are required (Section 8.2.6.4) [w19522]: ##################################################################### When predMode is equal to 0, the predicted point location 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 point location is the location relative 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 associated with its 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 predicted point position is a linear combination of the positions relative to all three ancestors. for (k = 0; k < 3; k++) predPos[k] = aPos0[k] + aPos1[k] - aPos2[k] #####################################################################
[0170] Second, when zero predictor is used, the predicted radius is zero, so the corresponding residual is assumed to be positive, and accordingly the corresponding sign does not need to be signaled but is assumed. The same is true when angle mode is disabled.
[0171] [Table 17]
[0172] Alternatively, a minimum value of the radius (smallest radius among all points) may be signaled in the slice header, which may be used as the radius for the zero predictor instead of 0.
[0173] To improve the zero predictor, the phi multiplier can be applied to all predictors, not just the delta predictor. The next change in syntax is as follows:
[0174] [Table 18]
[0175] FIG. 6 is a conceptual diagram illustrating an example distance measurement system 600 that may be used with one or more techniques of the present disclosure. In the example of FIG. 6, the distance measurement system 600 includes an illuminator 602 and a sensor 604. The illuminator 602 may emit light 606. In some examples, the illuminator 602 may emit the light 606 as one or more laser beams. The light 606 may be at one or more wavelengths, such as infrared or visible wavelengths. In other examples, the light 606 is incoherent laser light. When the light 606 encounters an object, such as an object 608, the light 606 generates returning light 610. The returning light 610 may include backscattered light and / or reflected light. The returning light 610 may pass through a lens 611, which 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. Image 612 may include a set of points (eg, as represented by the dots in image 612 of FIG. 6).
[0176] In some examples, the illuminator 602 and sensor 604 may be mounted on a rotating structure to capture a 360-degree view of the environment. In other examples, the distance measurement system 600 may include one or more optical components (e.g., mirrors, collimators, diffraction gratings, etc.) that enable the illuminator 602 and sensor 604 to detect the distance of an object within a particular range (e.g., up to 360 degrees). Although the example of FIG. 6 shows only a single illuminator 602 and sensor 604, the distance measurement system 600 may include multiple sets of illuminators and sensors.
[0177] In some examples, the illuminator 602 generates a structured light pattern. In such examples, the distance measurement system 600 may include multiple sensors 604 on which respective images of the structured light pattern are formed. The distance measurement 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 measurement system may have a high level of accuracy (e.g., accuracy in the sub-millimeter range) when the object 608 is relatively close to the sensor 604 (e.g., between 0.2 meters and 2 meters). This high level of accuracy may be useful in facial recognition applications, such as for unlocking mobile devices (e.g., cell phones, tablet computers, etc.) and for security applications.
[0178] In some examples, the distance measurement system 600 is a time-of-flight (ToF) system. In some examples where the distance measurement 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 returning light 610 from the pulses of light 606 generated by the illuminator 602. The distance measurement system 600 can then determine the distance to the object 608 from which the light 606 backscatters 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, rather than (or in addition to) modulating the amplitude of the emitted light 606, 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 returning light 610 from the object 608 and determine the distance to a point on the object 608 using the speed of light and based on the time difference between when the illuminator 602 generated the light 606 at a particular phase and when the sensor 604 detected the returning light 610 at that particular phase.
[0179] In other examples, the point cloud may be generated without the use of the illuminator 602. For example, in some examples, the sensor 604 of the distance measurement system 600 may include two or more optical cameras. In such examples, the distance measurement system 600 may use the optical cameras to capture stereo images of an environment including the object 608. The distance measurement system 600 may include a point cloud generator 616 that may calculate disparities between locations in the stereo images. The distance measurement system 600 may then use the disparities to determine distances to locations shown in the stereo images. From these distances, the point cloud generator 616 may generate a point cloud.
[0180] 6, the point cloud generator 616 may generate a point cloud based on the signal 614 generated by the sensor 604. The distance measurement system 600 and / or the point cloud generator 616 may form part of the data source 104 (FIG. 1). Thus, the point cloud generated by the distance measurement system 600 may be encoded and / or decoded according to any of the techniques of this disclosure.
[0181] FIG. 7 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of this disclosure may be used. In the example of FIG. 7, vehicle 700 includes distance measurement system 702. Distance measurement system 702 may be implemented in the manner described with respect to FIG. 7. Although not shown in FIG. 7, vehicle 700 may also include a data source, such as data source 104 (FIG. 1), and a G-PCC encoder, such as G-PCC encoder 200 (FIG. 1). In the example of FIG. 7, distance measurement system 702 emits a laser beam 704 that reflects off a pedestrian 706 or other object in the road. The data source of vehicle 700 may generate a point cloud based on a signal generated by distance measurement system 702. The G-PCC encoder of vehicle 700 may encode the point cloud to generate a bitstream 708, such as a geometry bitstream (FIG. 2) and an attribute bitstream (FIG. 2). Bitstream 708 may include far fewer bits than the uncoded point cloud obtained by the G-PCC encoder.
[0182] An output interface of vehicle 700 (e.g., output interface 108 (FIG. 1)) may transmit bitstream 708 to one or more other devices. Bitstream 808 may contain many fewer bits than the unencoded point cloud obtained by the G-PCC encoder. Thus, vehicle 700 may be able to transmit bitstream 708 to other devices more quickly than unencoded point cloud data. Additionally, bitstream 708 may require less data handling capability.
[0183] In the example of FIG. 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 (FIG. 1). The G-PCC decoder of vehicle 710 may decode bitstream 708 to reconstruct a point cloud. Vehicle 710 may use the reconstructed point cloud for various purposes. For example, vehicle 710 may determine, based on the reconstructed point cloud, that pedestrian 706 is in the road ahead of vehicle 700 and therefore begin slowing down, for example, 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] Additionally or alternatively, 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 for later reconstruction of a point cloud. In this example, server system 712 may use the point cloud along 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 for later reconstruction for forensic crash investigation (e.g., when vehicle 700 collides with pedestrian 706).
[0185] FIG. 8 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of this disclosure may be used. Extended reality (XR) is a term used to cover a range of technologies, including augmented reality (AR), mixed reality (MR), and virtual reality (VR). In the example of FIG. 8, a user 800 is located at a first location 802. The user 800 is wearing an XR headset 804. As an alternative to the XR headset 804, the user 800 may use a mobile device (e.g., a mobile phone, a tablet computer, etc.). The XR headset 804 includes a depth detection sensor, such as a distance measurement system, that detects the position of a point on an object 806 at the location 802. A data source of the XR headset 804 may use signals generated by the depth detection sensor to generate a point cloud representation of the object 806 at the location 802. The XR headset 804 may include a G-PCC encoder (e.g., G-PCC encoder 200 of FIG. 1) configured to encode the point cloud to generate a bitstream 808.
[0186] The XR headset 804 may transmit the bitstream 808 (e.g., 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 the object 806 at the location 802. Thus, in some examples, for example, when the XR headset 810 generates the VR visualization, the user 812 may have a 3D immersive experience of the 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., the location 802) includes a plane and therefore determine that a virtual object (e.g., an animated character) should be placed on the plane. The XR headset 810 may generate an XR visualization in which the virtual object is in the determined position. For example, the XR headset 810 may show an animated character sitting on a flat surface.
[0187] FIG. 9 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of this disclosure may be used. In the example of FIG. 9, a mobile device 900, such as a mobile phone or tablet computer, includes a distance measurement system, such as a LIDAR system, that detects the positions of points on an object 902 in the environment of the mobile device 900. A data source of the mobile device 900 may generate a point cloud representation of the object 902 using signals generated by a depth detection sensor. The mobile device 900 may include a G-PCC encoder (e.g., G-PCC encoder 200 of FIG. 1) configured to encode the point cloud to generate a bitstream 904. In the example of FIG. 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 criteria 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] 10A and 10B show an example of this process for bin n. In example 201 of FIG. 10A, the range in bin n is determined by the LPS (p σ) probability. Example 201 shows a range update in bin n+1 when the value of bin n is equal to MPS. In this example, the law remains the same, but the range value in bin n+1 is lowered to the value of RangeMPS in bin n. Example 203 in FIG. 10B shows a range update in bin n+1 when the value of bin n is not equal to MPS (i.e., it is equal to LPS). In this example, the law is moved to the 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 greater than or equal to 256 after renormalization. Depending on the values of range and low, the BAC outputs a "0" or a "1" to the bitstream, or updates an internal variable (called BO: outstanding bit) to prepare for future output. Figure 11 shows an example of a range-dependent BAC output. For example, when the range and low are above a certain threshold (e.g., 512), a "1" is output to the bitstream. When the range and low are below a certain threshold (e.g., 512), a "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 explained above, arithmetic coding methods can be used to provide high compression efficiency. This is achieved by first converting non-binary syntax elements to binary representations (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) encoding stage. The exemplary CABAC encoding stage can be implemented in a G-PCC encoder, for example, by arithmetic coding unit 214 and / or arithmetic coding unit 226 of G-PCC encoder 200 of Figure 2.
[0191] In some examples of G-PCC, context-adaptive binary arithmetic coding (CABAC) may be used to generate bins through a binarization process. For each coded bin value, an appropriate context model is selected. These context models are used to encode each bin value into an output bit based on the bin probability value. The CABAC engine bypasses context modeling and bin coding when a bin is equally likely to be 0 or 1. This is the bypass coding stage described below. In some cases, an appropriate context model is specified when the bin value is coded, modeling based on the bin value's probability. The context is adapted as the encoder codes more bins. Finally, the context-coded bin values or the raw bitstream are transmitted or otherwise provided to the decoder.
[0192] FIG. 12 is a block diagram of an example arithmetic coding unit 214 that may be configured to implement CABAC in accordance with the techniques of this disclosure. A syntax element 1180 is input to the arithmetic coding unit 214. If the syntax element is already a binary-valued syntax element (e.g., a flag or other syntax element having only values of 0 and 1), the binarization step may be skipped. If the syntax element is a non-binary-valued syntax element (e.g., a syntax element that can have values other than 1 or 0), the non-binary-valued syntax element is binarized by a binarizer 1200. The binarizer 1200 performs a mapping of the non-binary-valued syntax element to a sequence of binary decisions. These binary decisions are often referred to as "bins." For example, for a transform coefficient level, the value of the level can be decomposed into successive bins, with each bin indicating whether the absolute value of the coefficient level is greater than some value. For example, bin 0 (sometimes called a significance flag) indicates whether the absolute value of the transform coefficient level is greater than 0. Bin 1 indicates whether the absolute value of the transform coefficient level is greater than 1, and so on. A unique mapping may be developed for each non-binary valued syntax element.
[0193] Each bin generated by the binarizer 1200 is fed to the binary arithmetic coding side of the arithmetic coding unit 214. That is, for a given set of non-binary-valued 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, using 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 where the probability of the bin value is predictable given the value of the previously coded bin. The probability that the bin is an LPS is determined by the context modeler 1220. The context modeler 1220 outputs the bin value and a probability state for the context (e.g., a probability state σ including the value of the LPS and the probability that the LPS occurs). The context may be an initial context for a series of bins or 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 the increment to add to the previous context). As described above, the context modeler 1220 may update the state based on whether the received bin was an MPS or an LPS. After the context and probability state σ are 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 example arithmetic decoding unit 302 that may be configured to perform CABAC in accordance with the techniques of this disclosure. The arithmetic decoding unit 302 of Figure 13 performs CABAC in an inverse manner to that of the arithmetic coding unit 214 described in Figure 12. Coded bits from a bitstream 2180 are input to the arithmetic decoding unit 302. The coded bits are provided to either a context modeler 2200 or a 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, for example, to extract the bins of binary-valued syntax elements or non-binary syntax elements.
[0196] If the coded bits are coded in normal mode, the context modeler 2200 may determine a probability model for the coded bits, and the normal decoding engine 2240 may decode the coded bits to generate bins of the non-binary-valued syntax element (or the syntax element itself if it is binary-valued). After the context and probability state σ are determined by the context modeler 2200, the normal decoding engine 2240 performs BAC to decode the bin values. In other words, the normal decoding engine 2240 may determine the probability state of the context and decode the bin value based on the previously coded bin and the current range. After decoding the bin, the context modeler 2200 may update the probability state of the context based on the window size and the value of the decoded bin.
[0197] 14 is a flowchart illustrating an example method for encoding a current predicted tree node in accordance with one or more techniques of this disclosure. The current predicted tree node (PTN) may be included in a point cloud. Although described with respect to 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 G-PCC decoder 300 (FIGS. 1 and 3) may perform an interpolation method (e.g., decode rather than encode) for the method of FIG. 14.
[0198] The G-PCC encoder 200 may obtain 1402 the values of the quadratic residuals for geometry coding the current predicted tree node (PTN) of the point cloud. As described above, when using the angle mode for predictive geometry coding in G-PCC, the G-PCC encoder 200 may perform prediction in the (r, φ, i) domain. Due to errors in rounding, coding in r, φ, i may be lossy. In some examples, this loss may be reduced or eliminated by coding a second set of residuals (called quadratic residuals), which may be in the Cartesian domain. For example, the current PTN may be coded using three quadratic residuals (r x ,r y ,r z ), one or more of which may be encoded using the technique of FIG.
[0199] The G-PCC encoder 200 may encode the value of the secondary residual. To encode the value of the secondary residual, the G-PCC encoder 200 may encode prefix bins of syntax elements having values specifying the absolute value of the secondary residual minus 2 using a first set of context-adaptive binary arithmetic coding (CABAC) contexts (1404) and encode suffix bins of the syntax elements using a second set of CABAC contexts different from the first set of contexts (1406). For example, the arithmetic coding unit 214 of the G-PCC encoder 200 may encode prefix bins of the ptn_sec_residual_abs_minus2 syntax element using contexts with context indices (ctxIdx) between 0 and a−1 and encode suffix bins of the ptn_sec_residual_abs_minus2[ k ] syntax element using contexts with context indices (ctxIdx) between a and a+b−1. In some examples, a can be 5 and b can be 4.
[0200] In some examples, in addition to the syntax element having a value specifying the absolute value of the 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. As one example, the G-PCC encoder 200 may encode a syntax element having a value specifying whether the value of the secondary residual is equal to zero (e.g., ptn_sec_residual_eq0_flag). As 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 specifying the sign of the value of the secondary residual (e.g., ptn_sec_residual_sign_flag) and a syntax element having a value specifying 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 this disclosure, G-PCC encoder 200 may avoid encoding syntax elements that specify 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 syntax elements that specify the absolute value of the secondary residual minus 17 and by context coding prefixes and suffixes of syntax elements that specify the absolute value of the secondary residual minus 2, G-PCC encoder 200 may reduce the number of contexts and / or context-coded bins used to signal the secondary residual. As such, the techniques of this disclosure may reduce the computational complexity of point cloud coding.
[0202] The techniques of this disclosure may be applicable to signaling beyond the second-order residual. For example, G-PCC encoder 200 may obtain a value of the phi multiplier for geometry coding a current predicted tree node of a point cloud (1408) and encode the value of the phi multiplier by encoding at least a syntax element having a value specifying the absolute value of the phi multiplier minus 9 (e.g., ptn_phi_mult_abs_minus9) (1410). However, similar to the second-order residual, G-PCC encoder 200 may avoid encoding a syntax element specifying 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 that represents the number of direct child nodes (e.g., Ptn_child_cnt) of the current prediction tree node that exists in the geometry prediction tree that represents the point cloud. In some examples, the G-PCC encoder 200 may utilize fixed-length coding to encode (e.g., binarize) the syntax element. For example, the G-PCC encoder 200 may utilize the following table to encode the syntax element that represents the number of direct child nodes:
[0204] [Table 19]
[0205] However, in some examples, utilizing fixed-length coding may not be desirable. For example, a probability distribution of the number of child nodes may result in more PTNs having one child node than PTNs having zero, two, or three child nodes. According to one or more techniques of this disclosure, the G-PCC encoder 200 may use variable-length coding to encode 1412 a syntax element that represents the number of direct child nodes (e.g., Ptn_child_cnt) of the current prediction tree node that is present in the geometry prediction tree representing the point cloud. For example, the G-PCC encoder 200 may utilize the following table to encode the syntax element that represents 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 utilizing a shorter codeword when the number of direct child nodes is 1 than when the number of direct child nodes is 0 (e.g., using the codeword "0" when the number of child nodes is 1, versus using the codeword "10" when the number of child nodes is 0).
[0208] 15 is a flowchart illustrating an example method for decoding a current predicted tree node in accordance with one or more techniques of this disclosure. The current predicted tree node (PTN) may be included in a point cloud. Although described with respect to G-PCC decoder 300 (FIGS. 1 and 3), it should be understood that other devices may be configured to perform methods similar to the method of FIG. 15. For example, a G-PCC encoder such as G-PCC encoder 200 (FIGS. 1 and 2) may perform an interpolation method for the method of FIG. 15 (e.g., encode rather than decode, such as in a reconstruction loop performed by GRU 216).
[0209] The G-PCC decoder 300 may select a prediction mode from a plurality of predetermined prediction modes for performing predictive geometry coding of the current prediction tree node position of the point cloud. 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 having a value specifying which prediction mode should be selected.
[0210] In response to selecting the zero prediction mode (1502), the G-PCC decoder 300 may perform zero prediction to determine the position of the current PTN. To perform zero prediction, the G-PCC decoder 300 may determine the radius, azimuth angle, and laser index of the parent node of the current predicted tree node (1504). For example, the G-PCC decoder 300 may retrieve the radius, azimuth angle, and laser index of the parent node from memory (e.g., as previously determined by the G-PCC decoder 300).
[0211] The G-PCC decoder 300 may infer the azimuth angle and laser index of the predicted position of the current predicted tree node as the azimuth angle and laser index of the parent node (1506). For example, the G-PCC decoder 300 may copy the azimuth angle and laser index of the parent node as the azimuth angle and laser index of the predicted position of the current node.
[0212] The G-PCC decoder 300 may infer (1508) that the radius of the prediction position is the minimum radius value. For example, the G-PCC decoder 300 may always set the radius of the prediction position to be 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 (e.g., from a slice header).
[0213] To complete the zero prediction, the G-PCC decoder 300 may determine the position of the current predicted tree node based on the predicted position of the current predicted 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 predicted tree node and the radius value of the position of the current predicted 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 angle and laser index).
[0214] In some examples, the G-PCC decoder 300 may modify decoding based on the amount of lasers used to generate the point cloud. For example, the G-PCC decoder 300 may determine 1512 the amount of lasers used to capture light detection and ranging (LIDAR) data representing the point cloud, and in response to determining that the amount of lasers is one, infer 1514 that the laser index for all nodes in the point cloud is the same value (e.g., a laser index value of 0). In this way, the G-PCC decoder 300 may avoid the need to signal and / or predict the laser index. As such, the techniques of this disclosure may reduce the number of bits required to represent a point cloud and / or reduce the complexity of point cloud coding.
[0215] The following numbered clauses may describe one or more aspects of the disclosure.
[0216] Clause 1A. A method for processing a point cloud, comprising obtaining a value of a quadratic residual for a geometry coding of the point cloud that is greater than 17, and coding the value of the quadratic residual without coding a syntax element that specifies the value of the quadratic residual minus 17.
[0217] Clause 2A. The method of clause 1A, wherein the syntax element includes a ptn_sec_residual_abs_minus17 syntax element.
[0218] Clause 3A. The method of clause 1A or 2A, further comprising the steps of obtaining a phi multiplier value greater than 17 for geometry coding of the point cloud, and coding the phi multiplier value without coding a syntax element specifying the phi multiplier value minus 17.
[0219] Clause 4A. The method of clause 3A, wherein the syntax element specifying the value of the phi multiplier minus 17 includes the ptn_phi_mult_abs_minus17 syntax element.
[0220] Clause 5A. The method of clause 3A or 4A, further comprising coding a syntax element that specifies a value of the phi multiplier minus 9.
[0221] Clause 6A. The method of any one of clauses 1A to 5A, wherein coding the value of the quadratic residual comprises coding the bits of a syntax element specifying the value of the quadratic residual minus N using Exponential-Golomb coding with a prefix contexts and b suffix contexts.
[0222] Clause 7A. The method of clause 6A, wherein N is 2.
[0223] Clause 8A. The method according to clause 6A or 7A, wherein a is 5.
[0224] Clause 9A. The method of any one of clauses 6A to 8A, wherein b is 4.
[0225] Clause 1B. A method for processing a point cloud, the method comprising the steps of: coding, using variable length coding, a syntax element representing the number of direct child nodes of a current prediction tree node that are present in a geometry prediction tree representing the point cloud; and coding, using variable length coding, a syntax element representing a mode used to predict a position relative to the current prediction tree node.
[0226] Clause 2B. The method of clause 1B, wherein the syntax element representing the number of direct child nodes of the current prediction tree node in the geometry prediction tree includes a ptn_child_cnt syntax element.
[0227] Clause 3B. The method of clause 1B or 2B, wherein the syntax element representing the mode used to predict the position relative to the current prediction tree node includes a ptn_pred_mode syntax element.
[0228] Clause 1C. A method for processing a point cloud, comprising: in response to determining that a single laser was used to capture light detection and ranging (LIDAR) data representing the point cloud, suppressing signaling of a laser index value of the single laser.
[0229] Clause 1D. A method of processing a point cloud, the method comprising: performing zero prediction of the point cloud based on azimuth, laser index, and sign estimates of a parent neighborhood.
[0230] Clause 1E. A method for encoding a point cloud, comprising: 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 comprises 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.
[0231] Clause 2E. The method of clause 1E, wherein the syntax element includes a ptn_sec_residual_abs_minus2 syntax element.
[0232] Clause 3E. The method of any one of clauses 1E to 2E, wherein the absolute value of the quadratic residual is greater than 17, and wherein encoding the value of the quadratic residual does not include encoding a syntax element specifying the absolute value of the quadratic residual minus 17.
[0233] Clause 4E. The method of any one of clauses 1E to 3E, wherein the first set of CABAC contexts includes CABAC contexts having context indices between 0 and a-1, and the second set of CABAC contexts includes CABAC contexts having context indices between a and a+b-1.
[0234] Clause 5E. The method of clause 4E, wherein a is 5 and b is 4.
[0235] Clause 6E. The method of any one of clauses 1E to 5E, wherein the syntax element includes a first syntax element, and wherein the step of encoding the value of the 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 a 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 one; and encoding the first syntax element if the value of the quadratic residual is greater than one.
[0236] Clause 7E. The method of any one of clauses 1E to 6E, wherein the current predicted tree node is a first predicted tree node, the syntax element includes a first syntax element, and the method further includes obtaining a value of a phi multiplier for geometry coding a second predicted tree node of the point cloud, and encoding the value of the phi multiplier, wherein encoding the value of the phi multiplier includes encoding a fifth syntax element having a value specifying the absolute value of the 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 wherein encoding the value of the phi multiplier does not include encoding a syntax element that specifies the value of the phi multiplier minus 17.
[0238] Clause 9E. The method of any one of clauses 1E to 8E, wherein the current prediction tree node is a first prediction tree node, the syntax element includes a first syntax element, and the method further includes a step of encoding, using variable length coding, a sixth syntax element having a value representing the number of direct child nodes of the second prediction tree node that are present in the geometry prediction tree representing the point cloud.
[0239] Clause 10E. The method of clause 9E, wherein the sixth syntax element representing the number of direct child nodes of the second prediction tree node present in the geometry prediction tree comprises a ptn_child_cnt syntax element.
[0240] Clause 11E. The method of clause 9E, wherein encoding the sixth syntax element using variable length coding includes utilizing 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: obtaining a value of a quadratic residual for geometry coding a current prediction tree node of the point cloud; and decoding the value of the quadratic residual, wherein encoding the value comprises decoding prefix bins of syntax elements having values 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 decoding suffix bins of the syntax elements using a second set of CABAC contexts different from the first set of contexts.
[0242] Clause 13E. The method of clause 12E, wherein the syntax element includes a ptn_sec_residual_abs_minus2 syntax element.
[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 wherein decoding the value of the quadratic residual does not include decoding a syntax element specifying the absolute value of the quadratic residual minus 17.
[0244] Clause 15E. The method of any one of clauses 12E to 14E, wherein the first set of CABAC contexts includes CABAC contexts having context indices between 0 and a-1, and the second set of CABAC contexts includes CABAC contexts having context indices between a and a+b-1.
[0245] Clause 16E. The method of clause 15E, wherein a is 5 and b is 4.
[0246] Clause 17E. The method of any one of clauses 12E to 16E, wherein the syntax element includes a first syntax element, and wherein the step of decoding the value of the secondary residual further includes the steps of decoding a second syntax element having a value specifying whether the value of the secondary residual is equal to zero, decoding a third syntax element having a value specifying a sign of the value of the secondary residual if the value of the secondary residual is not equal to zero, decoding a fourth syntax element having a value specifying whether the value of the secondary residual is greater than one, and decoding the first syntax element if the value of the secondary residual is greater than one.
[0247] Clause 18E. The method of any one of clauses 12E to 17E, wherein the current prediction tree node is a first prediction tree node, the syntax element includes a first syntax element, and the method further includes obtaining a value of a phi multiplier for geometry coding a second prediction tree node of the point cloud, and decoding the value of the phi multiplier, wherein decoding the value of the phi multiplier includes decoding a fifth syntax element having a value specifying the absolute value of the 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 wherein decoding the value of the phi multiplier does not include decoding a syntax element that specifies the value of the phi multiplier minus 17.
[0249] Clause 20E. The method of any one of clauses 12E to 19E, wherein the current prediction tree node is a first prediction tree node, the syntax element includes a first syntax element, and the method further includes a step of decoding using variable length coding a sixth syntax element having a value representing the number of direct child nodes of the second prediction tree node that are present in the geometry prediction tree representing the point cloud.
[0250] Clause 21E. The method of clause 20E, wherein the sixth syntax element representing the number of direct child nodes of the second prediction tree node present in the geometry prediction tree comprises a ptn_child_cnt syntax element.
[0251] Clause 22E. The method of clause 20E, wherein the step of decoding the sixth syntax element using variable length coding includes a 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 including: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in circuitry, the one or more processors configured to obtain values of a quadratic residual for geometry coding a current prediction tree node of the point cloud; and encode the values of the quadratic residual, wherein to encode the values, the one or more processors are configured to encode prefix bins of syntax elements having values 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 encode suffix bins of the syntax elements using a second set of CABAC contexts different from the first set of contexts.
[0253] Clause 24E. The device of clause 23E, wherein the syntax element includes a ptn_sec_residual_abs_minus2 syntax element.
[0254] Clause 25E. The device of any one of clauses 23E to 24E, wherein the absolute value of the quadratic residual is greater than 17, and wherein, to encode the value of the quadratic residual, the one or more processors are not configured to encode a syntax element specifying the absolute value of the quadratic residual minus 17.
[0255] Clause 26E. A device described in any one of clauses 23E to 25E, wherein the first set of CABAC contexts includes CABAC contexts having context indices between 0 and a-1, and the second set of CABAC contexts includes CABAC contexts having context indices between a and a+b-1.
[0256] Clause 27E. The device of clause 26E, wherein a is 5 and b is 4.
[0257] Clause 28E. The device of any one of Clauses 23E to 27E, wherein the syntax elements include a first syntax element, and wherein, to encode the value of the quadratic residual, the one or more processors are configured to: encode a second syntax element having a value specifying whether the value of the quadratic residual is equal to zero; encode a third syntax element having a value specifying a sign of the value of the quadratic residual if the value of the quadratic residual is not equal to zero; encode a fourth syntax element having a value specifying whether the value of the quadratic residual is greater than one; and encode the first syntax element if the value of the quadratic residual is greater than one.
[0258] Clause 29E. The device of any one of clauses 23E to 29E, wherein the current prediction tree node is a first prediction tree node, the syntax element includes a first syntax element, and the one or more processors are further configured to obtain a value of a phi multiplier for geometry coding a second prediction tree node of the point cloud and encode the value of the phi multiplier, and to encode the value of the phi multiplier, the one or more processors are configured to encode a fifth syntax element having a value specifying the absolute value of the value of the phi multiplier minus 9.
[0259] Clause 30E. The device of clause 29E, wherein the absolute value of the phi multiplier is greater than 17, and wherein, to encode the value of the phi multiplier, the one or more processors are not configured to encode a syntax element that specifies the value of the phi multiplier minus 17.
[0260] Clause 31E. The device of any one of clauses 23E to 30E, wherein the current prediction tree node is a first prediction tree node, the syntax element includes a first syntax element, and the one or more processors are further configured to encode using variable length coding a sixth syntax element having a value representing the number of direct child nodes of the second prediction tree node that are present in the geometry prediction tree representing the point cloud.
[0261] Clause 32E. The device of clause 31E, 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 a ptn_child_cnt syntax element.
[0262] Clause 33E. The device of clause 31E, wherein to encode the sixth syntax element using variable length coding, the 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.
[0263] Clause 34E. A device for decoding a point cloud, the device including: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in circuitry, the one or more processors configured to obtain values of a quadratic residual for geometry coding a current prediction tree node of the point cloud; and decode the values of the quadratic residual, wherein to decode the values, the one or more processors are configured to decode prefix bins of syntax elements having values 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 decode suffix bins of the syntax elements using a second set of CABAC contexts different from the first set of contexts.
[0264] Clause 35E. The device of clause 34E, wherein the syntax element includes a ptn_sec_residual_abs_minus2 syntax element.
[0265] Clause 36E. The device of any one of clauses 34E to 35E, wherein the absolute value of the quadratic residual is greater than 17, and to decode the value of the quadratic residual, the one or more processors are not configured to decode a syntax element specifying the absolute value of the quadratic residual minus 17.
[0266] Clause 37E. A device described in any one of clauses 34E to 36E, wherein the first set of CABAC contexts includes CABAC contexts having context indices between 0 and a-1, and the second set of CABAC contexts includes CABAC contexts having context indices between a and a+b-1.
[0267] Clause 38E. The device of clause 37E, wherein a is 5 and b is 4.
[0268] Clause 39E. The device of any one of clauses 34E to 38E, wherein the syntax elements include a first syntax element, and further wherein, to decode the value of the secondary residual, the one or more processors are configured to: decode a second syntax element having a value specifying whether the value of the secondary residual is equal to zero; decode a third syntax element having a value specifying a sign of the value of the secondary residual if the value of the secondary residual is not equal to zero; decode a fourth syntax element having a value specifying whether the value of the secondary residual is greater than one; and decode the first syntax element if the value of the secondary residual is greater than one.
[0269] Clause 40E. The device of any one of clauses 34E to 39E, wherein the current prediction tree node is a first prediction tree node, the syntax element includes a first syntax element, and the one or more processors are further configured to obtain a value of a phi multiplier for geometry coding a second prediction tree node of the point cloud and decode the value of the phi multiplier, and to decode the value of the phi multiplier, the one or more processors are configured to decode a fifth syntax element having a value specifying the absolute value of the value of the phi multiplier minus 9.
[0270] Clause 41E. The device of any one of clauses 34E to 40E, wherein the absolute value of the phi multiplier is greater than 17, and to decode the value of the phi multiplier, the one or more processors are not configured to decode a syntax element that specifies the value of the phi multiplier minus 17.
[0271] Clause 42E. The device of any one of clauses 34E to 41E, wherein the current prediction tree node is a first prediction tree node, the syntax element includes a first syntax element, and the one or more processors are further configured to decode using variable length coding a sixth syntax element having a value representing the number of direct child nodes of the second prediction tree node that are present in the geometry prediction tree representing the point cloud.
[0272] Clause 43E. The device of clause 42E, 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 a ptn_child_cnt syntax element.
[0273] Clause 44E. The device of clause 42E, wherein to decode the sixth syntax element using variable length coding, the 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.
[0274] Clause 45E. A computer-readable storage medium storing instructions that, when executed, cause one or more processors of a point cloud encoder to obtain a value of a quadratic residual for geometry coding a current prediction tree node of a point cloud and to encode the value of the quadratic residual, wherein the instructions to cause the one or more processors to encode the value include instructions to cause the one or more processors to encode prefix bins 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 suffix bins of the syntax element using a second set of CABAC contexts different from the first set of contexts.
[0275] Clause 46E. A computer-readable storage medium storing instructions that, when executed, cause one or more processors of a point cloud decoder to obtain a value of a quadratic residual for geometry coding a current prediction tree node of the point cloud and decode the value of the quadratic residual, wherein the instructions to cause the one or more processors to decode the value include instructions to cause the one or more processors to decode prefix bins of syntax elements 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 to decode suffix bins of the syntax elements 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 a position of a current prediction tree node of the point cloud, the plurality of prediction modes including at least a zero prediction mode and a delta prediction mode; determining a radius, an azimuth angle and a laser index of a parent node of the current prediction tree node in response to selecting the zero prediction mode; estimating the azimuth angle and laser index of a predicted position of the current prediction tree node as the azimuth angle and laser index of the parent node; estimating the radius of the predicted position to be a minimum radius value, the minimum radius value being different from the radius of the parent node; and determining a position of the current prediction tree node based on the predicted position of the current prediction tree node.
[0277] Clause 2F. The method of 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 the delta prediction mode.
[0278] Clause 3F. The method of any one of clauses 1F to 2F, wherein the minimum radius value is zero.
[0279] Clause 4F. The method of any one of clauses 1F to 3F, wherein the minimum radius value is greater than zero.
[0280] Clause 5F. The method of any one of clauses 1F to 4F, wherein the step of determining the position of the current node based on the predicted position includes the step of obtaining 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.
[0281] Clause 6F. The method of clause 5F, wherein obtaining the residual radius value includes inferring, in response to selecting the zero prediction mode, that the sign of the residual radius value is positive.
[0282] Clause 7F. The method of any one of clauses 1F to 6F, further comprising determining a quantity of lasers used to capture light detection and ranging (LIDAR) data representing the point cloud, and in response to determining that the quantity of lasers is one, inferring that the laser index for all nodes in the point cloud is the same value.
[0283] Clause 8F. The method of any one of clauses 1F to 7F, wherein selecting a prediction mode includes 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 for performing predictive geometry coding of a position of a current prediction tree node of 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; if the selected mode is the zero prediction mode, determining a radius, an azimuth angle and a laser index of a parent node of the current prediction tree node; estimating the azimuth angle and laser index of a predicted position of the current prediction tree node as the azimuth angle and laser index of the parent node; estimating the radius of the predicted position to be a minimum radius value, the minimum radius value being different from the radius of the parent node; and determining a position of the current prediction tree node based on the predicted position of the current prediction tree node.
[0285] Clause 10F. The method of clause 9F, 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 the delta prediction mode.
[0286] Clause 11F. The method of any one of clauses 9F to 10F, wherein the minimum radius value is zero.
[0287] Clause 12F. The method of any one of clauses 9F to 11F, wherein the minimum radius value is greater than zero.
[0288] Clause 13F. The method of any one of clauses 9F to 12F, wherein the step of determining the position of the current node based on the predicted position includes the step of obtaining 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.
[0289] Clause 14F. The method of clause 13F, wherein obtaining the residual radius value includes inferring that the sign of the residual radius value is positive if the selected mode is a zero prediction mode.
[0290] Clause 15F. The method of any one of clauses 9F to 14F, further comprising determining a quantity of lasers used to capture light detection and ranging (LIDAR) data representing the point cloud, and in response to determining that the quantity of lasers is one, inferring that the laser index for all nodes in the point cloud is the same value.
[0291] Clause 16F. The method of any one of clauses 9F to 15F, wherein selecting a prediction mode includes encoding a syntax element having a value indicating the selected prediction mode.
[0292] Clause 17F. A device for decoding a point cloud, the device including: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in circuitry, the one or more processors configured to: select a prediction mode from a plurality of predetermined prediction modes for performing predictive geometry coding of a position of a current prediction tree node of the point cloud, the plurality of prediction modes including at least a zero prediction mode and a delta prediction mode; in response to selecting the zero prediction mode, determine a radius, an azimuth angle, and a laser index of a parent node of the current prediction tree node; infer the azimuth angle and the laser index of a predicted position of the current prediction tree node as the azimuth angle and the laser index of the parent node; infer the radius of the predicted position to be a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determine a position of the current prediction tree node based on the predicted position of the current prediction tree node.
[0293] Clause 18F. The device of clause 17F, wherein the one or more processors are further configured to, in response to selecting the delta prediction mode, infer a radius, azimuth angle, and laser index of a predicted position of the current prediction tree node as the radius, azimuth angle, and laser index of the parent node.
[0294] Clause 19F. The device of any one of clauses 17F to 18F, wherein the minimum radius value is zero.
[0295] Clause 20F. The device of any one of clauses 17F to 19F, wherein the minimum radius value is greater than zero.
[0296] Clause 21F. The device of any one of clauses 17F to 20F, wherein to determine the position of the current node based on the predicted position, the 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.
[0297] Clause 22F. The device of clause 21F, wherein to obtain the residual radius value, the one or more processors are configured to infer, in response to selecting a zero prediction mode, that the sign of the residual radius value is positive.
[0298] Clause 23F. The device of any one of clauses 17F to 22F, wherein the one or more processors are further configured to determine a quantity of lasers used to capture light detection and ranging (LIDAR) data representing the point cloud, and in response to determining that the quantity of lasers is one, infer that the laser index for all nodes in the point cloud is the same value.
[0299] Clause 24F. The device of any one of clauses 17F to 23F, wherein, to select a prediction mode, the 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 circuitry, the one or more processors configured to: select a prediction mode for performing predictive geometry coding of a position of a current prediction tree node of 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; if the selected mode is the zero prediction mode, determine a radius, an azimuth angle, and a laser index of a parent node of the current prediction tree node; infer the azimuth angle and the laser index of a predicted position of the current prediction tree node as the azimuth angle and the laser index of the parent node; infer the radius of the predicted position to be a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determine a position of the current prediction tree node based on the predicted position of the current prediction tree node.
[0301] Clause 26F. The device of clause 25F, wherein the one or more processors are further configured to, in response to selecting the delta prediction mode, infer a radius, azimuth angle, and laser index of a predicted position of the current prediction tree node as the radius, azimuth angle, and laser index of the parent node.
[0302] Clause 27F. The device of any one of clauses 25F to 26F, wherein the minimum radius value is zero.
[0303] Clause 28F. The device of any one of clauses 25F to 27F, wherein the minimum radius value is greater than zero.
[0304] Clause 29F. The device of any one of clauses 25F to 28F, wherein to determine the position of the current node based on the predicted position, the 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.
[0305] Clause 30F. The device of clause 29F, wherein to obtain the residual radius value, the one or more processors are configured to infer, in response to selecting a zero prediction mode, that the sign of the residual radius value is positive.
[0306] Clause 31F. The device of any one of clauses 25F to 30F, wherein the one or more processors are further configured to determine a quantity of lasers used to capture light detection and ranging (LIDAR) data representing the point cloud, and in response to determining that the quantity of lasers is one, infer that the laser index for all nodes in the point cloud is the same value.
[0307] Clause 32F. The device of any one of clauses 25F to 31F, wherein, to select a prediction mode, the one or more processors are further configured to encode a syntax element having a value indicating the selected prediction mode.
[0308] Clause 33F. A computer-readable storage medium storing instructions that, when executed, cause one or more processors of a point cloud decoding device to: select a prediction mode for performing predictive geometry coding of a position of a current prediction tree node of a 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; in response to selecting the zero prediction mode, determine a radius, an azimuth angle, and a laser index of a parent node of the current prediction tree node; infer the azimuth angle and the laser index of a predicted position of the current prediction tree node as the azimuth angle and the laser index of the parent node; infer the radius of the predicted position to be a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determine a position of the current prediction tree node based on the predicted position of the current prediction tree node.
[0309] Clause 34F. A computer-readable storage medium storing instructions that, when executed, cause one or more processors of a point cloud encoding device to: select a prediction mode for performing predictive geometry coding of a position of a current prediction tree node of a 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; if the selected prediction mode is the zero prediction mode, determine a radius, an azimuth angle, and a laser index of a parent node of the current prediction tree node; infer the azimuth angle and the laser index of a predicted position of the current prediction tree node as the azimuth angle and the laser index of the parent node; infer the radius of the predicted position to be a minimum radius value, wherein the minimum radius value is different from the radius of the parent node; and determine a position of the current prediction tree node based on the predicted position of the current prediction tree node.
[0310] Clause 1Z. A device for processing point clouds, the device comprising one or more means for carrying out the method according to any one of clauses 1A to 1F.
[0311] Clause 2Z. The device of clause 1Z, wherein the one or more means include one or more processors implemented in circuitry.
[0312] Clause 3Z. The device of clause 1Z or 2Z, further comprising a memory for storing data representing the point cloud.
[0313] Clause 4Z. The device of any one of clauses 1Z to 3Z, wherein the device includes a decoder.
[0314] Clause 5Z. The device of any one of clauses 1Z to 4Z, wherein the device includes an encoder.
[0315] Clause 6Z. The device of any one of clauses 1Z to 5Z, further comprising a device for generating a point cloud.
[0316] Clause 7Z. The device of any one of clauses 1Z to 6Z, further comprising a display for presenting an image based on the point cloud.
[0317] Clause 8Z. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to perform the method of any one of clauses 1A to 1F.
[0318] The examples in the various aspects of the present disclosure may be used individually or in any combination.
[0319] It should be appreciated that in some examples, some acts or events of any of the techniques described herein may be performed in a different sequence, added, combined, or entirely excluded (e.g., not all described acts or events may be necessary to practice the techniques). Moreover, in some examples, acts or events may be performed in parallel rather than sequentially, for example, through multithreaded processing, interrupt processing, or multiple processors.
[0320] In one or more examples, the functions described may be implemented as hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted via a computer-readable medium as one or more instructions or code and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which correspond to tangible media such as data storage media, or communication media, including any medium that facilitates transfer of a computer program from one place to another, for example, according to a communication protocol. As such, computer-readable media may generally correspond to (1) non-transitory tangible computer-readable storage media or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementing the techniques described in this disclosure. A computer program product may include computer-readable media.
[0321] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included within the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but instead cover non-transitory tangible storage media. As used herein, disk and disc include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where disks typically reproduce data magnetically and discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0322] The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the terms "processor" and "processing circuitry," as used herein, may refer to any of the above structures or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or may be incorporated into a combined codec. Also, the techniques may be implemented entirely in one or more circuits or logic elements.
[0323] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units have been described in this disclosure to highlight functional aspects of devices configured to implement the disclosed techniques, but they do not necessarily require realization by different hardware units. Rather, as described above, the various units may be combined in a codec hardware unit or may be provided by a collection of interoperable hardware units, including one or more processors as described above, along with appropriate software and / or firmware.
[0324] Various examples have been described. These and other examples are within the scope of the following claims. [Explanation of symbols]
[0325] 100 Encoding and Decoding Systems 102 Source Devices 104 Data Sources 106 memory 108 Output Interface 110 Computer-Readable Medium 112 Storage Devices 114 File Server 116 Destination Device 118 Data Consumers 120 memory 122 input interface 200 Geometry Point Cloud Compression (G-PCC) Encoder 201 examples 202 Coordinate Transformation Unit 203 Examples 204 Color Conversion Unit 206 Voxelization Unit 208 Attribute Transfer Unit 210 Octree Analysis Unit 212 Surface Approximation Analysis Unit 214 Arithmetic Coding Unit 216 Geometry Reconstruction Unit (GRU) 218 RAHT Unit 220 LOD generation units 222 Lifting Unit 224 Coefficient Quantization Unit 226 Arithmetic Coding Unit 300 G-PCC decoder 302 Geometry Arithmetic Decoding Unit 304 Attribute Arithmetic Decoding Unit 306 octree synthesis unit 308 Inverse Quantization Unit 310 Surface Approximation Synthesis Unit 312 Geometry Reconstruction Unit 314 RAHT unit 316 LoD generation units 318 Reverse Lifting Unit 320 Inverse Coordinate Transformation Unit 322 Inverse Color Conversion Unit 600 Distance Measurement System 602 Lighting equipment 604 Sensors 606 light 608 Objects 610 Return 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 Objects 904 bitstream 906 Remote Device 1180 Syntax Elements 1200 Binaryizer 1220 Context Modeler 1240 normal encoding engine 1260 Bypass Encoding Engine 2180 bitstream 2200 Context Modeler 2220 Bypass Decryption Engine 2240 normal decoding engine 2300 Reverse Binaryizer
Claims
1. 1. A method for decoding a point cloud, comprising: selecting a prediction mode for performing predictive geometry coding of a current prediction tree node position of the point cloud from a plurality of predefined prediction modes, the plurality of predefined prediction modes including at least a zero prediction mode and a delta prediction mode; determining a radius of a parent node of the current predicted tree node, an azimuth angle of the parent node of the current predicted tree node, and a laser index of the parent node of the current predicted tree node; In response to selecting the zero prediction mode, inferring the azimuth angle and laser index of the predicted location of the current predicted tree node as the azimuth angle and laser index of the parent node; inferring that the radius of the predicted location is a minimum radius value that is different from the radius of the parent node; determining the position of the current predicted tree node based on the predicted position of the current predicted tree node; A method comprising:
2. In response to selecting the delta prediction mode, The method of claim 1 , further comprising: inferring the radius, the azimuth angle, and the laser index of the predicted location of the current predicted tree node as the radius, the azimuth angle, and the laser index of the parent node.
3. The method of claim 1 , wherein the minimum radius value is zero.
4. The method of claim 1 , wherein the minimum radius value is greater than zero.
5. determining the position of the current predicted tree node based on the predicted position, 2. The method of claim 1, further comprising obtaining a residual radius value representing a 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.
6. The step of obtaining the residual radius value comprises: The method of claim 5 , comprising inferring the sign of the residual radius value to be positive in response to selecting the zero prediction mode.
7. 1. A method for encoding a point cloud, comprising: selecting a prediction mode for performing predictive geometry coding of a current prediction tree node position of the point cloud from a plurality of predefined prediction modes, the plurality of predefined prediction modes including at least a zero prediction mode and a delta prediction mode; determining a radius of a parent node of the current predicted tree node, an azimuth angle of the parent node of the current predicted tree node, and a laser index of the parent node of the current predicted tree node; If the selected mode is a zero prediction mode, inferring the azimuth angle and laser index of the predicted location of the current predicted tree node as the azimuth angle and laser index of the parent node; inferring that the radius of the predicted location is a minimum radius value that is different from the radius of the parent node; determining the position of the current predicted tree node based on the predicted position of the current predicted tree node; A method comprising:
8. In response to selecting the delta prediction mode, The method of claim 7 , further comprising: inferring the radius, the azimuth angle, and the laser index of the predicted location of the current predicted tree node as the radius, the azimuth angle, and the laser index of the parent node.
9. The method of claim 7 , wherein the minimum radius value is zero.
10. The method of claim 7 , wherein the minimum radius value is greater than zero.
11. determining the position of the current predicted tree node based on the predicted position, 8. The method of claim 7, further comprising obtaining a residual radius value representing a 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.
12. 1. A device for decoding a point cloud, comprising: a memory configured to store at least a portion of the point cloud; one or more processors implemented in the circuit; wherein the one or more processors: selecting a prediction mode for performing predictive geometry coding of a current prediction tree node position of the point cloud from a plurality of predefined prediction modes, the plurality of predefined prediction modes including at least a zero prediction mode and a delta prediction mode; determining a radius of a parent node of the current predicted tree node, an azimuth angle of the parent node of the current predicted tree node, and a laser index of the parent node of the current predicted tree node; In response to selecting the zero prediction mode, inferring the azimuth angle and laser index of the predicted location of the current predicted tree node as the azimuth angle and laser index of the parent node; inferring that the radius of the predicted location is a minimum radius value, the minimum radius value being different from the radius of the parent node; determining the position of the current predicted tree node based on the predicted position of the current predicted tree node; A device configured to:
13. 1. A device for encoding a point cloud, comprising: a memory configured to store at least a portion of the point cloud; one or more processors implemented in the circuit; wherein the one or more processors: selecting a prediction mode for performing predictive geometry coding of a current prediction tree node position of the point cloud from a plurality of predefined prediction modes, the plurality of predefined prediction modes including at least a zero prediction mode and a delta prediction mode; determining a radius of a parent node of the current predicted tree node, an azimuth angle of the parent node of the current predicted tree node, and a laser index of the parent node of the current predicted tree node; If the selected mode is the zero prediction mode, inferring the azimuth angle and laser index of the predicted location of the current predicted tree node as the azimuth angle and laser index of the parent node; inferring that the radius of the predicted location is a minimum radius value, the minimum radius value being different from the radius of the parent node; determining the position of the current predicted tree node based on the predicted position of the current predicted tree node; A device configured to:
14. 1. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors of a point cloud decoding device to: selecting a prediction mode for performing predictive geometry coding of a current prediction tree node position of the point cloud from a plurality of predefined prediction modes, the plurality of predefined prediction modes including at least a zero prediction mode and a delta prediction mode; determining a radius of a parent node of the current predicted tree node, an azimuth angle of the parent node of the current predicted tree node, and a laser index of the parent node of the current predicted tree node; In response to selecting the zero prediction mode, inferring the azimuth angle and laser index of the predicted location of the current predicted tree node as the azimuth angle and laser index of the parent node; inferring that the radius of the predicted location is a minimum radius value, the minimum radius value being different from the radius of the parent node; determining the position of the current predicted tree node based on the predicted position of the current predicted tree node; A computer-readable storage medium that causes the
15. 1. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors of a point cloud encoding device to: selecting a prediction mode for performing predictive geometry coding of a current prediction tree node position of the point cloud from a plurality of predefined prediction modes, the plurality of predefined prediction modes including at least a zero prediction mode and a delta prediction mode; determining a radius of a parent node of the current predicted tree node, an azimuth angle of the parent node of the current predicted tree node, and a laser index of the parent node of the current predicted tree node; If the selected prediction mode is a zero prediction mode, inferring the azimuth angle and laser index of the predicted location of the current predicted tree node as the azimuth angle and laser index of the parent node; inferring that the radius of the predicted location is a minimum radius value, the minimum radius value being different from the radius of the parent node; determining the position of the current predicted tree node based on the predicted position of the current predicted tree node; A computer-readable storage medium that causes the
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
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
Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
WO2021095879A1