Predictive geometry coding for point cloud compression

By resolving the azimuth residual value independently of the radius value, the decoding delay problem in the existing technology is solved, and efficient parallel processing of the point cloud compression process is achieved.

CN120917488APending Publication Date: 2025-11-07QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202480024663.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-04-08
Filing Date
2024-04-15
Publication Date
2025-11-07

AI Technical Summary

Technical Problem

In existing technologies, resolving the azimuth residual value during point cloud compression depends on the radius value of the current point or the radius value of the previous point, resulting in delays in the decoding process and difficulties in parallel processing.

Method used

The azimuth residual value can be resolved or signaled by means of a radius value independent of the current point or the radius value of a previous point in the point cloud in the decoding order, allowing for parallel processing and determination of quantization parameters independent of the radius value.

Benefits of technology

It reduces the decoding time in the point cloud compression process, and improves the overall operational efficiency and parallel processing capability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120917488A_ABST
    Figure CN120917488A_ABST
Patent Text Reader

Abstract

A method of processing a point cloud, comprising: determining that an angle mode is enabled for encoding or decoding a current one of the points in the point cloud; and parsing or signaling information for an azimuth angle residual value of the current point independently of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in decoding order. The azimuth angle residual value is based on a difference between the azimuth angle value of the current point and the predicted sub-azimuth angle value of the current point, and the azimuth angle value of the current point indicates the azimuth angle of the current point based on the laser of the point used to capture the point cloud.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application claims priority to U.S. Patent Application No. 18 / 629,517 filed April 8, 2024, and U.S. Provisional Application No. 63 / 496,656 filed April 17, 2023, the entire contents of which are incorporated by reference herein. U.S. Patent Application No. 18 / 629,517 filed April 8, 2024, claims the benefit of U.S. Provisional Application No. 63 / 496,656 filed April 17, 2023. TECHNICAL FIELD

[0002] The present disclosure relates to point cloud encoding and decoding. BACKGROUND

[0003] A point cloud is a collection of points in a three-dimensional space. The points can correspond to points on objects within the three-dimensional space. Thus, a point cloud can be used to represent the physical content of a three-dimensional space. Point clouds can have utility in various situations. For example, a point cloud can be used in the context of an autonomous vehicle to represent the locations of objects on a road. In another example, a point cloud can be used in the context of representing the physical content of an environment for the purpose of positioning virtual objects in an augmented reality (AR) or mixed reality (MR) application. Point cloud compression is a process for encoding and decoding point clouds. Encoding a point cloud can reduce the amount of data needed for storage and transmission of the point cloud. SUMMARY

[0004] Generally, the present disclosure describes techniques for predictive geometry coding for point cloud compression. The present disclosure describes examples in which parsing or signaling information for an azimuth residual value for a current point of a point cloud is independent of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in decoding order. For example, a point cloud encoder signaling or a point cloud decoder parsing information for an azimuth residual value for a current block can not be conditioned on a radius value of the current point or a radius value of the previous point of the point cloud.

[0005] In some techniques, parsing of an azimuth residual value requires a reconstructed value of a radius of a previous point. Thus, in some of these techniques, there is a dependency of the parsing of a syntax element on the reconstruction of a point. With the example techniques described in the present disclosure, by parsing or signaling an azimuth residual value independent of a value of a reconstructed syntax element (e.g., a radius value of the current point or a radius value of the previous point), the example techniques can improve the parsing process. For example, the parsing of an azimuth residual value can be able to occur in parallel or can not need to wait with the determination of a radius value of the current point or a radius value of the previous point, which in turn can reduce the time needed for decoding and thereby improve the overall operation of point cloud compression.

[0006] In one example, the disclosure describes a method of processing a point cloud, the method comprising: determining that an angular mode is enabled for encoding or decoding a current point among points in the point cloud; and resolving or signaling information for an azimuth residual value for the current point independently of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in a decoding order, wherein the azimuth residual value is based on a difference between an azimuth value of the current point and a predicted azimuth value of the current point, and wherein the azimuth value of the current point indicates an azimuth of the current point based on a laser used to capture the points of the point cloud.

[0007] In one example, the disclosure describes a device for processing a point cloud, the device comprising: one or more memories configured to store the point cloud; and one or more processors implemented in circuitry and configured to: determine that an angular mode is enabled for encoding or decoding a current point among points in the point cloud; and resolve or signal information for an azimuth residual value for the current point independently of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in a decoding order, wherein the azimuth residual value is based on a difference between an azimuth value of the current point and a predicted azimuth value of the current point, and wherein the azimuth value of the current point indicates an azimuth of the current point based on a laser used to capture the points of the point cloud.

[0008] In one example, the disclosure describes a computer-readable storage medium having instructions stored thereon that, when executed, cause one or more processors to: determine that an angular mode is enabled for encoding or decoding a current point among points in a point cloud; and resolve or signal information for an azimuth residual value for the current point independently of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in a decoding order, wherein the azimuth residual value is based on a difference between an azimuth value of the current point and a predicted azimuth value of the current point, and wherein the azimuth value of the current point indicates an azimuth of the current point based on a laser used to capture the points of the point cloud.

[0009] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF DRAWINGS

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

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

[0012] Figure 3 is a block diagram illustrating an example G-PCC decoder.

[0013] Figure 4 is a block diagram illustrating an example geometry encoding unit of Figure 2 in more detail.

[0014] Figure 5 is a block diagram illustrating an example attribute encoding unit of Figure 2 in more detail.

[0015] Figure 6 is a block diagram illustrating an example geometry decoding unit of Figure 3 in more detail.

[0016] Figure 7 is a block diagram illustrating an example attribute decoding unit of Figure 3 in more detail.

[0017] Figure 8 is a conceptual diagram illustrating an example octree partitioning for geometry coding.

[0018] Figure 9 is a conceptual diagram illustrating an example of a prediction tree.

[0019] Figure 10A and Figure 10B is a conceptual diagram illustrating an example spin LIDAR acquisition model.

[0020] Figure 11 is a conceptual diagram illustrating an example of inter prediction of a current point (curPoint) from points (interPredPts) in a reference frame.

[0021] Figure 12 is an example decoder flow diagram.

[0022] Figure 13 is a conceptual diagram illustrating an example of additional inter predictor points obtained from a first point having a larger azimuth angle than the inter predictor points.

[0023] Figure 14 is a conceptual diagram illustrating sampling using uniform quantization of azimuth and radius as used in G-PCC Ed. 1.

[0024] Figure 15 is a conceptual diagram illustrating that non-uniform quantization of azimuth leads to uniform quantization of arcs.

[0025] Figure 16 is a conceptual diagram illustrating uniform quantization of a circular arc using a delta phi arc quantization step size.

[0026] Figure 17 is a conceptual diagram illustrating an example of entropy encoding quantized residual azimuth angles using a bound B.

[0027] Figure 18 is a conceptual diagram illustrating an example of laser detecting two different objects.

[0028] Figure 19 is a flowchart of an example encoding method illustrating the magnitude of a radius residual.

[0029] Figure 20 is a flowchart of an example decoding method illustrating the magnitude of a radius residual.

[0030] Figure 21A and Figure 21B is a schematic diagram illustrating a relationship.

[0031] Figure 22 is a flowchart illustrating an example method in accordance with one or more examples described in this disclosure.

[0032] Figure 23 is a flowchart illustrating an example method in accordance with one or more examples described in this disclosure.

[0033] Figure 24 is a flowchart illustrating an example method in accordance with one or more examples described in this disclosure.

[0034] Figure 25 is a conceptual diagram illustrating an example ranging system that can be used with one or more techniques of this disclosure.

[0035] Figure 26 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of this disclosure can be used.

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

[0037] Figure 28 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of this disclosure can be used. DETAILED DESCRIPTION

[0038] In geometry point cloud compression (G-PCC), a point cloud encoder encodes values of points in a point cloud and signals information for a point cloud decoder to decode (e.g., reconstruct) the values of the points. In this way, the point cloud decoder reconstructs the point cloud.

[0039] ​One example technique to encode or decode points in a point cloud is an angular mode. In the angular mode, the coordinates of a point are represented with a radius (r), an azimuthal value (a) and a laser index (i). The azimuthal value of a current point indicates the azimuthal angle of the current point based on a LiDAR system (e.g., a laser of the LiDAR system) used to capture the point of the point cloud. The radius is the distance from the laser of the LiDAR system and the current point.

[0040] In a rotating LiDAR system, one or more lasers can rotate around an axis, where the lasers emit at certain intervals and a sensor captures the reflected light, which is then used to determine the distance of points (corresponding to ground, objects, buildings, etc. in a scene) from the LiDAR system. A typical rotating LiDAR system uses a coordinate system relative to itself to indicate the coordinates of points, where the x-y axes are horizontal to the ground on which the LiDAR system is placed, and the z-axis points in the vertical direction. Thus, the azimuthal angle indicates the angle in the x-y plane with the x-axis. However, other conventions can also be used, as the techniques disclosed herein are not limited to any particular coordinate system or convention used.

[0041] Furthermore, the point cloud encoder and the point cloud decoder can utilize inter- or intra-frame prediction, quantization, and entropy encoding techniques to reduce the amount of information signaled by the point cloud encoder and parsed by the point cloud decoder. For example, as part of inter- or intra-frame prediction, the point cloud encoder can signal information of an azimuthal residual value, instead of signaling the actual value of the azimuthal angle, where the azimuthal residual value is based on a difference between the azimuthal value of the current point and a predicted azimuthal value of the current point. One example of the predicted azimuthal angle is a previously decoded point in the vicinity of the azimuthal position of the current point in a reference frame (e.g., a previously decoded frame). Another example of the predicted azimuthal angle is the azimuthal angle of a previously decoded point in the current frame. The described techniques are not limited to any particular predictor and apply regardless of which predictor is used for the azimuthal angle.

[0042] The point cloud encoder can signal and the point cloud decoder can parse from the bitstream information of a value that the point cloud decoder uses to decode (e.g., reconstruct) the azimuthal residual value. In this disclosure, the term “signal” or “parse” refers to information that the point cloud encoder includes in the bitstream and that the point cloud decoder receives from the bitstream. The term “decode” or “reconstruct” refers to determining (e.g., generating) the actual value from the parsed information.

[0043] ​The disclosure describes example techniques to resolve or signal information of an azimuth residual value of a current point of a point cloud independent of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in decoding order. Generally, there can be benefits in separating and keeping apart the operations of resolving different information and the operations of determining (e.g., decoding or reconstructing) actual values from the resolved information. This allows resolving and reconstructing to be performed in parallel. That is, a point cloud decoder can be able to resolve information of an azimuth residual value of a current point in parallel or at least independent of determining (e.g., decoding or reconstructing) a value of a previous point.

[0044] However, some techniques require a point cloud decoder to determine whether to resolve certain information of an azimuth residual value of a current point based on whether a condition based on a radius value of the current point or a radius value of a previous point is satisfied. Thus, in those techniques, resolving information of an azimuth residual value of a current point can be delayed until a radius value of the current point or a radius value of a previous point is determined. With the example techniques described in this disclosure, resolving or signaling information for an azimuth residual value of a current point can be independent of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in decoding order. As such, resolving information for an azimuth residual value of a current point can occur in parallel or at least can not be delayed by determining a radius value of the current point or a radius value of a previous point.

[0045] Furthermore, in those techniques in which resolving of an azimuth residual value of a current point depends on a radius value of the current point or a radius value of a previous point, a quantization parameter used to quantize or dequantize the azimuth residual value of the current point and one or more context values used to encode or decode the azimuth residual value of the current point also depend on the radius value of the current point or the radius value of the previous point. With the example techniques described in this disclosure, a point cloud decoder can determine a quantization parameter and / or one or more context values used to decode an azimuth residual value independent of a radius value of a current point or a radius value of a previous point of the point cloud.

[0046] Figure 1 FIG. 1 is a block diagram illustrating an example encoding and decoding system 100 that can perform the techniques of this disclosure. The techniques of this disclosure are generally directed to coding (encoding and / or decoding) point cloud data, i.e., to support point cloud compression. Generally, point cloud data includes any data used to process a point cloud. Coding can be effective on compressing and / or decompressing point cloud data.

[0047] As shown in FIG. 1, system 100 includes a source device 102 and a destination device 116. Source device 102 provides encoded point cloud data to be decoded by destination device 116. In particular implementations, source device 102 and destination device 116 can represent devices such as a computer, a mobile device, a gaming console, a streaming media device, a point cloud compression device, or the like. Figure 1 In particular implementations, source device 102 can include more than one source device, and destination device 116 can include more than one destination device. In particular implementations, source device 102 and destination device 116 can represent devices such as a computer, a mobile device, a gaming console, a streaming media device, a point cloud compression device, or the like. Figure 1In the example of FIG. 1, source device 102 provides point cloud data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 can comprise any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, land or marine vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, etc. In some cases, source device 102 and destination device 116 can be equipped for wireless communication.

[0048] In Figure 1 In the example of FIG. 1, source device 102 includes data source 104, memory 106, point cloud encoder 200 (e.g., a G-PCC encoder or other type of encoder), and output interface 108. Destination device 116 includes input interface 122, point cloud decoder (e.g., a G-PCC decoder or other type of decoder), memory 120, and data consumer 118. In accordance with this disclosure, point cloud encoder 200 of source device 102 and point cloud decoder 300 of destination device 116 can be configured to apply the techniques of this disclosure related to predictive geometry coding for point cloud compression, such as resolving or signaling information for an azimuth residual value of a current point independent of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in decoding order. Accordingly, source device 102 represents an example of an encoding device, while destination device 116 represents an example of a decoding device. In other examples, source device 102 and destination device 116 can include other components or arrangements. For example, source device 102 can receive data (e.g., point cloud data) from an internal or external source. Likewise, destination device 116 can interface with an external data consumer, without including a data consumer in the same device.

[0049] Figure 1The system 100 illustrated in FIG. 1 is merely one example. In general, other digital encoding and / or decoding devices can perform the techniques of this disclosure related to predictive geometry coding for point cloud compression, such as resolving or signaling information for an azimuth residual value for a current point independent of a radius value for the current point or a radius value for a previous point of the point cloud that precedes the current point in decoding order. The source device 102 and the destination device 116 are merely examples of such devices in which the source device 102 generates coded data for transmission to the destination device 116. This disclosure refers to “coding” devices as devices that perform coding (encoding and / or decoding) of data. Thus, the point cloud encoder 200 and the point cloud decoder 300 represent examples of coding devices (in particular, encoders and decoders), respectively. In some examples, the source device 102 and the destination device 116 can operate in a substantially symmetrical manner, such that each of the source device 102 and the destination device 116 includes encoding and decoding components. Hence, the system 100 can support one-way or two-way transmission between the source device 102 and the destination device 116, e.g., for streaming, playback, broadcast, telephony, navigation, and other applications.

[0050] In general, the data source 104 represents a source of data (i.e., raw, uncoded point cloud data), and can provide a series of ordered “frames” of data to the point cloud encoder 200, which encodes the data of the frames. The data source 104 of the source device 102 can include a point cloud capture device such as any of a variety of cameras or sensors (e.g., a 3D scanner or a light detection and ranging (LIDAR) device, one or more video cameras), an archive containing previously captured data, and / or a data feed interface to receive data from a data content provider. Alternatively or additionally, the point cloud data can be computer-generated from scans, cameras, sensors, or other data. For example, the data source 104 can generate computer graphics-based data as source data, or produce a combination of live data, archived data, and computer-generated data. In each case, the point cloud encoder 200 encodes the captured, pre-captured, or computer-generated data. The point cloud encoder 200 can rearrange the frames from the received order (sometimes referred to as “display order”) into a coding order for coding. The point cloud encoder 200 can generate one or more bitstreams including encoded data. The source device 102 can then output the encoded video data via the output interface 108 onto the computer- readable medium 110 for reception and / or retrieval by an input interface 122 of, e.g., the destination device 116.

[0051] The memories 106 of the source device 102 and 120 of the destination device 116 can represent general-purpose memories. In some examples, the memories 106 and 120 can store raw data, e.g., raw data from the data source 104 and raw decoded data from the point cloud decoder 300. Additionally or alternatively, the memories 106 and 120 can store software instructions executable by, e.g., the point cloud encoder 200 and the point cloud decoder 300, respectively. Although the memories 106 and 120 are shown separate from the point cloud encoder 200 and the point cloud decoder 300 in this example, it should be understood that the point cloud encoder 200 and the point cloud decoder 300 can also include internal memories for functionally similar or equivalent purposes. Moreover, the memories 106 and 120 can store encoded data, e.g., output from the point cloud encoder 200 and input to the point cloud decoder 300. In some examples, portions of the memories 106 and 120 can be allocated as one or more buffers, e.g., to store raw decoded data and / or encoded data. For example, the memories 106 and 120 can store data representing point clouds.

[0052] The computer-readable medium 110 can represent any type of medium or device capable of storing the encoded data from the source device 102 and communicating that encoded data to the destination device 116. In one example, the computer-readable medium 110 represents a communication medium to enable the source device 102 to directly transmit encoded data to the destination device 116 in real-time, e.g., via a radio frequency network or computer-based network. The output interface 108 can modulate a transmission signal including the encoded data, and the input interface 122 can demodulate received transmission signals, according to a communication standard, such as a wireless communication protocol. The communication medium can comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can form part of a packet-based network, such as a local area network, a wide-area network, or a global network such as the Internet. The communication medium can include routers, switches, base stations, or any other equipment that can be useful to facilitate communication from the source device 102 to the destination device 116.

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

[0054] In some examples, source device 102 can output encoded data to file server 114 or another intermediate storage device that can store encoded data generated by source device 102. Destination device 116 can access stored data from file server 114 via streaming or download. File server 114 can be any type of server device that is capable of storing encoded data and transmitting that encoded data to destination device 116. File server 114 can 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 can access encoded data from file server 114 through any standard data connection, including an Internet connection. This can include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., digital subscriber line (DSL), a cable modem, etc.), or a combination of both that is suitable for accessing encoded data stored on file server 114. File server 114 and input interface 122 can be configured to operate according to a streaming protocol, a download transmission protocol, or a combination thereof.

[0055] Output interface 108 and input interface 122 can represent wireless transmitters / receivers, modems, wired networking components (e.g., Ethernet cards), wireless communication components operating according to any of a variety of IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 comprise wireless components, output interface 108 and input interface 122 can be configured to transmit data, such as encoded data, according to a cellular communication standard, such as 4G, 4G-LTE (Long-Term Evolution), LTE Advanced, 5G, or the like. In some examples where output interface 108 comprises a wireless transmitter, output interface 108 and input interface 122 can be configured to transmit data, such as encoded data, according to other wireless standards, such as an IEEE 802.11 specification, an IEEE 802.15 specification (e.g., ZigBee™), a Bluetooth™ standard, or the like. In some examples, source device 102 and / or destination device 116 can comprise respective system on a chip (SoC) devices. For example, source device 102 can comprise an SoC device to perform functions attributed to point cloud encoder 200 and / or output interface 108, and destination device 116 can comprise an SoC device to perform functions attributed to point cloud decoder 300 and / or input interface 122.

[0056] The techniques of this disclosure can be applied to encoding and decoding to support any of a variety of applications, such as communications between autonomous vehicles, communications between scanners, cameras, sensors, and processing devices (such as local or remote servers), geographic mapping, or other applications.

[0057] The input interface 122 of the destination device 116 receives an encoded bitstream from a computer-readable medium 110 (e.g., a communication medium, storage device 112, file server 114, etc.). The encoded bitstream may include signaling information defined by the point cloud encoder 200, such as syntax elements (also used by the point cloud decoder 300), which have values ​​describing the characteristics and / or processing of the decoded units (e.g., slices, pictures, picture groups, sequences, etc.). The data consumer 118 uses the decoded data. For example, the data consumer 118 may use the decoded data to determine the location of physical objects. In some examples, the data consumer 118 may include a display for presenting point cloud-based images.

[0058] The point cloud encoder 200 and point cloud decoder 300 can each be implemented as any of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When these techniques are implemented in part in software, the device can store instructions for the software in a suitable non-transitory computer-readable medium and use one or more processors to execute the instructions in hardware to perform the techniques of this disclosure. Each of the point cloud encoder 200 and point cloud decoder 300 can be included in one or more encoders or decoders, either of which can be integrated as part of a combined encoder / decoder (CODEC) in the respective device. Devices including the point cloud encoder 200 and / or point cloud decoder 300 can include one or more integrated circuits, microprocessors, and / or other types of devices.

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

[0060] The disclosure can generally refer to“signaling” certain information, such as syntax elements. The term“signaling” can generally refer to the communication of values for syntax elements and / or other data used to decode encoded data. That is, point cloud encoder 200 can signal values for syntax elements in a bitstream. Generally, signaling refers to generating values in a bitstream. As described above, source device 102 can transmit the bitstream to destination device 116 in substantially real-time or non-real-time, such as can occur when syntax elements are stored to storage device 112 for later retrieval by destination device 116.

[0061] The disclosure can generally refer to“parsing” certain information, such as syntax elements. The term“parsing” can generally refer to evaluating a received bitstream for syntax elements, including determining whether a particular syntax element or other information is included in the bitstream.

[0062] ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) is investigating potential needs for standardization of point cloud coding techniques with compression capabilities that significantly exceed the compression capabilities of current approaches and will target the development of a standard. The group is working together in a collaborative effort known as 3-dimensional Graphics Group (3DG) to conduct this exploratory activity to evaluate compression technology designs proposed by experts in the field.

[0063] Point cloud compression activities are categorized into two different approaches. The first approach is“video plus point cloud compression” (V-PCC), which segments 3D objects and projects these segments in multiple 2D planes, which are represented as“patches” in 2D frames, further coded by traditional 2D video codecs, such as High Efficiency Video Coding (HEVC) (ITU-T H.265) codec. The second approach is“geometry-based point cloud compression” (G-PCC), which directly compresses 3D geometry, i.e., the positions of point sets in 3D space, and associated attribute values for each point associated with the 3D geometry. G-PCC addresses 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 in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19088, Brussels, Belgium, January 2020; and a description of the codec is available in G-PCC Codec Description v6, ISO / IEC JTC1 / SC29 / WG11 w19091, Brussels, Belgium, January 2020.

[0064] A point cloud contains a collection of points in a 3D space, and can have attributes associated with the points. The attributes can be color information (such as R, G, B, or Y, Cb, Cr), or reflectance information, or other attributes. Point clouds can be captured by various cameras or sensors such as LIDAR sensors and 3D scanners, and can also be computer generated. Point cloud data can be used in a variety of applications, including but not limited to construction (modeling), cartography (3D models for visualization and animation), and automotive industry (LIDAR sensors to help with navigation).

[0065] The 3D space occupied by the point cloud data can be enclosed by a virtual bounding box. The positions of the points in the bounding box can be represented with some precision; thus, the positions of one or more points can be quantized based on the precision. At the smallest level, the bounding box is partitioned into voxels, which are the smallest unit of space represented by a unit cube. Voxels in the bounding box can be associated with zero, one, or more than one point. The bounding box can be partitioned into multiple regions of cubes / cuboids, which can be referred to as tiles. Each tile can be coded into one or more slices. The division of the bounding box into slices and tiles can be based on the number of points in each partition, or based on other considerations (e.g., a particular region can be coded as a tile). The slice regions can be further divided using partitioning decisions similar to those in video codecs.

[0066] Figure 2 An overview of the point cloud encoder 200 is provided. Figure 3 An overview of the point cloud decoder 300 is provided. The modules shown are logical and do not necessarily correspond one-to-one with the code implemented in the reference implementation of the G-PCC codec (i.e., the TMC13 test model software studied by ISO / IEC MPEG (JTC 1 / SC29 / WG 11). In the example shown, the point cloud encoder 200 can include a geometry encoding unit 250 and an attribute encoding unit 260. Generally, the geometry encoding unit 250 is configured to encode the positions of the points in a point cloud frame to produce a geometry bitstream 203. The attribute encoding unit 260 is configured to encode the attributes of the points of the point cloud frame to produce an attribute bitstream 205. As will be explained below, the attribute encoding unit 260 can also use the positions as well as the encoded geometry from the geometry encoding unit 250 to encode the attributes. Figure 2

[0067] In the example shown, the point cloud decoder 300 can include a geometry decoding unit 350 and an attribute decoding unit 360. Generally, the geometry decoding unit 350 is configured to decode the positions of the points in a point cloud frame to produce a geometry bitstream 303. The attribute decoding unit 360 is configured to decode the attributes of the points of the point cloud frame to produce an attribute bitstream 305. As will be explained below, the attribute decoding unit 360 can also use the positions as well as the decoded geometry from the geometry decoding unit 350 to decode the attributes. Figure 3 ​In the example of FIG. 3, the point cloud decoder 300 can include a geometry decoding unit 350 and an attribute decoding unit 360. Generally, the geometry decoding unit 350 is configured to decode the geometry bitstream 203 to recover the positions of the points in a point cloud frame. The attribute decoding unit 360 is configured to decode the attribute bitstream 205 to recover the attributes of the points of the point cloud frame. As will be explained below, the attribute decoding unit 360 can also use the decoded geometry positions from the geometry decoding unit 350 to decode the attributes.

[0068] In both the point cloud encoder 200 and the point cloud decoder 300, the point cloud positions are first coded. The attribute coding depends on the decoded geometry. In the present disclosure, the coding units with vertical hashing are the options typically used for Category 1 data. The coding units with diagonal cross-hatching are the options typically used for Category 3 data. All other modules are common between Category 1 and Category 3. Figures 4-7

[0069] For Category 3 data, the compressed geometry is typically represented as an octree from the root all the way down to the leaf level of individual voxels. For Category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree from the root down to the leaf level of blocks larger than voxels) plus a model to approximate the surface within each leaf of the pruned octree. As such, both Category 1 data and Category 3 data can share the octree coding mechanism, while Category 1 data can additionally utilize a surface model to approximate the voxels within each leaf. The surface model used is triangulation, which includes 1-10 triangles per block, resulting in a triangle soup. Thus, the Category 1 geometry codec is referred to as a Trisoup geometry codec, while the Category 3 geometry codec is referred to as an octree geometry codec.

[0070] At each node of the octree, the occupancy is signaled (when not inferred) for one or more of its children 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 current node or its children can be predicted using the occupancy of the nodes and / or their children. For points that are sparsely populated in certain nodes in the octree, the codec also supports a direct coding mode, in which the 3D positions of the points are directly encoded. A flag can be signaled to indicate that the direct mode is signaled. At the lowest level, the number of points associated with an octree node / leaf node can also be coded. Figure 8 FIG. 4 is a conceptual diagram showing an example octree partitioning for geometry coding. ​

[0071] Once the geometry is decoded, the attributes corresponding to the points in the geometry are also decoded. When there are multiple attribute points corresponding to a reconstructed / decoded geometry point, the attribute values ​​representing the reconstructed point can be derived.

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

[0073] Attribute decoding can be performed at levels of detail (LOD), where each LOD provides a finer representation of the point cloud attributes. Each LOD can be specified based on a distance metric to neighboring nodes or based on the sampling distance.

[0074] At point cloud encoder 200, the residuals obtained from the output of the decoding method used for attributes are quantized. The residuals can be obtained by subtracting the attribute values ​​from predictions derived based on the points in the neighborhood of the current point and the attribute values ​​of previously encoded points. Context-adaptive arithmetic decoding can be used to decode the quantized residuals.

[0075] The point cloud encoder 200 and point cloud decoder 300 can be configured to decode point cloud data using predictive geometry decoding as an alternative to octree geometry decoding. In predictive tree decoding, the nodes of the point cloud are arranged in a tree structure (which defines the prediction structure), and various prediction strategies are used to predict the coordinates of each node in the tree relative to its predictors.

[0076] Figure 9 This is a conceptual diagram illustrating an example of a prediction tree 900. Figure 9 In the example, prediction tree 900 is shown as a directed graph, with arrows pointing in the prediction direction. Horizontal node 900 is the root node and has no predictors. Double-line nodes (e.g., nodes 902, 904) have two children; diagonal nodes (e.g., node 906) have three children; uncovered nodes have one child; and vertical-line nodes (e.g., nodes 908, 910, 912, 914, and 916) are leaf nodes and have no children. Each node except the root node has only one parent node.

[0077] Therefore, the root node is the root vertex and has no predictors. Other nodes can have one, two, three, or more children. Other nodes can be leaf nodes with no children. In one example, each predictor node has only one parent node.

[0078] In one example, four prediction strategies are specified for each node based on its parent (p0), grandparent (p1), and great-grandparent (p2): • No prediction / zero prediction (0) • Incremental forecast (p0) • Linear prediction ( ) • Parallelogram prediction (p0 + p1 - p2)

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

[0080] In some examples, angle patterns can be used in predictive geometry decoding, where the characteristics of LiDAR sensors can be used more effectively in the decoding prediction tree. The coordinates of the position are transformed to... (radius, azimuth (also known as azimuth value), and laser index), and perform prediction in this domain (the residual is... (Decoded within the domain). Due to rounding errors, The decoding in the equations is not lossless, and therefore corresponds to the second set of residuals in Cartesian coordinates. The following provides a description of the encoding and decoding strategies used for predicting angular patterns in the decoding of geometric structures.

[0081] The angular pattern used to predict geometric decoding can be used in conjunction with a point cloud obtained using a spin lidar model. Here, the lidar has a pattern based on the azimuth angle. N lasers spinning around the Z-axis (e.g., N = 16, 32, 64) (see [reference]) Figure 10A and Figure 10B Each laser can have a different elevation angle. and height In one example, the laser impact has Cartesian integer coordinates. point The Cartesian integer coordinates The model is obtained based on the example spin lidar. Figure 10A and Figure 10Bdefined with respect to the coordinate system described in the background section.

[0082] The angle mode used for predictive geometry coding can include the use of three parameters modeling the position of M, are computed as follows: · · ·

[0083] More precisely, the angle mode used for predictive geometry coding uses a quantized version of denoted as where three integers and are computed as follows: · · · where ·( and are quantization parameters that control the precision of and respectively. · is a function that returns 1 if t is positive and -1 otherwise. · is the absolute value of .

[0084] To avoid reconstruction mismatch due to the use of floating point operations, the values of and can be pre-computed and quantized as follows: where · ( and are quantization parameters that control the precision of and respectively 。 The reconstructed Cartesian coordinates are obtained as follows: · · · where and are and approximations. This computation can be performed using fixed-point representations, look-up tables, and linear interpolation.

[0085] Note that, may differ from for various reasons: - quantization - approximations - model inaccuracies - model parameter inaccuracies Let be the reconstruction residual defined as follows: - - - In this approach, the point cloud encoder 200 can proceed as follows: • Encode the model parameters and and the quantization parameters , , and • Apply a geometry prediction scheme to represent o A new predictor exploiting the lidar characteristics can be introduced. For example, the rotational speed of a lidar scanner around the z-axis is usually constant. Thus, the point cloud encoder 200 can predict the current as follows: where • is a set of potential velocities from which the encoder can choose. The index can be explicitly written to the bitstream or can be inferred from the context based on a deterministic policy applied by both the point cloud encoder 200 and the point cloud decoder 300, and • is the number of skipped points, which can be explicitly written to the bitstream or can be inferred from the context based on a deterministic policy applied by both the encoder and the decoder. It is also referred to as “phi multiplier” later. Note that it is currently only used with the delta predictor. • Encode the reconstruction residual

[0086] The point cloud decoder 300 can proceed as follows: • Decode (e.g., reconstruct) the model parameters and and the quantization parameters , , and • decode the parameters associated with the node according to the geometry prediction scheme used by the point cloud encoder 200 . • compute the reconstructed coordinates . • decode the residual o As described in more details, lossy compression can be supported by quantizing the reconstructed residual • compute the original coordinates o o o

[0087] Lossy compression can be achieved by applying quantization to the reconstructed residual or by discarding points. The quantized reconstructed residual can be computed as follows: • • • where, , and are quantization parameters controlling the accuracy of , and respectively.

[0088] Grid quantization can be used to further improve the RD (Rate-Distortion) performance results. The quantization parameters can be changed at sequence / frame / slice / block level to enable region adaptive quality and for rate control purposes.

[0089] The attribute coding, octree geometry coding and prediction tree geometry coding techniques can be performed as intra prediction coding techniques. That is, the point cloud encoder 200 and the point cloud decoder 300 can code the attribute and position data using only information from the coded point cloud data frame. In other examples, the point cloud encoder 200 and the point cloud decoder 300 can code the attributes, octree geometry and / or prediction tree geometry using inter prediction techniques. That is, the point cloud encoder 200 and the point cloud decoder 300 can code the attribute and position data using information from the coded point cloud data frame as well as information from previously coded point cloud data frames. ​

[0090] As described above, one example of predictive geometry coding uses a prediction tree structure to predict the position of a point. When angular coding is enabled, the x, y, z coordinates are transformed into a radius, an azimuth angle (e.g., an azimuth angle value), and the laser ID and residuals are signaled in these three coordinates and in the x, y, z dimensions. Intra prediction for the radius, azimuth angle, and laser ID can be one of four modes, and the predictors are nodes in the prediction tree classified as parent, grandparent, and great grandparent relative to the current node. In one example, predictive geometry coding can be configured as an intra coding tool because it only uses points in the same frame for prediction. However, in some cases, using points from previously decoded frames (e.g., inter prediction) can provide better prediction and thus better compression performance.

[0091] For predictive geometry coding using inter prediction, one technique involves predicting the radius of a point from a reference frame. For each point in the prediction tree, it is determined whether the point is inter predicted or intra predicted (indicated by a flag). When intra predicted, the intra prediction mode of predictive geometry coding is used. When inter prediction is used, the azimuth angle and laser ID are still predicted with intra prediction, while the radius is predicted from a point in the reference frame that has the same laser ID as the current point and the azimuth angle closest to the current azimuth angle. Another example of this method implements inter prediction for the azimuth angle and laser ID in addition to the radius prediction. When inter coding is applied, the radius, azimuth angle, and laser ID of the current point are predicted based on points in the reference frame that are near the azimuth angle position of the previously decoded points. Additionally, separate context sets are used for inter prediction and intra prediction.

[0092] Figure 11 A method is shown in the following. Figure 11 is a conceptual diagram showing an example of inter predicting a current point (curPoint) 1100 in a current frame from a point (interPredPt) 1102 in a reference frame. Extending inter prediction to azimuth angle, radius, and laser ID can include the following steps: • For a given point, select a previously decoded point (prevDecP0) 1104. • Select a location point (refFrameP0) 1106 in the reference frame that has the same scaled azimuth angle and laser ID as prevDecP0 1104. • In the reference frame, find the first point (interPredPt) 1102 that has an azimuth angle greater than the azimuth angle of refFrameP0 1106. The point interPredPt 1102 can also be referred to as the “next” inter predictor.

[0093] Figure 4To show in more detail Figure 2 A block diagram of an example of a geometric structure coding unit 250. The geometric structure coding unit 250 may include a coordinate transformation unit 202, a voxelization unit 206, a prediction tree construction unit 207, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic coding unit 214, and a geometric structure reconstruction unit 216.

[0094] like Figure 4 As shown in the example, the geometry encoding unit 250 can obtain a set of point locations in a point cloud. In one example, the geometry encoding unit 250 can obtain the location set of points from data source 104 ( Figure 1 The system obtains a set of locations and a set of attributes for points in the point cloud. Locations may include the coordinates of points in the point cloud. The set shape encoding unit 250 can generate a geometric bitstream 203, which includes an encoded representation of the locations of points in the point cloud.

[0095] The coordinate transformation unit 202 can apply a transformation to the coordinates of a point to transform the coordinates from the initial domain to the transformation domain. The transformed coordinates can be referred to as transformed coordinates. The voxelization unit 206 can voxelize the transformed coordinates. Voxelization of the transformed coordinates can include quantization and removal of some points from the point cloud. In other words, multiple points in the point cloud can be grouped into a single "voxel," which can subsequently be considered a point in some respects.

[0096] The prediction tree building unit 207 can be configured to generate a prediction tree based on voxelized transformed coordinates. The prediction tree building unit 207 can be configured to perform any of the prediction tree decoding techniques described above in either intra-frame prediction mode or inter-frame prediction mode. To perform prediction tree decoding using inter-frame prediction, the prediction tree building unit 207 can access points from previously coded frames from the geometry reconstruction unit 216. The arithmetic coding unit 214 can entropy-encode the syntax elements representing the coded prediction tree.

[0097] Instead of performing prediction tree-based decoding, the geometry encoding unit 250 can perform octree-based decoding. The octree analysis unit 210 can generate an octree based on voxelized transformed coordinates. The surface approximation analysis unit 212 can analyze the points to potentially determine a surface representation of the set of points. The arithmetic encoding unit 214 can entropy-encode the syntax elements representing information about the octree and / or the surface determined by the surface approximation analysis unit 212. The geometry encoding unit 250 can output these syntax elements in the geometry bitstream 203. The geometry bitstream 203 may also include other syntax elements, including syntax elements that are not arithmetically encoded.

[0098] Octree-based coding can be performed as an intra-prediction technique or an inter-prediction technique. To perform octree tree coding using inter-prediction, octree analysis unit 210 and surface approximation analysis unit 212 can access points from a previously encoded frame of the geometry reconstruction unit 216.

[0099] Geometry reconstruction unit 216 can reconstruct transformed coordinates of points in the point cloud based on the octrees, the prediction trees, data indicative of surfaces determined by surface approximation analysis unit 212, and / or other information. Due to voxelization and surface approximation, the number of transformed coordinates reconstructed by geometry reconstruction unit 216 can be different from the original number of points of the point cloud. The disclosure can refer to the resulting points as reconstructed points.

[0100] Figure 5 is a block diagram of an example of attribute encoding unit 260 that illustrates Figure 2 in more detail. Attribute encoding unit 250 can include color transform unit 204, attribute transfer unit 208, RAHT unit 218, LoD generation unit 220, lifting unit 222, coefficient quantization unit 224, arithmetic encoding unit 226, and attribute reconstruction unit 228. Attribute encoding unit 260 can encode attributes of points of a point cloud to generate an attribute bitstream 205 that includes an encoded representation of the set of attributes. Attributes can include information about points in the point cloud, such as color associated with points in the point cloud.

[0101] Color transform unit 204 can apply a transform to transform color information of attributes to a different domain. For example, color transform unit 204 can transform color information from an RGB color space to a YCbCr color space. Attribute transfer unit 208 can transfer attributes of original points of a point cloud to reconstructed points of the point cloud. Attribute transfer unit 208 can use original positions of points and positions generated from attribute encoding unit 250 (e.g., from geometry reconstruction unit 216) to perform the transfer.

[0102] The RAHT unit 218 can apply RAHT coding to the attributes of the reconstructed points. In some examples, under RAHT, the attributes of a 2x2x2 block of point locations are extracted and transformed along one direction to obtain four low frequency nodes (L) and four high frequency nodes. Subsequently, the four low frequency nodes (L) are transformed in a second direction to obtain two low frequency nodes (LL) and two high frequency nodes (LH). The two low frequency nodes (LL) are transformed along a third direction to obtain one low frequency node (LLL) and one high frequency node (LLH). The low frequency node LLL corresponds to a DC coefficient, and the high frequency nodes H, LH, and LLH correspond to AC coefficients. The transformation in each direction can be a 1-D transformation with two coefficient weights. The low frequency coefficients can be treated as coefficients of a 2x2x2 block for the next higher level of RAHT transformation, and the AC coefficients are encoded without change; such transformations continue until the top root node. The tree traversal for encoding is top-down, used to compute the weights to be used for the coefficients; the transformation order is bottom-up. The coefficients can then be quantized and coded.

[0103] Alternatively or additionally, the LoD generation unit 220 and the lifting unit 222 can apply LoD processing and lifting, respectively, to the attributes of the reconstructed points. LoD generation is used to partition the attributes into different levels of refinement. Each level of refinement provides a refinement of the attributes of the point cloud. The first level of refinement provides a coarse approximation and contains fewer points; subsequent levels of refinement typically contain more points; and so on. The levels of refinement can be constructed using a distance-based metric, or one or more other classification criteria can be used (e.g., subsampling from a particular order). Thus, all reconstructed points can be included in the levels of refinement. Each level of detail is produced by taking the union of all points up to a particular level of refinement: for example, LoD1 is obtained based on refinement level RL1, LoD2 is obtained based on RL1 and RL2,..., LoDN is obtained by the union of RL1, RL2,..., RLN. In some cases, the LoD generation can be followed by a prediction scheme (e.g., a predictive transform), in which the attributes associated with each point in the LoD are predicted from a weighted average of prior points, and the residuals are quantized and entropy coded. The lifting scheme builds on the predictive transform mechanism, in which an update operator is used to update the coefficients and perform adaptive quantization of the coefficients.

[0104] The RAHT unit 218 and the lifting unit 222 can generate coefficients based on the attributes. The coefficient quantization unit 224 can quantize the coefficients generated by the RAHT unit 218 or the lifting unit 222. The arithmetic coding unit 226 can apply arithmetic coding to syntax elements representing the quantized coefficients. The point cloud encoder 200 can output these syntax elements in the attribute bitstream 205. The attribute bitstream 205 can also include other syntax elements, including syntax elements that are non-arithmeticall encoded.

[0105] Similar to the geometry encoding unit 250, the attribute encoding unit 260 can use intra- or inter-prediction techniques to encode the attributes. The above description of the attribute encoding unit 260 generally describes intra-prediction techniques. In other examples, the RAHT unit 215, the LoD generation unit 220, and / or the lifting unit 222 can also use attributes from previously encoded frames to further encode the attributes of the current frame. In this regard, the attribute reconstruction unit 228 can be configured to reconstruct encoded attributes and store them for possible future use in inter-prediction encoding.

[0106] Figure 6 is shown in more detail Figure 3 A block diagram of an example geometry decoding unit 350. The geometry decoding unit 350 can be configured to perform the reciprocal process performed by the geometry encoding unit 250 of Figure 4 The geometry decoding unit 350 receives the geometry bitstream 203 and produces the positions of the points of the point cloud frame. The geometry decoding unit 350 can include a geometry arithmetic decoding unit 302, an octree synthesis unit 306, a prediction tree synthesis unit 307, a surface approximation synthesis unit 310, a geometry reconstruction unit 312, and an inverse coordinate transformation unit 320.

[0107] The geometry decoding unit 350 can receive the geometry bitstream 203. The geometry arithmetic decoding unit 302 can apply arithmetic decoding (e.g., context- adaptive binary arithmetic coding (CABAC), or other types of arithmetic decoding) to the syntax elements in the geometry bitstream 203.

[0108] The octree synthesis unit 306 can synthesize an octree based on the syntax elements parsed from the geometry bitstream 203. Starting from the root node of the octree, the occupancy of each of the eight child nodes at each octree level is signaled in the bitstream. When signaling indicates that a child node at a particular octree level is occupied, the signaling of the children of that node is signaled. The signaling of the nodes at each octree level is signaled before proceeding to subsequent octree levels.

[0109] At the final level of the octree, each node corresponds to a voxel location; when a leaf node is occupied, one or more points can be specified to be occupied at the voxel location. In some instances, due to quantization, some branches of the octree may terminate before the final level. In such cases, leaf nodes are considered occupied nodes without children. In the instance of using surface approximation in the geometry bitstream 203, the surface approximation synthesis unit 310 can determine the surface model based on the syntax elements parsed from the geometry bitstream 203 and based on the octree.

[0110] Octree-based decoding can be performed as intra-frame prediction or inter-frame prediction. To perform octree decoding using inter-frame prediction, octree synthesis unit 306 and surface approximation synthesis unit 310 can access points from previously decoded frames from geometry reconstruction unit 312.

[0111] The prediction tree synthesis unit can synthesize a prediction tree based on the syntax elements parsed from the geometry bitstream 203. The prediction tree synthesis unit 307 can be configured to synthesize a prediction tree using any of the techniques described above, including either intra-frame prediction or both. To perform prediction tree decoding using inter-frame prediction, the prediction tree synthesis unit 307 can access points from previously decoded frames from the geometry reconstruction unit 312.

[0112] The geometry reconstruction unit 312 can perform reconstruction to determine the coordinates of points in the point cloud. For each location at a leaf node of the octree, the geometry reconstruction unit 312 can reconstruct the node location using the binary representation of the leaf node in the octree. At each corresponding leaf node, the number of points at that corresponding leaf node is signaled; this indicates the number of duplicate points at the same voxel location. When using geometry quantization, the point locations are scaled to determine the reconstructed point location values.

[0113] The inverse transform coordinate unit 320 can apply an inverse transform to the reconstructed coordinates to convert the reconstructed coordinates (positions) of points in the point cloud from the transform domain back to the initial domain. The positions of points in the point cloud can be in the floating-point domain, but the point positions in the G-PCC codec are decoded in the integer domain. The inverse transform can be used to convert the positions back to the original domain.

[0114] Figure 7 To show in more detail Figure 3 A block diagram of an example attribute decoding unit 360. The attribute decoding unit 360 can be configured to perform operations by... Figure 5The attribute encoding unit 260 performs the reciprocal process of the process. The attribute decoding unit 360 receives the attribute bitstream 205 and generates the attributes of the points of the point cloud frame. The attribute decoding unit 356 can include an attribute arithmetic decoding unit 304, an inverse quantization unit 308, a RAHT unit 314, a LoD generation unit 316, an inverse lifting unit 318, a color inverse transform unit 322, and an attribute reconstruction unit 328.

[0115] The attribute arithmetic decoding unit 304 can apply arithmetic decoding to the syntax elements in the attribute bitstream 205. The inverse quantization unit 308 can inverse quantize the attribute values. The attribute values can be based on the syntax elements obtained from the attribute bitstream 205 (e.g., including the syntax elements decoded by the attribute arithmetic decoding unit 304).

[0116] Depending on how the attribute values are encoded, the RAHT unit 314 can perform RAHT decoding to determine the color values for the points in the point cloud based on the inverse quantized attribute values. RAHT decoding is done from the top to the bottom of the tree. At each level, the constituent values are derived using the low frequency coefficients and the high frequency coefficients derived from the inverse quantization process. At the leaf nodes, the derived values correspond to the attribute values of the coefficients. The weight derivation process for the points is similar to the process used at the point cloud encoder 200. Alternatively, the LoD generation unit 316 and the inverse lifting unit 318 can determine the color values for the points in the point cloud using a technique based on the level of detail. The LoD generation unit 316 decodes each LoD, giving a progressively finer representation of the attributes of the points. With a predictive transform, the LoD generation unit 316 can derive a prediction of a point from a weighted sum of points at a preceding LoD or points previously reconstructed in the same LoD. The LoD generation unit 316 can add the prediction to the residual (which is obtained after inverse quantization) to obtain the reconstructed value of the attribute. When a lifting scheme is used, the LoD generation unit 316 can also include an update operator to update the coefficients used to derive the attribute values. In this case, the LoD generation unit 316 can also apply inverse adaptive quantization.

[0117] Further, in the example of the attribute decoding unit 360, the color inverse transform unit 322 can apply an inverse color transform to the color values. The inverse color transform can 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 can transform color information from an RGB color space to a YCbCr color space. Accordingly, the color inverse transform unit 322 can transform the color information from the YCbCr color space to the RGB color space. Figure 7

[0118] ​The attribute reconstruction unit 328 can be configured to store attributes from previously decoded frames. Attribute decoding can be performed using intra-frame prediction or inter-frame prediction techniques. To perform attribute decoding using inter-frame prediction, the RAHT unit 314 and / or the LoD generation unit 316 can access the attributes of previously decoded frames from the attribute reconstruction unit 328.

[0119] Figures 4-7 The various units are shown to aid in understanding the operations performed by the point cloud encoder 200 and the point cloud decoder 300. These units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit is a circuit that provides a specific function and is preset in terms of the operations it can perform. A programmable circuit is a circuit that can be programmed to perform various tasks and provide flexible functionality in the operations it can perform. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by instructions from software or firmware. A fixed-function circuit can execute software instructions (e.g., for receiving or outputting parameters), but the type of operation performed by a fixed-function circuit is generally immutable. In some examples, one or more units in the unit may be different circuit blocks (fixed-function or programmable), and in some examples, one or more units in the unit may be integrated circuits.

[0120] Figure 12 This is a flowchart illustrating an example decoding process associated with an "inter-frame flag" for each point of signaling. The inter-frame flag for point-of-signaling indicates whether inter-frame prediction is applied for that point. The flowcharts in this disclosure are provided as examples. Other examples may include more, fewer, or different steps, or the steps may be performed in a different order.

[0121] exist Figure 12 In the example, the point cloud decoder 300 can determine whether the inter-frame flag of the next point to be decoded (i.e., the current point of the current frame of the point cloud data) indicates that the current point is inter-predicted (1200). If the inter-frame flag of the current point does not indicate that the current point is inter-predicted (the "No" branch of 1200), the point cloud decoder 300 can identify intra-prediction candidates (1202). For example, the point cloud decoder 300 can determine an intra-prediction strategy (e.g., no prediction, incremental prediction, linear prediction, parallelogram prediction, etc.) to determine the predictor of the current point. The syntax element (pred_mode) signaled in the geometry bitstream 203 can indicate the intra-prediction strategy used to determine the predictor of the current point.

[0122] On the other hand, if the inter-frame flag for the current point indicates that the current point is inter-predicted (the "Yes" branch of 1200), the point cloud decoder 300 can identify a previous point (e.g., previous point) in the decoding order (1204). The previous point can have coordinates (r, phi (i.e., azimuthal value), and laser ID). The point cloud decoder 300 can then derive a quantized phi coordinate (i.e., azimuthal coordinate) for the previous point (1206). The quantized phi coordinate can be denoted as Q(phi) or qphi. The point cloud decoder 300 can then check a reference frame (e.g., reference frame) for a point (i.e., inter-prediction point (e.g., interPredPt)) having a quantized phi coordinate greater than the quantized phi coordinate of the previous point (1208). The point cloud decoder 300 can use the inter-prediction point as a predictor for the current point (1210).

[0123] Regardless of whether the point cloud decoder 300 determines a predictor for the current point using intra-prediction (e.g., as described with respect to step 1202) or inter-prediction (e.g., as described with respect to steps 1204-1210), the point cloud decoder 300 can add a delta phi multiplier (1212).

[0124] In the above-described inter-prediction method for predicting geometry, when inter- coding is applied using the following steps, the radius, azimuth, and laser ID of a current point are predicted based on points in a reference frame that are near a collocated azimuthal position: for a given point, a previous decoded point is selected, a location in the reference frame having the same scaled azimuth and laser ID as the given point is selected, and locations in the reference frame having azimuths greater than the location in the reference frame are selected to be used as inter-prediction points, starting from a first point.

[0125] Figure 13 is a conceptual diagram illustrating example additional inter-predictor points 1300 obtained from a first point having an azimuth greater than the inter-predictor point 1314. In the above-described inter-prediction method for predicting geometry, when inter- coding is applied using the following steps, the radius, azimuth, and laser ID of a current point are predicted based on points in a reference frame that are near a collocated azimuthal position: for a given point, a previous decoded point is selected, a location in the reference frame having the same scaled azimuth and laser ID as the given point is selected, and locations in the reference frame having azimuths greater than the location in the reference frame are selected to be used as inter-prediction points, starting from a first point. Figure 11 and Figure 12 In the above-described inter-prediction method for predicting geometry, when inter- coding is applied, the radius, azimuth, and laser ID of a current point (current point 1100) are predicted based on points (inter-prediction points 1104) in a reference frame (reference frame 1106) that are near a collocated azimuthal position (reference location 1110) in the reference frame. In the example of Figure 13 , the point cloud encoder 200 and the point cloud decoder 300 can determine additional inter-predictor points 1300 using the following steps: a. for a given point (current point 1304 of current frame 1306), determine a previous point 1308 in the current frame 1306 (the "previous decoded point" in Figure 13 ); b. Determine a reference location 1312 in the reference frame 1310 that has the same scaled azimuth angle and laser ID as the previous point 1308 determined in step a) Figure 13 ("reference point with the same scaled azimuth angle and laser ID") in c. Determine a location in the reference frame 1310 as the first point with a larger azimuth angle (e.g., scaled azimuth angle) than the reference location 1312 determined in step b) to be used as an inter prediction sub-point Figure 13 (inter prediction point 1314) in

[0126] An additional inter prediction sub-point can be obtained by finding the first point with a larger azimuth angle (e.g., scaled azimuth angle) than the inter prediction point 1314 determined in step c) as shown in Figure 13 ("additional inter prediction point 1300") in Figure 13 If inter coding has been applied, additional signaling can be used to indicate which of the prediction sub-points is selected. The additional inter prediction sub-point can also be referred to as a "Next Next" inter prediction sub-point.

[0127] A context selection algorithm can be applied to code the inter prediction flag. For example, the inter prediction flag values of the five previously coded points can be used to select the context of the inter prediction flag in the prediction geometry coding.

[0128] Now adaptive azimuth quantization is discussed. When spherical coordinates are used in the prediction geometry coding of LIDAR acquired point clouds in G-PCC Ed 1, the azimuth angle is quantized regardless of the distance between the point and the LIDAR acquisition head. The sampling result of this quantization is roughly as shown in Figure 14 . Figure 14 is a conceptual diagram showing the sampling of the azimuth angle and radius using uniform quantization as used in G-PCC Ed 1. Figure 14 shows that the sampling density is highly close to the origin where the spin sensor head is located and becomes lower in the area far away from the spin sensor head. Depending on the value Δφ, too much precision is obtained for the point (rl, φl) close to the spin sensor head, or not enough precision is obtained for the point (r2, φ2) far away from the sensor head. In the first case, there is too much coded information for the residual of the azimuth prediction for the close point. On the other hand, in the second case, not enough information is coded for the residual of the azimuth prediction for the far away point, thus making the inverse transformed (x, y) values have accurate precision, thus resulting in higher amplitude residuals in the Cartesian coordinates (x res , y res ) to be coded. In both cases, the azimuth the compression is not optimal. In summary, when considering the overall compression scheme of points in Cartesian space, uniform quantization of the azimuth angle does not lead to an optimal representation of the point position.

[0129] Some techniques can adaptively quantize the azimuth angle depending on the radius, improving the compression performance. To compress more efficiently, it is proposed to use an adaptive quantization step size for the azimuth angle Using the value of the reconstructed radius r 2D , the proposed non-uniform adaptive angle quantization step size is changed to: Δφ(r 2D ) = Δφ arc / r 2D (1)

[0130] By using this non-uniform quantization step size, the length of the arc resulting from the Δφ(.) quantization step size is uniform for any radii r1, r2, since this length is equal to r1.Δφ(r1) = Δφ arc = r2.Δφ(r2).

[0131] Therefore, This non-uniform quantization step size in the azimuth Figure 15 and Figure 16 domain can provide a uniform quantization of a circular arc with quantization step size Δφ arc for any radii as shown in Figure 16 It is also shown that the more uniform angular sectors implied by the uniform quantization of the circular arc lead to a more uniform maximum error introduced by the quantization of Figure 15 is a conceptual diagram showing the non-uniform quantization of the azimuth angle leading to the concept of a uniformly quantized arc. Figure 16 is a conceptual diagram showing the uniform quantization of a circular arc using the Δφ arc quantization step size.

[0132] ​Implementation details are in J. Taquet, S. Lasserre, S. Gao, M.-L. Cameron, Improved Quantization of Azimuthal Angle in Predictive Geometry Coding, ISO / IEC JTC1 / SC29 / WG7 m55979, January 2021, with some additional modifications in J. Taquet, S. Lasserre, S. Gao, M.-L. Cameron, Report on Predictive Geometry Improvement, ISO / IEC JTC1 / SC29 / WG7 m56482, April 2021. Integer division in the inverse quantization of the azimuthal angle residual is approximated by using the Newton-Raphson division approximation algorithm. In addition, the internal precision used to represent the azimuthal angle is increased (e.g., 24 bits for lossless), which leads to modifications of the implementation of the integer sine and cosine functions to maintain 32-bit arithmetic, but this modification does not affect the specification definition of these functions. It also leads to adaptations of the scaling of the spherical coordinates to the attribute coding due to the increased precision.

[0133] The improved quantization of the azimuthal angle has been made backward compatible with G-PCC Ed 1 by adding a flag in the geometry parameter set extension to enable / disable this feature.

[0134] The coding of the azimuthal angle residual is now discussed. In addition to the adaptive azimuthal angle quantization described above, the following process to improve the coding of the azimuthal angle residual can be implemented. When spherical coordinates are used in the predictive geometry coding of a point cloud acquired by a LIDAR in G-PCC Ed. 1, the prediction of the azimuthal angle of a point can be refined by adding the number ‘k’ (encoded in the bitstream) of azimuthal angle steps to the azimuthal angle prediction provided by the ‘n’th predictor: (2)

[0135] The azimuthal angle step may substantially correspond to the rotation performed by the LIDAR sensor head between two consecutive attempts to acquire a point with the laser using a given elevation angle. It corresponds to an azimuthal angle provided by: (3) ​​Among them, 'geom_angular_azimuth_speed_minus1' is obtained from the geometry parameter set (GPS).

[0136] In G-PCC Ed.1, there are no constraints on the value of 'k'. Therefore, by predicting the sub- Predicted azimuth residual : (4) It is boundless.

[0137] To limit residuals Make its suitable range The value of 'k' can be determined as follows: (5)

[0138] More precisely, in the context of the adaptive quantization of the aforementioned azimuth angle, the quantized azimuth angle residual... The following equation will be satisfied: (6) in It is an adaptive quantization of 'x' based on the decoded radius 'r'.

[0139] Then, by using boundaries The value of can improve the quantized residual. Entropy decoding.

[0140] First, calculate the bounds for each point as follows: : const int rec_radius_scaling = rPred + residual[0] << 3; / / ; int phiBound = divExp2RoundHalfInf(speed_r, _geom_angular_azimuth_scale_log2+1);

[0141] Then, encoder 200 can perform as follows: Figure 17 The entropy encoding shown. Figure 17 This is a conceptual diagram illustrating an example of entropy encoding of the azimuth angle of the quantized residual using a boundary 'B'. If the boundary 'B' is equal to zero, then the quantized residual... If the value is zero, no decoding is needed. Otherwise, the flag is encoded to indicate... Is it equal to zero? If so... is non-zero, then the sign binary is encoded. Then, if the bound 'B' is equal to one, then is negative one or one, and no further encoding is needed. Otherwise, the flag is encoded to indicate whether the absolute value of is equal to one. If the absolute value of is not equal to one, but the bound 'B' is equal to two, then is negative two or two, and the encoding stops. Otherwise, the remainder (i.e., the ) is encoded using an exp-Golomb code. The number of entropy coding contexts can be equal to 24.

[0142] The process for scaling the azimuth step is now discussed. In G-PCC Ed.1, the Cartesian coordinate prediction (X, y) can be obtained using the following equation: (7) In the above equation, is the reconstructed azimuth, and is the reconstructed radius.

[0143] If implemented as an addition to the process presented above, where is the adaptive quantization of the azimuth described in the chapter titled "Adaptive azimuth quantization", is the inverse quantization, and is the predicted azimuth residual.

[0144] In G-PCC Ed.1 and the above process, 'r 2D-rec = r « geom_angular_radius_inv_scale_log2'; the precision of the radius 'r' used internally in the codec and coded by the codec compared to the coded point cloud Cartesian precision is reduced by several bits, which is equal to 'geom_angular_radius_inv_scale_log2' obtained from the geometry parameter set (this is equal to the quantization of the radius).

[0145] The process for implementing the scaling of the azimuth step is now discussed. If both the improved quantization of the azimuth as presented above and the improved azimuth residual coding as presented above are implemented, then the scaling of the azimuth step is implemented using the bound computed for each point of the entropy coding (see above) If the integer bound 'B' is equal to 0 or equivalently 'B < 1', then: , (8) where ​It is the azimuth step size after scaling.

[0146] We will now discuss the process used to calculate the scaled azimuth step size. This involves finding the optimal number of scaled azimuth step sizes 'k'. Decode, optimal It will become: (9)

[0147] One problem with equation (9) is that it requires integer division in decoder 300. Therefore, implementation of... An approximation of division. To calculate this approximation, use '2'. n 'Factor' The highest power, making .

[0148] Scaled azimuth step It can be started from 'n=0' and then from '2'. n Iterative scaling and , and when Angles less than 2π (i.e., '2') geom_angular_azimuth_scale_log2 When '), for and Both use a continuous bit-by-bit shifting operation with 1 bit, as follows: auto rec_radius_scaling = pred[0] + residual[0] << 3; / / auto azimuthSpeed ​​= _geomAngularAzimuthSpeed; if (rec_radius_scaling && rec_radius_scaling < Th0) { const int32_t pi = 1 << _geom_angular_azimuth_scale_log2 – 1; int32_t speed_r = ; while (speed_r < pi) { speed_r <<= 1; azimuthSpeed ​​<<= 1; } }

[0149] Then, in the encoder 200, the number of azimuth angle steps 'qphi', and in both the encoder 200 and the decoder 300, the azimuth angle predictor updated by the number of azimuth angle steps 'pred[l]' is calculated using 'azimuthSpeed' instead of '_geomAngularAzimuthSpeed = gps.geom_angular_azimuth_speed_minusl + 1', as follows: - qphi = residual[l] >= 0? (residual[l] + (_geomAngularAzimuthSpeed » 1)) - / _geomAngularAzimuthSpeed - : -(-residual[l] + (_geomAngularAzimuthSpeed » 1)) - / _geomAngularAzimuthSpeed; - pred[l] += qphi ; + qphi = residual[l] >= 0? (residual[l] + (azimuthSpeed » 1)) + / azimuthSpeed + : -(-residual[l] + (azimuthSpeed » 1)) + / azimuthSpeed; + pred[l] += qphi ; residual[l] = point[l] - pred[l];

[0150] The radius residual sign coding is now discussed. In the predictive geometry encoder, the sign of the radius residual is encoded with a single entropy coding context. Because the radius residual sign should be more or less piecewise constant when predicting the radius from the previous point radius (i.e., the parent node in the prediction tree), the sign probability will be highly correlated to the sign value of the previous encoded point's radius when the parent node is used as the predictor. Furthermore, when consecutive coded points have similar azimuth angles (i.e., the number of azimuth angle steps for the azimuth angle predictor encoded in the bitstream and added to the predictor is zero), the probability should increase.

[0151] Thus, the presented method uses a table of 2x2x2x2 (i.e., 16) contexts as follows: ctx sign = ctxTab[I previous ][I penulm ][I last ][s res,prec (10) Where 'ctxTab' is the context table, 'I previous 'I' is a Boolean value indicating whether the selected predictor is the parent node. pendulm 'I' is a Boolean value indicating whether the encoded number of azimuth steps used for the preceding point is equal to zero. last ' is a Boolean value indicating whether the encoded number of azimuth steps used for the current point is equal to zero, and 's res,prec ' is a Boolean value indicating the symbol of the final decoded radius residual.

[0152] Now we discuss the predictor list. After the laser beam has moved from a first object at a first distance to another object at a different distance, has passed the other object, and is being transmitted back to the first object, a dynamic list of predictors is derived to perform better predictions. This may happen, for example, when one object is in front of another object (e.g., similar to a car entering through a wall), or when the object has an opening (e.g., a wall with an open door or window, or an entrance wall), such as when... Figure 18 As shown. Figure 18 This is a conceptual diagram illustrating an example of laser detection of two different objects.

[0153] From N, a radius and an azimuth angle Instead of using a list of G-PCC predictors, a list of N predictors is constructed using a predictor buffer (e.g., a prediction buffer). Predictor derivation and buffer management are detailed above. Decoding of predictor indices can be performed using unary decoding with a context per predictor index.

[0154] The export of the predictor is performed as follows: • If the predicted point is the first point of the tree (i.e., has no parent node), then the predicted child PR0 is set to equal to (r min (0, 0), other predictor sub-PR n>0 It is set to equal to (0, 0, 0). • If the point has a parent point, then a. The predictor PR0 is set to equal to ,in It is the laser index θ value of parent point p0 decoded in the parent node, and where It is the first pair in the buffer (as understood from buffer management), which is also equal to the radius r and the azimuth angle of the parent point p0 decoded in the parent node, respectively. b. Prediction sub-PR n>0 is set equal to wherein is the laser index value of the parent point p0 coded in the parent node, and wherein is the n-th pair in the buffer, and if then k is equal to 0, otherwise k is equal to the integer division .

[0155] Since integer divisions in the decoder 300 are better avoided, the divApprox function of G-PCC can be used to approximate .

[0156] The derived buffer for the prediction sub-PR can be managed as follows. Each pair buffer is first initialized to (0, 0). After the coding of a point, the encoder 200 or the decoder 300 can update the buffer as follows: a. If the absolute value of the coded (decoded) radius residual r res is higher than a threshold Th, the encoder 200 or the decoder 300 can determine that the laser has detected a new object. The encoder 200 or the decoder 300 can then insert a new element in the front of the buffer, wherein and denote the reconstructed radius and the reconstructed azimuth angle of the coded (decoded) point, respectively. The encoder 200 or the decoder 300 can discard the last element of the buffer. For n = 3 to 1, the encoder 200 or the decoder 300 can discard the last element of the buffer by setting the buffer element equal to The encoder 200 or the decoder 300 can then set the first buffer element value from the decoded point. b. If the absolute value of the coded (decoded) r res is not higher than the threshold Th, the encoder 200 or the decoder 300 can determine that the laser has detected an object present in the buffer. The encoder 200 or the decoder 300 can then move the element of the buffer with index predIdx, which corresponds to the index of the prediction sub-PR that has been used for the prediction, to the front of the buffer. The encoder 200 and the decoder 300 can update the buffer to include i.e. the reconstructed radius and the reconstructed azimuth angle of the coded (decoded) point. For n = predIdx to 1, the encoder 200 and the decoder 300 can perform this operation by setting the buffer element equal to and then set the first buffer element value from the decoded point. ​c. The threshold Th can be equal to gps. predgeom_radius_threshold_for_pred_list and has been fixed in the encoder to 2048 » ps.geom_angular_radius_inv_scale_log2. gps. predgeom_radius_threshold_for_pred_list is a syntax element indicating the threshold value Th. s.geom_angular_radius_inv_scale_log2 is a precision value (i.e., number of bits) used in some intermediate derivations of the radius component (in particular, involved in the spherical to Cartesian conversion, or vice versa).

[0157] The processes of encoding and decoding the magnitude of the radius residual are now discussed. These processes can improve the encoding of the magnitude of the radius residual in the prediction tree geometry coding of G-PCC for point cloud compression of LIDAR acquisitions.

[0158] Figure 19 is a flowchart illustrating an example encoding method of the magnitude of the radius residual. In Figure 19 the example, the encoder 200 encodes the bits of the magnitude of the radius residual using a context adaptive entropy encoder and can determine the context according to the context determination process described elsewhere in this disclosure.

[0159] As shown in Figure 19 the encoder 200 can obtain a point (1900) having coordinates The encoder 200 can then determine a predictor P pred (1902). The encoder 200 can use the coordinates of the point and the coordinates of the predictor P pred to determine a residual (1904). The residual can be specified by a value For example, the encoder 200 can subtract the corresponding coordinate values of the point and the predictor to determine the residual. Additionally, the encoder 200 can obtain a predictor index i and an integer qphi (1906). For example, the encoder 200 can select the predictor index i based on an audit of one or more possible values of i to determine which provides the best performance. The integer qphi is a quantized value of the azimuthal angle residual. The encoder 200 can then determine a context index ctxIdx (1908). The encoder 200 can select a context ctxIdx (1910) based on the context index ctx An example process for determining the context index ctxIdx and the context ctx is provided below.

[0160] After obtaining the radius residual, the encoder 200 can determine a value of a flag f0, the binary entropy encoder can encode the value of the flag f0 based on a context ctx The value of the flag f0 is encoded, and the encoder 200 can signal the encoded value of the flag f0 in the geometry bitstream 203 (1912). The value of the flag f0 indicates whether the radius residual r 2D_res is equal to 0.

[0161] The encoder 200 can then determine whether the radius residual r 2D_res is equal to 0 (1914). If the radius residual r 2D_res is equal to 0 (the “yes” branch of 1914), the encoding of the radius residual r 2D_res is finished, because r 2D_res = 0 is encoded. Otherwise, if the radius residual r 2D_res is not equal to 0 (the “no” branch of 1914), the encoder 200 can determine a value of a flag f1, the encoder 200 can perform entropy encoding of the value of the flag f1 based on a context ctx The value of the flag f1 is encoded, and the encoder 200 can include the entropy encoded value of the flag f1 in the geometry bitstream 203 (1916). The flag f1 indicates whether the absolute value |r 2D_res | is equal to 1.

[0162] The encoder 200 can then determine whether the absolute value |r 2D_res | is equal to 1 (1918). If the absolute value |r 2D_res | is equal to 1 (the “yes” branch of 1918), the encoder 200 has finished the encoding of the magnitude of the radius residual r 2D_res . Otherwise, if the absolute value |r 2D_res | is not equal to 1 (the “no” branch of 1918), the encoder 200 determines a value of a flag f2, the arithmetic encoding unit 214 of the encoder 200 performs binary entropy encoding of the value of the flag f2 based on a context ctx The value of the flag f2 is encoded, and the encoder 200 signals that the entropy encoded value of the flag f2 is the geometry bitstream 203 (1920). The flag f2 indicates whether the absolute value |r 2D_res | is equal to 2.

[0163] The encoder 200 can then determine whether the absolute value |r 2D_res | is equal to 2 (1922). If the absolute value |r 2D_res | is equal to 2 (the “yes” branch of 1922), the encoder 200 has finished the encoding of the magnitude of the radius residual r 2D_res . Otherwise, if the absolute value |r 2D_res| is not equal to 2 (the "no" branch of 1922), then the encoder 200 can use exp-Golomb encoding to encode the selected context the absolute value (| r 2D_res | - 3) (1924).

[0164] An overview of the proposed decoding method for the magnitude of the radius residual is shown in Figure 20 FIG. 6. Figure 20 is a flowchart showing an example decoding method for the magnitude of the radius residual. In the example of Figure 20 FIG. 6, the decoder 300 can receive a bitstream (e.g., the geometry bitstream 203). The decoder 300 can obtain the predictor index i and the integer qphi (2000) from the bitstream. The decoder 300 can then determine the context index ctxIdx (2002). The decoder 300 can select the context ctx based on the context index ctxIdx (2004). Example processes for determining the context index ctxIdx and the context ctx are provided below.

[0165] The decoder 300 can decode the value of the flag f0 from the bitstream (2006). The decoder 300 can decode the value of the flag f0 using the context ctx The flag f0 indicates whether the residual r 2D_res is equal to 0. The decoder 300 can then determine whether the flag f0 is equal to 1 (2008). If the value of the flag f0 is equal to 1 (the "yes" branch of 2008), then the decoder 300 has completed decoding the residual r 2D_res . Otherwise, if the value of the flag f0 is not equal to 1 (the "no" branch of 2008), then the decoder 300 can decode the value of the flag f1 from the bitstream (2010). The decoder 300 can decode the value of the flag f1 using the context ctx The flag f1 indicates whether the residual r 2D_res is equal to 1. The decoder 300 can then determine whether the flag f1 is equal to 1 (2012). If the value of the flag f1 is equal to 1 (the "yes" branch of 2012), then the decoder 300 has completed decoding the residual r 2D_res .

[0166] Otherwise, if the value of the flag f1 is not equal to 1 (the "no" branch of 2012), then the decoder 300 can decode the value of the flag f2 from the bitstream (2014). The decoder 300 can decode the value of the flag f2 using the context ctx The flag f2 indicates whether the residual r 2D_reswhether equal to 2. If the value of the flag f2 is equal to 1 (the "yes" branch of 2016), then the decoder 300 has completed decoding the residual r 2D_res . Otherwise, if the value of the flag f2 is not equal to 1 (the "no" branch of 2016), then the exp-Golomb decoder of the decoder 300 can decode a series of bits from the bitstream (2018). The series of bits indicates the absolute value of the residual r 2D_res | - 3).

[0167] As mentioned above, the encoder 200 and the decoder 300 determine a context index ctxIdx and a context ctx . The process of determining the context ctx is now discussed. To encode each bit of the radius residual amplitude (e.g., r 2D_res ), the encoder 200 and the decoder 300 determine a context index i , qphi by using a predictor index and an integer number of basic azimuth steps according to the following equation: (11) and then select a context in a context table to entropy encode the bit of the amplitude of the radius residual according to . (12)

[0168] The following describes the dependency of qPhi on azimuth speed. For some techniques, it is proposed to add a new context to the adaptive model used for the coding of 'k' based on the following: a. - the intra-predictor index b. - an estimate of the number of times the azimuth speed is increased. This requires the computation of this estimate at both the encoder and the decoder. This is done by adding the following source code:

[0169] The newly computed parameter (recordAzimuthSpeed, also called azimuthSpeedIndex) and the intra-predictor index are used as additional parameters in the function in charge of encoding, decoding or estimating the cost of qPhi.

[0170] The new context is defined by: int interCtxIdx = interFlag? 2 : 0; int interCtxIdx_ = interFlag? 6 : 0; if (interFlag){ interCtxIdx_ += azimuthSpeedIndex; }else{ if (azimuthSpeedIndex>0) interCtxIdx_ += azimuthSpeedIndex + 1; else{ if (predIdx!= 0){ interCtxIdx = 1; interCtxIdx_ = 1; } } }

[0171] The value of interCtxIdx is then used in parsing the syntax elements associated with qphi, such as ptn_phi_mul_abs_prefix (greater than 0 and greater than 1), ptn_phi_mul_abs_minus2, ptn_phi_mul_abs_minus9, and ptn_phi_mul_sign.

[0172] The dependency on the reconstructed radius is described next. It is found that the distribution of is related to the radius of the node. Figure 21A and Figure 21B Classify points in the LiDAR point cloud as points with / without abrupt radius I changes, and show the relationship. Points with abrupt changes are defined as points with large prediction residual Δr / r > threshold T, where T is a predefined threshold.

[0173] As shown in Figure 21A and Figure 21B , points without abrupt radius changes tend to have small and stable values of around zero, while points with abrupt radius changes have more variable values. In this way, whether the radius changes abruptly can be used as an indicator of the magnitude of .

[0174] An example implementation of the above observation is to incorporate the above indication into the context when coding resPhi. The modified context is modeled as follows:

[0175] ​To code resPhi = 0 or abs(resPhi) = 1, the following contexts are used: a. the prediction mode of the node (inter or intra); and b. whether the predictor index of the node is equal to zero. c. whether the radius changes drastically

[0176] To code the value of abs(resPhi) - 2 using exp-Golomb coding, the following contexts are used: a. the prediction mode of the node (inter or intra); b. whether boundPhi - 3 > 6; c. whether the radius changes drastically d. the count of coded bins in the prefix or suffix of the exp-Golomb codeNum.

[0177] Some techniques can have certain problems. As described above with respect to coding of the azimuth angle residual (e.g., the description of "Now discuss coding of the azimuth angle residual"), the value of the azimuth angle bound B is used to code the azimuth angle residual - both to signal the syntax element and to select the context. The context used to code the remainder (i.e., ) also uses the value of the bound B.

[0178] The coding is then performed as shown in Figure 17 . If the bound 'B' is equal to zero, the quantized residual is zero, so no coding is needed. Otherwise, a flag is coded to indicate whether it is equal to zero. If it is non-zero, the sign bin is coded. Then, if the bound 'B' is equal to one, the is either negative one or one, so no more coding is needed. Otherwise, a flag is coded to indicate whether the absolute value is equal to one. If not, but the bound 'B' is equal to 2, the is either negative two or two, and the coding stops. Otherwise, the remainder (i.e., ) is coded using expGolomb code. The number of entropy coding contexts is equal to 24.

[0179] The implementation is as follows: if (boundPhi == 0) return 0; int interCtxIdx = interFlag? 1 : 0; int ctxL = interFlag? (refNodeIdx>1? 1 : 0) : (predIdx? 1 : 0); / / int ctxL = predIdx? 1 : 0; if (!_aed->decode(_ctxResPhiGTZero[interCtxIdx][ctxL])) return 0; int absVal = 1; if (boundPhi>1) absVal += _aed->decode(_ctxResPhiGTOne[interCtxIdx][ctxL]); int interEGkCtxIdx = interFlag? (refNodeIdx>1? 2 : 1) : 0; if (absVal == 2&&boundPhi>2) absVal += _aed->decodeExpGolomb(1, _ctxResPhiExpGolombPre[interEGkCtxIdx][boundP–i - 3>6], _ctxResPhiExpGolombSuf[interEGkCtxIdx][boundP–i - 3>6]);

[0180] The value of bound B is computed as follows:

[0181] First, the bound is computed for each point as follows: : const int rec_radius_scaling = rPred + residual[0]<<3; / / ; int phiBound = divExp2RoundHalfInf(speed_r, _geom_angular_azimuth_scale_log2+1);

[0182] The value of rPred is a predicted residual and can require the reconstructed radius of a preceding point in decoding order. This can mean that, in order to resolve an azimuthal residual (e.g., azimuthal residual value), the reconstructed value of the radius of a preceding point is necessary. This results in the parsing of syntax elements depending on the reconstruction of points. Typically, many systems parse NAL units / syntax structures independent of decoding / reconstruction. This allows the parsing module to be simple and independent. If there is a dependency on the reconstruction, the parsing system must either include a decoding / reconstruction module or must be tightly coupled with a decoding / reconstruction module. In many systems, this is undesirable, expensive, and impractical.

[0183] Similarly, in the above description of the dependency of qPhi on azimuthal velocity (e.g., the above description for “The following describes the dependency of qPhi on azimuthal velocity”), the context of the qphi syntax element depends on azimuthSpeedIndex and speedTimesR, which in turn depend on the reconstructed radius, creating a parsing dependency on decoding / reconstruction.

[0184] Similarly, in the above description of the dependency of the reconstructed radius (e.g., the above description for “The following describes the dependency on the reconstructed radius”), the context in which the resPhi syntax element is coded depends on the reconstructed radius (when checking whether the radius changes sharply), creating a parsing dependency on decoding / reconstruction.

[0185] According to one or more examples, the point cloud encoder 200 can signal and the point cloud decoder 300 can parse information for an azimuthal residual value for a current point of a point cloud independent of a radius value of the current point or a radius value of a previous point of the point cloud preceding the current point in decoding order. In this way, problems associated with parsing dependencies on decoding / reconstruction can be minimized.

[0186] For example, as shown in Figure 17 If B is equal to zero, the point cloud decoder 300 does not parse the azimuthal residual value. Thus, whether the point cloud decoder 300 parses the azimuthal residual value depends (e.g., is conditional) on the value of B. In this disclosure, the variable “B” is the same as boundPhi or phiBound. That is, this disclosure uses the variables B, boundPhi, and phiBound interchangeably.

[0187] As described above, the value of boundPhi (i.e., B or phiBound) is based on the value of speed_r. For example, int phiBound equals divExp2RoundHalfInf(speed_r, _geom_angular_azimuth_scale_log2 + 1). Also, speed_r is based on rec_radius_scaling. For example, auto speed_r equals The value of rec_radius_scaling is based on rPred. For example, const int rec_radius_scaling = rPred + residual[0] << 3. As described above, the value of rPred is a predicted residual and requires a reconstructed radius of a previous point.

[0188] Thus, phiBound (i.e., B or boundPhi) is based on a reconstructed radius of a previous point. This means that if point cloud decoder 300 resolves an azimuth residual value depends on phiBound (i.e., B or boundPhi), point cloud decoder 300 resolves whether the azimuth residual value depends on a radius value of a previous point of the point cloud.

[0189] According to one or more examples described in this disclosure, point cloud encoder 200 can signal and point cloud decoder 300 can resolve information for an azimuth residual value of a current point independent of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in a decoding order. That is, point cloud decoder 300 can resolve and point cloud encoder 200 can signal information for the azimuth residual value independent of whether a condition based on the radius value of the current point or the radius value of the previous point is satisfied.

[0190] For example, point cloud decoder 300 can resolve and point cloud encoder 200 can signal information for the azimuth residual value independent of whether the value of boundPhi (i.e., B or phiBound) equals zero. That is, signaling or resolving information for the azimuth residual value is not conditioned on the value of boundPhi. Again, the value of boundPhi is based on the radius value of the current point or the radius value of the previous point. Thus, by resolving or signaling information for the azimuth residual value independent of whether the value of boundPhi (i.e., B or phiBound) equals zero, point cloud decoder 300 can resolve and point cloud encoder 200 can signal information for the azimuth residual value independent of whether a condition based on the radius value of the current point or the radius value of the previous point is satisfied.

[0191] Further, the point cloud encoder 200 and the point cloud decoder 300 can determine one or more context values for encoding or decoding the azimuth residual value of the current point independent of the radius value of the current point or the radius value of the previous point. The point cloud encoder 200 and the point cloud decoder 300 can context-based encode or decode the azimuth residual value of the current point based on the one or more context values.

[0192] For example, as indicated in the pseudo code above, in some techniques, whether the point cloud decoder 300 parses "ctxResPhiGTOne[interCtxIdx][ctxL]" (e.g., a context value) is based on the value of boundPhi (e.g., based on the value of boundPhi being greater than 1). If boundPhi is greater than 2, the point cloud decoder 300 can parse context values with additional conditions of whether boundPhi - 3 > 6 (e.g., ctxResPhiExpGolombPre[interEGkCtxIdx] and ctxResPhiExpGolombSuf[interEGkCtxIdx]). In one or more examples, the point cloud decoder 300 can parse the context values independent of the value of boundPhi. That is, the point cloud decoder 300 can not need to first determine whether boundPhi is greater than 1, greater than 2, or whether boundPhi - 3 > 6 to determine the context values.

[0193] As described above, in some techniques, the quantization parameter can be based on the radius value of the current point or the radius value of the previous point. In one or more examples, the point cloud encoder 200 and the point cloud decoder 300 can determine the quantization parameter for the azimuth residual value of the current point independent of the radius value of the current point or the radius value of the previous point of the point cloud. The point cloud encoder 200 can quantize and the point cloud decoder 300 can dequantize the azimuth residual value based on the quantization parameter.

[0194] There can be various ways to remove the dependency of whether the azimuth residual value is parsed or signaled on the radius value of the current point or the radius value of the previous point. The following describes an example of using a flag to indicate that the parsing of the azimuth residual value is independent of the radius value of the current point or the radius value of the previous point. However, the use of a flag is provided as an example only, and should be considered limiting. There can be other ways (including cases where a flag is not included) to remove the dependency on the radius value of the current point or the radius value of the previous point from the parsing or signaling of the azimuth residual value.

[0195] For example, add syntax elements to specify whether the resolution of the azimuth residual (i.e., the azimuth residual value) is independent of the value of the reconstructed syntax element (e.g., the reconstructed radius of the current / previous point). For example, the flag `azimuth_indep_flag` can specify whether the resolution of the azimuth residual is independent of / dependent on the value of the reconstructed syntax element. When the flag takes a value (e.g., 0), the resolution of the azimuth residual is independent of the value of the reconstructed syntax element; when the flag takes a value (e.g., 0), the resolution of the azimuth residual may depend on the value of the reconstructed syntax element.

[0196] This can be achieved as follows:

[0197] like Figure 17 The decoding is performed as shown. If the boundary 'B' is zero and atimuth_indep_flag is 0, then the quantized residual is... If the value is zero, then no decoding is needed. Otherwise, the flag is decoded to indicate... Is it equal to zero? If it is non-zero, then decode the symbol to binary. Then, if the boundary 'B' equals one and azimuth_indep_flag equals 0, then... If it is negative one or one, then no further decoding is needed. Otherwise, the flag is decoded to indicate... Does the absolute value of _ equal one? If not, but the boundary 'B' equals two and azimuth_indep_flag equals 0, then If the remainder is negative two or two, decoding stops. Otherwise, use the expGolomb code to find the remainder (i.e., Decoding is performed. The number of entropy decoding contexts is equal to 24.

[0198] The context used for decoding remainders can also be updated as follows: if (boundPhi == 0&&!azimuth_indep_flag) return 0; int interCtxIdx = interFlag ? 1 : 0; int ctxL = interFlag ? (refNodeIdx>1 ? 1 : 0) : (predIdx ? 1 : 0); / / int ctxL = predIdx ? 1 : 0; if (!_aed->decode(_ctxResPhiGTZero[interCtxIdx][ctxL])) return 0; int absVal = 1; if (azimuth_indep_flag? 1: boundPhi>1) absVal += _aed->decode(_ctxResPhiGTOne[interCtxIdx][ctxL]); int interEGkCtxIdx = interFlag? (refNodeIdx>1? 2 : 1) : 0; if (absVal == 2&&(azimuth_indep_flag? 1: boundPhi>2)) absVal += _aed->decodeExpGolomb(1, _ctxResPhiExpGolombPre[interEGkCtxIdx][ azimuth_indep_flag? 0: boundPhi – 3>6 ], _ctxResPhiExpGolombSuf[interEGkCtxIdx][ azimuth_indep_flag? 0: boundPhi – 3>6]);

[0199] The flag can be signaled in a parameter set (e.g., SPS, GPS, etc.) or slice header. The signaled flag can be conditional on whether the angular mode is enabled.

[0200] In one example, a syntax element can be signaled to indicate that the parsing of a syntax structure (e.g., slice or tile) is independent of the decoding / reconstruction of one or more components of one or more points in the point cloud. When the syntax element takes one value (e.g., 1), then the parsing can be performed independent of the decoding / reconstruction of the points. When the syntax element takes another value (e.g., 0), then the parsing of the syntax structure can depend on the reconstruction / decoding of one or more points in the point cloud.

[0201] In one example, the independence of the parsing from the decoding / reconstruction can be limited to the decoding / reconstruction of points in the current frame.

[0202] In one example, the syntax element can be signaled (and the restriction applied) only when the point cloud is coded using predictive geometry.

[0203] When there is an indication (e.g., a flag parsing_independent_of_reconstruction_flag) that parsing is independent of reconstruction, the dependency of qphi on azimuth speed (as described above) can not be allowed. The derivation of the context used when decoding qphi can be updated as follows:

[0204] The new context is defined as follows: int interCtxIdx = interFlag? 2 : 0; int interCtxIdx_ = interFlag? 6 : 0; if (interFlag){ if(!parsing_ independent_of_reconstruction_flag) interCtxIdx_ += azimuthSpeedIndex; }else{ if (!parsing_ independent_of_reconstruction_flag &&azimuthSpeedIndex>0) interCtxIdx_ += azimuthSpeedIndex + 1; else{ if (predIdx!= 0){ interCtxIdx = 1; interCtxIdx_ = 1; } } }

[0205] The context selection based on the reconstructed radius (as described above) can also be updated as follows:

[0206] To code resPhi = 0 or abs(resPhi) = 1, the following context is used: a. the prediction mode (inter or intra) of the node; and b. whether the predictor index of the node is equal to zero. c. whether the radius changes drastically when parsing_independent_of_reconstruction_flag is 0

[0207] To code the value of abs(resPhi) - 2 using exp-Golomb coding, the following contexts are used: a. the prediction mode of the node (inter or intra); b. whether boundPhi - 3 > 6 when parsing_independent_of_reconstruction_flag is 0; c. whether the radius changes drastically when parsing_independent_of_reconstruction_flag is 0 d. the count of coded bins in the prefix or suffix of the exp-Golomb codeNum.

[0208] In some examples, the dependency on the reconstruction of the radius or other components is removed from the parsing. With this removal, the parsing of the azimuth angle (and other syntax elements) can be performed independent of the decoding / reconstruction of the bitstream as described above.

[0209] Figure 22 is a flowchart illustrating an example method according to one or more examples described in this disclosure. In one or more examples, the point cloud encoder 200 or the point cloud decoder 300 can determine that an angular mode is enabled for a current point in points in a point cloud (2200). For example, the point cloud encoder 200 can signal and the point cloud decoder 300 can parse a syntax element indicating that the angular mode is enabled. There can be other ways to determine that the angular mode is enabled.

[0210] The point cloud decoder 300 can parse and the point cloud encoder 200 can signal information for an azimuth angle residual value of the current point independent of a radius value of the current point or a radius value of a previous point of the point cloud that is before the current point in a decoding order (2202). The azimuth angle residual value can be based on a difference between an azimuth angle value of the current point and a predicted azimuth angle value of the current point, and the azimuth angle value of the current point can indicate an azimuth angle of the current point based on a laser (e.g., relative to a LiDAR system using the laser or relative to the laser) that captured the point of the point cloud.

[0211] As one example, to parse or signal information for an azimuth angle residual value of the current point independent of a radius value of the current point or a radius value of a previous point of the point cloud, the point cloud decoder 300 can parse or the point cloud encoder 200 can signal the information for the azimuth angle residual value independent of whether a condition based on the radius value of the current point or the radius value of the previous point is satisfied. That is, it can not be necessary to determine whether boundPhi (i.e., B or phiBound) is equal to 0 or equal to 1. However, in some other techniques, such as inFigure 17 whether the azimuth residual value is signaled or resolved is conditioned on the value of boundPhi.

[0212] In one or more examples, resolving or signaling information for the azimuth residual value can include resolving information for the azimuth residual value from a bitstream. In such examples, the point cloud decoder 300 can determine the azimuth residual value based on the information for the azimuth residual value and reconstruct the point cloud based on the azimuth residual value. A device including the point cloud decoder 300 can include a display that presents an image based on the point cloud.

[0213] In one or more examples, a device including the point cloud encoder 200 can be configured to use a laser to generate the point cloud to capture points of the point cloud. In such examples, resolving or signaling information for the azimuth residual value can include the point cloud encoder 200 signaling information for the azimuth residual value in a bitstream.

[0214] Figure 23 is a flowchart illustrating an example method according to one or more examples described in this disclosure. The point cloud encoder 200 and the point cloud decoder 300 can determine one or more context values for encoding or decoding the azimuth residual value of the current point independent of a radius value of the current point or a radius value of a previous point of the point cloud (2300). For example, determination of a context value such as ctxResPhiGTOne[interCtxIdx][ctxL], ctxResPhiExpGolombPre[interEGkCtxIdx], or ctxResPhiExpGolombSuf[interEGkCtxIdx] can not be based on boundPhi. The point cloud encoder 200 and the point cloud decoder 300 can context-based encode or decode the azimuth residual value of the current point based on the one or more context values (2302).

[0215] Figure 24 is a flowchart illustrating an example method according to one or more examples described in this disclosure. The point cloud encoder 200 and the point cloud decoder 300 can determine a quantization parameter for the azimuth residual value of the current point independent of a radius value of the current point or a radius value of a previous point of the point cloud (2400). The point cloud encoder 200 and the point cloud decoder 300 can quantize or de-quantize the azimuth residual value based on the quantization parameter (2402). In this way, dependence of the quantization parameter on the radius value of the current point or the radius value of the previous point is removed.

[0216] Figure 25 is a conceptual diagram illustrating an example ranging system that can be used with one or more techniques of this disclosure. In Figure 25In the example of FIG. 25, ranging system 2500 includes illuminator 2502 and sensor 2504. Illuminator 2502 can emit light 2506. In some examples, illuminator 2502 can emit light 2506 as one or more laser beams. Light 2506 can be at one or more wavelengths, such as infrared wavelengths or visible wavelengths. In other examples, light 2506 is not coherent laser light. When light 2506 encounters an object, such as object 2508, light 2506 produces return light 2510. Return light 2510 can include backscattered and / or reflected light. Return light 2510 can pass through lens 2511, which directs return light 2510 to create an image 2512 of object 2508 on sensor 2504. Sensor 2504 generates a signal 2514 based on image 2512. Image 2512 can include a set of points (e.g., as represented by Figure 25

[0217] In some examples, illuminator 2502 and sensor 2504 can be mounted on a spinning structure, such that illuminator 2502 and sensor 2504 capture a 360-degree view of the environment (e.g., a spinning LIDAR sensor). In other examples, ranging system 2500 can include one or more optical components (e.g., mirrors, collimators, diffraction gratings, etc.) that enable illuminator 2502 and sensor 2504 to detect ranges of objects within a particular range (e.g., up to 360 degrees). Although Figure 25 Although the example of FIG. 25 shows only a single illuminator 2502 and sensor 2504, ranging system 2500 can include multiple sets of illuminators and sensors.

[0218] In some examples, illuminator 2502 generates a structured light pattern. In such examples, ranging system 2500 can include multiple sensors 2504 on which respective images of the structured light pattern are formed. Ranging system 2500 can use differences between the images of the structured light pattern to determine distances to objects 2508 from which the structured light pattern backscatters. Structured light-based ranging systems can have a high level of accuracy (e.g., accuracy in the sub-millimeter range) when objects 2508 are relatively close to sensors 2504 (e.g., 0.2 meters to 2 meters). This high level of accuracy can be useful in facial recognition applications, such as unlocking mobile devices (e.g., mobile phones, tablet computers, etc.) and for security applications.

[0219] ​In some examples, the ranging system 2500 is a time-of-flight (ToF)-based system. In some examples in which the ranging system 2500 is a ToF-based system, the illuminator 2502 generates pulses of light. In other words, the illuminator 2502 can modulate the amplitude of the emitted light 2506. In such examples, the sensor 2504 detects the return light 2510 from the pulses of light 2506 generated by the illuminator 2502. The ranging system 2500 can then determine the distance to the object 2508 from which the light 2506 backscattered based on the delay between the emitted and detected light 2506 and the known speed of light in air. In some examples, rather than (or in addition to) modulating the amplitude of the emitted light 2506, the illuminator 2502 can modulate the phase of the emitted light 2506. In such examples, the sensor 2504 can detect the phase of the return light 2510 from the object 2508 and determine the distance to a point on the object 2508 using the speed of light and based on the difference in time between when the illuminator 2502 generates the light 2506 at a particular phase and when the sensor 2504 detects the return light 2510 at a particular phase.

[0220] In other examples, a point cloud can be generated without using the illuminator 2502. For example, in some examples, the sensor 2504 of the ranging system 2500 can include two or more optical cameras. In such examples, the ranging system 2500 can use the optical cameras to capture stereo images of an environment, including the object 2508. The ranging system 2500 can include a point cloud generator 2516, which can compute the differences between locations in the stereo images. The ranging system 2500 can then use the differences to determine distances to the locations shown in the stereo images. From these distances, the point cloud generator 2516 can generate a point cloud.

[0221] The sensor 2504 can also detect other properties of the object 2508, such as color and reflectivity information. In Figure 25 examples, the point cloud generator 2516 can generate a point cloud based on the signals 2514 generated by the sensor 2504. The ranging system 2500 and / or the point cloud generator 2516 can form part of the data source 104 Figure 1 ) of FIG. 1. Thus, the point cloud generated by the ranging system 2500 can be encoded and / or decoded in accordance with any of the techniques of this disclosure.

[0222] Figure 26 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of this disclosure can be used. In Figure 26 examples, the vehicle 2600 includes a ranging system 2602. The ranging system 2602 can be implemented in the manner discussed with respect to Figure 26 the ranging system 2500 of FIG. 25. Although in Figure 26The example is not shown, but vehicle 2600 may also include a data source (such as data source 104). Figure 1 )) and G-PCC encoders (such as point cloud encoder 200 ( Figure 1 )).exist Figure 26 In the example, ranging system 2602 emits a laser beam 2604 reflected from a pedestrian 2606 or other object in the road. The data source of vehicle 2600 can generate a point cloud based on the signal generated by ranging system 2602. G-PCC encoder of vehicle 2600 can encode the point cloud to generate a bitstream 2608, such as a geometric bitstream 203. Figure 2 ) and attribute bitstream 205 ( Figure 2 As described in this disclosure, inter-frame prediction and residual prediction can reduce the size of the geometric bitstream. The bitstream 2608 may include significantly fewer bits than the uncoded point cloud obtained by the G-PCC encoder.

[0223] The output interfaces of vehicle 2600 (e.g., output interface 108) Figure 1 The bitstream 2608 can be sent to one or more other devices. The bitstream 2608 may contain significantly fewer bits than the uncoded point cloud obtained by the G-PCC encoder. Therefore, the vehicle 2600 may be able to send the bitstream 2608 to other devices faster than the uncoded point cloud data. Additionally, the bitstream 2608 may require less data storage capacity on the device.

[0224] exist Figure 26 In the example, vehicle 2600 can send bitstream 2608 to another vehicle 2610. Vehicle 2610 may include a G-PCC decoder, such as point cloud decoder 300. Figure 1 The G-PCC decoder of vehicle 2610 can decode bitstream 2608 to reconstruct the point cloud. Vehicle 2610 can use the reconstructed point cloud for various purposes. For example, vehicle 2610 can determine, based on the reconstructed point cloud, that pedestrian 2606 is in the road ahead of vehicle 2600 and therefore begin to decelerate, for example, even before the driver of vehicle 2610 becomes aware that pedestrian 2606 is in the road. Thus, in some examples, vehicle 2610 can perform autonomous navigation operations based on the reconstructed point cloud.

[0225] Additionally or alternatively, the vehicle 2600 can send the bitstream 2608 to a server system 2612. The server system 2612 can use the bitstream 2608 for various purposes. For example, the server system 2612 can store the bitstream 2608 for subsequent reconstruction of the point cloud. In this example, the server system 2612 can use the point cloud, along with other data (e.g., vehicle telemetry data generated by the vehicle 2600) to train an autonomous driving system. In other examples, the server system 2612 can store the bitstream 2608 for subsequent reconstruction for use in forensic accident investigations.

[0226] Figure 27 FIG. 27 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of this disclosure can 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 Figure 27 In the example of FIG. 27, a user 2700 is at a first location 2702. The user 2700 wears an XR headset 2704. As an alternative to the XR headset 2704, the user 2700 can use a mobile device (e.g., a mobile phone, a tablet computer, etc.). The XR headset 2704 includes a depth detection sensor, such as a ranging system, that detects the positions of points on an object 2706 at the location 2702. A data source of the XR headset 2704 can generate a point cloud representation of the object 2706 at the location 2702 using signals generated by the depth detection sensor. The XR headset 2704 can include a G-PCC encoder (e.g., the point cloud encoder 200 of Figure 1 In the example of FIG. 27, a user 2700 is at a first location 2702. The user 2700 wears an XR headset 2704. As an alternative to the XR headset 2704, the user 2700 can use a mobile device (e.g., a mobile phone, a tablet computer, etc.). The XR headset 2704 includes a depth detection sensor, such as a ranging system, that detects the positions of points on an object 2706 at the location 2702. A data source of the XR headset 2704 can generate a point cloud representation of the object 2706 at the location 2702 using signals generated by the depth detection sensor. The XR headset 2704 can include a G-PCC encoder (e.g., the point cloud encoder 200 of

[0227] The XR headset 2704 can transmit the bitstream 2708 (e.g., via a network such as the Internet) to an XR headset 2710 worn by a user 2712 at a second location 2714. The XR headset 2710 can decode the bitstream 2708 to reconstruct the point cloud. The XR headset 2710 can use the point cloud to generate an XR visualization (e.g., an AR, MR, VR visualization) that represents the object 2706 at the location 2702. Thus, in some examples, such as when the XR headset 2710 generates a VR visualization, the user 2712 can have a 3D immersive experience of the location 2702. In some examples, the XR headset 2710 can determine a position of a virtual object based on the reconstructed point cloud. For example, the XR headset 2710 can determine, based on the reconstructed point cloud, that the environment (e.g., the location 2702) includes a flat surface, and then determine that a virtual object (e.g., a cartoon character) is to be positioned on the flat surface. The XR headset 2710 can generate an XR visualization in which the virtual object is at the determined position. For example, the XR headset 2710 can show the cartoon character sitting on the flat surface.

[0228] Figure 28 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of this disclosure can be used. In Figure 28 In an example, a mobile device 2800 (e.g., a wireless communication device), such as a mobile phone or tablet computer, includes a ranging system, such as a LIDAR system, that detects positions of points on an object 2802 in an environment of the mobile device 2800. A data source of the mobile device 2800 can generate a point cloud representation of the object 2802 using signals generated by the depth detection sensor. The mobile device 2800 can include a G-PCC encoder (e.g., a point cloud encoder 200 of Figure 1 configured to encode a point cloud to generate a bitstream 2804. In Figure 2 In an example, the mobile device 2800 can transmit the bitstream to a remote device 2806, such as a server system or other mobile device. Inter-prediction and residual prediction can reduce the size of the bitstream 2804, as described in this disclosure. The remote device 2806 can decode the bitstream 2804 to reconstruct the point cloud. The remote device 2806 can use the point cloud for various purposes. For example, the remote device 2806 can use the point cloud to generate a map of the environment of the mobile device 2800. For example, the remote device 2806 can generate a map of an interior of a building based on the reconstructed point cloud. In another example, the remote device 2806 can generate an image (e.g., computer graphics) based on the point cloud. For example, the remote device 2806 can use points of the point cloud as vertices of polygons and use color attributes of the points as a basis for shading the polygons. In some examples, the remote device 2806 can use the reconstructed point cloud for facial recognition or other security applications.

[0229] Examples in various aspects of the present disclosure can be used individually or in any combination.

[0230] Clause 1. A method of processing a point cloud, the method comprising parsing or signaling a syntax element that specifies whether a determination of an azimuth angle residual is independent of a value of a reconstructed syntax element of the point cloud.

[0231] Clause 2. The method of clause 1, further comprising determining the azimuth angle residual independent of the value of the reconstructed syntax element on a condition that the syntax element specifies that the determination of the azimuth angle residual is independent of the value of the reconstructed syntax element.

[0232] Clause 3. The method of any of clauses 1 and 2, wherein the value of the reconstructed syntax element comprises at least one of a reconstructed radius of a current point or a previous point of the point cloud.

[0233] Clause 4. A method of processing a point cloud, the method comprising parsing or signaling a syntax element that specifies whether a determination of a syntax structure is independent of determining one or more components of one or more points in the point cloud.

[0234] Clause 5. The method of clause 4, further comprising determining the syntax structure independent of decoding or reconstructing the one or more points on a condition that the syntax element specifies that the determination of the syntax structure is independent of determining the one or more components of the one or more points in the point cloud.

[0235] Clause 6. The method of any of clauses 4 and 5, wherein the syntax structure comprises at least one of a slice or a tile.

[0236] Clause 7. The method of any of clauses 1-6, further comprising generating the point cloud.

[0237] Clause 8. A device for processing a point cloud, the device comprising a memory configured to store the point cloud and one or more processors implemented in circuitry and configured to perform the method of any of clauses 1-7.

[0238] Clause 9. The device of clause 8, wherein the device comprises a decoder.

[0239] Clause 10. The device of clause 8, wherein the device comprises an encoder.

[0240] Clause 11. The device of any of clauses 8-10, wherein the one or more processors are configured to generate the point cloud.

[0241] Clause 12. The device of any of clauses 8-11, further comprising a display to present an image based on the point cloud.

[0242] Clause 13. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to perform the method of any of clauses 1-7.

[0243] Clause 14. A device for processing a point cloud, the device comprising means for performing the method of any of clauses 1-7.

[0244] Clause 1A. A method of processing a point cloud, the method comprising: determining that an angular mode is enabled for encoding or decoding a current point of points in the point cloud; and parsing or signaling information for an azimuth residual value of the current point independently of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in a decoding order, wherein the azimuth residual value is based on a difference between an azimuth value of the current point and a predicted azimuth value of the current point, and wherein the azimuth value of the current point is indicative of an azimuth angle of the current point based on a laser used to capture the point of the point cloud.

[0245] Clause 2A. The method of clause 1A, wherein parsing or signaling the information for the azimuth residual value of the current point independently of the radius value of the current point or the radius value of the previous point of the point cloud comprises parsing or signaling the information for the azimuth residual value independently of whether a condition based on the radius value of the current point or the radius value of the previous point is satisfied.

[0246] Clause 3A. The method of any of clauses 1A or 2A, further comprising: determining one or more context values for encoding or decoding the azimuth residual value of the current point independently of the radius value of the current point or the radius value of the previous point of the point cloud; and context-based encoding or decoding the azimuth residual value of the current point based on the one or more context values.

[0247] Clause 4A. The method of any of clauses 1A-3A, further comprising: determining a quantization parameter for the azimuth residual value of the current point independently of the radius value of the current point or the radius value of the previous point of the point cloud; and quantizing or de-quantizing the azimuth residual value based on the quantization parameter.

[0248] Clause 5A. The method of any of clauses 1A-4A, wherein parsing or signaling the information for the azimuth residual value comprises parsing the information for the azimuth residual value from a bitstream, the method further comprising: determining the azimuth residual value based on the information for the azimuth residual value; and reconstructing the point cloud based on the azimuth residual value.

[0249] Clause 6A. The method of any of clauses 1A-5A, further comprising: generating the point cloud using the laser to capture the points of the point cloud, wherein parsing or signaling the information for the azimuth residual value comprises signaling the information for the azimuth residual value in a bitstream.

[0250] Clause 7A. A device for processing a point cloud, the device comprising: one or more memories configured to store the point cloud; and one or more processors implemented in circuitry and configured to: determine that an angular mode is enabled for encoding or decoding a current point of points in the point cloud; and parse or signal information for an azimuth residual value of the current point independently of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in a decoding order, wherein the azimuth residual value is based on a difference between an azimuth value of the current point and a predicted azimuth value of the current point, and wherein the azimuth value of the current point is indicative of an azimuth angle of the current point based on a laser used to capture the points of the point cloud.

[0251] Clause 8A. The device of clause 7A, wherein to parse or signal the information for the azimuth residual value of the current point independently of the radius value of the current point or the radius value of the previous point, the one or more processors are configured to parse or signal the information for the azimuth residual value independently of whether a condition based on the radius value of the current point or the radius value of the previous point is satisfied.

[0252] Clause 9A. The device of any of clauses 7A and 8A, wherein the one or more processors are configured to: determine one or more context values for encoding or decoding the azimuth residual value of the current point independently of the radius value of the current point or the radius value of the previous point of the point cloud; and context-based encode or decode the azimuth residual value of the current point based on the one or more context values.

[0253] Clause 10A. The device of any of clauses 7A-9A, wherein the one or more processors are configured to: determine a quantization parameter for the azimuth residual value for the current point independently of the radius value for the current point or the radius value for the previous point of the point cloud; and quantize or de-quantize the azimuth residual value based on the quantization parameter.

[0254] Clause 11A. The device of any of clauses 7A-10A, wherein, to parse or signal the information for the azimuth residual value, the one or more processors are configured to parse the information for the azimuth residual value from a bitstream, and wherein the one or more processors are configured to: determine the azimuth residual value based on the information for the azimuth residual value; and reconstruct the point cloud based on the azimuth residual value.

[0255] Clause 12A. The device of any of clauses 7A-11A, wherein the one or more processors are configured to generate the point cloud using the laser to capture the points of the point cloud, wherein, to parse or signal the information for the azimuth residual value, the one or more processors are configured to signal the information for the azimuth residual value in a bitstream.

[0256] Clause 13A. The device of any of clauses 7A-12A, further comprising a display to present an image based on the point cloud.

[0257] Clause 14A. The device of any of clauses 7A-12A, further comprising the laser.

[0258] Clause 15A. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to: determine that an angular mode is enabled for encoding or decoding a current point of points in a point cloud; and parse or signal information for an azimuth residual value for the current point independently of a radius value for the current point or a radius value for a previous point of the point cloud that precedes the current point in a decoding order, wherein the azimuth residual value is based on a difference between an azimuth value for the current point and a predicted azimuth value for the current point, and wherein the azimuth value for the current point is indicative of an azimuth of the current point based on a laser used to capture the points of the point cloud.

[0259] Clause 16A. The computer-readable storage medium of clause 15A, wherein the instructions cause the one or more processors to parse or signal the information for the azimuth residual value for the current point independent of the radius value for the current point or the radius value for the previous point of the point cloud includes the instructions causing the one or more processors to parse or signal the information for the azimuth residual value independent of whether a condition based on the radius value for the current point or the radius value for the previous point is satisfied.

[0260] Clause 17A. The computer-readable storage medium of any of clauses 15A and 16A, further comprising instructions that cause the one or more processors to: determine one or more context values for encoding or decoding the azimuth residual value for the current point independent of the radius value for the current point or the radius value for the previous point of the point cloud; and context-based encode or decode the azimuth residual value for the current point based on the one or more context values.

[0261] Clause 18A. The computer-readable storage medium of any of clauses 15A-17A, further comprising instructions that cause the one or more processors to: determine a quantization parameter for the azimuth residual value for the current point independent of the radius value for the current point or the radius value for the previous point of the point cloud; and quantize or de-quantize the azimuth residual value based on the quantization parameter.

[0262] Clause 19A. The computer-readable storage medium of any of clauses 15A-18A, wherein the instructions that cause the one or more processors to parse or signal the information for the azimuth residual value include instructions that cause the one or more processors to parse the information for the azimuth residual value from a bitstream, the instructions further comprising instructions that cause the one or more processors to: determine the azimuth residual value based on the information for the azimuth residual value; and reconstruct the point cloud based on the azimuth residual value.

[0263] Clause 20A. The computer-readable storage medium of any of clauses 15A-19A, further comprising instructions that cause the one or more processors to generate the point cloud using the laser to capture the points of the point cloud, wherein the instructions that cause the one or more processors to parse or signal the information for the azimuth residual value include instructions that cause the one or more processors to signal the information for the azimuth residual value in a bitstream.

[0264] It is to be recognized that depending on the example certain acts or events of any of the techniques described herein can be performed in a different sequence, can be added, omitted, or combined (e.g., not all described acts or events are necessary for the practice of the techniques), and the like. Moreover, in certain examples, acts or events can be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors, rather than sequentially.

[0265] In one or more examples, the functions described can be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions can be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Computer-readable media can include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer- readable media generally can correspond to (1) tangible computer-readable storage media which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for implementation of the techniques described in this disclosure. A computer program product can include a computer-readable medium.

[0266] By way of example, and not limitation, such computer-readable storage media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other storage 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

[0267] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, as used herein the term "processor" and "processing circuitry" can refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein can be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques could be fully implemented in one or more circuits or logic elements.

[0268] The techniques of this disclosure can be implemented in a variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chip set). Various components, modules, or units are described herein to emphasize functionality that can be provided by devices configured to perform the disclosed techniques, but are not necessarily intended to be implemented by separate hardware

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

Claims

1. A method of processing a point cloud, the method comprising: determining that an angular mode is enabled for encoding or decoding a current point among points in the point cloud; and parsing or signaling information for an azimuth residual value of the current point independently of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in decoding order, wherein the azimuth residual value is based on a difference between an azimuth value of the current point and a predicted sub-azimuth value of the current point, and wherein the azimuth value of the current point is indicative of an azimuth of the current point based on a laser used to capture the points of the point cloud.

2. The method of claim 1, wherein, The parsing or signaling of the information for the azimuth residual value of the current point independently of the radius value of the current point or the radius value of the previous point of the point cloud comprises parsing or signaling the information for the azimuth residual value independently of whether a condition based on the radius value of the current point or the radius value of the previous point is satisfied.

3. The method of claim 1, further comprising: determining one or more context values for encoding or decoding the azimuth residual value of the current point independently of the radius value of the current point or the radius value of the previous point of the point cloud; and and context-based encoding or decoding the azimuth residual value of the current point based on the one or more context values.

4. The method of claim 1, further comprising: determining a quantization parameter for the azimuth residual value of the current point independently of the radius value of the current point or the radius value of the previous point of the point cloud; and quantizing or de-quantizing the azimuth residual value based on the quantization parameter.

5. The method of claim 1, wherein, The parsing or signaling of the information for the azimuth residual value comprises parsing the information for the azimuth residual value from a bitstream, the method further comprising: determining the azimuth residual value based on the information for the azimuth residual value; and reconstructing the point cloud based on the azimuth residual value.

6. The method of claim 1, further comprising: generating the point cloud using the laser to capture the points of the point cloud, wherein the parsing or signaling of the information for the azimuth residual value comprises signaling the information for the azimuth residual value in a bitstream.

7. A device for processing a point cloud, the device comprising: one or more memories configured to store the point cloud; and one or more processors implemented in circuitry and configured to: determine that an angular mode is enabled for encoding or decoding a current point among points in the point cloud; and parse or signal information for an azimuth residual value of the current point independently of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in decoding order, wherein the azimuth residual value is based on a difference between an azimuth value of the current point and a predicted sub-azimuth value of the current point, and wherein the azimuth value of the current point is indicative of an azimuth of the current point based on a laser used to capture the points of the point cloud. wherein the azimuth value of the current point is based on a laser used to capture the point of the point cloud.

8. The apparatus of claim 7, wherein, To resolve or signal the information for the azimuth residual value independent of the radius value of the current point or the radius value of the previous point of the point cloud, the one or more processors are configured to resolve or signal the information for the azimuth residual value independent of whether a condition based on the radius value of the current point or the radius value of the previous point is satisfied.

9. The apparatus of claim 7, wherein, The one or more processors are configured to: determine one or more context values for encoding or decoding the azimuth residual value for the current point independent of the radius value of the current point or the radius value of the previous point of the point cloud; and context-based encode or decode the azimuth residual value for the current point based on the one or more context values.

10. The apparatus of claim 7, wherein, The one or more processors are configured to: determine a quantization parameter for the azimuth residual value for the current point independent of the radius value of the current point or the radius value of the previous point of the point cloud; and quantize or de-quantize the azimuth residual value based on the quantization parameter.

11. The apparatus of claim 7, wherein, To resolve or signal the information for the azimuth residual value, the one or more processors are configured to resolve the information for the azimuth residual value from a bitstream, and wherein the one or more processors are configured to: determine the azimuth residual value based on the information for the azimuth residual value; and reconstruct the point cloud based on the azimuth residual value.

12. The apparatus of claim 7, wherein, The one or more processors are configured to: generate the point cloud using the laser to capture the points of the point cloud, wherein to resolve or signal the information for the azimuth residual value, the one or more processors are configured to signal the information for the azimuth residual value in a bitstream.

13. The device of claim 7, further comprising a display to present an image based on the point cloud.

14. The device of claim 7, further comprising the laser.

15. A computer-readable storage medium having instructions stored thereon, the instructions, when executed, cause one or more processors to: determine that an angular mode is enabled for encoding or decoding a current point of points in a point cloud; and resolve or signal information for an azimuth residual value for the current point independent of a radius value of the current point or a radius value of a previous point of the point cloud that precedes the current point in a decoding order, wherein the azimuth residual value is based on a difference between an azimuth value of the current point and a predicted azimuth value of the current point, and wherein the azimuth value of the current point is based on a laser used to capture the point of the point cloud.

16. The computer-readable storage medium of claim 15, wherein, The instructions that cause the one or more processors to resolve or signal the information for the azimuth residual value for the current point independent of the radius value of the current point or the radius value of the previous point of the point cloud include instructions that cause the one or more processors to resolve or signal the information for the azimuth residual value independent of whether a condition based on the radius value of the current point or the radius value of the previous point is satisfied.

17. The computer-readable storage medium of claim 15, further comprising instructions that cause the one or more processors to: determine one or more context values for encoding or decoding the azimuth residual value for the current point independent of the radius value of the current point or the radius value of the previous point of the point cloud; and context-based encode or decode the azimuth residual value for the current point based on the one or more context values.

18. The computer-readable storage medium of claim 15, further comprising instructions that cause the one or more processors to: determine a quantization parameter for the azimuth residual value for the current point independent of the radius value of the current point or the radius value of the previous point of the point cloud; and quantize or de-quantize the azimuth residual value based on the quantization parameter.

19. The computer-readable storage medium of claim 15, wherein, The instructions that cause the one or more processors to resolve or signal the information for the azimuth residual value include instructions that cause the one or more processors to resolve the information for the azimuth residual value from a bitstream, the instructions further comprising instructions that cause the one or more processors to: determine the azimuth residual value based on the information for the azimuth residual value; and reconstruct the point cloud based on the azimuth residual value.

20. The computer-readable storage medium of claim 15, further comprising instructions that cause the one or more processors to: generate the point cloud using the laser to capture the points of the point cloud, wherein The instructions that cause the one or more processors to resolve or signal the information for the azimuth residual value include instructions that cause the one or more processors to signal the information for the azimuth residual value in a bitstream.