High-Level Syntax for Laser Rotation in Geometry Point Cloud Compression (G-PCC)

By signaling a value less than the actual laser rotation in G-PCC, the method optimizes bandwidth utilization in point cloud compression, addressing inefficiencies in existing techniques and improving encoding and decoding efficiency.

JP7798872B2Active Publication Date: 2026-01-14QUALCOMM INC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2023517764
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-09-08
Filing Date
2021-09-09
Publication Date
2026-01-14
Estimated Expiration
2041-09-09

AI Technical Summary

Technical Problem

Existing point cloud compression techniques suffer from inefficiencies in bandwidth utilization due to redundant signaling of laser rotation values, which can be optimized by refining the high-level syntax in geometry point cloud compression (G-PCC).

Method used

The G-PCC encoder signals a value equal to the actual laser rotation minus a specified value (e.g., 1) instead of the actual amount, allowing the decoder to reconstruct the correct rotation by adding the specified value, thereby reducing the data needed to be signaled and improving bandwidth efficiency.

Benefits of technology

This approach reduces bandwidth requirements by signaling smaller values, enhancing bandwidth efficiency in point cloud encoding and decoding processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007798872000017
    Figure 0007798872000017
  • Figure 0007798872000018
    Figure 0007798872000018
  • Figure 0007798872000019
    Figure 0007798872000019
Patent Text Reader

Abstract

A method for encoding point cloud data includes the steps of determining an amount of rotation of a laser to determine a point in a point cloud represented by the point cloud data, generating a syntax element indicating the amount of rotation of the laser, the value of the syntax element being a specified value less than the amount of rotation of the laser, and signaling the syntax element.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[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.

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

[0003] A point cloud is a collection of points in three-dimensional space. The points may correspond to points on an object in three-dimensional space. Thus, a point cloud may be used to represent the physical content of a three-dimensional space. Point clouds may have utility in a wide variety of situations. For example, a point cloud may be used in the context of autonomous vehicles to represent the location of objects on a road. In another example, a point cloud may be used in the context of representing the physical content of an environment for purposes of positioning virtual objects in an augmented reality (AR) or mixed reality (MR) application. Point cloud compression is the process for encoding and decoding a point cloud. Encoding a point cloud can reduce the amount of data required to store and transmit the point cloud. [Prior art documents] [Non-patent literature]

[0004] [Non-Patent Document 1] G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19617, Teleconference, July 2021 [Non-patent document 2] G-PCC Codec Description v11, ISO / IEC JTC1 / SC29 / WG7 N0099, Teleconference, July 2021 Summary of the Invention [Means for solving the problem]

[0005] In general, this disclosure describes techniques for refining and / or improving high-level syntax for geometry point cloud compression (G-PCC). For example, this disclosure describes example syntax elements for G-PCC and configuring point cloud decoding based on the example syntax elements. In one or more examples, the number of syntax elements utilized can be reduced compared to some other techniques, thereby also reducing bandwidth utilization. For example, example techniques may relate to the elimination of redundancy and the refinement of the high-level syntax of G-PCC.

[0006] The G-PCC encoder may determine the amount by which the laser rotates to determine a point in the point cloud. There may be a requirement that the amount by which the laser rotates to determine a point in the point cloud be a non-zero number. That is, there may be a requirement that each laser rotate to determine a point in the point cloud. Thus, rather than the G-PCC encoder signaling a value indicating the actual amount by which the laser rotates, the G-PCC encoder may signal a value equal to the actual amount by which the laser rotates minus a specified value (e.g., 1). The G-PCC decoder may add the specified value to the received value to determine the amount by which the laser rotates. For example, if the G-PCC encoder signals a value of 0 for the amount by which the laser rotates, the G-PCC decoder may determine that the actual amount by which the laser rotates is 1 (e.g., 0 + 1).

[0007] A G-PCC encoder that signals a smaller value tends to require less bandwidth than a G-PCC encoder that signals a larger value. Thus, by having the G-PCC encoder signal a value equal to the actual amount the laser rotates minus a specified value (e.g., 1) rather than a value equal to the actual amount the laser rotates, exemplary techniques can reduce the amount of data that needs to be signaled and improve bandwidth efficiency.

[0008] In one example, a method for encoding point cloud data includes determining an amount of laser rotation to determine a point 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 a specified value that is less than the amount of laser rotation; and signaling the syntax element.

[0009] In one example, a method for decoding point cloud data includes receiving a syntax element indicating an amount of rotation of a laser to determine a point in a point cloud represented by the point cloud data, wherein the value of the syntax element is a specified value less than the amount of rotation of the laser; determining the amount of rotation of the laser based on the syntax element; and reconstructing the point cloud based on the determined amount of rotation of the laser.

[0010] In one example, a device 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 rotation of a laser for determining a point in a point cloud represented by the point cloud data; generate a syntax element indicating the amount of rotation of the laser, wherein a value of the syntax element is a specified value that is less than the amount of rotation of the laser; and signal the syntax element.

[0011] In one example, a device 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 by which a laser rotates to determine a point in a point cloud represented by the point cloud data, wherein a value of the syntax element is a specified value that is less than the amount by which the laser rotates; determine the amount by which the laser rotates based on the syntax element; and reconstruct the point cloud based on the determined amount by which the laser rotates.

[0012] In one example, a device for encoding point cloud data includes means for determining an amount of rotation of a laser to determine a point in a point cloud represented by the point cloud data, means for generating a syntax element indicating the amount of rotation of the laser, wherein the value of the syntax element is a specified value less than the amount of rotation of the laser, and means for signaling the syntax element.

[0013] In one example, a computer-readable storage medium storing instructions that, when executed, cause one or more processors to determine an amount of rotation of a laser to determine a point in a point cloud represented by the point cloud data; generate a syntax element indicating the amount of rotation of the laser, wherein the value of the syntax element is a specified value that is less than the amount of rotation of the laser; and signal the syntax element.

[0014] In one example, a device for decoding point cloud data includes means for receiving a syntax element indicating an amount by which a laser rotates to determine a point in a point cloud represented by the point cloud data, wherein the value of the syntax element is a specified value that is less than the amount by which the laser rotates; means for determining the amount by which the laser rotates based on the syntax element; and means for reconstructing the point cloud based on the determined amount by which the laser rotates.

[0015] In one example, a computer-readable storage medium storing instructions that, when executed, cause one or more processors to: receive a syntax element indicating an amount by which a laser will rotate to determine a point in a point cloud represented by point cloud data, wherein the value of the syntax element is a specified value that is less than the amount by which the laser will rotate; determine an amount by which the laser will rotate based on the syntax element; and reconstruct the point cloud based on the determined amount by which the laser will rotate.

[0016] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will become apparent from the description, drawings, and claims. [Brief explanation of the drawings]

[0017]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

[0018] In geometry 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 the points are located in the point cloud. In some examples, a G-PCC encoder may encode the point cloud in an octree structure. For example, the G-PCC encoder may partition the point cloud into multiple N×N×N cubes. For each cube that contains at least one point, the G-PCC encoder may further partition the cube into multiple N / 2×N / 2×N / 2 cubes, further partition any of these cubes that have at least one point, and so on. The G-PCC encoder may encode attribute values ​​for the points in each of the cubes. The attribute values ​​may be coordinates, colors, and other such values.

[0019] As another example, a G-PCC encoder may encode a point cloud in a prediction tree structure. In the prediction tree structure, each point in the point cloud may be associated with a node in the prediction tree. The nodes may be connected to each other in a hierarchical structure such that the node may have one or more ancestor nodes. In the prediction tree structure, the position (geometry) for the current node may be predicted from the positions of one or more ancestor nodes, which are encoded and decoded before the current node.

[0020] When a point cloud is encoded and decoded using an octree structure, the G-PCC encoder and the G-PCC decoder may be considered to perform octree coding (i.e., the geometry tree type is octree coding). When a point cloud is encoded and decoded using a predictive tree structure, the G-PCC encoder and the G-PCC decoder may be considered to perform predictive geometry coding (i.e., the geometry tree type is predictive geometry coding). Predictive geometry coding may also be referred to as predictive tree coding. The syntax element geom_tree_type may indicate whether octree coding or predictive geometry coding is used. For example, geom_tree_type==0 may mean that octree coding is used, and geom_tree_type==1 may mean that predictive geometry coding is used.

[0021] For both octree coding and predictive geometry coding, the G-PCC encoder may determine the amount of laser rotation to determine a point in the point cloud. As an example, the amount of laser rotation may refer to the number of laser probes of the laser in one revolution of the laser. The number of laser probes may be for a geometry tree type that is octree coding (i.e., geom_tree_type==0). For example, the number of laser probes of the laser in one revolution of the laser may refer to the number of samples produced by a laser of a rotation sensing system located at the origin. The syntax element laser_phi_per_turn[i] may indicate the number of laser probes of the laser in one revolution of the laser. However, as described in more detail, in one or more examples, the G-PCC encoder may signal, and the G-PCC decoder may receive, laser_phi_per_turn_minus1[i] rather than signaling laser_phi_per_turn[i].

[0022] As another example, the amount the laser turns may refer to a unit change in azimuth angle that the laser turns. The unit change in azimuth angle may be for a geometry tree type that is predictive geometry coding (i.e., geom_tree_type==1). The syntax element geom_angular_azimuth_step may indicate a unit change in azimuth angle. However, as described in more detail, in one or more examples, rather than signaling geom_angular_azimuth_step, a G-PCC encoder may signal, and a G-PCC decoder may receive, geom_angular_azimuth_step_minus1.

[0023] In the above example, determining the amount the laser will rotate to determine points in the point cloud may include determining the number of laser probes of the laser and / or determining the unit change in azimuth angle the laser will rotate in one revolution of the laser. For example, the number of laser probes of the laser may indicate the amount the laser will rotate, 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 by 90 degrees. If the number of laser probes is two, the laser will rotate by 180 degrees.

[0024] In the present disclosure, determining the amount of rotation of the laser to determine a point in the point cloud can be an inferred or 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 determine the amount of rotation of the laser, but the amount of rotation of the laser can be indicated by the number of laser probes. However, in this example, the G-PCC encoder or G-PCC decoder can be considered to determine the amount of rotation of the laser.

[0025] There may be a requirement that the amount that the laser turns to determine a point in the point cloud cannot be zero. In one example, laser_phi_per_turn[i] and geom_angular_azimuth_step cannot be zero and have a minimum value of 1. Thus, in this example, rather than signaling the actual value of laser_phi_per_turn[i], it may be possible for the G-PCC encoder to signal, and the G-PCC decoder to receive, the actual value of laser_phi_per_turn[i] minus a specified value (e.g., 1). In other words, rather than signaling and receiving laser_phi_per_turn[i], the G-PCC encoder may signal, and the G-PCC decoder may receive, laser_phi_per_turn_minus1[i], where 1 is the specified value. Similarly, rather than signaling the actual value of geom_angular_azimuth_step, it may be possible for the G-PCC encoder to signal, and the G-PCC decoder to receive, the actual value of geom_angular_azimuth_step minus a default value (e.g., 1). In other words, rather than signaling and receiving geom_angular_azimuth_step, the G-PCC encoder may signal, and the G-PCC decoder may receive, geom_angular_azimuth_step_minus1, where 1 is the default value.

[0026] Bandwidth may be reduced by a G-PCC encoder signaling a smaller value compared to a larger value. Thus, bandwidth efficiency may be increased if a G-PCC encoder signals laser_phi_per_turn_minus1[i] instead of laser_phi_per_turn[i] when geom_tree_type==0 (i.e., octree coding). Similarly, bandwidth efficiency may be increased if a G-PCC encoder signals geom_angular_azimuth_step_minus1 instead of geom_angular_azimuth_step when geom_tree_type==1 (i.e., predictive tree coding).

[0027] From the G-PCC decoder's perspective, it may 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 number of laser probes by the laser in one revolution). Similarly, it may 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 azimuth angle that the laser turns).

[0028] Thus, in one or more examples, a G-PCC encoder may determine an amount of rotation of a laser to determine a point in a point cloud represented by the point cloud data, generate a syntax element indicating the amount of rotation of the laser, where the value of the syntax element is a specified value less than the amount of rotation of the laser, and signal the syntax element. A G-PCC decoder may receive a syntax element indicating the amount of rotation of a laser to determine a point in a point cloud represented by the point cloud data, where the value of the syntax element is a specified value less than the amount of rotation of the laser, determine the amount of rotation of the laser based on the syntax element, and reconstruct the point cloud based on the determined amount of rotation of the laser.

[0029] For example, the amount by which the laser rotates may be the number of laser probes by the laser in one revolution (e.g., for a geometry tree type that is octree coding). As another example, the amount by which the laser rotates may be a unit change in azimuth angle by which the laser rotates (e.g., for a geometry tree type that is predictive geometry coding).

[0030] An example of a syntax element that indicates the amount by which the laser turns is laser_phi_per_turn_minus1[i], where the value of laser_phi_per_turn_minus1[i] is a specified value less than the amount by which the laser turns (e.g., less than the number of probes by the laser in one revolution). Another example of a syntax element that indicates the amount by which the laser turns is geom_angular_azimuth_step_minus1, where the value of geom_angular_azimuth_step_minus1 is a specified value less than the amount by which the laser turns (e.g., less than a unit change in the azimuth angle by which the laser turns).

[0031] 1 is a block diagram illustrating an example encoding and decoding system 100 that may implement the techniques of this disclosure. The techniques of this disclosure are generally directed to coding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. In general, point cloud data includes any data for processing a point cloud. Coding may be effective to compress and / or decompress the point cloud data.

[0032] 1, the system 100 includes a source device 102 and a destination device 116. The source device 102 provides encoded point cloud data to be decoded by the destination device 116. In particular, in the example of FIG. 1, the source device 102 provides the point cloud data to the destination device 116 via a computer-readable medium 110. The source device 102 and the destination device 116 may comprise any of a wide range of devices, including a desktop computer, a notebook (i.e., laptop) computer, a tablet computer, a set-top box, a telephone handset such as a smartphone, a television, a camera, a display device, a digital media player, a video gaming console, a video streaming device, a land or sea vehicle, a spacecraft, an aircraft, a robot, a LIDAR device, a satellite, etc. In some cases, the source device 102 and the destination device 116 may be capable of wireless communication.

[0033] In the example of FIG. 1 , source device 102 includes data source 104, memory 106, G-PCC encoder 200, and output interface 108. Destination device 116 includes input interface 122, G-PCC decoder 300, memory 120, and data consumer 118. According to this disclosure, G-PCC encoder 200 of source device 102 and G-PCC decoder 300 of destination device 116 may be configured to apply techniques of this disclosure related to refinements and / or improvements to high-level syntax for G-PCC. Thus, source device 102 represents an example of an encoding device, and destination device 116 represents an example of a decoding device. In other examples, source device 102 and destination device 116 may include other components or arrangements. For example, source device 102 may receive data (e.g., point cloud data) from an internal or external source. Similarly, destination device 116 may interface with an external data consumer rather than including the data consumer within the same device.

[0034] System 100 as shown in FIG. 1 is merely an example. In general, other digital encoding and / or decoding devices may implement the techniques of this disclosure related to the refinement and / or improvement of the high-level syntax for G-PCC. Source device 102 and destination device 116 are merely examples of devices in which source device 102 generates coded data for transmission to destination device 116. This disclosure refers to devices that perform coding (encoding and / or decoding) of data as “coding” devices. Accordingly, G-PCC encoder 200 and G-PCC decoder 300 represent examples of coding devices, specifically, encoders and decoders, respectively. In some examples, source device 102 and destination device 116 may operate in a substantially symmetrical manner, such that each of source device 102 and destination device 116 includes encoding and decoding components. Thus, system 100 may support unidirectional or bidirectional transmission between source device 102 and destination device 116, for example, streaming, playback, broadcast, telephony, navigation, and other applications.

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

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

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

[0038] In some examples, source device 102 may output encoded data from output interface 108 to storage device 112. Similarly, destination device 116 may 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 a hard drive, Blu-ray disc, DVD, CD-ROM, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded data.

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

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

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

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

[0043] The G-PCC encoder 200 and the G-PCC decoder 300 may each be implemented as any of a variety of suitable encoder and / or decoder circuit configurations, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the techniques are implemented partially in software, a device may store instructions for the software on a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to implement the techniques of this disclosure. The G-PCC encoder 200 and the G-PCC decoder 300 may each be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (codec) within the respective device. A device including the G-PCC encoder 200 and / or the G-PCC decoder 300 may comprise one or more integrated circuits, microprocessors, and / or other types of devices.

[0044] The G-PCC encoder 200 and the G-PCC decoder 300 may operate according to a coding standard such as the Video Point Cloud Compression (V-PCC) standard or the Geometry Point Cloud Compression (G-PCC) standard. This disclosure may generally refer to coding (e.g., encoding and decoding) of pictures to include the processes of encoding or decoding data. An encoded bitstream generally includes a series of values ​​for syntax elements that represent coding decisions (e.g., coding modes).

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

[0046] ISO / IEC MPEG (JTC1 / SC29 / WG11) is investigating the potential need for, and aims to develop, a standard for, point cloud coding techniques with compression capabilities significantly beyond those of current methods. The group is working together on this research in a collaborative effort known as the 3-Dimensional Graphics Team (3DG) to evaluate compression design proposals by experts in the field.

[0047] Point cloud compression activities are categorized into two different approaches. The first approach is "video point cloud compression" (V-PCC), which segments a 3D object and projects the segments into multiple 2D planes (represented as "patches" in a 2D frame), which are further coded by a legacy 2D video codec such as the High Efficiency Video Coding (HEVC) (ITU-T H.265) codec. The second approach is "geometry-based point cloud compression" (G-PCC), which directly compresses the 3D geometry, i.e., the locations of a set of points in 3D space and the associated attribute values ​​(for each point associated with the 3D geometry). G-PCC addresses the compression of point clouds in both category 1 (static point clouds) and category 3 (dynamically acquired point clouds). The latest draft of the G-PCC standard is available in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19617, Teleconference, July 2021, and the codec description is available in G-PCC Codec Description v11, ISO / IEC JTC1 / SC29 / WG7 N0099, Teleconference, July 2021.

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

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

[0050] One exemplary way to determine points in a point cloud represented by point cloud data is to use a rotating laser that outputs a laser beam. A sensor detects reflections from the laser and determines points and attribute data for the points based on the reflections. The G-PCC encoder 200 may determine an amount by which the laser rotates to determine points in the point cloud and may signal information indicating the amount by which the laser rotates. The G-PCC decoder 300 may receive the information indicating the amount by which the laser rotates and reconstruct the point cloud based on the amount by which the laser rotates.

[0051] As mentioned above, there may be two tree structures for encoding and decoding point clouds: an octree structure and a predictive tree structure. The geometry tree type (e.g., geom_tree_type syntax element) may indicate whether an octree structure or a predictive tree structure is used (e.g., geom_tree_type==0 means an octree structure, and geom_tree_type==1 means a predictive tree structure). If an octree structure is used, the point cloud may be for a geometry tree type that is octree coding. If a predictive tree structure is used, the point cloud may be for a geometry tree type that is predictive tree coding.

[0052] For both octree coding and predictive tree coding, the G-PCC encoder 200 may determine the amount the laser will rotate to determine a point in the point cloud represented by the point cloud data. For example, for octree coding, to determine the amount the laser will rotate, the G-PCC encoder 200 may determine the number of laser probes by the laser in one revolution. That is, the G-PCC encoder 200 may determine the number of samples produced by the laser in one revolution (e.g., the number of samples produced by the laser in a rotating system located at the origin). A sample may be equivalent to a probe. The number of samples may be a point in the point cloud. For predictive tree coding, to determine the amount the laser will rotate, the G-PCC encoder 200 may determine the unit change in azimuth angle by which the laser will rotate. For example, the G-PCC encoder 200 may determine the amount of azimuth angle the laser will move to produce a sample. As mentioned above, the number of samples may be a point in the point cloud.

[0053] In one or more examples, the G-PCC encoder 200 may generate a syntax element that indicates an amount by which the laser rotates. However, the value of the syntax element may not be equal to the actual amount by which the laser rotates, but rather the value of the syntax element may be a predetermined value that is less than the amount by which the laser rotates. That is, to generate the syntax element, the G-PCC encoder 200 may subtract the predetermined value from the amount by which the laser rotates to generate the value of the syntax element. As one example, the predetermined value is equal to 1.

[0054] For example, assume that laser_phi_per_turn indicates the number of laser probes for octree coding and geom_angular_azimuth_step indicates the unit change in azimuth angle that the laser turns for predictive tree coding. In one or more examples, G-PCC encoder 200 may determine laser_phi_per_turn_minus1 (e.g., laser_phi_per_turn minus 1) and determine geom_angular_azimuth_step_minus1 (e.g., geom_angular_azimuth_step minus 1) for octree coding. G-PCC encoder 200 may then signal a syntax element (e.g., laser_phi_per_turn_minus1 or geom_angular_azimuth_step_minus1).

[0055] The G-PCC decoder 300 may receive a syntax element that indicates the amount of rotation of the laser to determine a point in the point cloud represented by the point cloud data. In this example, the value of the syntax element is a specified value that is less than the amount of rotation of the laser. For example, the G-PCC decoder 300 may receive laser_phi_per_turn_minus1 or geom_angular_azimuth_step_minus1.

[0056] The G-PCC decoder 300 may determine the amount by which the laser rotates based on the syntax element. For example, to determine the amount by which the laser rotates based on the syntax element, the G-PCC decoder 300 may add a specified value to the value of the syntax element. As an example, in the case of octree coding, the G-PCC decoder 300 may add 1 to laser_phi_per_turn_minus1 to determine the number of laser probes by the laser in one rotation. As another example, in the case of predictive tree coding, the G-PCC decoder 300 may add 1 to geom_angular_azimuth_step_minus1 to determine the unit change in the azimuth angle by which the laser rotates.

[0057] The G-PCC decoder 300 may reconstruct the point cloud based on a determined amount that the laser rotates. For example, the G-PCC decoder 300 may reconstruct the point cloud based on a determined number of laser probes by the laser in one revolution. As another example, the G-PCC decoder 300 may reconstruct the point cloud based on a determined unit change in azimuth angle that the laser rotates.

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

[0059] In both the G-PCC encoder 200 and the G-PCC decoder 300, the point cloud position is coded first. Attribute coding depends on the decoded geometry. In Figures 2 and 3, some modules (e.g., the surface approximation analysis unit 212 and the RAHT unit 218 in Figure 2 and the surface approximation synthesis unit 310 and the RAHT unit 314 in Figure 3) are options that are typically used for Category 1 data. Some modules (e.g., the LOD generation unit LOD 220 and the lifting unit 222 in Figure 2 and the LOD generation unit 316 and the inverse lifting unit 318 in Figure 3) are options that are typically used for Category 3 data. All other modules are common between Category 1 and Category 3.

[0060] For Category 3 data, the compressed geometry is typically represented as an octree from the root to the leaf level of individual voxels. For Category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree from the root to the leaf level of blocks larger than a voxel) plus a model that approximates the surface within each leaf of the pruned octree. In this way, both Category 1 and 3 data share the octree coding mechanism, and Category 1 data may further approximate the voxels within each leaf with a surface model. The surface model used is a triangulation involving 1 to 10 triangles per block, resulting in a triangle soup. Category 1 geometry codecs are therefore known as Trisoup geometry codecs, and Category 3 geometry codecs are known as Octree geometry codecs.

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

[0062] When geometry is coded, attributes corresponding to the geometry points are coded. When there are multiple attribute points corresponding to one reconstructed / decoded geometry point, an attribute value representing the reconstruction point may be derived.

[0063] G-PCC has three attribute coding methods: region-adaptive hierarchical transform (RAHT) coding, interpolation-based hierarchical nearest neighbor prediction (prediction transform), and interpolation-based hierarchical nearest neighbor prediction with update / lifting steps (lifting transform). RAHT and lifting are typically used for category 1 data, and prediction is typically used for category 3 data. However, either method can be used for any data; just like with geometry codecs in G-PCC, the attribute coding method used to code the point cloud is specified in the bitstream.

[0064] The coding of attributes may be performed at a level of detail (LOD), with each level of detail being used to obtain a more precise representation of the point cloud attributes, which may be specified based on a distance metric from neighboring nodes or based on a sampling distance.

[0065] In the G-PCC encoder 200, the residual obtained as the output of the attribute-directed coding method is quantized. The quantized residual may be coded using context-adaptive arithmetic coding.

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

[0067] 2, the G-PCC encoder 200 may receive a set of locations and a set of attributes. The locations may include coordinates of points in the point cloud. The attributes may include information about the points in the point cloud, such as a color associated with the points in the point cloud.

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

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

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

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

[0072] According to one or more examples described herein, the G-PCC encoder 200 may determine an amount by which a laser rotates to determine a point in a point cloud represented by the point cloud data and generate a syntax element indicating the amount by which the laser rotates. The value of the syntax element may be a specified value that is less than the amount by which the laser rotates. The G-PCC encoder 200 may signal the syntax element. To generate the syntax element, the G-PCC encoder 200 may subtract the specified value from the amount by which the laser rotates to generate the value of the syntax element. The specified value may be equal to 1.

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

[0074] As another example, to determine the amount the laser turns, the G-PCC encoder 200 may determine a unit change in azimuth angle that the laser turns (e.g., for a geometry tree type that is predictive tree coding). The unit change in azimuth angle may be the amount of azimuth angle that the laser travels to produce a sample. The G-PCC encoder 200 may subtract 1 from the determined unit change in azimuth angle and signal the resulting value as a syntax element (e.g., signaling geom_angular_azimuth_step_minus1).

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

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

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

[0078] Additionally, the geometry reconstruction unit 312 may perform a reconstruction to determine the coordinates of the points in the point cloud. The coordinate inverse transformation unit 320 may apply an inverse transformation to the reconstructed coordinates to convert the reconstructed coordinates (positions) of the points in the point cloud from the transformed domain back to the original domain.

[0079] 3, the inverse quantization unit 308 may inverse quantize the attribute values, which may be based on syntax elements obtained from the attribute bitstream (e.g., including syntax elements decoded by the attribute arithmetic decoding unit 304).

[0080] Depending on how the attribute values ​​are encoded, the RAHT unit 314 may perform RAHT coding to determine color values ​​for the points of the point cloud based on the dequantized attribute values. Alternatively, the LOD generation unit 316 and the inverse lifting unit 318 may use a level-of-detail-based technique to determine color values ​​for the points of the point cloud.

[0081] 3, the color inverse transform unit 322 may apply an inverse color transform to the color values. The inverse color transform may be the inverse of the color transform applied by the color transform unit 204 of the encoder 200. For example, the color transform unit 204 may transform the color information from the RGB color space to the YCbCr color space. Thus, the inverse color transform unit 322 may transform the color information from the YCbCr color space to the RGB color space.

[0082] According to one or more examples described in this disclosure, the G-PCC decoder 300 may receive a syntax element indicating an amount by which a laser should rotate to determine a point in a point cloud represented by the point cloud data. The value of the syntax element may be a specified value that is less than the amount by which the laser should rotate. The G-PCC decoder 300 may determine the amount by which the laser should rotate based on the syntax element and reconstruct the point cloud based on the determined amount by which the laser rotates. To determine the amount by which the laser should rotate based on the syntax element, the G-PCC decoder 300 may add the specified value to the value of the syntax element. The specified value may be equal to 1.

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

[0084] As another example, to determine the amount the laser turns, the G-PCC decoder 300 may determine the unit change in azimuth angle that the laser turns (e.g., for a geometry tree type that is predictive tree coding). The unit change in azimuth angle may be the amount of azimuth angle that the laser travels to produce a sample. The G-PCC decoder 300 may add 1 to the value of a received syntax element (e.g., geom_angular_azimuth_step_minus1) to determine the unit change in azimuth angle.

[0085] The various units in FIGS. 2 and 3 are shown to aid in understanding the operations performed by the encoder 200 and the decoder 300. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit refers to a circuit that provides specific functionality and is preset for the operations that may be performed. A programmable circuit refers to a circuit that may be programmed to perform various tasks and provides flexible functionality in the operations that may be performed. For example, a programmable circuit may execute software or firmware that causes the programmable circuit to operate in a manner defined by the software or firmware instructions. A fixed-function circuit may execute software instructions (e.g., to receive parameters or output parameters), but the types of operations that the fixed-function circuit performs are generally invariant. In some examples, one or more of the units may be different circuit blocks (fixed function or programmable), and in some examples, one or more of the units may be an integrated circuit.

[0086] As described in more detail below, the high-level syntax for G-PCC has several aspects where there may be technical benefits in the operation of the G-PCC encoder 200 and the G-PCC decoder 300 or reductions in bandwidth consumption with some refinement / improvement of the high-level syntax. For example, this disclosure describes examples for eliminating redundancy and refining the high-level syntax of G-PCC. The following example techniques may be utilized alone or in combination.

[0087] In the following, <add> ...< / add> The text between indicates the text that will be added to the syntax structure. <delete> ...< / delete> The text between indicates the text that is to be removed from the syntax structure.

[0088] The following describes the minimum value for laser_phi_per_turn[0]. Currently, orientation coding (e.g., using an octree coder) defines the number of laser probes in one 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 zero would cancel the use of orientation coding). 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:

[0089] [Table 1]

[0090] Furthermore, in some instances, signaling a value of 1 to indicate the number of laser probes may not be feasible, as it would indicate scanning in a particular azimuth direction and negate the effectiveness of the azimuth coding. In that case, it is also possible to signal laser_phi_per_turn_minus2[0] for i=0 instead. In this case, there may be the following updates to the bitstream adaptation with a minimum value of 2 for all other lasers: <add>For i = 1..number_lasers_minus1, it is a bitstream conformity requirement that the value of LaserPhiPerTurn[i] must not be less than 2. < / add> .

[0091] The following describes the minimum and maximum values for geom_angular_azimuth_step. geom_angular_azimuth_step specifies the unit change in the azimuth angle. The differential prediction residuals used in the angular prediction tree coding can be partially represented as multiples of geom_angular_azimuth_step. The minimum value for the unit change in the azimuth angle may be 1, and thus, instead of "_minus1", the G-PCC encoder 200 may signal and the G-PCC decoder 300 may parse. Additionally, it is proposed to have bitstream compliance. geom_angular_azimuth_step_ <add>minus1< / add> It is a requirement for bitstream compliance that the value of <add>minus1< / add> must not exceed (1<<geom_angular_azimuth_scale_log2) - 1.

[0092] [Table 2]

[0093] Alternatively, it is also possible to have bitstream compliance for both the minimum and maximum values without modifying the syntax. <add>It is a bitstream conformity requirement that the value of geom_angular_azimuth_step must be within the range of 1 to (1 << geom_angular_azimuth_scale_log2). < / add> .

[0094] The following describes techniques related to the bit unit occupancy flag and the planar mode in G-PCC. In G-PCC, a bitwise_occupancy_coding_flag equal to 1 indicates that the geometry node occupancy is encoded using bit unit context of the syntax element occupancy_map. A bitwise_occupancy_coding_flag equal to 0 indicates that the geometry node occupancy is encoded using the dictionary coding syntax element occupancy_byte.

[0095] However, currently, when planar mode is enabled, there may be a requirement to perform bit-wise coding, as byte-wise coding is non-compliant. In one or more examples, the G-PCC encoder 200 may signal the bit-wise occupancy flag only when planar mode is disabled, and the G-PCC decoder 300 may parse and infer that when planar mode is enabled, the bit-wise occupancy flag is 1 and therefore does not need to be signaled. The corresponding syntax and semantic changes are as follows:

[0096] [Table 3]

[0097] bitwise_occupancy_coding_flag equal to 1 indicates that geometry node occupancies are coded using the bitwise contextualization of the syntax element occupancy_map. bitwise_occupancy_coding_flag equal to 0 indicates that geometry node occupancies are coded using the dictionary coding syntax element occupancy_byte. bitwise_occupancy_coding_flag is inferred to be 1 when not present in the bitstream.

[0098] In some examples, there may be a bitstream conformance check such as: geometry_planar_enabled_flag equal to 1 indicates that planar coding mode is activated; geometry_planar_enabled_flag equal to 0 indicates that planar coding mode is not activated. <add>When the value of geometry_planar_enabled_flag is equal to 1, it is a bitstream conformity requirement that the value of bitwise_occupancy_coding_flag must be 1. < / add> .

[0099] The following description pertains to the coding of geom_angular_origin: geom_angular_origin_xyz[k] specifies the kth component of the (x,y,z) coordinate of the origin used in processing in angular coding mode. When not present, geom_angular_origin_x, geom_angular_origin_y, and geom_angular_origin_z are inferred to be 0.

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

[0101] [Table 4]

[0102] <add>geom_angular_origin_bits_minus1< / add> The plus 1 specifies the number of bits used to represent the syntax element geom_angular_origin_xyz[k].

[0103] For example, assume that the syntax element used to indicate the amount the laser rotates is the first syntax element. The G-PCC encoder 200 may encode a second syntax element of the point cloud data that indicates the number of bits used to represent a 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 coding mode processing. The G-PCC encoder 200 may perform fixed-length encoding of the third syntax element.

[0104] For example, the G-PCC encoder 200 may encode geom_angular_origin_bits_minus1 (e.g., the second syntax element in 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 may fixed-length code geom_angular_origin_xyz[k].

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

[0106] For example, the G-PCC decoder 300 may decode geom_angular_origin_bits_minus1 (e.g., the second syntax element in 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 decoder 300 may fixed-length decode geom_angular_origin_xyz[k].

[0107] Below we describe an example for coding trisoup node size in slice header. Currently, for trisoup coding, there is a Geometry Parameter Set (GPS) level flag to indicate whether trisoup is enabled. If trisoup is enabled, trisoup node size log2 is signaled at slice / data unit header level. The syntax and semantics are as follows:

[0108] trisoup_enabled_flag equal to 1 specifies that trisoup coding is used in the bitstream. trisoup_enabled_flag equal to 0 specifies that trisoup coding is not used in the bitstream. When not present, the value of trisoup_enabled_flag is inferred to be 0.

[0109] [Table 5]

[0110] log2_trisoup_node_size specifies the variable TrisoupNodeSize as the size of the triangle nodes as follows: When not present, the value of log2_trisoup_node_size is inferred to be equal to 0. TrisoupNodeSize=1< <log2_trisoup_node_size

[0111] [Table 6]

[0112] However, if trisoup is enabled from GPS, log2_trisoup_node_size may not be zero. Therefore, the G-PCC encoder 200 may signal, and the G-PCC decoder 300 may parse, "_minus1" instead. The modified syntax and semantics are as follows:

[0113] [Table 7]

[0114] log2_trisoup_node_size_minus1 plus 1 specifies the variable TrisoupNodeSize as the size of the triangle nodes: When not present, the value of TrisoupNodeSize is inferred to be equal to 1: TrisoupNodeSize=1<<(log2_trisoup_node_size_minus1+1)

[0115] In some examples, if it is possible to have log2_trisoup_node_size=0, the G-PCC encoder 200 may signal, and the G-PCC decoder 300 may parse, trisoup-related syntax elements when log2_trisoup_node_size>0.

[0116] [Table 8]

[0117] The following describes moving laser intrinsics to a parameter set other than the geometry parameter set (GPS), such as a sequence parameter set (SPS). Currently, laser intrinsics are signaled within the GPS and have the most signaling cost of all syntax parameters in GPS. However, laser intrinsics may be a sequence-level property. For example, when a sequence is captured with a LiDAR system, the laser intrinsics are likely to be the same across different frames. In some examples, it may be possible to use laser intrinsics as sequence-level information, and thus the laser intrinsics may be moved to the SPS. In some examples, multiple GPS intrinsics, if they need to be sent (e.g., due to QP changes across frames), may be cheaper (e.g., less bandwidth-intensive) because the laser intrinsics do not need to be part of the GPS. The syntax and semantic changes are as follows:

[0118] [Table 9A]

[0119] [Table 9B]

[0120] [Table 9C]

[0121] [Table 10A]

[0122] [Table 10B]

[0123] [Table 10C]

[0124] <add>A sps_laser_intrinsics_present_flag equal to 1 indicates that laser intrinsics are present in the bitstream. A sps_laser_intrinsics_present_flag equal to 0 indicates that laser intrinsics are not present in the bitstream. < / add> .

[0125] <add>A laser_phi_per_turn_present_flag equal to 1 indicates that information on the number of samples generated by different lasers of the rotation detection system is present in the bitstream. A laser_phi_per_turn_present_flag equal to 0 indicates that such information is not present. < / add> The semantic meaning of other parameters present in GPS may remain unchanged.

[0126] In some examples, when angle mode is enabled from GPS, laser information may need to be present in the bitstream. When octree coding is enabled, the laser_phi_per_turn_present flag may be (e.g., must be) equal to 1. The bitstream adaptation may be presented as follows: <add>When the value of geometry_angular_enabled_flag is equal to 1, it is a bitstream conformity requirement that the value of sps_laser_intrinsics_present_flag must be equal to 1. When the value of geometry_angular_enabled_flag is equal to 1 and the value of geom_tree_type is equal to 1, it is a bitstream conformity requirement that the value of laser_phi_per_turn_present_flag must be equal to 1.< / add> .

[0127] The value of sps_laser_intrinsics_present_flag may be conditional on the profile (or alternatively, bitstream adaptation may be imposed) since some profiles may not support angular modes, and therefore such laser intrinsics may not be useful.

[0128] In some examples, a list of laser intrinsic parameters may be signaled in the SPS, and an index into the list of laser intrinsic parameters may be signaled in the GPS to specify which laser intrinsic parameters apply to the current GPS. When multiple laser intrinsic parameters are signaled in the SPS, the values ​​signaled for parameters for one set may be derived from parameters in a second set. For example, if Param1 and Param2 are sets of laser intrinsic parameters signaled in the SPS, the value of Param2 may be delta coded with the corresponding parameter in Param1.

[0129] The following describes the minimum value of scaling for spherical coordinate conversion. When spherical coordinate conversion is enabled for attribute coding, scale values ​​for all three axes are signaled. The minimum scaling value may be 1. Therefore, the G-PCC encoder 200 may signal and the G-PCC decoder 300 may parse "_minus1" instead. The syntax and semantics modifications are as follows:

[0130] [Table 11]

[0131] If scaling values ​​for some axes are allowed to be 0, then not all of the scale values ​​may be equal to zero, and therefore bitstream adaptation may be imposed. <add>It is a bitstream conformance requirement that attr_spherical_coord_conv_scale[0], attr_spherical_coord_conv_scale[1] and attr_spherical_coord_conv_scale[2] must not all be equal to 0.< / add> .

[0132] The following describes the minimum value of abs_log2_bits for predictive geometry coding. 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 code the syntax element ptn_residual_abs_log2.

[0133] The array PtnResidualAbsLog2Bits is derived as follows: PtnResidualAbsLog2Bits[0]=ptn_residual_abs_log2_bits_s PtnResidualAbsLog2Bits[1]=ptn_residual_abs_log2_bits_delta_t+PtnResidualAbsLog2Bits[0] PtnResidualAbsLog2Bits[2]=ptn_residual_abs_log2_bits_delta_v+PtnResidualAbsLog2Bits[1]

[0134] The following is an example of a bitstream adaptation for PtnResidualAbsLog2Bits[1] and PtnResidualAbsLog2Bits[2] to have positive values:

[0135] <add> It is a bitstream conformance requirement that both PtnResidualAbsLog2Bits[1] and PtnResidualAbsLog2Bits[2] must be greater than 0.< / add> In that case, a value of zero is allowed. <add> It is a bitstream conformance requirement that both PtnResidualAbsLog2Bits[1] and PtnResidualAbsLog2Bits[2] must not be less than 0.< / add> .

[0136] The following describes attribute position scaling in coordinate conversion. When spherical coordinate conversion is used to code attributes, for each coordinate, the coordinate scale value is signaled as follows: The latest draft of the G-PCC specification has the following signaling:

[0137] [Table 12]

[0138] 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], which specifies the scale factor of the converted coordinate axes, minus 2. ~8 Specify in units of .

[0139] The coordinate conversion scale value is used as follows and may be part of 8.3.3.2 Scaling Spherical Coordinates. XXX scales AttrPos. When geom_tree_type is equal to 0, the array minSph is derived as follows: for(k=0;k<3;k++){ minSph[k]=PointSph[0][k] for(i=1;i <PointCount;i++) minSph[k]=Min(minSph[k],PointSph[i][k]) } Otherwise (geom_tree_type equal to 1), the array minSph is initialized as follows: minSph[0]=0 minSph[1]=-(1< <geom_angular_azimuth_scale_log2_minus11+10) minSph[2]=0 Finally, AttrPos[i][k] is derived as follows: for(i=0;i <PointCount;i++) for(k=0;k<3;k++){ relPos=Max(0,PointSph[i][k]-minSph[k]) AttrPos[i][k]=relPos×attr_coord_conv_scale[k]+128>>8 }

[0140] The attr_coord_conv_scale[] value may be at most 32 bits, and the result of "relPos x attr_coord_conv_scale[k] + 128 >> ​​8" (or intermediate values ​​in its calculation) may exceed 32 bits. In some instances, it may be desirable to keep geometry calculations within 32 bits, as exceeding 32 bits, even for temporary variables / intermediate results, can increase the cost and complexity of implementing spherical coordinate conversions.

[0141] In some examples, it may be possible to clip 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 may be possible to clip the value or intermediate value of AttrPos[i][k] (e.g., relPos×attr_coord_conv_scale[k]+128) to a fixed value (e.g., 2 32 -1). Bitstreams that violate this constraint may be considered non-conforming or, in some cases, ignored by the G-PCC decoder 300.

[0142] For example, the G-PCC encoder 200 may be configured to determine a value associated with an attribute position in a spherical coordinate conversion that does not exceed 32 bits. For example, AttrPos[i][k] or intermediate values ​​do not have a bit depth greater than 32 bits. As an example, to determine the value, the G-PCC encoder 200 may be configured to at least one of clipping the value to be 32 bits or less and generating the value in compliance with a point cloud compression standard that defines the bit depth of the value to be 32 bits or less (e.g., generating the value so that the value complies with the G-PCC standard).

[0143] Similarly, the G-PCC decoder 300 may be configured to determine a value associated with an attribute position in a spherical coordinate conversion that does not exceed 32 bits. As above, AttrPos[i][k] or intermediate values ​​may not have a bit depth greater than 32 bits. As an example, to determine the value, the G-PCC decoder 300 may be configured to at least one of clipping the value to be 32 bits or less and receiving a value in compliance with a point cloud compression standard that defines the bit depth of the value to be 32 bits or less (e.g., receiving a value that conforms to the G-PCC standard).

[0144] 4 is a flowchart illustrating an example of encoding point cloud data. The example of FIG. 4 may be implemented by a device for encoding point cloud data. Examples of the device include source device 102 or G-PCC encoder 200. The device includes a memory configured to store the point cloud data. Examples of the 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, which includes 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 circuit configurations.

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

[0146] As another example, to determine the amount the laser turns, one or more processors of G-PCC encoder 200 may determine a unit change in azimuth angle that the laser turns. One or more processors of G-PCC encoder 200 may determine a unit change in azimuth angle that the laser turns for a geometry tree type that is predictive geometry coding (e.g., geom_tree_type==1). The unit change in azimuth angle that the laser turns may be the amount of azimuth angle that the laser travels to produce a sample.

[0147] One or more processors of the G-PCC encoder 200 may generate a syntax element indicating an amount the laser turns, where the value of the syntax element is a specified value less than the amount the laser turns (402). For example, to generate the syntax element, one or more processors of the G-PCC encoder 200 may subtract the specified value from the amount the laser turns to generate the value of the syntax element. The specified value may be equal to 1. An example of a syntax element is laser_phi_per_turn_minus1 (e.g., for octree coding). Another example of a syntax element is geom_angular_azimuth_step_minus1 (e.g., for predictive geometry coding).

[0148] One or more processors of G-PCC encoder 200 may signal syntax elements (404). For example, one or more processors of 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 coding or predictive geometry coding (also referred to as predictive tree coding).

[0149] FIG. 5 is a flowchart illustrating an example of decoding point cloud data. The example of FIG. 5 may be implemented by a device for decoding point cloud data. Examples of the device include the destination device 116 or the G-PCC decoder 300. The device includes a memory configured to store the point cloud data. Examples of the memory include the memory 120 or the memory of the 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 the destination device 116, including the G-PCC decoder 300. As another example, the one or more processors may be processors of the G-PCC decoder 300. The one or more processors may include fixed function and / or programmable circuit configurations.

[0150] One or more processors of the G-PCC decoder 300 may receive a syntax element that indicates an amount by which the laser turns to determine a point in the point cloud represented by the point cloud data, where the value of the syntax element is a specified value that is less than the amount by which the laser turns (500). 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.

[0151] One or more processors of the G-PCC decoder 300 may determine the amount the laser should rotate based on the syntax element (502). For example, to determine the amount the laser should rotate based on the syntax element, one or more processors of the G-PCC decoder 300 may add a specified value to the value of the syntax element. In one example, the specified value may be 1.

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

[0153] As another example, to determine the amount the laser turns, one or more processors of the G-PCC decoder 300 may determine a unit change in azimuth angle that the laser turns. The one or more processors of the G-PCC decoder 300 may determine a unit change in azimuth angle that the laser turns for a geometry tree type that is predictive geometry coding (e.g., geom_tree_type==1). The unit change in azimuth angle that the laser turns may be the amount of azimuth angle that the laser travels to produce a sample.

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

[0155] Below are some examples of techniques that may be implemented separately or together in any combination.

[0156] Clause 1A. A method for decoding point cloud data, the method including the steps of receiving a syntax element indicating a number of laser probes, wherein a value of the syntax element is a specified value that is less than the number of laser probes, and decoding the point cloud data based on the received syntax element.

[0157] Clause 2A. A method for encoding point cloud data, the method comprising the steps of determining a 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 a specified value that is less than the number of laser probes.

[0158] Clause 3A. Any method of clauses 1A and 2A, where the specified value is one of 1 or 2.

[0159] Clause 4A. A method for decoding point cloud data, the method including the steps of receiving a syntax element indicating a unit change in azimuth angle, wherein a value of the syntax element is a specified value less than the unit change in azimuth angle, and decoding the point cloud data based on the received syntax element.

[0160] Clause 5A. A method for encoding point cloud data, the method comprising: determining a unit change in azimuth angle for encoding the point cloud data; and signaling a syntax element indicating the unit change in azimuth angle, the value of the syntax element being a specified value less than the unit change in azimuth angle.

[0161] Clause 6A. Any method of clauses 4A and 5A, with a default value of 1.

[0162] Clause 7A. A method for decoding point cloud data, the method comprising: determining, in a first instance, that a planar mode for decoding the point cloud data is disabled; parsing, in the first instance, using bitwise contextualization, a syntax element indicating whether geometry node occupancies are encoded; determining, in a second instance, that a planar mode for decoding the point cloud data is enabled; and inferring, in the second instance, using bitwise contextualization without parsing, whether geometry node occupancies are encoded.

[0163] Clause 8A. A method for encoding point cloud data, the method comprising: determining, in a first instance, that a planar mode for decoding the point cloud data is disabled; and signaling, in the first instance, using bitwise contextualization, a syntax element indicating whether geometry node occupancy is encoded; and determining, in a second instance, that a planar mode for decoding the point cloud data is enabled; and signaling, in the second instance, using bitwise contextualization, a syntax element indicating whether geometry node occupancy is encoded.

[0164] Clause 9A. A method of decoding point cloud data, the method including a step of fixed-length decoding a first syntax element of the point cloud data indicating a number of bits used to represent a second syntax element of the point cloud data indicating coordinates of an origin used in angle coding mode processing.

[0165] Clause 10A. A method of encoding point cloud data, the method including the step of fixed-length encoding a first syntax element of the point cloud data indicating a number of bits used to represent a second syntax element of the point cloud data indicating coordinates of an origin used in angle coding mode processing.

[0166] Clause 11A. A method for decoding point cloud data, the method including the steps of receiving a syntax element indicating a size of a triangle node, the value of the syntax element being a specified value less than the size of the triangle node, and decoding the point cloud data based on the received syntax element.

[0167] Clause 12A. A method for encoding point cloud data, the method comprising: determining a size of a triangle node for encoding the point cloud data; and signaling a syntax element indicating the size of the triangle node, the value of the syntax element being a specified value less than unit change in azimuth angle.

[0168] Clause 13A. A method of decoding point cloud data, the method including parsing a syntax element in a parameter set other than a geometry parameter set that indicates whether a laser inclusion is present in the bitstream.

[0169] Clause 14A. A method of encoding point cloud data, the method including signaling a syntax element in a parameter set other than a geometry parameter set that indicates whether a laser inclusion is present in the bitstream.

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

[0171] Clause 16A. A method for decoding point cloud data, the method including the steps of receiving a syntax element indicating a scaling factor value for spherical coordinate conversion, the value of the syntax element being a specified value less than the scaling factor value, and decoding the point cloud data based on the received syntax element.

[0172] Clause 17A. A method for encoding point cloud data, the method comprising the steps of determining a scaling factor value for encoding the point cloud data, and signaling a syntax element indicating the scaling factor value, the value of the syntax element being a specified value that is less than the scaling factor value.

[0173] Clause 18A. Any method of clauses 16 and 17, with a default value of 1.

[0174] Clause 19A. A device for decoding point cloud data, the device comprising: a memory configured to store the point cloud data; and processing circuitry coupled to the memory and configured to implement the method of any one of clauses 1A, 3A, 4A, 6A, 7A, 9A, 11A, 13A, 15A, 16A, and 18A, or a combination thereof.

[0175] Clause 20A. The device of clause 19A, further comprising a display for presenting an image based on the point cloud.

[0176] Clause 21A. A device for encoding point cloud data, the device comprising: a memory configured to store the point cloud data; and processing circuitry coupled to the memory and configured to implement the method of any one of clauses 2A, 3A, 5A, 6A, 8A, 10A, 12A, 14A, 15A, 17A, and 18A, or a combination thereof.

[0177] Clause 22A. The device of clause 21A, further comprising a device for generating a point cloud.

[0178] Clause 23A. A device for decoding point cloud data, the device comprising means for implementing the method of any one of clauses 1A, 3A, 4A, 6A, 7A, 9A, 11A, 13A, 15A, 16A, and 18A or a combination thereof.

[0179] Clause 24A. A device for encoding point cloud data, the device comprising means for implementing the method of any one of clauses 2A, 3A, 5A, 6A, 8A, 10A, 12A, 14A, 15A, 17A, and 18A or a combination thereof.

[0180] Clause 25A. A computer-readable storage medium storing instructions that, when executed, cause one or more processors to perform the method of any one or combination of clauses 1A, 3A, 4A, 6A, 7A, 9A, 11A, 13A, 15A, 16A, and 18A.

[0181] Clause 26A. A computer-readable storage medium storing instructions that, when executed, cause one or more processors to perform the method of any one or combination of clauses 2A, 3A, 5A, 6A, 8A, 10A, 12A, 14A, 15A, 17A, and 18A.

[0182] Clause 1B. A method for encoding point cloud data, the method including the steps of determining an amount of rotation of a laser to determine a point in a point cloud represented by the point cloud data, generating a syntax element indicating the amount of rotation of the laser, the value of the syntax element being a specified value less than the amount of rotation of the laser, and signaling the syntax element.

[0183] Clause 2B. The method of clause 1B, wherein determining the amount the laser rotates includes determining the number of laser probes by the laser in one revolution.

[0184] Clause 3B. The method of clause 2B, wherein the step of determining the number of laser probes of the laser in one revolution includes the step of determining the number of laser probes of the laser in one revolution for a geometry tree type that is octree coding.

[0185] Clause 4B. The method of clause 1B, wherein determining the amount the laser is rotated includes determining a unit change in azimuth angle by which the laser is rotated.

[0186] Clause 5B. The method of clause 4B, wherein determining the unit change in azimuth angle at which the laser turns includes determining the unit change in azimuth angle at which the laser turns for a geometry tree type that is predictive geometry coding.

[0187] Clause 6B. The method of any of clauses 1B-5B, wherein generating the syntax element includes subtracting a predetermined value from the amount the laser rotates to generate the value of the syntax element.

[0188] Clause 7B. The specified value is equal to 1, and any of the methods of clauses 1B to 6B.

[0189] Clause 8B. The method of any of clauses 1B to 7B, wherein the syntax element is a first syntax element, and the method further includes the steps of: encoding a second syntax element of the point cloud data indicating a number of bits used to represent a third syntax element of the point cloud data, the third syntax element of the point cloud data indicating coordinates of an origin used in processing in an angle coding mode; and fixed-length coding the third syntax element.

[0190] Clause 9B. The method of any of clauses 1B-8B, wherein the value comprises a first value, and the method further comprises determining a second value associated with the attribute position in the spherical coordinate conversion, the second value not exceeding 32 bits, wherein determining the second value comprises at least one of clipping the second value to be 32 bits or less and generating the second value in compliance with a point cloud compression standard that defines the bit depth of the value to be 32 bits or less.

[0191] Clause 10B. A method for decoding point cloud data, the method including the steps of receiving a syntax element indicating an amount by which a laser will rotate to determine a point in a point cloud represented by the point cloud data, wherein a value of the syntax element is a specified value less than the amount by which the laser will rotate; determining the amount by which the laser will rotate based on the syntax element; and reconstructing the point cloud based on the determined amount by which the laser will rotate.

[0192] Clause 11B. The method of clause 10B, wherein determining the amount the laser rotates based on the syntax element includes determining the number of laser probes by the laser in one revolution.

[0193] Clause 12B. The method of clause 11B, wherein the step of determining the number of laser probes of the laser in one revolution includes the step of determining the number of laser probes of the laser in one revolution for a geometry tree type that is octree coding.

[0194] Clause 13B. The method of clause 10B, wherein determining the amount the laser rotates based on the syntax element includes determining a unit change in azimuth angle by which the laser rotates.

[0195] Clause 14B. The method of clause 13B, wherein determining the unit change in azimuth angle at which the laser turns includes determining the unit change in azimuth angle at which the laser turns for a geometry tree type that is predictive geometry coding.

[0196] Clause 15B. The method of any of clauses 10B-14B, wherein determining the amount the laser rotates based on the syntax element includes adding a predetermined value to the value of the syntax element.

[0197] Clause 16B. Any method of clauses 10B to 15B, where the specified value is equal to 1.

[0198] Clause 17B. The method of any of clauses 10B to 16B, wherein the syntax element is a first syntax element, and the method further includes the steps of: decoding a second syntax element of the point cloud data indicating a number of bits used to represent a third syntax element of the point cloud data, the third syntax element of the point cloud data indicating coordinates of an origin used in angle coding mode processing; and fixed-length encoding the third syntax element.

[0199] Clause 18B. The method of any of clauses 10B-17B, wherein the value comprises a first value, and the method further comprises determining a second value associated with the attribute position in the spherical coordinate conversion, the second value not exceeding 32 bits, and determining the second value comprises at least one of clipping the second value to be 32 bits or less, and receiving the second value in compliance with a point cloud compression standard that defines the bit depth of the value to be 32 bits or less.

[0200] Clause 19B. A device for encoding point cloud data, the device comprising: a memory configured to store the point cloud data; and one or more processors coupled to the memory, the one or more processors configured to: determine an amount of rotation of a laser for determining a point in a point cloud represented by the point cloud data; generate a syntax element indicating the amount of rotation of the laser, wherein a value of the syntax element is a specified value that is less than the amount of rotation of the laser; and signal the syntax element.

[0201] Clause 20B. The device of clause 19B, wherein determining the amount the laser rotates includes determining the number of laser probes by the laser in one revolution.

[0202] Clause 21B. The device of clause 20B, wherein determining the number of laser probes of the laser in one revolution includes determining the number of laser probes of the laser in one revolution for a geometry tree type that is octree coding.

[0203] Clause 22B. The device of clause 19B, wherein determining the amount the laser rotates includes determining a unit change in azimuth angle by which the laser rotates.

[0204] Clause 23B. The device of clause 22B, wherein determining the unit change in azimuth angle at which the laser rotates includes determining the unit change in azimuth angle at which the laser rotates for a geometry tree type that is predictive geometry coding.

[0205] Clause 24B. The device of any of clauses 19B-23B, wherein generating the syntax element includes subtracting a predetermined value from the amount the laser rotates to generate the value of the syntax element.

[0206] Clause 25B. Any device of clauses 19B to 24B, with a specified value equal to 1.

[0207] Clause 26B. The device of any of clauses 19B to 25B, wherein the syntax element is a first syntax element, and the one or more processors are configured to: encode a second syntax element of the point cloud data indicating a number of bits used to represent a third syntax element of the point cloud data, the third syntax element of the point cloud data indicating coordinates of an origin used in angle coding mode processing; and fixed-length encode the third syntax element.

[0208] Clause 27B. A device for decoding point cloud data, the device including: a memory configured to store the point cloud data; and one or more processors coupled to the memory, the one or more processors configured to: receive a syntax element indicating an amount of rotation of a laser to determine a point in a point cloud represented by the point cloud data, wherein a value of the syntax element is a specified value less than the amount of rotation of the laser; determine the amount of rotation of the laser based on the syntax element; and reconstruct the point cloud based on the determined amount of rotation of the laser.

[0209] Clause 28B. The device of clause 27B, wherein determining the amount the laser rotates based on the syntax element includes determining the number of laser probes by the laser in one revolution.

[0210] Clause 29B. The device of clause 28B, wherein determining the number of laser probes of the laser in one revolution includes determining the number of laser probes of the laser in one revolution for a geometry tree type that is octree coding.

[0211] Clause 30B. The device of clause 27B, wherein determining the amount the laser rotates based on the syntax element includes determining a unit change in azimuth angle by which the laser rotates.

[0212] Clause 31B. The device of clause 30B, wherein determining the unit change in azimuth angle at which the laser rotates includes determining the unit change in azimuth angle at which the laser rotates for a geometry tree type that is predictive geometry coding.

[0213] Clause 32B. The device of any of clauses 27B-31B, wherein determining the amount to rotate the laser based on the syntax element includes adding a predetermined value to the value of the syntax element.

[0214] Clause 33B. Any device of clauses 27B to 32B, with a specified value equal to 1.

[0215] Clause 34B. The device of any of clauses 27B to 33B, wherein the syntax element is a first syntax element, and the one or more processors are configured to: decode a second syntax element of the point cloud data indicating a 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 coordinates of an origin used in angle coding mode processing; and fixed-length decode the third syntax element.

[0216] Clause 35B. A device for encoding point cloud data, the device comprising: means for determining an amount of rotation of a laser for determining a point in a point cloud represented by the point cloud data; means for generating a syntax element indicating the amount of rotation of the laser, the value of the syntax element being a specified value less than the amount of rotation of the laser; and means for signaling the syntax element.

[0217] Clause 36B. A computer-readable storage medium storing instructions that, when executed, cause one or more processors to: determine an amount of rotation of a laser to determine a point in a point cloud represented by the point cloud data; generate a syntax element indicating the amount of rotation of the laser, the value of the syntax element being a specified value that is less than the amount of rotation of the laser; and signal the syntax element.

[0218] Clause 37B. A device for decoding point cloud data, the device comprising: means for receiving a syntax element indicating an amount by which a laser rotates to determine a point in a point cloud represented by the point cloud data, the value of the syntax element being a specified value less than the amount by which the laser rotates; means for determining the amount by which the laser rotates based on the syntax element; and means for reconstructing the point cloud based on the determined amount by which the laser rotates.

[0219] Clause 38B. A computer-readable storage medium storing instructions that, when executed, cause one or more processors to: receive a syntax element indicating an amount by which a laser will rotate to determine a point in a point cloud represented by the point cloud data, wherein the value of the syntax element is a specified value that is less than the amount by which the laser will rotate; determine the amount by which the laser will rotate based on the syntax element; and reconstruct the point cloud based on the determined amount by which the laser will rotate.

[0220] It should be appreciated that, depending on the example, some acts or events of any of the techniques described herein may be performed in a different sequence, added, combined, or omitted entirely (e.g., not all described acts or events may be necessary to practice the techniques). Moreover, in some examples, acts or events may be performed in parallel rather than sequentially, for example, through multithreaded processing, interrupt processing, or multiple processors.

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

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

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

[0224] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in this disclosure to highlight functional aspects of devices configured to implement the disclosed techniques, but they do not necessarily require realization by different hardware units. Rather, as explained above, the various units may be combined in a codec hardware unit or may be provided by a collection of interoperable hardware units, including one or more processors as described above, along with appropriate software and / or firmware.

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

[0226] 100 Decoding system, system 102 Source Devices 104 Data Sources 106 memory 108 Output Interface 110 Computer-Readable Medium 112 Storage Devices 114 File Server 116 Destination Device 118 Data Consumers 120 memory 122 input interface 200 G-PCC Encoder 202 Coordinate Transformation Unit 204 Color Conversion Unit 206 Voxelization Unit 208 Attribute Transfer Unit 210 Octree Analysis Unit 212 Surface Approximation Analysis Unit 214 Arithmetic Coding Unit 216 Geometry Reconstruction Unit 218 RAHT Unit 220 LOD Generation Units LOD 222 Lifting Unit 224 Coefficient Quantization Unit 226 Arithmetic Coding Unit 300 G-PCC decoder 302 Geometry Arithmetic Decoding Unit 304 Attribute Arithmetic Decoding Unit 306 octree synthesis unit 308 Inverse Quantization Unit 310 Surface Approximation Synthesis Unit 312 Geometry Reconstruction Unit 314 RAHT unit 316 LOD generation units 318 Reverse Lifting Unit 320 Coordinate Inverse Transformation Unit 322 Color Inverse Conversion Unit

Claims

1. 1. A method for encoding point cloud data, comprising: determining an amount of rotation of a laser to determine a point in the point cloud represented by the point cloud data; generating a syntax element indicating the amount by which the laser rotates, the value of the syntax element being generated by subtracting a predetermined value from the amount by which the laser rotates; signaling the syntax elements; A method comprising:

2. 1. A method for decoding point cloud data, comprising: receiving a syntax element indicating an amount of rotation of a laser to determine a point in a point cloud represented by the point cloud data, the value of the syntax element being generated by subtracting a predetermined value from the amount of rotation of the laser; determining the amount by which the laser rotates based on the syntax element; reconstructing the point cloud based on the determined amount that the laser rotates; A method comprising:

3. The method of claim 1 or 2, wherein determining the amount the laser rotates comprises determining the number of laser probes generated by the laser in one revolution of a rotational sensing system.

4. 4. The method of claim 3, wherein determining the number of laser probes of the laser in one revolution comprises determining the number of laser probes of the laser in one revolution for a geometry tree type that is octree coding.

5. The method of claim 1 or 2, wherein determining the amount the laser rotates comprises determining a unit change in azimuth angle by which the laser rotates.

6. 6. The method of claim 5, wherein when the point cloud data is encoded using predictive geometry coding as a geometry tree type, determining the unit change in the azimuth angle at which the laser turns comprises determining the unit change in the azimuth angle at which the laser turns.

7. 3. The method of claim 1, wherein generating the syntax element comprises subtracting the specified value from the amount the laser rotates to generate the value of the syntax element.

8. The method of claim 1 or 2, wherein the specified value is equal to 1.

9. the syntax element is a first syntax element, and the method comprises: encoding or decoding a second syntax element of the point cloud data indicating a number of bits used to represent a third syntax element of the point cloud data, the third syntax element of the point cloud data indicating an angular coordinate of an origin used in an angle coding mode of processing; a step of fixed-length coding the third syntax element; 3. The method of claim 1 or 2, further comprising:

10. The value includes a first value, and the method further comprises: further comprising determining a second value associated with the attribute position in the spherical coordinate conversion, the second value not exceeding 32 bits, wherein determining the second value comprises: clipping the second value to 32 bits or less; and generating said second value, said value having a bit depth of 32 bits or less; 3. The method of claim 1 or 2, comprising at least one of:

11. The method of claim 2 , wherein determining the amount the laser rotates based on the syntax element comprises adding the specified value to the value of the syntax element.

12. 1. A device for encoding point cloud data, comprising: means for determining an amount of rotation of a laser for determining a point in the point cloud represented by the point cloud data; means for generating a syntax element indicating the amount by which the laser rotates, the value of the syntax element being generated by subtracting a predetermined value from the amount by which the laser rotates; means for signaling said syntax elements; 1. A device comprising:

13. 13. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors of the device of claim 12 to perform the method of any one of claims 3 to 10.

14. 1. A device for decoding point cloud data, comprising: means for receiving a syntax element indicating an amount of rotation of a laser to determine a point in a point cloud represented by the point cloud data, the value of the syntax element being generated by subtracting a predetermined value from the amount of rotation of the laser; means for determining the amount the laser rotates based on the syntax element; means for reconstructing the point cloud based on the determined amount that the laser rotates; 1. A device comprising:

15. 15. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors of a device for decoding the point cloud data according to claim 14 to perform the method according to any one of claims 3 to 11. A computer-readable storage medium that causes the

Citation Information

Patent Citations

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

    US20200302237A1

  • Method and apparatus for point cloud compression

    US20200394822A1

  • Angular mode syntax for tree-based point cloud coding

    US20220351423A1

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

    WO2021084295A1

  • Coding of laser angles for angular and azimuthal modes in geometry-based point cloud compression

    WO2021207502A1