Advanced syntax improvements for laser rotation for geometric point cloud compression (g-pcc)

By using syntax element signaling in the G-PCC encoder and decoder to notify the laser rotation amount minus a defined value, the problem of low bandwidth utilization efficiency in point cloud compression is solved, and a more efficient encoding and decoding process is achieved.

CN116349228BActive Publication Date: 2026-01-13QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202180067896.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2021-09-08
Filing Date
2021-09-09
Publication Date
2026-01-13
Estimated Expiration
2041-09-09

AI Technical Summary

Technical Problem

Existing point cloud compression technologies suffer from low bandwidth utilization efficiency during encoding and decoding, especially when determining the laser rotation of points in the point cloud, which requires signaling to notify the actual amount, leading to an increase in data volume.

Method used

By using syntax elements in the G-PCC encoder and decoder, the signaling informs the laser rotation amount minus a defined value (such as 1), for example, laser_phi_per_turn_minus1[i] and geom_angular_azimuth_step_minus1, instead of directly signaling the actual amount, thus reducing the amount of data that needs to be transmitted.

Benefits of technology

It improves bandwidth efficiency, reduces data transmission requirements, and enhances the efficiency of the encoding and decoding processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116349228B_ABST
    Figure CN116349228B_ABST
Patent Text Reader

Abstract

A method of encoding point cloud data includes determining an amount of laser rotation used to determine points in a point cloud represented by the point cloud data, generating a syntax element indicative of the amount of laser rotation, wherein a value of the syntax element is a defined value that is less than the amount of laser rotation, and signaling the syntax element.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application claims priority to U.S. Application No. 17 / 469,704, filed September 8, 2021, and U.S. Provisional Application No. 63 / 090,027, filed October 9, 2020, the entire contents of each of which are incorporated herein by reference. U.S. Application No. 17 / 469,704 claims the benefit of U.S. Provisional Application No. 63 / 090,027, filed October 9, 2020. Technical Field

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

[0003] A point cloud is a collection of points in 3D space. Each point can correspond to a point on an object within that 3D space. Therefore, point clouds can be used to represent entity content in 3D space. Point clouds can be useful in a variety of situations. For example, point clouds can be used in the context of autonomous vehicles to represent the location of objects on a roadway. In another example, point clouds can be used in the context of representing entity content in an environment for the purpose of locating virtual objects in augmented reality (AR) or mixed reality (MR) applications. Point cloud compression is the process of encoding and decoding point clouds. Encoding point clouds reduces the amount of data required for storage and transmission. Summary of the Invention

[0004] Generally, this disclosure describes techniques for improving and / or refining the high-level syntax for geometric point cloud compression (G-PCC). For example, this disclosure describes example syntax elements for G-PCC and configures point cloud decoding based on these example syntax elements. In one or more examples, the number of syntax elements utilized can be reduced compared to certain other techniques, thereby reducing bandwidth utilization. For example, the example techniques may involve redundancy removal and improvement of the high-level syntax of G-PCC.

[0005] The G-PCC encoder can determine the amount of laser rotation used to determine points in a point cloud. It may be necessary that the amount of laser rotation used to determine points in the point cloud is non-zero. That is, it may be necessary for each laser to rotate to determine a point in the point cloud. Accordingly, the G-PCC encoder can signal a value equal to the actual amount of laser rotation minus a defined value (e.g., 1), rather than the value indicating the actual amount of laser rotation. The G-PCC decoder can add the defined value to the received value to determine the amount of laser rotation. For example, if the G-PCC encoder signals a value of 0 for the amount of laser rotation, the G-PCC decoder can determine that the actual amount of laser rotation is 1 (e.g., 0+1).

[0006] Smaller G-PCC encoder signaling values ​​tend to require less bandwidth than larger G-PCC encoder signaling values. Therefore, by having the G-PCC encoder signaling value equal to the actual amount of laser rotation minus a defined value (e.g., 1) rather than equal to the actual amount of laser rotation, the example technique can reduce the amount of data that needs to be signaled and improve bandwidth efficiency.

[0007] In one example, a method for encoding point cloud data includes: determining an amount of laser rotation used to determine points in the point cloud represented by the point cloud data; generating a syntax element indicating the amount of laser rotation, wherein the value of the syntax element is smaller than a defined value than the amount of laser rotation; and a signaling notification syntax element.

[0008] In one example, a method for decoding point cloud data includes: receiving a syntax element indicating an amount of laser rotation for determining points in the point cloud represented by the point cloud data, wherein the value of the syntax element is smaller than a defined value of the amount of laser rotation; determining the amount of laser rotation based on the syntax element; and reconstructing the point cloud based on the determined amount of laser rotation.

[0009] In one example, an apparatus for encoding point cloud data includes: a memory configured to store the point cloud data, and one or more processors coupled to the memory, wherein the one or more processors are configured to: determine an amount of laser rotation for determining points in the point cloud represented by the point cloud data; generate a syntax element indicating the amount of laser rotation, wherein the value of the syntax element is smaller than the amount of laser rotation by a defined value; and a signaling notification syntax element.

[0010] In one example, an apparatus for decoding point cloud data includes: a memory configured to store the point cloud data, and one or more processors coupled to the memory, wherein the one or more processors are configured to: receive a syntax element indicating an amount of laser rotation for determining points in the point cloud represented by the point cloud data, wherein the value of the syntax element is smaller than a defined value of the amount of laser rotation; determine the amount of laser rotation based on the syntax element; and reconstruct the point cloud based on the determined amount of laser rotation.

[0011] In one example, an apparatus for encoding point cloud data includes: components for determining an amount of laser rotation for determining points in the point cloud represented by the point cloud data; components for generating a syntax element indicating the amount of laser rotation, wherein the value of the syntax element is smaller than the amount of laser rotation by a defined value; and components for signaling the syntax element.

[0012] In one example, a computer-readable storage medium storing instructions thereon, which, when executed, cause one or more processors to: determine an amount of laser rotation for determining points in a point cloud represented by point cloud data; generate a syntax element indicating the amount of laser rotation, wherein the value of the syntax element is smaller than a defined value than the amount of laser rotation; and a signaling notification syntax element.

[0013] In one example, an apparatus for decoding point cloud data includes: means for receiving a syntax element indicating an amount of laser rotation for determining points in the point cloud represented by the point cloud data, wherein the value of the syntax element is smaller than the amount of laser rotation by a defined value; means for determining the amount of laser rotation based on the syntax element; and means for reconstructing the point cloud based on the determined amount of laser rotation.

[0014] In one example, a computer-readable storage medium storing instructions thereon, which, when executed, cause one or more processors to: receive a syntax element indicating an amount of laser rotation for determining points in a point cloud represented by point cloud data, wherein the value of the syntax element is smaller than a defined value of the amount of laser rotation; determine the amount of laser rotation based on the syntax element; and reconstruct the point cloud based on the determined amount of laser rotation.

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

[0016] Figure 1 This is a block diagram illustrating an example encoding and decoding system capable of implementing the techniques of this disclosure.

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

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

[0019] Figure 4 This is a flowchart illustrating an example of encoding point cloud data.

[0020] Figure 5 This is a flowchart illustrating an example of decoding point cloud data. Detailed Implementation

[0021] In Geometric Point Cloud Compression (G-PCC), a laser beam from a laser is used to determine points in a point cloud. For example, a sensor detects the reflection of the laser beam to determine where a point resides in the point cloud. In some examples, a G-PCC encoder can encode the point cloud in an octree structure. For instance, a G-PCC encoder can segment the point cloud into multiple N×N×N cubes. For each cube containing at least one point, the G-PCC encoder can further segment that cube into multiple N / 2×N / 2×N / 2 cubes, further segmenting any one of these cubes containing at least one point, and so on. The G-PCC encoder can encode attribute values ​​for points in each of the cubes. Attribute values ​​can be coordinates, color, and other such values.

[0022] As another example, the G-PCC encoder can encode point clouds in a prediction tree structure. In the prediction tree structure, each point in the point cloud can be associated with a node in the prediction tree. Nodes can be connected together in a hierarchical structure, allowing a node to have one or more ancestor nodes. In the prediction tree structure, the location (geometry) of the current node can be predicted from the locations of one or more ancestor nodes, where one or more ancestor nodes are encoded and decoded before the current node.

[0023] When encoding and decoding point clouds using an octree structure, the G-PCC encoder and decoder can be considered as performing octree decoding (i.e., the geometry tree type is octree decoding). When encoding and decoding point clouds using a prediction tree structure, the G-PCC encoder and decoder can be considered as performing predictive geometry decoding (i.e., the geometry tree type is predictive geometry decoding). Predictive geometry decoding can also be called predictive tree decoding. The syntax element geom_tree_type indicates whether octree decoding or predictive geometry decoding is used. For example, geom_tree_type == 0 indicates octree decoding, while geom_tree_type == 1 indicates predictive geometry decoding.

[0024] For both octree decoding and predictive geometry decoding, the G-PCC encoder can determine the amount of laser rotation used to determine points in the point cloud. As an example, the amount of laser rotation can refer to the number of laser probes in a single rotation of the laser. The number of laser probes can be represented by the geometry tree type of the octree decoding (i.e., geom_tree_type == 0). For example, the number of laser probes in a single rotation of the laser can refer to the number of samples generated by the laser of the rotation sensing system located at the origin. The syntax element laser_phi_per_turn[i] can indicate the number of laser probes in a single rotation of the laser. However, as described in more detail, in one or more examples, the G-PCC encoder can signal and the G-PCC decoder can receive laser_phi_per_turn_minus1[i] instead of signaling laser_phi_per_turn[i].

[0025] As another example, the amount of laser rotation can refer to the unit change in the azimuth angle of the laser rotation. The unit change in azimuth angle can be represented by the geometry tree type of the predictive geometry decoding (i.e., geom_tree_type == 1). The syntax element geom_angular_azimuth_step can indicate the unit change in azimuth angle. However, as described in more detail, in one or more examples, the G-PCC encoder can signal and the G-PCC decoder can receive geom_angular_azimuth_step_minus1 instead of signaling geom_angular_azimuth_step.

[0026] In the example above, determining the amount of laser rotation used to determine points in the point cloud can include determining the number of laser probes in a single rotation of the laser and / or determining the unit change in the azimuth angle of the laser rotation. For example, the number of laser probes can indicate the amount of laser rotation, since the laser will rotate for each of the probes. As an example, if the number of laser probes is four, the laser will rotate 90 degrees. If the number of laser probes is two, the laser will rotate 180 degrees.

[0027] In this disclosure, the amount of laser rotation used to determine points in a point cloud can be determined by inference or by actual determination. That is, in the example of determining the number of laser probes, the G-PCC encoder or G-PCC decoder does not necessarily need to determine the amount of laser rotation, but the amount of laser rotation can be indicated by the number of laser probes. However, in this example, the G-PCC encoder or G-PCC decoder can be considered as determining the amount of laser rotation.

[0028] The amount of laser rotation used to determine points in a point cloud may need to be non-zero. In the example, `laser_phi_per_turn[i]` and `geom_angular_azimuth_step` cannot be zero, and their minimum value is one. Therefore, in this example, it is possible that the G-PCC encoder signals and the G-PCC decoder receives the actual value of `laser_phi_per_turn[i]` minus a defined value (e.g., 1), rather than signaling the actual value of `laser_phi_per_turn[i]`. In other words, the G-PCC encoder may signal and the G-PCC decoder may receive `laser_phi_per_turn_minus1[i]`, rather than signaling and receiving `laser_phi_per_turn[i]` where 1 is the defined value. Similarly, it is possible that the G-PCC encoder signals and the G-PCC decoder receives the actual value of `geom_angular_azimuth_step` minus a defined value (e.g., 1), rather than signaling the actual value of `geom_angular_azimuth_step`. In other words, the G-PCC encoder can signal and the G-PCC decoder can receive geom_angular_azimuth_step_minus1, instead of signaling and receiving geom_angular_azimuth_step, where 1 is a defined value.

[0029] Compared to larger values, G-PCC encoder signaling a smaller value may reduce bandwidth. Therefore, when geom_tree_type == 0 (i.e., octree decoding), there might be a bandwidth efficiency gain if the G-PCC encoder signaled laser_phi_per_turn_minus1[i] instead of laser_phi_per_turn[i]. Similarly, when geom_tree_type == 1 (i.e., prediction tree decoding), there might be a bandwidth efficiency gain if the G-PCC encoder signaled geom_angular_azimuth_step_minus1 instead of geom_angular_azimuth_step.

[0030] From the perspective of the G-PCC decoder, the G-PCC decoder can receive `laser_phi_per_turn_minus1[i]` and add 1 to the received value to determine the actual value of `laser_phi_per_turn` (i.e., the actual value of the number of laser probes in a single rotation). Similarly, the G-PCC decoder can receive `geom_angular_azimuth_step_minus1` and add 1 to the received value to determine the actual value of `geom_angular_azimuth_step` (i.e., the actual value of the unit change in the azimuth angle of the laser rotation).

[0031] Accordingly, in one or more examples, the G-PCC encoder can: determine the amount of laser rotation used to determine points in the point cloud represented by the point cloud data; generate a syntax element indicating the amount of laser rotation, wherein the value of the syntax element is less than a defined value; and a signaling notification syntax element. The G-PCC decoder can: receive the syntax element indicating the amount of laser rotation used to determine points in the point cloud represented by the point cloud data, wherein the value of the syntax element is less than a defined value; determine the amount of laser rotation based on the syntax element; and reconstruct the point cloud based on the determined amount of laser rotation.

[0032] For example, the amount of laser rotation can be the number of laser probes in a single rotation (e.g., for a geometry tree type in octree decoding). As another example, the amount of laser rotation can be a unit change in the azimuth angle of the laser rotation (e.g., for a geometry tree type in predictive geometry decoding).

[0033] An example of a syntax element indicating the amount of laser rotation is `laser_phi_per_turn_minus1[i]`, where the value of `laser_phi_per_turn_minus1[i]` is smaller than a defined value for the amount of laser rotation (e.g., 1 less than the number of laser probes in a single rotation). Another example of a syntax element indicating the amount of laser rotation is `geom_angular_azimuth_step_minus1`, where the value of `geom_angular_azimuth_step_minus1` is smaller than a defined value for the amount of laser rotation (e.g., 1 less than the unit change in the azimuth angle of the laser rotation).

[0034] Figure 1This 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 generally involve decoding (encoding and / or decoding) point cloud data, i.e., to support point cloud compression. Typically, point cloud data includes any data used for processing point clouds. Decoding can be effective in compressing and / or decompressing point cloud data.

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

[0036] exist Figure 1 In the example, source device 102 includes a data source 104, a memory 106, a G-PCC encoder 200, and an output interface 108. Target device 116 includes an input interface 122, a G-PCC decoder 300, a memory 120, and a data consumer 118. According to this disclosure, the G-PCC encoder 200 of source device 102 and the G-PCC decoder 300 of target device 116 can be configured to apply techniques disclosed herein related to improvements and / or enhancements to the high-level syntax for G-PCC. Therefore, source device 102 represents an example of an encoding device, while target device 116 represents an example of a decoding device. In other examples, source device 102 and target device 116 may include other components or arrangements. For example, source device 102 may receive data (e.g., point cloud data) from an internal or external source. Similarly, target device 116 may interface with an external data consumer instead of including the data consumer in the same device.

[0037] like Figure 1The system 100 shown is merely an example. Typically, other digital encoding and / or decoding devices can perform the techniques disclosed herein concerning improvements and / or enhancements to the advanced syntax of G-PCC. Source device 102 and target device 116 are merely examples of such devices, where source device 102 generates decoded data for transmission to target device 116. In this disclosure, "decoding device" refers to a device that performs the decoding (encoding and / or decoding) of data. Thus, G-PCC encoder 200 and G-PCC decoder 300 represent examples of decoding devices, specifically, examples of encoder and decoder, respectively. In some examples, source device 102 and target device 116 can operate in a substantially symmetrical manner, such that each of source device 102 and target device 116 includes both encoding and decoding components. Therefore, system 100 can support one-way or two-way transmission between source device 102 and target device 116, for example, for streaming, playback, broadcasting, telephone, navigation, and other applications.

[0038] Typically, data source 104 represents the source of data (i.e., raw, unencoded point cloud data) and can provide a continuous series of "frames" of data to G-PCC encoder 200, which encodes the data for each frame. Data source 104 of source device 102 may include: a point cloud capture device, such as any of a variety of cameras or sensors, such as 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 for receiving data from a data content provider. Alternatively or additionally, point cloud data may be computer-generated based on data from a scanner, camera, sensor, or other source. For example, video source 104 may generate computer-graphics-based data as source data, or produce a combination of live data, archived data, and computer-generated data. In each case, G-PCC encoder 200 encodes the captured, pre-captured, or computer-generated data. G-PCC encoder 200 may rearrange frames from their received order (sometimes referred to as "display order") into a decoding order for decoding. The G-PCC encoder 200 can generate one or more bit streams including encoded data. The source device 102 can then output the encoded data to a computer-readable medium 110 via the output interface 108 for reception and / or retrieval by, for example, the input interface 122 of the target device 116.

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

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

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

[0042] In some examples, source device 102 may output encoded data to file server 114 or another intermediate storage device that may store the encoded data generated by source device 102. Target device 116 may access the stored data from file server 114 via streaming or downloading. File server 114 may be any type of server device capable of storing encoded data and sending this encoded data to target device 116. File server 114 may represent (e.g., for a website) a web server, file transfer protocol (FTP) server, content delivery network device, or network attached storage (NAS) device. Target device 116 may access the encoded data from file server 114 via any standard data connection, including an internet connection. This may include a wireless channel (e.g., Wi-Fi connection), a wired connection (e.g., digital subscriber line (DSL), cable modem, etc.), or a combination of both, suitable for accessing encoded data stored on file server 114. File server 114 and input interface 122 may be configured to operate according to a streaming transmission protocol, a download transmission protocol, or a combination thereof.

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

[0044] The techniques disclosed herein can be applied to encoding and decoding in a variety of applications such as: communication between autonomous vehicles, communication between scanners, cameras, sensors and processing devices such as local or remote servers, geographic mapping, or other applications.

[0045] The input interface 122 of the target 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 notification information defined by the G-PCC encoder 200 and also used by the G-PCC decoder 300, such as syntax elements having 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 an entity object. In some examples, the data consumer 118 may include a display for rendering images based on point clouds.

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

[0047] The G-PCC encoder 200 and G-PCC 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 generally relates to the decoding (e.g., encoding and decoding) of images and is intended to include processes for encoding or decoding data. Encoded bitstreams typically include a series of values ​​for syntax elements representing decoding decisions (e.g., decoding modes).

[0048] This disclosure may generally refer to "signaling notification" of certain information, such as syntax elements. The term "signaling notification" generally refers to communication of values ​​for syntax elements and / or other data for decoding encoded data. That is, the G-PCC encoder 200 may signal the value for a syntax element in the bitstream. Generally, signaling notification involves generating values ​​in the bitstream. As described above, the source device 102 may transmit the bitstream to the target device 116 substantially in real time or non-real time, such as when syntax elements are stored in storage device 112 for later retrieval by the target device 116.

[0049] ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) is investigating the potential need for standardization of point cloud decoding techniques with compression capabilities significantly exceeding current methods and is working towards creating such a standard. This exploratory activity is being conducted within a collaborative task called the 3D Graphics Team (3DG) to evaluate compression technology designs proposed by its experts in this field.

[0050] Point cloud compression activities are categorized into two distinct approaches. The first is "Video Point Cloud Compression" (V-PCC), which segments a 3D object and projects these segments onto multiple 2D planes (represented as "patchworks" in a 2D frame). These 2D planes are then decoded by a traditional 2D video codec, such as the High Efficiency Video Decoding (HEVC) (ITU-T H.265) codec. The second approach is "Geometry-Based Point Cloud Compression" (G-PCC), which directly compresses 3D geometry—that is, the location of a set of points in 3D space and the associated attribute values ​​(for each point associated with the 3D geometry). G-PCC addresses point cloud compression in 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 w19617, from the July 2021 teleconference, and the codec description is available in G-PCC Codec Description v11, ISO / IEC JTC1 / SC29 / WG7 N0099, from the July 2021 teleconference.

[0051] A point cloud contains a set of points in 3D space and can have properties associated with those points. These properties can be color information such as R, G, B or Y, Cb, Cr, or reflectivity 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 is used in a variety of applications, including but not limited to construction (modeling), graphics (3D models for visualization and animation), and the automotive industry (LiDAR sensors for navigation aids).

[0052] The 3D space occupied by point cloud data can be enclosed by virtual bounding boxes. The localization of points within the bounding box can be represented with a specific precision; thus, the localization of one or more points can be quantized based on precision. At the smallest level, the bounding box is divided into voxels, which are the smallest spatial units represented by a cubic unit. A voxel within the bounding box can be associated with zero, one, or more points. The bounding box can be divided into multiple cubic / cubic regions, which can be called tiles. Each tile can be decoded into one or more stripes. The segmentation from bounding box to stripes and tiles can be based on the number of points in each partition, or on other considerations (e.g., a specific region can be decoded into a tile). Striped regions can be further segmented using segmentation decisions similar to those in video codecs.

[0053] One example way to determine points in a point cloud represented by point cloud data is to use a laser that rotates and outputs a laser beam. A sensor senses the reflection from the laser and determines the points and attribute data for those points based on the reflection. A G-PCC encoder 200 can determine the amount of laser rotation used to determine the points in the point cloud and can signal information indicating the amount of laser rotation. A G-PCC decoder 300 can receive the information indicating the amount of laser rotation and reconstruct the point cloud based on that amount of laser rotation.

[0054] As mentioned above, there are two tree structures used for encoding and decoding point clouds: octree structures and prediction tree structures. The geometry tree type (e.g., the `geom_tree_type` syntax element) indicates whether to use an octree structure or a prediction tree structure (e.g., `geom_tree_type == 0` means an octree structure, while `geom_tree_type == 1` means a prediction tree structure). If an octree structure is used, the point cloud can be decoded using a geometry tree type that is octree-based. If a prediction tree structure is used, the point cloud can be decoded using a geometry tree type that is prediction tree-based.

[0055] For both octree decoding and prediction tree decoding, the G-PCC encoder 200 can determine the amount of laser rotation used to determine the points in the point cloud represented by the point cloud data. For example, for octree decoding, to determine the amount of laser rotation, the G-PCC encoder 200 can determine the number of laser probes of the laser in a single rotation. That is, the G-PCC encoder 200 can determine the number of samples generated by the laser in a single rotation (e.g., the number of samples generated by a laser in a rotating system located at the origin). Samples can be equivalent to probes. The number of samples can be points in the point cloud. For prediction tree decoding, to determine the amount of laser rotation, the G-PCC encoder 200 can determine the unit change in the azimuth angle of the laser rotation. For example, the G-PCC encoder 200 can determine the amount of azimuth angle of the laser step used to generate samples. As mentioned above, the number of samples can be points in the point cloud.

[0056] In one or more examples, the G-PCC encoder 200 can generate a syntax element indicating the amount of laser rotation. However, the value of the syntax element can be smaller than the defined value of the laser rotation, rather than the value of the syntax element being equal to the actual amount of laser rotation. That is, to generate the syntax element, the G-PCC encoder 200 can subtract the defined value from the amount of laser rotation to generate the value of the syntax element. As an example, the defined value is equal to 1.

[0057] For example, suppose `laser_phi_per_turn` indicates the number of laser probes used for octree decoding, and `geom_angular_azimuth_step` represents the unit change in the azimuth angle of the laser rotation used for predictive tree decoding. In one or more examples, the G-PCC encoder 200 can determine `laser_phi_per_turn_minus1` for octree decoding (e.g., `laser_phi_per_turn` minus 1) and determine `geom_angular_azimuth_step_minus1` (e.g., `geom_angular_azimuth_step` minus 1). The G-PCC encoder 200 can then signal the syntax element (e.g., `laser_phi_per_turn_minus1` or `geom_angular_azimuth_step_minus1`).

[0058] The G-PCC decoder 300 can receive a syntax element that indicates the amount of laser rotation used to determine the points in the point cloud represented by the point cloud data. In this example, the value of the syntax element is smaller than a defined value than the amount of laser rotation. For example, the G-PCC decoder 300 can receive laser_phi_per_turn_minus1 or geom_angular_azimuth_step_minus1.

[0059] The G-PCC decoder 300 can determine the amount of laser rotation based on syntax elements. For example, to determine the amount of laser rotation based on syntax elements, the G-PCC decoder 300 can add a defined value to the value of the syntax element. As an example, for octree decoding, to determine the number of laser probes of the laser in a single rotation, the G-PCC decoder 300 can add 1 to laser_phi_per_turn_minus1. As another example, for prediction tree decoding, to determine the unit change of the azimuth angle of the laser rotation, the G-PCC decoder 300 can add 1 to geom_angular_azimuth_step_minus1.

[0060] The G-PCC decoder 300 can reconstruct a point cloud based on a determined amount of laser rotation. For example, the G-PCC decoder 300 can reconstruct a point cloud based on a determined number of laser probes of the laser in a single rotation. As another example, the G-PCC decoder 300 can reconstruct a point cloud based on a determined unit change in the azimuth angle of the laser rotation.

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

[0062] In both the G-PCC encoder 200 and the G-PCC decoder 300, point cloud localization is decoded first. Attribute decoding depends on the decoded geometry. Figure 2 and Figure 3 In, certain modules (e.g., Figure 2 Surface approximation analysis element 212 and RAHT element 218 and Figure 3 The surface approximation synthesis unit 310 and RAHT unit 314) are typical options for Category 1 data. Some modules (e.g., Figure 2 The LOD generation unit LOD 220 and the lifting unit 222 and Figure 3 The LOD generation unit 316 and the inverse promotion unit 318 are typical options for category 3 data. All other modules are common between categories 1 and 3.

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

[0064] At each node of the octree, occupancy is signaled (when not inferred) for one or more of its child nodes (up to eight nodes). Multiple neighborhoods are specified, including (a) nodes sharing a face with the current octree node, (b) nodes sharing a face, edge, or vertex with the current octree node, and so on. Within each neighborhood, the occupancy of a node and / or its child nodes can be used to predict the occupancy of the current node or its child nodes. For points sparsely distributed among certain nodes in the octree, the codec also supports a direct decoding mode where the 3D localization of these points is 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 decoded.

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

[0066] G-PCC employs three attribute decoding methods: 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.

[0067] Levels of detail (LOD) can be used to decode attributes, where each level of detail provides a more refined representation of the point cloud attributes. Each level of detail can be specified based on a distance metric from neighboring nodes or based on the sampling distance.

[0068] At the G-PCC encoder 200, the residual obtained as the output of the decoding method for the attributes is quantized. Context-adaptive arithmetic decoding can be used to decode the quantized residual.

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

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

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

[0072] In addition, Figure 2 In the example, voxelization unit 206 can voxelize the transformed coordinates. Voxelization of the transformed coordinates can include quantization and removal of certain points in the point cloud. In other words, multiple points in the point cloud can be grouped into a single "voxel," which can then be treated as a point in some respects. Furthermore, octree analysis unit 210 can generate an octree based on the voxelized transformed coordinates. Additionally, in Figure 2 In the example, the surface approximation analysis unit 212 can analyze points to potentially determine a surface representation of the set of points. The arithmetic coding 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 G-PCC encoder 200 can output these syntax elements in a geometric bitstream.

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

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

[0075] According to one or more examples described in this disclosure, the G-PCC encoder 200 can determine the amount of laser rotation used to determine points in a point cloud represented by point cloud data, and generate a syntax element indicating the amount of laser rotation. The value of the syntax element can be smaller than a defined value than the amount of laser rotation. The G-PCC encoder 200 can then signal the syntax element. To generate the syntax element, the G-PCC encoder 200 can subtract the defined value from the amount of laser rotation to generate the value of the syntax element. The defined value can be equal to 1.

[0076] As an example, to determine the amount of laser rotation, the G-PCC encoder 200 can determine the number of laser probes (e.g., samples generated by the laser in a single rotation) of the laser in a single rotation (e.g., for a geometry tree type that is octree decoding). The G-PCC encoder 200 can subtract one from the determined number of laser samples and use the resulting value as a syntax element to signal (e.g., signaling laser_phi_per_turn_minus1[i]). Determining the number of laser probes can indicate the amount of laser rotation. The G-PCC encoder 200 may not need to determine the exact amount of laser rotation, but determining the number of laser probes (from which the amount of laser rotation can be determined) can be considered an example of the G-PCC encoder 200 determining the amount of laser rotation.

[0077] As another example, to determine the amount of laser rotation, the G-PCC encoder 200 can determine the unit change in the azimuth angle of the laser rotation (e.g., for a geometry tree type that is prediction tree decoding). The unit change in azimuth angle can be the amount of the azimuth angle of the laser step used to generate samples. The G-PCC encoder 200 can subtract one from the determined unit change in azimuth angle and use the resulting value as a syntax element for signaling notification (e.g., signaling notification geom_angular_azimuth_step_minus1).

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

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

[0080] Octree synthesis unit 306 can synthesize octrees based on syntax elements parsed from the geometric bitstream. In an instance where surface approximation is used in the geometric bitstream, surface approximation synthesis unit 310 can determine the surface model based on syntax elements parsed from the geometric bitstream and based on the octree.

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

[0082] Additionally, in Figure 3 In the example, the inverse quantization unit 308 can inverse quantize the attribute value. The attribute value can be based on syntax elements obtained from the attribute bitstream (e.g., including syntax elements decoded by the attribute arithmetic decoding unit 304).

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

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

[0085] According to one or more examples described in this disclosure, the G-PCC decoder 300 can receive a syntax element indicating the amount of laser rotation used to determine points in the point cloud represented by the point cloud data. The value of the syntax element can be smaller than a defined value than the amount of laser rotation. The G-PCC decoder 300 can determine the amount of laser rotation based on the syntax element and reconstruct the point cloud based on the determined amount of laser rotation. To determine the amount of laser rotation based on the syntax element, the G-PCC decoder 300 can add a defined value to the value of the syntax element. The defined value can be equal to 1.

[0086] As an example, to determine the amount of laser rotation, the G-PCC decoder 300 can determine the number of laser probes (e.g., samples generated by the laser in a single rotation) of the laser in a single rotation (e.g., for a geometry tree type that is octree decoding). The G-PCC decoder 300 can determine the number of laser probes by adding a value to the received syntax element (e.g., laser_phi_per_turn_minus1[i]). As mentioned above, determining the number of laser probes can indicate the amount of laser rotation. The G-PCC decoder 300 may not need to determine the exact amount of laser rotation, but determining the number of laser probes (from which the amount of laser rotation can be determined) can be considered an example of the G-PCC decoder 300 determining the amount of laser rotation.

[0087] As another example, to determine the amount of laser rotation, the G-PCC decoder 300 can determine the unit change in the azimuth angle of the laser rotation (e.g., for a geometry tree type of prediction tree decoding). The unit change in azimuth angle can be the amount of the azimuth angle of the laser step used to generate samples. The G-PCC decoder 300 can determine the unit change in azimuth angle by adding a value to the received syntax element (e.g., geom_angular_azimuth_step_minus1).

[0088] Figure 2 and Figure 3 Various units are shown to aid in understanding the operations performed by encoder 200 and decoder 300. These units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit refers to a circuit that provides a specific function and is pre-programmed for the operations that can be performed. A programmable circuit refers to a circuit that can be programmed to perform various tasks and provides flexible functionality in the operations that can be performed. For example, a programmable circuit can execute software or firmware such that the programmable circuit operates in a manner defined by the instructions of the software or firmware. A fixed-function circuit can execute software instructions (e.g., to receive or output parameters), but the type of operation performed by a fixed-function circuit is generally immutable. In some examples, one or more of the units may be different circuit blocks (fixed-function or programmable), while in other examples, one or more of the units may be integrated circuits.

[0089] As described in more detail below, the high-level syntax for G-PCC has several aspects, which may include technical benefits in the operation of the G-PCC encoder 200 and the G-PCC decoder 300, or the utilization of certain improvements / reductions in bandwidth consumption from the high-level syntax. For example, this disclosure describes examples of high-level syntax for removing redundancy and improving G-PCC. The following example techniques may be employed independently or in combination.

[0090] In the following <add> ...< / add> The text between the lines shows the text that has been added to the grammatical structure. <delete> ...< / delete> The text between the symbols indicates text removed from the grammatical structure.

[0091] The minimum value for laser_phi_per_turn[0] is described below. Currently, azimuth decoding (e.g., using an octree decoder) defines the number of laser probes in a single rotation. The syntax laser_phi_per_turn[0] indicates the number of probes for laser 0. The corresponding value for Laser_phi_per_turn[0] cannot be zero (as it would invalidate the use of azimuth decoding). In one or more examples, the G-PCC encoder 200 may signal and the G-PCC decoder 300 may receive laser_phi_per_turn_minus1[0] for i=0 instead of laser_phi_per_turn[0], as shown in the following syntax structure.

[0092]

[0093]

[0094] Moreover, in some examples, signaling a value of 1 to indicate the number of laser probes might be indescribable, as that would indicate a scan in a specific azimuth direction and would invalidate the validity of azimuth decoding. In this case, it is also possible to alternatively signal for laser_phi_per_turn_minus2[0] for i=0. In this case, for all other lasers, there might be the following update for bitstream consistency with a minimum value of 2: <add> The requirement for bitstream consistency is that for i = 1..number_lasers_minus1, the value of LaserPhiPerTurn[i] should not be less than 2.< / add> .

[0095] The following describes the minimum and maximum values ​​for `geom_angular_azimuth_step`. `geom_angular_azimuth_step` specifies the unit change in azimuth angle. The differential prediction residuals used in angle prediction tree decoding can be partially represented as multiples of `geom_angular_azimuth_step`. The minimum unit change in azimuth angle can be 1; therefore, alternatively, the G-PCC encoder 200 can signal and the G-PCC decoder 300 can parse "_minus1". Furthermore, bitstream consistency is required: the requirement for bitstream consistency is that `geom_angular_azimuth_step`... <add> minus1< / add> The value should not be greater than (1 < <geom_angular_azimuth_scale_log2)-1。

[0096]

[0097]

[0098] Alternatively, it may be possible to achieve bitstream consistency for both the minimum and maximum values ​​without modifying the syntax: <add> The consistency requirement for the bitstream is that the value of geom_angular_azimuth_step should be in the range from 1 to (1 < 0). <geom_angular_azimuth_scale_log2) < / add> .

[0099] The following describes the techniques related to bitwise occupancy flags and planar patterns. In G-PCC, a bitwise_occupancy_coding_flag of 1 indicates that geometry node occupancy is encoded using bitwise contextualization of the occupancy_map syntax element. A bitwise_occupancy_coding_flag of 0 indicates that geometry node occupancy is encoded using the dictionary-encoded occupancy_byte syntax element.

[0100] However, currently, bit-by-bit decoding may be required when planar mode is enabled because it is incompatible. In one or more examples, the G-PCC encoder 200 can signal and the G-PCC decoder 300 can resolve the bit-by-bit occupancy flag only when planar mode is disabled, and when planar mode is enabled, the bit-by-bit occupancy flag is inferred to be 1, and therefore it does not need to be signaled. The corresponding syntactic and semantic changes are as follows:

[0101]

[0102]

[0103] A bitwise_occupancy_coding_flag value of 1 indicates that geometry node occupancy is encoded using bitwise contextualization of the occupancy_map syntax element. A bitwise_occupancy_coding_flag value of 0 indicates that geometry node occupancy is encoded using the dictionary-encoded occupancy_byte syntax element. When bitwise_occupancy_coding_flag is not present in the bitstream, it is inferred to be 1.

[0104] In some examples, there may be bitstream consistency checks, such as: geometry_planar_enabled_flag equal to 1 indicating that planar decoding mode is activated. geometry_planar_enabled_flag equal to 0 indicating that planar decoding mode is not activated. <add>The requirement for bitstream consistency is that when the value of geometry_planar_enabled_flag is equal to 1, the value of bitwise_occupancy_coding_flag should be 1.< / add> .

[0105] The following description pertains to the decoding of geom_angular_origin. geom_angular_origin_xyz[k] specifies the k-th component of the (x,y,z) coordinates of the origin used in the processing of the angle decoding mode. If it does not exist, geom_angular_origin_x, geom_angular_origin_y, and geom_angular_origin_z are inferred as 0.

[0106] However, in typical cases, the origin value may be large enough and se(v) decoding may not be optimal. In one or more examples, the G-PCC encoder 200 and G-PCC decoder 300 may use fixed-length codes (e.g., to encode or decode) where the number of bits minus 1 is signaled.

[0107]

[0108] <add> geom_angular_origin_bits_minus1< / add> Add 1 to specify the number of bits used to represent the syntax element geom_angular_origin_xyz[k].

[0109] For example, suppose the syntax element used to indicate the amount of laser rotation is the first syntax element. The G-PCC encoder 200 can encode a second syntax element of the point cloud data, which indicates the number of bits used to represent the third syntax element of the point cloud data. The third syntax element of the point cloud data indicates the coordinates of the origin used in the angle decoding mode processing. The G-PCC encoder 200 can encode the third syntax element with a fixed length.

[0110] For example, the G-PCC encoder 200 can encode geom_angluar_origin_bits_minus1 (e.g., the second syntax element from the example above), which indicates the number of bits used to generate geom_angular_origin_xyz[k] (e.g., the third syntax element in the example above). In this example, the G-PCC encoder 200 can encode geom_angular_origin_xyz[k] with a fixed length.

[0111] Similarly, the G-PCC decoder 300 can decode the second syntax element of the point cloud data, which indicates the number of bits used to represent the third syntax element of the point cloud data. The third syntax element of the point cloud data indicates the coordinates of the origin used in the angle decoding mode processing. The G-PCC decoder 300 can perform fixed-length decoding of the third syntax element.

[0112] For example, G-PCC decoder 200 can decode geom_angluar_origin_bits_minus1 (e.g., the second syntax element from the example above), which indicates the number of bits used to generate geom_angular_origin_xyz[k] (e.g., the third syntax element in the example above). In this example, G-PCC decoder 300 can perform fixed-length decoding of geom_angular_origin_xyz[k].

[0113] The following describes an example of decoding the 3T node size in the stripe header. Currently, for 3T decoding, there is a Geometric Parameter Set (GPS) level flag indicating whether 3T is enabled. If 3T is enabled, the 3T node size log2 is signaled at the stripe / data cell header level. The syntax and semantics are as follows.

[0114] A `trisoup_enabled_flag` value of 1 specifies that 3T decoding is used in the bitstream. A `trisoup_enabled_flag` value of 0 specifies that 3T decoding is not used in the bitstream. When it does not exist, the value of `trisoup_enabled_flag` is inferred to be 0.

[0115] Geometric parameter set:

[0116]

[0117]

[0118] The following uses `log2_trisoup_node_size` to specify the size of the triangle node as `TrisoupNodeSize`. If `trisoup_node_size` does not exist, its value is inferred to be 0.

[0119] TrisoupNodeSize = 1 <log2_trisoup_node_size

[0120] Geometric stripe / data cell header:

[0121]

[0122] However, if triple-soup is enabled based on GPS, then log2_trisoup_node_size cannot be zero. Accordingly, instead, the G-PCC encoder 200 can signal and the G-PCC decoder 300 can parse "_minus1". The modified syntax and semantics are as follows:

[0123]

[0124] Increasing `log2_trisoup_node_size_minus1` by 1 specifies the variable `TrisoupNodeSize` as the size of the triangle node. If `TrisoupNodeSize` does not exist, its value is inferred to be 1. `TrisoupNodeSize = 1 << (log2_trisoup_node_size_minus1 + 1)`

[0125] In some examples, if log2_trisoup_node_size = 0, then when log2_trisoup_node_size > 0, the G-PCC encoder 200 can signal and the G-PCC decoder 300 can parse the trisoup-related syntax elements.

[0126]

[0127] The following describes moving laser intrinsics to a parameter set other than the GPS (Geometric Parameter Set), such as the Sequence Parameter Set (SPS). Currently, laser intrinsics are signaled in GPS, and their signaling cost is the highest among all GPS syntax parameters. However, laser intrinsics can be sequence-level properties. For example, when capturing sequences using a LiDAR system, laser intrinsics are likely to be the same across different frames. In some examples, it is possible to use them as sequence-level information, and therefore laser intrinsics can be moved to the SPS. In some examples, when multiple GPS signals need to be transmitted (e.g., due to QP changes across frames), such a cost may be lower (e.g., lower bandwidth density) because laser intrinsics may not be part of GPS. The syntax and semantic changes are as follows.

[0128]

[0129]

[0130]

[0131]

[0132]

[0133]

[0134]

[0135] <add> `sps_laser_intrinsics_present_flag` equal to 1 indicates the presence of laser intrinsics in the bitstream. `sps_laser_intrinsics_present_flag` equal to 0 indicates the absence of laser intrinsics in the bitstream.< / add> .

[0136] <add> A value of 1 for `laser_phi_per_turn_present_flag` indicates that the bitstream contains information about the number of samples generated by different lasers in the rotation sensing system. A value of 0 for `laser_phi_per_turn_present_flag` indicates that such information does not exist.< / add> The semantics of other parameters present in GPS can remain unchanged.

[0137] In some examples, when angle mode is enabled based on GPS, laser information may need to be present in the bitstream. When octree decoding is enabled, the `laser_phi_per_turn_present` flag can (e.g., should) be equal to 1. Bitstream consistency can be presented as follows: <add> The requirement for bitstream consistency is that when the value of `geometry_angular_enabled_flag` is equal to 1, the value of `sps_laser_intrinsics_present_flag` should also be equal to 1. The requirement for bitstream consistency is that when the values ​​of `geometry_angular_enabled_flag` and `geom_tree_type` are both equal to 1, the value of `laser_phi_per_turn_present_flag` should also be equal to 1.< / add> .

[0138] The value of sps_laser_intrinsics_present_flag can also depend on the configuration file (or alternatively, bitstream consistency can be imposed), since some configuration files may not support angle modes; therefore, such laser intrinsics may be useless.

[0139] In some examples, a list of laser intrinsic parameters can be signaled in the SPS, and an index of the list of laser intrinsic parameters can be signaled in the GPS to specify which laser intrinsic parameter applies to the current GPS. When more than one laser intrinsic parameter is signaled in the SPS, the signaled value for one set of parameters can be derived from the parameters of a second set. For example, if Param1 and Param2 are sets of laser intrinsic parameters signaled in the SPS, the value of Param2 can be delta-coded from the corresponding parameter in Param1.

[0140] The following describes the minimum scaling value used for spherical coordinate transformation. When spherical coordinate transformation is enabled for attribute decoding, the scaling values ​​for all three axes are signaled. The minimum scaling value can be 1. Accordingly, alternatively, the G-PCC encoder 200 can signal and the G-PCC decoder 300 can parse "_minus1". The syntax and semantic modifications are as follows:

[0141]

[0142] While scaling values ​​for some axes are allowed to be 0, not all scaling values ​​can be equal to 0. Accordingly, bitstream consistency can be imposed: <add> The requirement for bitstream consistency is that attr_sphereal_coord_conv_scale[0], attr_sphereal_coord_conv_scale[1], and attr_sphereal_coord_conv_scale[2] should not all be equal to 0.< / add> .

[0143] The following describes the minimum value of abs_log2_bits used for predictive geometric decoding. ptn_residual_abs_log2_bits_s, ptn_residual_abs_log2_bits_delta_t, and ptn_residual_abs_log2_bits_delta_v together specify the number of bins used to decode the syntax element ptn_residual_abs_log2.

[0144] The array PtnResidualAbsLog2Bits is exported as follows:

[0145] PtnResidualAbsLog2Bits[0]=ptn_residual_abs_log2_bits_s

[0146] PtnResidualAbsLog2Bits[1]=ptn_residual_abs_log2_bits_delta_t+PtnResidualAbsLog2Bits[0]

[0147] PtnResidualAbsLog2Bits[2]=ptn_residual_abs_log2_bits_delta_v+PtnResidualAbsLog2Bits[1].

[0148] The following is an example of bitstream consistency that should have positive values ​​for PtnResidualAbsLog2Bits[1] and PtnResidualAbsLog2Bits[2].

[0149] <add> The requirement for bitstream consistency is that both PtnResidualAbsLog2Bits[1] and PtnResidualAbsLog2Bits[1] should be greater than 0.< / add> When zero values ​​are allowed: <add> The requirement for bitstream consistency is that PtnResidualAbsLog2Bits[1] and PtnResidualAbsLog2Bits[1] must not be less than 0.< / add> .

[0150] The following describes attribute scaling during coordinate transformation. When spherical coordinate transformation is used to decode attributes, the coordinate scaling value for each coordinate is signaled as follows. The latest draft of the G-PCC specification has the following signaling notification:

[0151]

[0152] The semantics of the syntax elements are as follows: attr_coord_conv_scale_bits_minus1[k] plus 1 is the bit length of the syntax element attr_coord_conv_scale[k], and attr_coord_conv_scale[k] is incremented by 2. -8Specify the scaling factor for the coordinate axes to be transformed for the units.

[0153] The coordinate transformation scaling values ​​are used as follows, and can be part of 8.3.3.2 scaling spherical coordinates.

[0154] XXX scaling AttrPos.

[0155] When geom_tree_type equals 0, the array minSph is derived as follows:

[0156]

[0157] Otherwise (geom_tree_type equals 1), the array minSph is initialized as follows:

[0158] minSph[0]=0

[0159] minSph[1]=-(1< <geom_angular_azimuth_scale_log2_minus11+10)

[0160] minSph[2]=0

[0161] Finally, AttrPos[i][k] is derived as follows:

[0162]

[0163] The `attr_coord_conv_scale[]` value can be up to 32 bits, and the result of "relPos×attr_coord_conv_scale[k]+128>>8" (or an intermediate value in its calculation) may exceed 32 bits. In some examples, it may be desirable to keep geometric calculations within 32 bits, as exceeding 32 bits can increase the cost and complexity of implementing spherical coordinate transformations, even for temporary variables / intermediate results.

[0164] In some examples, it's possible to truncate the value or intermediate value of AttrPos[i][k] (e.g., relPos × attr_coord_conv_scale[k] + 128) to 32 bits. In some examples, it's possible to require the value or intermediate value of AttrPos[i][k] (e.g., relPos × attr_coord_conv_scale[k] + 128) to be less than or equal to a fixed value (e.g., 2). 32 -1). Bitstreams that violate this constraint can be considered inconsistent, or in some cases ignored by the G-PCC decoder 300.

[0165] For example, the G-PCC encoder 200 can be configured to determine a value no more than 32 bits associated with attribute localization in spherical coordinate transformation. For example, AttrPos[i][k] or an intermediate value does not have a bit depth exceeding 32 bits. As an example, to determine this value, the G-PCC encoder 200 can be configured to at least one of the following: crop the value to less than or equal to 32 bits, and generate a value consistent with a point cloud compression standard that defines the value as having a bit depth less than or equal to 32 bits (e.g., generating a value such that it conforms to the G-PCC standard).

[0166] Similarly, the G-PCC decoder 300 can be configured to determine a value no more than 32 bits associated with attribute positioning in spherical coordinate transformation. As above, AttrPos[i][k] or intermediate values ​​do not have a bit depth exceeding 32 bits. As an example, to determine this value, the G-PCC decoder 300 can be configured to at least one of the following: crop the value to less than or equal to 32 bits, and receive a value consistent with a point cloud compression standard that defines the value as having a bit depth less than or equal to 32 bits (e.g., receiving a value conforming to the G-PCC standard).

[0167] Figure 4 This is a flowchart illustrating an example of encoding point cloud data. Figure 4 Examples of this can be performed by a device for encoding point cloud data. Examples of devices include source device 102 or G-PCC encoder 200. The device includes memory configured to store point cloud data. Examples of memory include memory 106 or the memory of G-PCC encoder 200. The device also includes one or more processors coupled to the memory. The one or more processors may be one or more processors of source device 102 including G-PCC encoder 200. As another example, the one or more processors may be processors of G-PCC encoder 200. The one or more processors may include fixed-function and / or programmable circuitry.

[0168] One or more processors (e.g., G-PCC encoder 200) can be configured to determine the amount of laser rotation (400) used to determine points in the point cloud represented by the point cloud data. As an example, to determine the amount of laser rotation, one or more processors of the G-PCC encoder 200 can be configured to determine the number of laser probes of the laser in a single rotation. The one or more processors of the G-PCC encoder 200 can determine the number of laser probes of the laser in a single rotation for a geometry tree type that is octree decoding (e.g., geom_tree_type == 0). In a single rotation of the laser, the number of laser probes of the laser can refer to the number of samples generated by the laser of the rotation sensing system located at the origin.

[0169] As another example, to determine the amount of laser rotation, one or more processors of the G-PCC encoder 200 can determine the unit change in the azimuth angle of the laser rotation. The one or more processors of the G-PCC encoder 200 can determine the unit change in the azimuth angle of the laser rotation for the type of geometry tree used in predictive geometry decoding (e.g., geom_tree_type == 1). The unit change in the azimuth angle of the laser rotation can be the amount of the azimuth angle of the laser step used to generate the sample.

[0170] One or more processors of the G-PCC encoder 200 can generate syntax elements indicating the amount of laser rotation, wherein the value of the syntax element is less than the amount of laser rotation by a defined value (402). For example, to generate the syntax element, the G-PCC encoder 200 can subtract the defined value from the amount of laser rotation to generate the value of the syntax element. The defined value can be equal to 1. An example of a syntax element is laser_phi_per_turn_minus1 (e.g., for octree decoding). Another example of a syntax element is geom_angular_azimuth_step_minus1 (e.g., for predictive geometry decoding).

[0171] One or more processors of the G-PCC encoder 200 may signal syntax elements (404). For example, one or more processors of the G-PCC encoder 200 may signal laser_phi_per_turn_minus1 or geom_angular_azimuth_step_minus1 based on whether the geometry tree type is octree decoding or predictive geometry decoding (also known as predictive tree decoding).

[0172] Figure 5 This is a flowchart illustrating an example of decoding point cloud data. Figure 5 Examples of this can be performed by a device for decoding point cloud data. Examples of devices include target device 116 or G-PCC decoder 300. The device includes memory configured to store point cloud data. Examples of memory include memory 120 or the memory of G-PCC decoder 300. The device also includes one or more processors coupled to the memory. The one or more processors may be one or more processors of target device 116 including G-PCC decoder 300. As another example, the one or more processors may be processors of G-PCC decoder 300. The one or more processors may include fixed-function and / or programmable circuitry.

[0173] One or more processors of the G-PCC decoder 300 may receive a syntax element indicating the amount of laser rotation used to determine the points in the point cloud represented by the point cloud data, wherein the value of the syntax element is smaller than a defined value (500) than the amount of laser rotation. For example, one or more processors of the G-PCC decoder 300 may receive a laser_phi_per_turn_minus1 syntax element or a geom_angular_azimuth_step_minus1 syntax element.

[0174] One or more processors of the G-PCC decoder 300 can determine the amount of laser rotation based on the syntax element (502). For example, to determine the amount of laser rotation based on the syntax element, one or more processors of the G-PCC decoder 300 can add a defined value to the value of the syntax element. In the example, the defined value could be 1.

[0175] As an example, to determine the amount of laser rotation, one or more processors of the G-PCC decoder 300 can be configured to determine the number of laser probes of the laser in a single rotation. The one or more processors of the G-PCC decoder 300 can determine the number of laser probes of the laser in a single rotation for a geometry tree type that is octree decoding (e.g., geom_tree_type == 0). In a single rotation of the laser, the number of laser probes of the laser can refer to the number of samples generated by the laser of the rotation sensing system located at the origin.

[0176] As another example, to determine the amount of laser rotation, one or more processors of the G-PCC decoder 300 can determine the unit change in the azimuth angle of the laser rotation. The one or more processors of the G-PCC decoder 300 can determine the unit change in the azimuth angle of the laser rotation for the type of geometry tree used in predictive geometry decoding (e.g., geom_tree_type == 1). The unit change in the azimuth angle of the laser rotation can be the amount of azimuth angle of the laser step used to generate samples.

[0177] One or more processors of the G-PCC decoder 300 can reconstruct a point cloud based on a determined amount of laser rotation. For example, the `laser_phi_per_turn_minus1` syntax element or the `geom_angular_azimuth_step_minus1` syntax element indicates the amount of rotation associated with the laser (e.g., a rotating LiDAR scan in a 3D environment). The amount of rotation associated with the laser can indicate where points are located in the point cloud and can therefore be used to reconstruct the point cloud.

[0178] The following provides some examples of techniques that can be executed individually or in any combination.

[0179] Clause 1A. A method for decoding point cloud data, the method comprising: receiving a syntax element indicating the number of laser probes, wherein the value of the syntax element is less than the number of laser probes by a defined value; and decoding the point cloud data based on the received syntax element.

[0180] Clause 2A. A method for encoding point cloud data, the method comprising: determining the number of laser probes for encoding the point cloud data; and signaling a syntax element indicating the number of laser probes, wherein the value of the syntax element is less than the number of laser probes by a defined value.

[0181] Clause 3A. The method as in either Clause 1A or 2A, wherein the defined value is one of 1 or 2.

[0182] Clause 4A. A method for decoding point cloud data, the method comprising: receiving a syntax element indicating a unit change in azimuth, wherein the value of the syntax element is smaller than a defined value than the unit change in azimuth; and decoding the point cloud data based on the received syntax element.

[0183] Clause 5A. A method for encoding point cloud data, the method comprising: determining a unit change of azimuth for encoding the point cloud data; and signaling a syntax element indicating the unit change of azimuth, wherein the value of the syntax element is smaller than a defined value than the unit change of azimuth.

[0184] Clause 6A. The method as in any of Clauses 4A and 5A, where the defined value is 1.

[0185] Clause 7A. A method for decoding point cloud data, the method comprising: in a first instance, determining that a planar mode for decoding the point cloud data is disabled; in the first instance, parsing a syntax element indicating whether bit-wise contextualization is used to encode geometric node occupancy; in a second instance, determining that a planar mode for decoding the point cloud data is enabled; and in the second instance, inferring whether bit-wise contextualization is used to encode geometric node occupancy without parsing.

[0186] Clause 8A. A method for encoding point cloud data, the method comprising: in a first instance, determining that a planar mode for decoding the point cloud data is disabled; in the first instance, a signaling notification indicating whether a syntax element for encoding geometric node occupancy is used with bit-by-bit contextualization; in a second instance, determining that a planar mode for decoding the point cloud data is enabled; and in the second instance, bypassing the signaling notification indicating whether a syntax element for encoding geometric node occupancy is used with bit-by-bit contextualization.

[0187] Clause 9A. A method for decoding point cloud data, the method comprising: performing fixed-length decoding on a first syntax element of the point cloud data, the first syntax element indicating the number of bits for a second syntax element representing the point cloud data, the second syntax element indicating the coordinates of the origin used in the processing of an angle decoding mode.

[0188] Clause 10A. A method for encoding point cloud data, the method comprising: encoding a first syntax element of the point cloud data with a fixed length, the first syntax element indicating the number of bits for a second syntax element representing the point cloud data, the second syntax element indicating the coordinates of the origin used in the processing of an angle decoding mode.

[0189] Clause 11A. A method for decoding point cloud data, the method comprising: receiving a syntax element indicating the size of a triangle node, wherein the value of the syntax element is smaller than the size of the triangle node by a defined value; and decoding the point cloud data based on the received syntax element.

[0190] Clause 12A. A method for encoding point cloud data, the method comprising: determining the size of a triangle node for encoding the point cloud data; and signaling a syntax element indicating the size of the triangle node, wherein the value of the syntax element is smaller than a unit change in azimuth angle by a defined value.

[0191] Clause 13A. A method for decoding point cloud data, the method comprising: resolving syntax elements in a parameter set other than a geometric parameter set that indicate the presence of laser intrinsics in the bitstream.

[0192] Clause 14A. A method for encoding point cloud data, the method comprising: signaling a syntax element in a parameter set other than a geometric parameter set indicating the presence of laser intrinsics in the bit stream.

[0193] Clause 15A. The method of any of Clauses 13 and 14, wherein the parameter set includes a sequence parameter set.

[0194] Clause 16A. A method for decoding point cloud data, the method comprising: receiving a syntax element indicating a scaling factor value for spherical coordinate transformation, wherein the value of the syntax element is smaller than the scaling factor value by a defined value; and decoding the point cloud data based on the received syntax element.

[0195] Clause 17A. A method for encoding point cloud data, the method comprising: determining a scaling factor value for encoding the point cloud data; and signaling a syntax element indicating the scaling factor value, wherein the value of the syntax element is smaller than a defined value than the scaling factor value.

[0196] Clause 18A. The method as in any of Clauses 16 and 17, wherein the defined value is 1.

[0197] Clause 19A. An apparatus for decoding point cloud data, the apparatus comprising: a memory configured to store the point cloud data, and processing circuitry coupled to the memory and configured to perform a method of any one or a combination of Clauses 1A, 3A, 4A, 6A, 7A, 9A, 11A, 13A, 15A, 16A and 18A.

[0198] Clause 20A. Devices such as those in Clause 19A also include displays for rendering images based on point clouds.

[0199] Clause 21A. An apparatus for encoding point cloud data, the apparatus comprising: a memory configured to store the point cloud data, and processing circuitry coupled to the memory and configured to perform the method of any one or a combination of Clauses 2A, 3A, 5A, 6A, 8A, 10A, 12A, 14A, 15A, 17A and 18A.

[0200] Clause 22A. The apparatus of Clause 21A also includes apparatus for generating point clouds.

[0201] Clause 23A. An apparatus for decoding point cloud data, the apparatus comprising: a component for performing a method of any one or a combination of Clauses 1A, 3A, 4A, 6A, 7A, 9A, 11A, 13A, 15A, 16A and 18A.

[0202] Clause 24A. An apparatus for encoding point cloud data, the apparatus comprising: a component for performing a method of any one or a combination of Clauses 2A, 3A, 5A, 6A, 8A, 10A, 12A, 14A, 15A, 17A and 18A.

[0203] Clause 25A. A computer-readable storage medium having instructions thereon stored thereon, which, when executed, cause one or more processors to perform any one or a combination of the methods of Clauses 1A, 3A, 4A, 6A, 7A, 9A, 11A, 13A, 15A, 16A and 18A.

[0204] Clause 26A. A computer-readable storage medium having instructions thereon stored thereon, which, when executed, cause one or more processors to perform any one or a combination of the methods of Clauses 2A, 3A, 5A, 6A, 8A, 10A, 12A, 14A, 15A, 17A and 18A.

[0205] Clause 1B. A method for encoding point cloud data, the method comprising: determining an amount of laser rotation for determining points in a point cloud represented by the point cloud data; generating a syntax element indicating the amount of laser rotation, wherein the value of the syntax element is smaller than the amount of laser rotation by a defined value; and a signaling notification syntax element.

[0206] Clause 2B. The method of Clause 1B, wherein determining the amount of laser rotation includes determining the number of laser probes of the laser in a single rotation.

[0207] Clause 3B. The method of Clause 2B, wherein determining the number of laser probes of a laser in a single rotation includes determining the number of laser probes of a laser in a single rotation for a geometry tree type that is an octree decoded.

[0208] Clause 4B. The method of Clause 1B, wherein determining the amount of laser rotation includes determining the unit change of the azimuth angle of the laser rotation.

[0209] Clause 5B. The method of Clause 4B, wherein determining the unit change of the azimuth angle of the laser rotation includes determining the unit change of the azimuth angle of the laser rotation for the type of geometry tree for predictive geometry decoding.

[0210] Clause 6B. The method of any of Clauses 1B-5B, wherein generating a syntax element comprises subtracting a defined value from the amount of laser rotation to generate the value of the syntax element.

[0211] Clause 7B. The method of any of Clauses 1B-6B, wherein the defined value is equal to 1.

[0212] Clause 8B. The method of any one of Clauses 1B-7B, wherein the syntax element is a first syntax element, the method further comprising: encoding a second syntax element of the point cloud data, the second syntax element indicating the number of bits used to represent a third syntax element of the point cloud data, wherein the third syntax element of the point cloud data indicates the coordinates of the origin used in the processing of the angle decoding mode; and encoding the third syntax element with a fixed length.

[0213] Clause 9B. A method as described in any of Clauses 1B-8B, wherein the value includes a first value, the method further comprising: determining a second value, not exceeding 32 bits, associated with attribute positioning in a spherical coordinate transformation, wherein determining the second value includes at least one of: cropping the second value to less than or equal to 32 bits; and generating a second value consistent with a point cloud compression standard that has a bit depth of less than or equal to 32 bits for the defined value.

[0214] Clause 10B. A method for decoding point cloud data, the method comprising: receiving a syntax element indicating an amount of laser rotation for determining points in the point cloud represented by the point cloud data, wherein the value of the syntax element is smaller than the amount of laser rotation by a defined value; determining the amount of laser rotation based on the syntax element; and reconstructing the point cloud based on the determined amount of laser rotation.

[0215] Clause 11B. The method of Clause 10B, wherein determining the amount of laser rotation based on syntax elements includes determining the number of laser probes of the laser in a single rotation.

[0216] Clause 12B. The method of Clause 11B, wherein determining the number of laser probes of a laser in a single rotation includes determining the number of laser probes of a laser in a single rotation for a geometry tree type that is an octree decoded.

[0217] Clause 13B. The method of Clause 10B, wherein determining the amount of laser rotation based on syntax elements includes determining the unit change of the azimuth angle of the laser rotation.

[0218] Clause 14B. The method of Clause 13B, wherein determining the unit change of the azimuth angle of the laser rotation includes determining the unit change of the azimuth angle of the laser rotation for the type of geometry tree for predictive geometry decoding.

[0219] Clause 15B. The method of any of Clauses 10B-14B, wherein determining the amount of laser rotation based on a syntax element includes adding a defined value to the value of the syntax element.

[0220] Clause 16B. The method of any of Clauses 10B-15B, wherein the defined value is equal to 1.

[0221] Clause 17B. The method of any one of Clauses 10B-16B, wherein the syntax element is a first syntax element, the method further comprising: decoding a second syntax element of the point cloud data, the second syntax element indicating the number of bits used to represent a third syntax element of the point cloud data, wherein the third syntax element of the point cloud data indicates the coordinates of the origin used in the processing of the angle decoding mode; and decoding the third syntax element with a fixed length.

[0222] Clause 18B. A method as described in any of Clauses 10B-17B, wherein the value includes a first value, the method further comprising: determining a second value, not exceeding 32 bits, associated with attribute positioning in a spherical coordinate transformation, wherein determining the second value includes at least one of: cropping the second value to less than or equal to 32 bits; and receiving the second value consistent with a point cloud compression standard that has a bit depth less than or equal to 32 bits for the defined value.

[0223] Clause 19B. An apparatus for encoding point cloud data, the apparatus comprising: a memory configured to store the point cloud data, and one or more processors coupled to the memory, wherein the one or more processors are configured to: determine an amount of laser rotation for determining points in the point cloud represented by the point cloud data; generate a syntax element indicating the amount of laser rotation, wherein the value of the syntax element is smaller than the amount of laser rotation by a defined value; and a signaling notification syntax element.

[0224] Clause 20B. The apparatus of Clause 19B, wherein determining the amount of laser rotation includes determining the number of laser probes of the laser in a single rotation.

[0225] Clause 21B. The apparatus of Clause 20B, wherein determining the number of laser probes of a laser in a single rotation includes determining the number of laser probes of a laser in a single rotation for a geometry tree type that is an octree decoded.

[0226] Clause 22B. As in Clause 19B, the device wherein determining the amount of laser rotation includes determining the unit change in the azimuth angle of the laser rotation.

[0227] Clause 23B. The apparatus of Clause 22B, wherein the unit change in determining the azimuth angle of the laser rotation includes the unit change in determining the azimuth angle of the laser rotation for the type of geometry tree that is predictive geometry decoding.

[0228] Clause 24B. The apparatus of any of Clauses 19B-23B, wherein generating a syntax element comprises subtracting a defined value from the amount of laser rotation to generate the value of the syntax element.

[0229] Clause 25B. Equipment as in any of Clauses 19B-24B, wherein the defined value is equal to 1.

[0230] Clause 26B. An apparatus of any of Clauses 19B-25B, wherein the syntax element is a first syntax element, and one or more processors are configured to: encode a second syntax element of point cloud data, the second syntax element indicating the number of bits used to represent a third syntax element of the point cloud data, wherein the third syntax element of the point cloud data indicates the coordinates of the origin used in the processing of the angle decoding mode; and encode the third syntax element with a fixed length.

[0231] Clause 27B. An apparatus for decoding point cloud data, the apparatus comprising: a memory configured to store the point cloud data, and one or more processors coupled to the memory, wherein the one or more processors are configured to: receive a syntax element indicating an amount of laser rotation for determining points in the point cloud represented by the point cloud data, wherein the value of the syntax element is smaller than the amount of laser rotation by a defined value; determine the amount of laser rotation based on the syntax element; and reconstruct the point cloud based on the determined amount of laser rotation.

[0232] Clause 28B. The apparatus of Clause 27B, wherein determining the amount of laser rotation based on syntax elements includes determining the number of laser probes of the laser in a single rotation.

[0233] Clause 29B. The apparatus of Clause 28B, wherein determining the number of laser probes of the laser in a single rotation includes determining the number of laser probes of the laser in a single rotation for a geometry tree type that is an octree decoded.

[0234] Clause 30B. As in Clause 27B, where determining the amount of laser rotation based on syntax elements includes determining the unit change of the azimuth angle of the laser rotation.

[0235] Clause 31B. The apparatus of Clause 30B, wherein the unit change in determining the azimuth angle of the laser rotation includes the unit change in determining the azimuth angle of the laser rotation for the type of geometry tree that is predictive geometry decoding.

[0236] Clause 32B. The device of any of Clauses 27B-31B, wherein determining the amount of laser rotation based on a syntax element includes adding a defined value to the value of the syntax element.

[0237] Clause 33B. Equipment as in any of Clauses 27B-32B, wherein the defined value is equal to 1.

[0238] Clause 34B. An apparatus of any of Clauses 27B-33B, wherein the syntax element is a first syntax element, and one or more processors are configured to: decode a second syntax element of point cloud data, the second syntax element indicating the number of bits used to represent a third syntax element of the point cloud data, wherein the third syntax element of the point cloud data indicates the coordinates of the origin used in the processing of the angle decoding mode; and perform fixed-length decoding of the third syntax element.

[0239] Clause 35B. An apparatus for encoding point cloud data, the apparatus comprising: means for determining an amount of laser rotation for determining points in a point cloud represented by the point cloud data; means for generating a syntax element indicating the amount of laser rotation, wherein the value of the syntax element is smaller than the amount of laser rotation by a defined value; and means for signaling the syntax element.

[0240] Clause 36B. A computer-readable storage medium having instructions stored thereon that, when executed, cause one or more processors to: determine an amount of laser rotation for determining points in a point cloud represented by point cloud data; generate a syntax element indicating the amount of laser rotation, wherein the value of the syntax element is less than a defined value of the amount of laser rotation; and a signaling notification syntax element.

[0241] Clause 37B. An apparatus for decoding point cloud data, the apparatus comprising: means for receiving a syntax element indicating an amount of laser rotation for determining points in a point cloud represented by the point cloud data, wherein the value of the syntax element is smaller than the amount of laser rotation by a defined value; means for determining the amount of laser rotation based on the syntax element; and means for reconstructing the point cloud based on the determined amount of laser rotation.

[0242] Clause 38B. A computer-readable storage medium having instructions thereon that, when executed, cause one or more processors to: receive a syntax element indicating an amount of laser rotation for determining points in a point cloud represented by point cloud data, wherein the value of the syntax element is smaller than a defined value than the amount of laser rotation; determine the amount of laser rotation based on the syntax element; and reconstruct the point cloud based on the determined amount of laser rotation.

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

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

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

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

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

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

Claims

1. A method for encoding point cloud data, the method comprising: One or more processors determine the amount of laser rotation used to determine points in the point cloud represented by the point cloud data, wherein determining the amount of laser rotation includes one of the following: Determine the number of laser probes for the laser in a single rotation, or Determine the change in the azimuth angle of the laser rotation; One or more processors generate syntax elements that indicate the amount of rotation of the laser by the points in the point cloud, wherein the value of the syntax elements is a defined value smaller than the amount of rotation of the laser, and wherein the defined value is 1; as well as The value of the syntax element is notified by one or more processor signaling methods.

2. The method of claim 1, wherein determining the amount of laser rotation comprises determining the number of laser probes of the laser in a single rotation.

3. The method of claim 2, wherein determining the number of laser probes of the laser in a single rotation comprises determining the number of laser probes of the laser in a single rotation for the geometry tree type for octree decoding.

4. The method of claim 2, wherein determining the amount of laser rotation includes determining the change in the azimuth angle of the laser rotation.

5. The method of claim 4, wherein determining the change in the azimuth angle of the laser rotation includes determining the change in the azimuth angle of the laser rotation for the type of geometry tree for predicting geometry decoding.

6. The method of claim 1, wherein generating the syntax element comprises subtracting the defined value from the amount of rotation of the laser to generate the value of the syntax element.

7. The method of claim 1, wherein the syntax element is a first syntax element, the method further comprising: The second syntax element of the point cloud data is encoded, the second syntax element indicating the number of bits used to represent the third syntax element of the point cloud data, wherein the third syntax element of the point cloud data indicates the coordinates of the origin used in the processing of the angle decoding mode; and The third syntax element is encoded with a fixed length.

8. The method of claim 1, wherein the value includes a first value, and the method further comprises: Determine a second value, not exceeding 32 bits, associated with attribute positioning in spherical coordinate transformation, wherein determining the second value includes at least one of the following: The second value is cropped to less than or equal to 32 bits; and Generate the second value, which is consistent with a point cloud compression standard that defines the value as having a bit depth of less than or equal to 32 bits.

9. A method for decoding point cloud data, the method comprising: One or more processors receive the value of a syntax element indicating the amount of laser rotation for determining points in the point cloud represented by the point cloud data, wherein the value of the syntax element is a defined value smaller than the amount of laser rotation, and wherein the defined value is 1. One or more processors determine, based on the syntax elements, the amount by which the laser rotates to determine the points in the point cloud, wherein determining the amount by which the laser rotates includes one of the following: Determine the number of laser probes for the laser in a single rotation, or Determine the change in the azimuth angle of the laser rotation; as well as The point cloud is reconstructed using one or more processors based on a determined amount of laser rotation.

10. The method of claim 9, wherein determining the amount of laser rotation based on the syntax element includes determining the number of laser probes of the laser in a single rotation.

11. The method of claim 10, wherein determining the number of laser probes of the laser in a single rotation comprises determining the number of laser probes of the laser in a single rotation for the geometry tree type for octree decoding.

12. The method of claim 9, wherein determining the amount of laser rotation based on the syntax element includes determining the change in the azimuth angle of the laser rotation.

13. The method of claim 12, wherein determining the change in the azimuth angle of the laser rotation includes determining the change in the azimuth angle of the laser rotation for the type of geometry tree for predicting geometry decoding.

14. The method of claim 9, wherein determining the amount of laser rotation based on the syntax element includes adding the defined value to the value of the syntax element.

15. The method of claim 9, wherein the syntax element is a first syntax element, the method further comprising: Decoding the second syntax element of the point cloud data, the second syntax element indicating the number of bits used to represent the third syntax element of the point cloud data, wherein the third syntax element of the point cloud data indicates the coordinates of the origin used in the processing of the angle decoding mode; and The third syntax element is decoded with a fixed length.

16. The method of claim 9, wherein the value includes a first value, and the method further comprises: Determine a second value, not exceeding 32 bits, associated with attribute positioning in spherical coordinate transformation, wherein determining the second value includes at least one of the following: The second value is cropped to less than or equal to 32 bits; and Receive the second value, which is consistent with a point cloud compression standard that defines the value as having a bit depth of less than or equal to 32 bits.

17. An apparatus for encoding point cloud data, the apparatus comprising: A memory configured to store the point cloud data; as well as One or more processors coupled to the memory, wherein the one or more processors are configured to: Determine the amount of laser rotation used to determine points in the point cloud represented by the point cloud data, wherein, to determine the amount of laser rotation, the one or more processors are configured to perform one of the following operations: Determine the number of laser probes for the laser in a single rotation, or Determine the change in the azimuth angle of the laser rotation; A syntax element is generated to determine the amount of laser rotation by the points in the point cloud, wherein the value of the syntax element is a defined value smaller than the amount of laser rotation, and wherein the defined value is 1; and The signaling notifies the value of the syntax element.

18. The device of claim 17, wherein, in order to determine the amount of rotation of the laser, the one or more processors are configured to determine the number of laser probes of the laser in a single rotation.

19. The apparatus of claim 18, wherein, in order to determine the number of laser probes of the laser in a single rotation, the one or more processors are configured to determine the number of laser probes of the laser in a single rotation for a geometry tree type for octree decoding.

20. The device of claim 17, wherein, in order to determine the amount of rotation of the laser, the one or more processors are configured to determine a unit change in the azimuth angle of the laser rotation.

21. The apparatus of claim 20, wherein determining the unit change in the azimuth angle of the laser rotation includes determining the change in the azimuth angle of the laser rotation for the type of geometry tree for predicting geometry decoding.

22. The apparatus of claim 17, wherein, in order to generate the syntax element, the one or more processors are configured to subtract the defined value from the amount of rotation of the laser to generate the value of the syntax element.

23. The device of claim 17, wherein the syntax element is a first syntax element, and wherein the one or more processors are configured to: The second syntax element of the point cloud data is encoded, the second syntax element indicating the number of bits used to represent the third syntax element of the point cloud data, wherein the third syntax element of the point cloud data indicates the coordinates of the origin used in the processing of the angle decoding mode; and The third syntax element is encoded with a fixed length.

24. An apparatus for decoding point cloud data, the apparatus comprising: A memory configured to store the point cloud data; as well as One or more processors coupled to the memory, wherein the one or more processors are configured to: The receiving instruction is used to determine the value of a syntax element representing the amount of laser rotation of a point in the point cloud represented by the point cloud data, wherein the value of the syntax element is a defined value smaller than the amount of laser rotation, and wherein the defined value is 1. Based on the syntax elements, determine the amount of rotation of the laser by the points in the point cloud, wherein determining the amount of laser rotation includes one of the following: Determine the number of laser probes for the laser in a single rotation, or Determine the change in the azimuth angle of the laser rotation; and The point cloud is reconstructed based on the determined amount of laser rotation.

25. The device of claim 24, wherein, in order to determine the amount of laser rotation based on the syntax element, the one or more processors are configured to determine the number of laser probes of the laser in a single rotation.

26. The apparatus of claim 25, wherein, in order to determine the number of laser probes of the laser in a single rotation, the one or more processors are configured to determine the number of laser probes of the laser in a single rotation for a geometry tree type for octree decoding.

27. The device of claim 24, wherein, in order to determine the amount of laser rotation based on the syntax element, the one or more processors are configured to determine the change in the azimuth angle of the laser rotation.

28. The apparatus of claim 27, wherein, in order to determine the change in the azimuth angle of the laser rotation, the one or more processors are configured to determine the change in the azimuth angle of the laser rotation for a geometry tree type for predicting geometry decoding.

29. The device of claim 24, wherein, in order to determine the amount of laser rotation based on the syntax element, the one or more processors are configured to add the defined value to the value of the syntax element.

30. The device of claim 24, wherein the syntax element is a first syntax element, and wherein the one or more processors are configured to: Decoding the second syntax element of the point cloud data, the second syntax element indicating the number of bits used to represent the third syntax element of the point cloud data, wherein the third syntax element of the point cloud data indicates the coordinates of the origin used in the processing of the angle decoding mode; and The third syntax element is decoded with a fixed length.

31. An apparatus for encoding point cloud data, the apparatus comprising: The component for determining the amount of laser rotation for determining points in the point cloud represented by the point cloud data, wherein the component for determining the amount of laser rotation includes one of the following: A component used to determine the number of laser probes of the laser in a single rotation, or A component used to determine changes in the azimuth angle of the laser's rotation; A component for generating a syntax element indicating the amount of laser rotation by which the points in the point cloud are rotated, wherein the value of the syntax element is a defined value smaller than the amount of laser rotation, and wherein the defined value is 1; and A component used for signaling the value of the syntax element.

32. A non-transitory computer-readable storage medium having instructions stored thereon, said instructions, when executed, causing one or more processors to: Determine the amount of laser rotation for determining points in a point cloud represented by point cloud data, wherein the instructions causing the one or more processors to determine the amount of laser rotation include instructions causing the one or more processors to perform one of the following operations: Determine the number of laser probes for the laser in a single rotation, or Determine the change in the azimuth angle of the laser rotation; A syntax element is generated to determine the amount of laser rotation by the points in the point cloud, wherein the value of the syntax element is a defined value smaller than the amount of laser rotation, and wherein the defined value is 1; and The signaling notifies the value of the syntax element.

33. An apparatus for decoding point cloud data, the apparatus comprising: A component for receiving a value of a syntax element indicating the amount of laser rotation for determining points in a point cloud represented by the point cloud data, wherein the value of the syntax element is a defined value smaller than the amount of laser rotation, and wherein the defined value is 1. The component for determining, based on the syntax element, the amount of rotation of the laser by the points in the point cloud, wherein the component for determining the amount of rotation of the laser includes one of the following: A component used to determine the number of laser probes of the laser in a single rotation, or A component used to determine changes in the azimuth angle of the laser's rotation; as well as A component used to reconstruct the point cloud based on a determined amount of laser rotation.

34. A non-transitory computer-readable storage medium having instructions stored thereon, said instructions, when executed, causing one or more processors to: The receiving instruction is used to determine the value of a syntax element representing the amount of laser rotation of a point in a point cloud represented by point cloud data, wherein the value of the syntax element is a defined value smaller than the amount of laser rotation, and wherein the defined value is 1. Based on the syntax elements, the amount of rotation of the laser by the points in the point cloud is determined, wherein the instructions that cause the one or more processors to determine the amount of laser rotation include instructions that cause the one or more processors to perform one of the following operations: Determine the number of laser probes for the laser in a single rotation, or Determine the change in the azimuth angle of the laser rotation; and The point cloud is reconstructed based on the determined amount of laser rotation.