Laser Angle Coding for Angle Mode and Azimuth Angle Mode in Geometry-Based Point Cloud Compression

By predicting and encoding differences in laser angles and azimuthal probes, the proposed techniques enhance the coding efficiency of point cloud compression, addressing inefficiencies in existing G-PCC standards.

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

Patent Information

Application Number
JP2022557845
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-04-07
Filing Date
2021-04-08
Publication Date
2025-07-11
Estimated Expiration
2041-04-08

AI Technical Summary

Technical Problem

Existing point cloud compression techniques in the Geometry-based Point Cloud Compression (G-PCC) standard face inefficiencies in coding laser angles and azimuthal sampling locations, leading to increased coding overhead and reduced compression efficiency.

Method used

The proposed techniques improve coding efficiency by predicting laser angles and encoding differences between laser angles, as well as predicting the number of probes in the azimuth direction, thereby reducing the data required to specify these parameters.

Benefits of technology

This approach enhances the coding efficiency of laser angles and azimuthal sampling, resulting in more effective point cloud compression with reduced data requirements.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007706468000038
    Figure 0007706468000038
  • Figure 0007706468000039
    Figure 0007706468000039
  • Figure 0007706468000040
    Figure 0007706468000040
Patent Text Reader

Abstract

The method includes obtaining a first laser angle, obtaining a second laser angle, obtaining a laser angle difference for a third laser angle, determining a predicted value based on the first laser angle and the second laser angle, and determining the third laser angle based on the predicted value and the laser angle difference for the third laser angle.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001]

[0001] This application claims priority to U.S. Patent Application No. 17 / 224,551, filed Apr. 7, 2021; U.S. Provisional Patent Application No. 63 / 007,282, filed Apr. 8, 2020; U.S. Provisional Patent Application No. 63 / 009,940, filed Apr. 14, 2020; and U.S. Provisional Patent Application No. 63 / 036,799, filed Jun. 9, 2020, the entire contents of each of which are hereby incorporated by reference.

[0002]

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

Background Art

[0003]

[0003] A point cloud is a collection of points in three-dimensional space. The points can correspond to points on an object in three-dimensional space. Thus, a point cloud can be used to represent the physical content of three-dimensional space. Point clouds can have utility in a wide variety of situations. For example, a point cloud can be used in the context of an autonomous vehicle to represent the position of objects on a road. In another example, a point cloud can be used in the context of representing the physical content of an environment to place 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 for storage and transmission of the point cloud.

Summary of the Invention

[0004]

[0004] Generally, the present disclosure describes techniques for coding laser angles for the angular mode and azimuthal mode in the Geometry-based Point Cloud Compression (G-PCC) standard developed within the 3D Graphics (3DG) Working Group of the Moving Picture Experts Group (MPEG). The G-PCC standard provides syntax elements related to the angular mode and azimuthal mode. These syntax elements include a syntax element indicating the laser angle for an individual laser beam and a syntax element indicating, for example, the number of probes in the azimuth direction during one rotation of the laser beam or within other angular ranges of the laser beam. The present disclosure describes techniques that can improve the coding efficiency of such syntax elements.

[0005]

[0005] In one example, the present disclosure is a device comprising a memory configured to store point cloud data and one or more processors implemented in a circuit coupled to the memory, wherein the one or more processors are configured to obtain a first laser angle, obtain a second laser angle, obtain a laser angle difference for a third laser angle, determine a predicted value based on the first laser angle and the second laser angle, and determine the third laser angle based on the predicted value and the laser angle difference for the third laser angle.

[0006]

[0006] In another example, the present disclosure describes a device comprising a memory configured to store point cloud data and one or more processors implemented in a circuit and coupled to the memory, wherein the one or more processors are configured to obtain a first laser angle, obtain a second laser angle, determine a predicted value based on the first laser angle and the second laser angle, and encode a laser angle difference for a third laser angle, where the laser angle difference is equal to the difference between the third laser angle and the predicted value.

[0007]

[0007] In another example, the present disclosure describes a method comprising obtaining a first laser angle, obtaining a second laser angle, obtaining a laser angle difference for a third laser angle, determining a predicted value based on the first laser angle and the second laser angle, and determining the third laser angle based on the predicted value and the laser angle difference for the third laser angle.

[0008]

[0008] In another example, the present disclosure describes a method comprising obtaining a first laser angle, obtaining a second laser angle, determining a predicted value based on the first laser angle and the second laser angle, and encoding a laser angle difference for a third laser angle, where the laser angle difference is equal to the difference between the third laser angle and the predicted value.

[0009]

[0009] In another example, the present disclosure describes a device comprising means for obtaining a first laser angle, means for obtaining a second laser angle, means for obtaining a laser angle difference for a third laser angle, means for determining a predicted value based on the first laser angle and the second laser angle, and means for determining the third laser angle based on the predicted value and the laser angle difference for the third laser angle.

[0010]

[0010] In another example, the present disclosure describes a device comprising means for obtaining a first laser angle, means for obtaining a second laser angle, means for determining a predicted value based on the first laser angle and the second laser angle, and means for encoding a laser angle difference for a third laser angle, wherein the laser angle difference is equal to the difference between the third laser angle and the predicted value.

[0011]

[0011] In another example, the present disclosure describes a computer-readable storage medium storing instructions that, when executed, cause one or more processors to obtain a first laser angle, obtain a second laser angle, obtain a laser angle difference syntax element for a third laser angle, wherein the laser angle difference syntax element indicates a laser angle difference for the third laser angle, determine a predicted value based on the first laser angle and the second laser angle, and determine the third laser angle based on the predicted value and the laser angle difference for the third laser angle.

[0012]

[0012] In another example, the present disclosure describes a computer-readable storage medium storing instructions that, when executed, cause one or more processors to obtain a first laser angle, obtain a second laser angle, determine a predicted value based on the first laser angle and the second laser angle, and encode a laser angle difference for a third laser angle, wherein the laser angle difference is equal to the difference between the third laser angle and the predicted value.

[0013]

[0013] In another example, the present disclosure is a device comprising a memory configured to store point cloud data and one or more processors implemented in a circuit and coupled to the memory, the one or more processors being configured to obtain a value for a first laser indicating the number of probes in the azimuth direction of the first laser, to decode a syntax element for a second laser indicating a difference between the value for the first laser and a value for a second laser indicating the number of probes in the azimuth direction of the second laser, to determine a value for the second laser indicating the number of probes in the azimuth direction of the second laser based on the first value and an indication of the difference between the value for the first laser and the value for the second laser, and to decode points of the point cloud data based on the number of probes in the azimuth direction of the second laser.

[0014]

[0014] In another example, the present disclosure is a device comprising a memory configured to store point cloud data and one or more processors implemented in a circuit and coupled to the memory, the one or more processors being configured to obtain the point cloud data, to determine a value for a first laser indicating the number of probes in the azimuth direction of the first laser, to encode a syntax element for a second laser indicating a difference between the value for the first laser and a value for a second laser indicating the number of probes in the azimuth direction of the second laser, and to encode points of the point cloud data based on the number of probes in the azimuth direction of the second laser.

[0015]

[0015] In another example, the present disclosure describes a method for encoding point cloud data, the method comprising: obtaining point cloud data; determining a value for a first laser indicating the number of probes in the azimuth direction of the first laser; encoding a syntax element for a second laser indicating a difference between the value for the first laser and a value for a second laser indicating the number of probes in the azimuth direction of the second laser; and encoding points of the point cloud data based on the number of probes in the azimuth direction of the second laser.

[0016]

[0016] In another example, the present disclosure describes a device for decoding point cloud data, the device comprising: means for obtaining a value for a first laser indicating the number of probes in the azimuth direction of the first laser; means for decoding a syntax element for a second laser indicating a difference between the value for the first laser and a value for a second laser indicating the number of probes in the azimuth direction of the second laser; means for determining a value for a second laser indicating the number of probes in the azimuth direction of the second laser based on the first value, an indication of the difference between the value for the first laser and the value for the second laser; and means for decoding points of the point cloud data based on the number of probes in the azimuth direction of the second laser.

[0017]

[0017] In another example, the present disclosure describes a device for encoding point cloud data, the device comprising: means for obtaining point cloud data; means for determining a value for a first laser indicating the number of probes in the azimuth direction of the first laser; means for encoding a syntax element for a second laser indicating a difference between the value for the first laser and a value for a second laser indicating the number of probes in the azimuth direction of the second laser; and means for encoding points of the point cloud data based on the number of probes in the azimuth direction of the second laser.

[0018]

[0018] In another example, when executed, the present disclosure causes one or more processors to obtain a value for a first laser indicating the number of probes in the azimuthal direction of the first laser, and to obtain a syntax element for a second laser indicating a difference between the value for the first laser and the value for the second laser indicating the number of probes in the azimuthal direction of the second laser, and based on the first value and an indication of the difference between the value for the first laser and the value for the second laser, determine a value for the second laser indicating the number of probes in the azimuthal direction of the second laser, and decode points of the point cloud data based on the number of probes in the azimuthal direction of the second laser. A computer-readable storage medium storing instructions for causing the above is described.

[0019]

[0019] In another example, when executed, the present disclosure causes one or more processors to obtain point cloud data, determine a value for a first laser indicating the number of probes in the azimuthal direction of the first laser, encode a syntax element for a second laser indicating a difference between the value for the first laser and the value for the second laser indicating the number of probes in the azimuthal direction of the second laser, and encode points of the point cloud based on the number of probes in the azimuthal direction of the second laser. A computer-readable storage medium storing instructions for causing the above is described.

[0020]

[0020] Details of one or more examples are set forth in the accompanying drawings and the following description. Other features, objects, and advantages will be apparent from the description, drawings, and claims.

Brief Description of the Drawings

[0021] [FIG. 1]

[0021] A block diagram showing an exemplary encoding and decoding system capable of executing the techniques of the present disclosure. [FIG. 2]

[0022] Block diagram showing an exemplary geometry point cloud compression (G-PCC) encoder. [FIG. 3]

[0023] Block diagram showing an exemplary G-PCC decoder. [FIG. 4]

[0024] Conceptual diagram showing exemplary plane occupancy in the vertical direction. [FIG. 5]

[0025] Conceptual diagram showing a light detection and ranging (LIDAR) sensor that scans points in a three-dimensional space. [FIG. 6]

[0026] Conceptual diagram showing an example of the angular eligibility of a node. [FIG. 7A]

[0027] Flowchart showing exemplary operation of a G-PCC encoder according to one or more techniques of the present disclosure. [FIG. 7B]

[0028] Flowchart showing exemplary operation of a G-PCC decoder according to one or more techniques of the present disclosure. [FIG. 8A]

[0029] Flowchart showing exemplary operation of a G-PCC encoder according to one or more techniques of the present disclosure. [FIG. 8B]

[0030] Flowchart showing exemplary operation of a G-PCC decoder according to one or more techniques of the present disclosure. [FIG. 9]

[0031] Conceptual diagram showing an exemplary distance measurement system that can be used with one or more techniques of the present disclosure. [FIG. 10]

[0032] Conceptual diagram showing an exemplary vehicle-based scenario in which one or more techniques of the present disclosure can be used. [FIG. 11]

[0033] Conceptual diagram showing an exemplary extended reality system in which one or more techniques of the present disclosure can be used. [FIG. 12]

[0034] Conceptual diagram showing an exemplary mobile device system in which one or more techniques of the present disclosure may be used.

Mode for Carrying Out the Invention

[0022]

[0035] A point cloud is a set of points in a three-dimensional (3D) space. Geometry-based point cloud compression (G-PCC) is a technique for reducing the amount of data required to store a point cloud. As part of encoding a point cloud, a G-PCC encoder may generate an octree. Each node of the octree corresponds to a cuboid space. For ease of explanation, in some situations, the present disclosure may interchangeably refer to a node and the cuboid space corresponding to the node. A node of the octree can have zero child nodes or eight child nodes. The child nodes of a parent node correspond to cuboids of equal size within the cuboid corresponding to the parent node. The position of an individual point in the point cloud can be coded with respect to the node containing the point. If a node does not contain any points of the point cloud, that node is said to be unoccupied. If a node is unoccupied, it may not be necessary to code additional data regarding the node. Conversely, if a node contains one or more points of the point cloud, that node is said to be occupied. A node can be further subdivided into voxels. The G-PCC encoder can indicate the position of an individual point in the point cloud by indicating the location of the voxels occupied by the points of the point cloud.

[0023]

[0036] G-PCC provides a plurality of coding tools for coding the locations of occupied voxels within a node. These coding tools include an angular coding mode and an azimuth coding mode. The angular coding mode is based on a set of laser beams arranged in a fan pattern. The laser beams may correspond to actual laser beams (e.g., of a LIDAR device) or may be conceptual. The G-PCC encoder may code the angles between the laser beams in a high-level syntax structure. The location of a point within the node can only be coded using the angular coding mode if only one of the laser beams intersects the node. When the location of a point in the node is coded using the angular coding mode, the G-PCC encoder determines the vertical offset between the location of the point and the origin of the node. The G-PCC encoder may determine the context based on the position of the laser beam relative to a marker point (e.g., the center point) of the node. The G-PCC encoder may apply context-adaptive arithmetic coding (CABAC) using the determined context to code one or more bins of the syntax element indicating the vertical offset.

[0024]

[0037] When the location of a point is coded using the azimuth coding mode, the G-PCC encoder may determine the context based on the azimuth sampling locations of the laser beams within the node. The G-PCC encoder may apply CABAC using the determined context to code the syntax element indicating the azimuth offset of the point.

[0025]

[0038] The use of the angular mode and the azimuthal mode can achieve higher coding efficiency in some situations because it can improve the selection of the context for encoding the syntax elements indicating the vertical offset and the azimuthal offset regarding how the laser beam intersects the node. The improved selection of the context can result in greater compression in the CABAC encoding process.

[0026]

[0039] However, the use of the angular mode may depend on knowing the vertical angle of the laser beams relative to each other. Therefore, the G-PCC encoder may need to code the angle between the laser beams. Similarly, the use of the azimuthal mode may depend on knowing the angle between the azimuthal sampling locations. Therefore, the G-PCC encoder may need to code the number of azimuthal sampling locations per revolution for each individual laser beam. However, coding the angle between the laser beams and the number of azimuthal sampling locations per revolution for each laser beam can increase the coding overhead of the G-PCC geometry bitstream.

[0027]

[0040] The present disclosure describes techniques that can improve coding efficiency when coding the laser angle and / or the number of azimuth sampling locations per revolution. For example, the present disclosure describes a method of decoding point cloud data in which a G-PCC decoder obtains a first laser angle, obtains a second laser angle, and obtains a laser angle difference for a third laser angle. In this example, the G-PCC decoder may determine a predicted value based on the first laser angle and the second laser angle. The G-PCC decoder may determine the third laser angle based on the predicted value and the laser angle difference for the third laser angle. Based on one of the first laser angle, the second laser angle, and the third laser angle, the G-PCC decoder may decode a point of the point cloud data. For example, the GPCC decoder may be configured to use the third laser angle to decode the point cloud data. In some examples, the G-PCC decoder may determine a vertical position of a point of the point cloud data based on the third laser angle. By determining the third laser angle based on the first and second laser angles, the amount of data required to specify the laser angle difference can be less than if the G-PCC decoder did not determine the third laser angle based on the first and second laser angles. Thus, the laser angle difference can be coded more efficiently.

[0028]

[0041] In another example, the present disclosure describes a method for a G-PCC decoder to decode point cloud data that obtains values for a first laser. The value for the first laser indicates the number of probes in the azimuth direction of the first laser (e.g., for a full rotation of the first laser or other range). The G-PCC decoder may also decode a syntax element for a second laser. The syntax element for the second laser indicates the difference between the value for the first laser and the value for the second laser. The value for the second laser indicates the number of probes in the azimuth direction of the second laser (e.g., for a full rotation of the second laser or other range). Additionally, the G-PCC decoder may determine a value for the second laser that indicates the number of probes in the azimuth direction of the second laser based on the first value and an indication of the difference between the value for the first laser and the value for the second laser. In other words, based on the value for the first laser and an indication of the difference between the value for the first laser and the value for the second laser, the G-PCC decoder may determine a value for the second laser that indicates the number of probes in the azimuth direction of the second laser. The G-PCC decoder may decode points of the point cloud data based on the number of probes in the azimuth direction of the second laser. For example, the G-PCC decoder may be configured to use the number of probes in the azimuth direction of the second laser to decode the point cloud data. By determining the number of probes in the azimuth direction of the second laser based on the difference between the value for the first laser and the value for the second laser, the amount of data required to specify the number of probes in the azimuth direction for the second laser is reduced, and thus it becomes more efficient than directly indicating the number of probes.

[0029]

[0042] This disclosure describes lasers, laser beams, laser candidates, and other terms that include lasers, but these terms are not necessarily limited to cases where a physical laser is used. Rather, these terms can be used with respect to physical lasers or other distance measurement techniques. Further, these terms may be used with respect to beams that do not physically exist, but the concept of a beam is used for the purpose of coding point clouds.

[0030]

[0043] FIG. 1 is a block diagram showing an exemplary encoding and decoding system 100 that can execute the techniques of this disclosure. The techniques of this disclosure generally aim to code (encode and / or decode) point cloud data, i.e., support point cloud compression. Generally, point cloud data includes any data for processing a point cloud. Coding can be effective when compressing and / or decompressing point cloud data.

[0031]

[0044] As shown in FIG. 1, system 100 includes a source device 102 and a destination device 116. The source device 102 provides encoded point cloud data to be decoded by the destination device 116. Specifically, in the example of FIG. 1, the source device 102 provides point cloud data to the destination device 116 via a computer-readable medium 110. The source device 102 and the destination device 116 can be equipped with any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, ground or marine vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, surveillance or security devices, etc. In some cases, the source device 102 and the destination device 116 can be equipped for wireless communication.

[0032]

[0045] In the example of FIG. 1, the source device 102 includes a data source 104, a memory 106, a G-PCC encoder 200, and an output interface 108. The destination device 116 includes an input interface 122, a G-PCC decoder 300, a memory 120, and a data consumer 118. The G-PCC encoder 200 of the source device 102 and the G-PCC decoder 300 of the destination device 116 may be configured to apply the techniques of the present disclosure regarding the simplification of the G-PCC angular mode. Accordingly, the source device 102 represents an example of an encoding device, while the destination device 116 represents an example of a decoding device. In other examples, the source device 102 and the destination device 116 may include other components or configurations. For example, the source device 102 may receive data (e.g., point cloud data) from an internal source or an external source. Similarly, the destination device 116 may interface with an external data consumer rather than including a data consumer within the same device.

[0033]

[0046] The system 100 shown in FIG. 1 is merely an example. In general, other digital encoding and / or decoding devices may perform the techniques of the present disclosure regarding the simplification of the G-PCC angular mode. The source device 102 and the destination device 116 are merely examples of such devices that generate coded data for transmission from the source device 102 to the destination device 116. The present disclosure refers to a "coding" device as a device that performs data coding (encoding and / or decoding). Thus, the G-PCC encoder 200 and the G-PCC decoder 300 each represent an example of a coding device, specifically, an encoder and a decoder. Similarly, the term "coding" may refer to either encoding or decoding. In some examples, the source device 102 and the destination device 116 may operate substantially symmetrically such that each of the source device 102 and the destination device 116 includes an encoding component and a decoding component. Thus, the system 100 may support one-way or two-way transmission between the source device 102 and the destination device 116 for, for example, streaming, playback, broadcasting, telephony, navigation, and other applications.

[0034]

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

[0035]

[0048] The memories 106 of the source device 102 and 120 of the destination device 116 may represent general-purpose memories. In some examples, the memories 106 and 120 may store raw data, such as raw data from the data source 104 and raw decoded data from the G-PCC decoder 300. Additionally or alternatively, the memories 106 and 120 may store, for example, software instructions executable by the G-PCC encoder 200 and the G-PCC decoder 300, respectively. Although the memories 106 and 120 are shown separately 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 memories that are functionally similar or equivalent. Further, the memories 106 and 120 may store encoded data, such as data output from the G-PCC encoder 200 and input to the G-PCC decoder 300. In some examples, a portion of the memories 106 and 120 may be allocated as one or more buffers to store, for example, raw data, decoded data, and / or encoded data. For example, the memories 106 and 120 may store data representing point clouds. In other words, the memories 106 and 120 may be configured to store point cloud data.

[0036]

[0049] Computer-readable medium 110 may represent any type of medium or device capable of transporting encoded data from source device 102 to destination device 116. In one example, computer-readable medium 110 represents a communication medium that enables source device 102 to directly transmit encoded data (e.g., encoded point cloud) to destination device 116 in real time via, for example, a radio frequency network or a computer-based network. Output interface 108 may modulate a transmission signal including the encoded data, and input interface 122 may demodulate the received transmission signal according to 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 device that may be useful in facilitating communication from source device 102 to destination device 116.

[0037]

[0050] 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 accessible data storage media, such as a hard drive, a Blu-ray Disc, a DVD, a CD-ROM, a flash memory, a volatile or non-volatile memory, or any other suitable digital storage media for storing encoded data.

[0038]

[0051] In some examples, source device 102 may output the encoded data generated by source device 102 to a file server 114 or another intermediate storage device that may store the encoded data. Destination device 116 may access the stored data from file server 114 via streaming or download. File server 114 can be any type of server device capable of storing the 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), cable modem, etc.), or a combination of both suitable for accessing the 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.

[0039]

[0052] 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 various IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 include wireless components, output interface 108 and input interface 122 may be configured to transfer data such as encoded data according to cellular communication standards such as 4G, 4G-LTE® (Long Term Evolution), LTE-Advanced, 5G, and the like. In some examples where output interface 108 includes 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 IEEE 802.11 specifications, IEEE 802.15 specifications (e.g., ZigBee®), Bluetooth® standards, and the like. In some examples, source device 102 and / or destination device 116 may include respective system-on-chip (SoC) devices. For example, source device 102 may include an SoC device for performing functions resulting from G-PCC encoder 200 and / or output interface 108, and destination device 116 may include an SoC device for performing functions resulting from G-PCC decoder 300 and / or input interface 122.

[0040]

[0053] The techniques of the present disclosure may be applied to encoding and decoding that supports any of various 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.

[0041]

[0054] In some examples, source device 102 and / or destination device 116 are mobile devices such as mobile phones, augmented reality (AR) devices, or mixed reality (MR) devices. In such examples, source device 102 may generate and encode a point cloud as part of a process for mapping the local environment of source device 102. For examples of AR and MR, destination device 116 may use the point cloud to generate a virtual environment based on the local environment of source device 102. In some examples, source device 102 and / or destination device 116 are ground or marine vehicles, spacecraft, or aircraft. In such examples, source device 102 may generate and encode a point cloud as part of a process for mapping the environment of the source device, for example, for autonomous navigation, accident forensic investigation, and other purposes.

[0042]

[0055] The input interface 122 of destination device 116 receives an encoded bitstream from a computer-readable medium 110 (such as a communication medium, storage device 112, file server 114, etc.). The encoded bitstream may include signaling information defined by G-PCC encoder 200 and also used by G-PCC decoder 300, such as syntax elements having values that describe the characteristics and / or processing of an encoded unit (such as a slice, picture, set of pictures, sequence, etc.). Data consumer 118 uses the decoded data. For example, data consumer 118 may use the decoded data to determine the location of physical objects. In some examples, data consumer 118 may include a display for presenting imagery based on the point cloud. For example, data consumer 118 may use the points of the point cloud as vertices of a polygon and may use the color attributes of the points of the point cloud to shade the polygon. In this example, data consumer 118 may then rasterize the polygon to present a computer-generated image based on the shaded polygon.

[0043]

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

[0044]

[0057] The G-PCC encoder 200 and the G-PCC decoder 300 can operate according to a coding standard such as a video point cloud compression (V-PCC) standard or a geometry point cloud compression (G-PCC) standard. The present disclosure may generally refer to the coding (e.g., encoding and decoding) of pictures in order to include the process of encoding or decoding data. An encoded bitstream generally includes a series of values for syntax elements representing coding decisions (e.g., coding modes).

[0045]

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

[0046]

[0059] ISO / IEC MPEG (JTC1 / SC29 / WG11) is studying the potential need for standardization of point cloud coding technology with compression capabilities far exceeding those of current methods, and aims to create this standard. This group is working together on this exploration activity in a collaborative effort known as the 3D Graphics Team (3DG) to evaluate compression technology designs proposed by experts in this field.

[0047]

[0060] Point cloud compression activities are classified into two different methods. The first method is "Video Point Cloud Compression" (V-PCC), which segments 3D objects, projects the segments into multiple 2D planes (represented as "patches" in 2D frames), and they are further coded by a legacy 2D video codec such as the High Efficiency Video Coding (HEVC) (ITU-T H.265) codec. The second method is "Geometry-based Point Cloud Compression" (G-PCC), which directly compresses 3D geometry, i.e., the positions of a set of points in 3D space and the associated attribute values (for each point associated with the 3D geometry). G-PCC addresses point cloud compression in both Category 1 (static point clouds) and Category 3 (dynamically acquired point clouds). The latest draft of the G-PCC standard is available in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19088, Brussels, Belgium, January 2020 (hereinafter "w19088"), and the codec description is available in G-PCC Codec Description v6, ISO / IEC JTC1 / SC29 / WG11 w19091, Brussels, Belgium, January 2020 (hereinafter "w19091").

[0048]

[0061] A point cloud contains a set of points in 3D space and may have attributes associated with the points. The attributes can be color information such as R, G, B, or Y, Cb, Cr, or reflectance information, or other attributes. The point cloud 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 various applications including, but not limited to, architecture (modeling), graphics (3D models for visualization and animation), the automotive industry (LIDAR sensors used to assist navigation), mobile phones, tablet computers, and other scenarios.

[0049]

[0062] The 3D space occupied by point cloud data can be enclosed by a virtual bounding box. The positions of the points in the bounding box can be represented with a certain precision, and thus, the positions of one or more points can be quantized based on that precision. At the minimum level, the bounding box is divided into voxels, which are the smallest units of space represented by unit cubes. The voxels in the bounding box can be associated with zero, one, or two or more points. The bounding box can be divided into a plurality of cube / rectangular prism regions, sometimes called tiles. Each tile can be coded into one or more slices. The division of the bounding box into slices and tiles can be based on the number of points in each section or on other considerations (e.g., a particular region can be coded as a tile). The slice regions can be further divided using a segmentation decision similar to that in a video codec.

[0050]

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

[0051]

[0064] In both the G-PCC encoder 200 and the G-PCC decoder 300, the point cloud positions are first coded. The attribute coding depends on the decoded geometry. In FIGS. 2 and 3, the shaded gray modules are options typically used for Category 1 data. The hatched modules are options typically used for Category 3 data. All other modules are common between Category 1 and Category 3.

[0052]

[0065] For category 3 data, the compressed geometry is typically represented as an octree that goes 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 voxels) and a model that approximates the surface within each leaf of the pruned octree. In this way, both category 1 data and category 3 data share the octree coding mechanism, but category 1 data can further approximate the voxels within each leaf with a surface model. The surface model used is a triangulation with 1 to 10 triangles per block, resulting in a triangle soup. Therefore, the category 1 geometry codec is known as the Trisoup geometry codec, and the category 3 geometry codec is known as the octree geometry codec.

[0053]

[0066] At each node of the octree, the occupancy is signaled (if not inferred) for one or more of its child nodes (up to 8 nodes). A plurality of neighborhoods are specified, including (a) nodes that share a face with the current octree node, (b) nodes that share a face, edge, or vertex with the current octree node, etc. Within each neighborhood, the occupancy of the node and / or its children can be used to predict the occupancy of the current node or its children. For sparsely distributed points in some nodes of the octree, the codec (e.g., implemented by the G-PCC encoder 200 and the G-PCC decoder 300) also supports a direct coding mode in which the 3D position of the points is directly encoded. A flag can be signaled to indicate that the direct mode is signaled. At the lowest level, the number of points associated with the octree node / leaf node can also be coded.

[0054]

[0067] When the geometry is coded, the 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 reconstructed point can be derived.

[0055]

[0068] G-PCC has three attribute coding methods, namely, 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 usually used for category 1 data, while prediction is usually used for category 3 data. However, any of the methods may be used for any data, and like the geometry codec in G-PCC, the attribute coding method used to code the point cloud is specified in the bitstream.

[0056]

[0069] The coding of attributes may be performed at a level of detail (LoD), and for each level of detail, a finer representation of the point cloud attributes can be obtained. Each level of detail can be specified based on a distance metric from neighboring nodes or based on a sampling distance.

[0057]

[0070] In the G-PCC encoder 200, the residual obtained as the output of the coding method for attributes is quantized. The quantized residual can be coded using context adaptive arithmetic coding. To apply CABAC coding to syntax elements, the G-PCC encoder 200 can binarize the value of the syntax element to form a series of one or more bits called "bins". In addition, the G-PCC encoder 200 can identify a coding context (i.e., "context"). The coding context can identify the probability of a bin having a specific value. For example, the coding context can indicate a probability of 0.7 for coding a bin with a value of 0 and a probability of 0.3 for coding a bin with a value of 1. After identifying the coding context, the G-PCC encoder 200 can divide the interval into a lower sub-interval and an upper sub-interval. One of the sub-intervals may be associated with the value 0 and the other sub-interval may be associated with the value 1. The width of the sub-interval can be proportional to the probability indicated for the associated value by the identified coding context. If the bin of the syntax element has a value associated with the lower sub-interval, the coded value can be equal to the lower boundary of the lower sub-interval. If the same bin of the syntax element has a value associated with the upper sub-interval, the coded value can be equal to the lower boundary of the upper sub-interval. To code the next bin of the syntax element, the G-PCC encoder 200 can repeat these steps using the interval that is the sub-interval associated with the value of the coded bit. When the G-PCC encoder 200 repeats these steps for the next bin, the G-PCC encoder 200 can use a probability modified based on the probability indicated by the identified coding context and the actual value of the coded bin.

[0058]

[0071] When the G-PCC decoder 300 performs CABAC decoding on the value of a syntax element, the G-PCC decoder 300 can identify the coding context. The G-PCC decoder 300 can then divide the interval into a lower sub-interval and an upper sub-interval. One of the sub-intervals may be associated with the value 0, and the other sub-interval may be associated with the value 1. The width of the sub-interval may be proportional to the probability indicated for the associated value by the identified coding context. If the encoded value is within the lower sub-interval, the G-PCC decoder 300 can decode the bin having the value associated with the lower sub-interval. If the encoded value is within the upper sub-interval, the G-PCC decoder 300 can decode the bin having the value associated with the upper sub-interval. To decode the next bin of the syntax element, the G-PCC decoder 300 can repeat these steps using the interval, which is the sub-interval containing the encoded value. When the G-PCC decoder 300 repeats these steps for the next bin, the G-PCC decoder 300 can use the probability modified based on the identified coding context and the probability indicated by the decoded bin. The G-PCC decoder 300 can then multivalue the bins to restore the value of the syntax element.

[0059]

[0072] In the example of FIG. 2, the G-PCC encoder 200 may include a coordinate conversion unit 202, a color conversion 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, a LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, and an arithmetic coding unit 226.

[0060]

[0073] As shown in the example of FIG. 2, the G-PCC encoder 200 may receive a set of point positions and a set of attributes of the point cloud. The G-PCC encoder 200 may obtain a set of point positions and a set of attributes of the point cloud from the data source 104 (FIG. 1). The positions may include the coordinates of the points of the point cloud. The attributes may include information about the points of the point cloud, such as the color associated with the points of the point cloud. The G-PCC encoder 200 may generate a geometry bitstream 203 including an encoded representation of the point positions of the point cloud. The G-PCC encoder 200 may also generate an attribute bitstream 205 including an encoded representation of the set of attributes.

[0061]

[0074] The coordinate conversion unit 202 may apply a conversion to the coordinates of the points in order to convert the coordinates from the initial region to the conversion region. The present disclosure may refer to the converted coordinates as conversion coordinates. The color conversion unit 204 may apply a conversion to convert the color information of the attributes to a different region. For example, the color conversion unit 204 may convert the color information from the RGB color space to the YCbCr color space.

[0062]

[0075] Furthermore, in the example of FIG. 2, the voxelization unit 206 may voxelize the transformed coordinates. The voxelization of the transformed coordinates may include quantization and removing some points of the point cloud. In other words, a plurality of points of the point cloud may be included within a single "voxel" and may then be treated as one point in some respects. Furthermore, the octree analysis unit 210 may generate an octree based on the voxelized transformed coordinates. In addition, in the example of FIG. 2, the surface approximation analysis unit 212 may analyze the points to potentially determine a surface representation of the set of points. The arithmetic coding unit 214 may entropy-encode the syntax elements representing the octree and / or surface information determined by the surface approximation analysis unit 212. The G-PCC encoder 200 may output these syntax elements in the geometry bitstream 203. The geometry bitstream 203 may also include other syntax elements that are not arithmetically encoded.

[0063]

[0076] The geometry reconstruction unit 216 may reconstruct the transformed coordinates of the points of the point cloud based on the octree, the data indicating the surface determined by the surface approximation analysis unit 212, and / or other information. The number of transformed coordinates reconstructed by the geometry reconstruction unit 216 may be different from the original number of points of the point cloud for voxelization and surface approximation. The present disclosure may refer to the obtained points as reconstructed points. The attribute transfer unit 208 may transfer the attributes of the original points of the point cloud to the reconstructed points of the point cloud.

[0064]

[0077] Further, the RAHT unit 218 may apply RAHT coding to the attributes of the reconstructed points. Alternatively or additionally, the LOD generation unit 220 and the lifting unit 222 may apply LOD processing and lifting, respectively, to the attributes of the reconstructed 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 the syntax elements representing the quantized coefficients. The G-PCC encoder 200 may output these syntax elements in the attribute bitstream 205. The attribute bitstream 205 may also include other syntax elements including syntax elements that are not arithmetically encoded.

[0065]

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

[0066]

[0079] The G-PCC decoder 300 may obtain the geometry bitstream 203 and the attribute bitstream 205. The 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 the syntax elements in the geometry bitstream. Similarly, the attribute arithmetic decoding unit 304 may apply arithmetic decoding to the syntax elements in the attribute bitstream.

[0067]

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

[0068]

[0081] Further, the geometry reconstruction unit 312 can perform reconstruction to determine the coordinates of the points of the point cloud. The inverse coordinate transformation unit 320 can apply an inverse transformation to the reconstructed coordinates to transform the reconstructed coordinates (positions) of the points of the point cloud back from the transformation region to the original region.

[0069]

[0082] Additionally, in the example of FIG. 3, the inverse quantization unit 308 can inverse-quantize the attribute values. The attribute values can be based on the syntax elements obtained from the attribute bitstream (including, for example, the syntax elements decoded by the attribute arithmetic decoding unit 304).

[0070]

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

[0071]

[0084] Further, in the example of FIG. 3, the inverse color transformation unit 322 can apply an inverse color transformation to the color values. The inverse color transformation can be the inverse of the color transformation applied by the color transformation unit 204 of the encoder 200. For example, the color transformation unit 204 can transform color information from the RGB color space to the YCbCr color space. Thus, the inverse color transformation unit 322 can transform color information from the YCbCr color space to the RGB color space.

[0072]

[0085] The various units of FIGS. 2 and 3 are shown to assist in understanding the operations performed by the encoder 200 and decoder 300. The units can be implemented as fixed-function circuits, programmable circuits, or combinations thereof. A fixed-function circuit refers to a circuit that provides a specific function and is preset with respect to the operations that can be performed. A programmable circuit refers to a circuit that can execute various tasks and is programmed to provide a flexible function in the operations that can be performed. For example, a programmable circuit can execute software or firmware that operates the programmable circuit in a manner defined by software or firmware instructions. A fixed-function circuit can execute software instructions (e.g., to receive or output parameters), but the type of operations performed by the fixed-function circuit is generally invariant. In some examples, one or more of the units can be separate circuit blocks (fixed-function or programmable), and in some examples, one or more of the units can be integrated circuits.

[0073]

[0086] The G-PCC encoder 200 and G-PCC decoder 300 can support an angular coding mode. The angular coding mode was adopted at the 129th MPEG meeting in Brussels, Belgium. The following description is based on the original MPEG contribution document, namely, Sebastien Lasserre, Jonathan Taquet, "[GPCC][CE13.22 related] An improvement of the planar coding mode", ISO / IEC JTC1 / SC29 / WG11 MPEG / m50642, Geneva, Switzerland, October 2019, and w19088.

[0074]

[0087] The angular coding mode may, in some cases, be used together with the planar mode (as described, for example, in Sebastien Lasserre, David Flynn, "[GPCC] Planar mode in octree-based geometry coding", ISO / IEC JTC1 / SC29 / WG11 MPEG / m48906, Ytterböle, Sweden, July 2019) and may improve the coding of the vertical (Z) plane position syntax element by employing knowledge of the position and angle at which the laser beam is sensed in a typical LIDAR sensor (see, for example, Sebastien Lasserre, Jonathan Taquet, "[GPCC] CE13.22 Report on angular mode", ISO / IEC JTC1 / SC29 / WG11 MPEG / m51594, Brussels, Belgium, January 2020).

[0075]

[0088] The planar mode is a technique that can improve the coding of which nodes are occupied. The planar mode can be used when all the occupied child nodes of a node are adjacent to a plane and on the side of the plane associated with an increase in the coordinate value for a dimension orthogonal to the plane. For example, the planar mode may be used for a node when all of its occupied child nodes are above or below a horizontal plane passing through the center point of the node, or the planar mode may be used for a node when all of its occupied child nodes are on the near side or the far side of a vertical plane passing through the center point of the node. The G-PCC encoder 200 may encode a planar position syntax element (i.e., a syntax element indicating a planar position) for each of the x, y, and z dimensions. The planar position syntax element for a dimension indicates whether the plane orthogonal to the dimension is in a first position or a second position. When the plane is in the first position, the plane corresponds to the boundary of the node. When the plane is in the second position, the plane passes through the 3D center of the node. Thus, for the z dimension, the G-PCC encoder 200 or the G-PCC decoder 300 may code the vertical plane position of the planar mode in a node of the octree representing the three-dimensional positions of the points of the point cloud.

[0076]

[0089] FIG. 4 is a conceptual diagram showing an exemplary plane occupancy in the vertical direction. In the example of FIG. 4, node 400 is divided into eight child nodes 402A-402H (collectively "child nodes 402"). The child nodes 402 may or may not be occupied. In the example of FIG. 4, the occupied child nodes are shaded. When one or more of the child nodes 402A-402D are occupied and none of the child nodes 402E-402H are occupied, the G-PCC encoder 200 may encode a plane position syntax element having a value of 0 to indicate that all occupied child nodes are adjacent to the positive side (i.e., the side where the z coordinate increases) of the plane of the minimum z coordinate of node 400. When one or more of the child nodes 402E-402H are occupied and none of the child nodes 402A-402D are occupied, the G-PCC encoder 200 may encode a plane position syntax element having a value of 1 to indicate that all occupied child nodes are adjacent to the positive side of the plane of the midpoint z coordinate of node 400. In this way, the plane position syntax element may indicate the vertical plane position of the plane mode at node 400.

[0077]

[0090] FIG. 5 is a conceptual diagram showing a laser package 500, such as a LIDAR sensor or other system, including one or more lasers that scan points in a three-dimensional space. The data source 104 (FIG. 1) may include the laser package 500. As shown in FIG. 5, a point cloud can be captured using the laser package 500, i.e., the sensor scans points in 3D space. However, it should be understood that some point clouds may not be generated by an actual LIDAR sensor but can be encoded as if they exist. In the example of FIG. 5, the laser package 500 includes a LIDAR head 502 that includes a plurality of lasers 504A - 504E (collectively "lasers 504") arranged in a vertical plane at different angles with respect to the origin. The laser package 500 can rotate around the vertical axis 508. The laser package 500 can use the laser light returned to determine the distance and position of the points in the point cloud. The laser beams 506A - 506E (collectively "laser beams 506") emitted by the lasers 504 of the laser package 500 can be characterized by a set of parameters. The distances indicated by the arrows 510, 512 represent exemplary laser correction values for the lasers 504B, 504A, respectively.

[0078]

[0091] The angle coding mode can improve the coding of the vertical (z) plane position syntax element by adopting the knowledge of the position and elevation angle (represented by θ in FIG. 5) at which the laser beam 506 is sensed in a typical LIDAR sensor (see, for example, Sebastien Lasserre, Jonathan Taquet, "[GPCC] CE13.22 report on angular mode", ISO / IEC JTC1 / SC29 / WG11 MPEG / m51594, Brussels, Belgium, January 2020).

[0079]

[0092] Furthermore, the angular coding mode may be used, in some cases, to improve the coding of the vertical z-position bits in the Inferred Direct Coding Mode (IDCM) (Sebastien Lasserre, Jonathan Taquet, "[GPCC] CE13.22 report on angular mode", ISO / IEC JTC1 / SC29 / WG11 MPEG / m51594, Brussels, Belgium, January 2020). IDCM is a mode in which the position of a point within a node is signaled explicitly (directly) with respect to a point within the node. In the angular coding mode, the offset of a point may be signaled with respect to the origin of the node.

[0080]

[0093] As shown in FIG. 5, during the capture of a point, each laser 504 of the laser package 500 rotates around the z-axis 508. Information regarding how many probes (scanning instants) each laser 504 performs in a full rotation (360 degrees), i.e., information regarding the scanning in the azimuthal or φ direction, may be used to improve the x and y plane positions in the planar mode, and the same applies to the x and y position bits for IDCM (see, for example, Sebastien Lasserre, Jonathan Taquet, "[GPCC][Related to CE13.22] The new azimuthal coding mode", ISO / IEC JTC1 / SC29 / WG11 MPEG / m51596, Brussels, Belgium, January 2020).

[0081]

[0094] The angular coding mode may be applied to nodes for which the "angular size" (i.e., node_size / r) is small enough with respect to eligibility (where r indicates the radial distance between the origin of the octree node and the LIDAR head position, and thus r is the LIDAR head position (x Lidar , y Lidar , z Lidar) is for). In other words, when the angle is smaller than the minimum angle delta between the two lasers (i.e., |tan(θ L1 ) - tan(θ L2 ), where θ L1 represents the angle of laser L1 and θ L2 represents the angle of laser L2), the angle coding mode can be applied to the node. Otherwise, for larger nodes, there may be multiple lasers passing through the node. When there are multiple lasers passing through the node, the angle mode may not be efficient.

[0082]

[0095] FIG. 6 is a conceptual diagram showing an example of the angle eligibility of a node. In the example of FIG. 6, since at least two of the laser beams 506 intersect the node 600, the node 600 is determined to be ineligible. However, since the node 602 is not intersected by two or more of the laser beams 506, the node 602 may be eligible for angle coding.

[0083]

[0096] As described above, only some of the nodes in the octree may be eligible to be coded using the angle mode. The following describes a process for determining the node eligibility for the angle mode in w19088. This process is applied to a child node Child to determine the angle eligibility angular_eligible[Child] of the child node. In w19088, the syntax element geometry_angular_mode_flag indicates whether the angle mode is active. If geometry_angular_mode_flag is equal to 0, angular_eligible[Child] is set to be equal to 0. Otherwise, the following applies.

[0084]

Number

[0085] Otherwise,

[0086]

Number

[0087] Here, deltaAngle is the minimum angular distance between lasers determined by the following equation.

[0088]

Number

[0089] Here, (xNchild, yNchild, zNchild) specifies the position of the geometry octree node Child in the current slice.

[0090]

[0097] The following process described in w19088 is applied to the child node Child to determine the IDCM angle eligibility idcm4angular[Child] and the laser index laserIndex[Child] associated with the child node. When the angle eligibility angular_eligible[Child] is equal to 0, idcm4angular[Child] is set to 0 and the laserIndex[Child] index is set to the preset value UNKNOWN_LASER. Otherwise, when the angle eligibility angular_eligible[Child] is equal to 1, the following is applied as a continuation of the process described in section 8.2.5.1 of w19088. First, the reciprocal rInv of the radial distance of the child node from the Lidar is determined as follows.

[0091]

Number

[0092] Next, the angle theta32 is determined for the child node.

[0093]

Number

[0094] Finally, the angle eligibility and laser associated with the child node are determined as shown in Table 3 below, based on the child node's parent node, Parent.

[0095]

Table 1

[0096]

[0098] The following explains the coding of the sensor laser beam parameters in w19088 for the angle mode. The syntax elements that carry the LIDAR laser sensor information that may be required for the angle coding mode to have any benefit in coding efficiency are shown in Table 4 below <!---->...<!--!-->using the tags. In Table 4, the angle mode syntax elements are shown with the <!---->...<!--!-->tags in the geometry parameter set.

[0097]

Table 2

[0098]

[0099] The semantics of these syntax elements are specified as follows in w19088. A geometry_planar_mode_flag equal to 1 indicates that the planar coding mode is activated. A geometry_planar_mode_flag equal to 0 indicates that the planar coding mode is not activated. geom_planar_mode_th_idcm specifies the value of the activation threshold for the direct coding mode. geom_planar_mode_th_idcm is an integer within the range of 0 or more and 127 or less. When it does not exist, geom_planar_mode_th_idcm is presumed to be 127. For \(i\) in the range of \(0\) to \(2\), geom_planar_mode_th[i] specifies the activation threshold value for the \(i\)-th most likely planar coding mode along the \(i\)-th direction for which the planar coding mode is efficient. geom_planar_mode_th[i] is an integer in the range of \(0\) to \(127\). A geometry_angular_mode_flag equal to 1 indicates that the angular coding mode is activated. A geometry_angular_mode_flag equal to 0 indicates that the angular coding mode is not activated. For \(ia\) in the range of \(0\) to \(2\), lidar_head_position[ia] specifies the \(ia\)-th coordinate of the lidar head in the coordinate system associated with the internal axis. When it does not exist, lidar_head_position[ia] is assumed to be 0. number_lasers specifies the number of lasers used in the angular coding mode. When it does not exist, number_lasers is assumed to be 0. For \(i\) in the range of \(1\) to number_lasers, laser_angle[i] specifies the tangent of the elevation angle of the \(i\)-th laser with respect to the horizontal plane defined by the 0th and 1st internal axes. For \(i\) in the range of \(1\) to number_lasers, laser_correction[i] specifies the correction of the \(i\)-th laser position along the 2nd internal axis with respect to the lidar head position lidar_head_position[2]. When it does not exist, laser_correction[i] is assumed to be 0. planar_buffer_disabled equal to 1 indicates that tracking the nearest node using the buffer is not used in the process of coding the plane mode flag and the plane position in plane mode. planar_buffer_disabled equal to 0 indicates that tracking the nearest node using the buffer is used. When it does not exist, planar_buffer_disabled is assumed to be 0. implicit_qtbt_angular_max_node_min_dim_log2_to_split_z specifies the log2 value of the node size below which horizontal splitting of the node is preferred over vertical splitting. When it does not exist, implicit_qtbt_angular_max_diff_to_split_z is assumed to be 0. implicit_qtbt_angular_max_diff_to_split_z specifies the log2 value of the maximum vertical-to-horizontal node size ratio allowed for a node. When it does not exist, implicit_qtbt_angular_max_node_min_dim_log2_to_split_z is assumed to be 0.

[0099]

[0100] The syntax and semantics of the syntax elements in the geometry parameter set were updated in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19328, Alpbach, Austria, June 2020 (hereinafter "w19328_d2"). The syntax elements that carry the LIDAR laser sensor information required for the angular coding mode and the azimuth angle coding mode to have coding efficiency benefits are shown in Table 2 below <!---->...<!--!-->tagged.

[0100]

Table 3

[0101]

[0101] The semantics of these syntax elements are specified as follows in w19328_d2. numbers_lasers_minus1+1 specifies the number of lasers used in the angle coding mode. When it does not exist, number_lasers_minus1 is presumed to be 0. For i within the range of 0 to number_lasers_minus1, laser_angle[i] and laser_angle_diff[i] specify the tangent of the elevation angle of the i-th laser with respect to the horizontal plane defined by the first and second coded axes (axis). When it does not exist, laser_angle[i] is presumed to be 0. For i within the range of 0 to number_lasers_minus1, laser_correction[i] and laser_correction_diff[i] specify the correction along the second internal axis of the i-th laser position with respect to geomAngularOrigin[2]. When it does not exist, laser_correction[i] is presumed to be 0. Arrays LaserAngle and LaserCorrection having elements laserAngle[i] and LaserCorrection[i] are derived as follows for i within the range of 0 to number_lasers_minus1.

[0102]

Number

[0103] For i within the range of 0 to number_lasers_minus1, laser_numphi_perturn[i] specifies the number of probes in the azimuth direction for a complete one revolution of the i-th laser. When it does not exist, laser_numphi_perturn[i] is presumed to be 0.

[0104]

[0102] As described in the previous section, the laser angle is predicted, and the predicted value is actually the laser angle of the previous laser, i.e., for laser_angle[i], the predicted value is laser_angle[i - 1] (except for i = 0 where the predicted value is equal to 0). Then, the difference, i.e., laser_angle_diff[i] (= laser_angle[i] - predicted value), is coded. However, this "copy" prediction (copying the immediately previous coded value for prediction) is not optimal. The techniques of the present disclosure can demonstrate an improvement in the predicted value of laser_angle[i] such that the coding efficiency of the syntax laser_angle_diff[i] is further improved.

[0105]

[0103] In w19088, as shown in Table 5 below, for all lasers, the corresponding laser angle and the laser offset (laser position relative to the head position) are coded (e.g., <!---->...<!--!-->as shown in the text enclosed by the tag).

[0106]

Table 4

[0107]

[0104] Thus, in some examples, the G-PCC encoder 200 can code the corresponding laser angle and the corresponding laser offset (i.e., laser correction) for each laser in the set of laser candidates.

[0108]

[0105] The laser angles may be arranged in a sorted format. For example, the angles may increase or decrease monotonically along with the array index. If not arranged in this format, preprocessing of the input may be able to sort the angles before coding. It has been observed that the laser angles are very similar to each other. In this scenario, the angle of array index i may be predicted from the angle of index i - 1, and only the difference may be encoded, i.e., delta coding may be applied.

[0109]

[0106] It has been observed that the angle of a particular laser is very similar to the lasers in its neighborhood. In this scenario, the angle of the i-th laser may be predicted from the angle of the (i - 1)-th laser, and only the difference may be encoded, i.e., delta coding may be applied together with se(v) coding.

[0110]

[0107] As shown in Table 6 below, similar delta coding may also be applied to laser correction.

[0111]

Table 5

[0112]

[0108] laser_angle[i] and laser_correction[i] may be derived from laser_angle_delta[i] and laser_correction_delta[i] respectively in the G-PCC decoder 300 as follows.

[0113]

Equation

[0114]

[0109] In some examples, since delta is either all positive or all negative, laser_angle_delta[i] (except for laser_angle_delta[0]) can be coded as an unsigned integer when the laser angles are sorted (monotonically increasing and decreasing).

[0115]

[0110] Therefore, for laser_angle_delta[0], se(v) coding (i.e., signed integer zero-order exponential Golomb coding where the left bit is the first (i.e., the most significant bit is the first)) is used, and for the other laser_angle_delta[i] (i > 0), ue(v) coding is used. laser_offset_deltas are coded with se(v), for example, as shown in Table 7 below.

[0116]

Table 6

[0117]

[0111] In another example, laser_angle_delta[i] and laser_correction_delta[i] can be coded using an exponential Golomb code with degree k. k can be adaptive (based on the magnitude of the delta value), fixed and encoder-configurable, or fixed and pre-determined. In another example, delta coding may be applicable only to the laser angles and not to the laser corrections.

[0118]

[0112] The techniques of the present disclosure can demonstrate an improvement in the predicted value of laser_angle[i] such that the coding efficiency of the syntax laser_angle_diff[i] is further improved. The sorted laser angles (in the LIDAR capture scenario) to be coded increase approximately linearly. For example, the laser angles for the "Ford1" sequence are shown in Table 8 below.

[0119]

Table 7

[0120]

[0113] As a result, it can be observed that the deltas resulting from using a "copy" predictor called delta_old (i.e., the predicted value for the i-th angle is the (i-1)-th angle) are correlated with each other.

[0121]

[0114] Since the angle is increasing linearly, in one example, performing linear prediction using the last two samples can result in a simple but effective prediction called delta in Table 8. It is clear that the magnitude of the delta value is small compared to the delta_old value.

[0122]

[0115] Therefore, the semantic change is indicated by <!---->...<!--!--> the tag.

[0123]

Number

[0124] Therefore, when determining the predicted value, the G-PCC coder can determine the predicted value as 2 * the first laser angle + -1 * the second laser angle (i.e., 2 * LaserAngle[i-1] - LaserAngle[i-2]).

[0125]

[0116] The proposed linear prediction requires the existence of the last two coded angles, so the proposed linear prediction is called for i >= 2. Thus, the prediction process is not changed for i = 0 (predicted value = 0) and i = 1 ("copy" predictor). Further, when the linear prediction is called, the corresponding predicted value can exceed the actual laser angle (unlike the "copy" prediction where the laser angles are sorted in ascending order), so laser_angle_diff[] can be negative, positive, or 0, as required for laser_angle_diff[] to be coded with se(v). se(v) indicates the left bit as the first signed integer 0-th order Exp-Golomb-coded syntax element. The modified syntax change is <!---->...<!--!-->shown in Table 9 below using the <!----> tags.

[0126]

Table 8

[0127]

[0117] Thus, in some examples, the G-PCC encoder 200 determines a first laser angle (e.g., similar to LaserAngle[0] in the above semantics), determines a second laser angle (e.g., similar to LaserAngle[i] for (i==1) in the above semantics), determines a predicted value based on the first laser angle and the second laser angle (e.g., similar to 2*LaserAngle[i-1]-LaserAngle[i-2] in the above semantics), and may determine a laser angle difference for a third laser angle (e.g., similar to laser_angle_diff[i] in the above semantics). Further, the G-PCC encoder 200 may encode a syntax element for the first laser angle (e.g., laser_angle[0] in Table 9) and may encode a syntax element for the laser angle difference for the third laser angle (e.g., laser_angle_diff[i] for (i==1) in Table 9). The syntax element for the laser angle difference indicates the laser angle difference for the third laser angle such that the third laser angle can be determined in the G-PCC decoder 300 based on the first laser angle, the second laser angle, and the laser angle difference for the third laser angle. The G-PCC encoder 200 may encode, based on the third laser angle, points of the point cloud, in some examples their vertical positions.

[0128]

[0118] Similarly, the G-PCC decoder 300 determines a first laser angle (e.g., LaserAngle[0] in the above semantics), determines a second laser angle (e.g., LaserAngle[i] for (i==1) in the above semantics), and preferably decodes a syntax element that specifies a laser angle difference for a third laser angle, thereby determining a laser angle difference for the third laser angle (e.g., laser_angle_diff[i] in the above semantics), predicts a third laser angle based on the first laser angle and the second laser angle (e.g., 2*LaserAngle[i-1]-LaserAngle[i-2] in the above semantics), and may determine the third laser angle based on the prediction for the third laser angle and the laser angle difference for the third laser angle (e.g., (2*LaserAngle[i-1]-LaserAngle[i-2])+laser_angle_diff[i] in the above semantics). Further, the G-PCC decoder 300 may decode a point of the point cloud, and in some examples, its vertical position, based on the third laser angle.

[0129]

[0119] In connection with the previous example, alternatively, laser_angle_diff for (i==1) may be coded at ue(v) since the laser angle delta still employs the "copy" prediction, while other angle deltas are coded at se(v). The changes are indicated by the <!---->...<!--!--> tags shown in Table 10.

[0130]

Table 9

[0131]

[0120] In another example, a more general weighted prediction that uses the last p coded angles can be employed to generate a predicted value for the laser angle. The coefficients for the weighted prediction and the value of p can be either fixed, predetermined, or coded.

[0132]

[0121] In some examples, a syntax element (laser_info_pred_idc) that specifies the model used to derive the laser angle and laser correction from syntax elements is coded. For example, the first value of the syntax element may specify that the predicted value for the i-th laser is (or is derived from) the value of the (i - 1)-th laser, the second value of the syntax element may specify that the predicted value of the i-th laser is derived from the (i - 1)-th and (i - 2)-th lasers, and the third value may specify that the predicted value for the i-th laser is a fixed value such as 0. More generally, different values of the syntax element can be used to specify different ways of deriving the predicted value. The value of the syntax element may be coded once for all lasers (for some laser indices, one or more default values may be selected regardless of the value of this syntax element), or may be coded for each laser (i.e., for each index i). For some lasers, the syntax element may not be coded and a default value may be specified (for example, for the first laser, the predicted value may be derived to be 0). The following syntax table shows how laser_info_pred_idc is coded for each laser. Changes are indicated by the <!---->...<!--!--> tags shown in Table 11.

[0133]

Table 10

[0134]

[0122] In some examples, the value laser_info_pred_idc[i] is coded as ue(v).

[0135]

[0123] laser_info_pred_idc[i] specifies a method for deriving laser information from the syntax elements laser_angle_diff[i] and laser_correction_diff[i]. laser_info_pred_idc[i] equal to 0 specifies that the (i - 1)-th laser information is used to derive information about the i-th laser. laser_info_pred_idc[i] equal to 1 specifies that the (i - 1)-th and (i - 2)-th laser information are used to derive information about the i-th laser. laser_info_pred_idc[i] equal to 2 specifies that prediction information is not used to derive information about the i-th laser. The value of laser_info_pred_idc[0] is presumed to be 2, and the value of laser_info_pred_idc[1] is presumed to be equal to 0.

[0136]

[0124] The laser information is derived as follows.

[0137]

Number

[0138]

[0125] In some examples, the presence of laser_info_pred_idc (or laser_info_pred_flag) can be adjusted by a presence flag. When laser_info_pred_idc is absent, one or more default values can be selected to specify a model for laser information prediction. Thus, the G-PCC encoder 200 can encode a laser information prediction indicator syntax element that specifies a method for deriving laser information from a laser angle difference syntax element for a third laser angle. Similarly, in some examples, the G-PCC decoder 300 can decode a laser information prediction indicator syntax element (e.g., laser_info_pred_idc) that specifies a method for deriving laser information from a laser angle difference syntax element for a laser angle.

[0139]

[0126] FIG. 7A is a flowchart illustrating an exemplary operation of the G-PCC encoder 200 according to one or more techniques of the present disclosure. In the example of FIG. 7A, the G-PCC encoder 200 can obtain (e.g., determine) a first laser angle (700). The first laser angle can indicate the tangent of the elevation angle of the first laser beam with respect to a horizontal plane defined by a first (e.g., x) internal axis and a second (e.g., y) axis of the point cloud data. Additionally, the G-PCC encoder 200 can obtain a second laser angle (702). The second laser angle can indicate the tangent of the elevation angle of the second laser beam with respect to the horizontal plane defined by the first axis and the second axis of the point cloud data. The G-PCC encoder 200 can obtain the first and second laser angles based on configuration information regarding a LIDAR system (or other system) provided to the G-PCC encoder 200.

[0140]

[0127] The G-PCC encoder 200 can determine a predicted value based on a first laser angle and a second laser angle (704). For example, the G-PCC encoder 200 can determine a predicted value by performing a linear prediction based on the first laser angle and the second laser angle. In other examples, the G-PCC encoder 200 can determine a predicted value by applying a weighted prediction using the first laser angle and the second laser angle.

[0141]

[0128] In the example of FIG. 7A, the G-PCC encoder 200 can encode a laser angle difference for a third laser angle (e.g., the laser_angle_diff syntax element) (706). The laser angle difference is equal to the difference between the third laser angle and the predicted value. The third laser angle can specify the tangent of the elevation angle of the third laser with respect to the horizontal plane.

[0142]

[0129] In some examples, the G-PCC encoder 200 can encode a syntax element for one or more of the first laser angle, the second laser angle, and the laser angle difference for the third laser angle. For example, the G-PCC encoder 200 can encode a syntax element that specifies the laser angle difference for the third laser angle as a signed integer zero-th exponent Golomb coded syntax element with the leftmost bit being 1. In some examples, the G-PCC encoder 200 can encode a laser angle difference syntax element (e.g., laser_angle_diff) for the second laser angle. In this example, the laser angle difference syntax element for the second laser angle indicates the difference between the second laser angle and the first laser angle, and the laser angle difference syntax element for the second laser angle can be encoded as a signed integer zero-th exponent Golomb coded syntax element with the leftmost bit being 1.

[0143]

[0130] Further, in some examples, the G-PCC encoder 200 may encode points of the point cloud data based on one of a first laser angle, a second laser angle, and a third laser angle. For example, the G-PCC encoder 200 may encode the vertical position of a point of the point cloud based on the third laser angle. For example, the G-PCC encoder 200 may determine a context associated with a location where the third laser (i.e., the laser having the third laser angle) intersects the current node containing the point. For example, the G-PCC encoder 200 may determine, based on the third laser angle, whether the third laser exceeds or is below a specific threshold defined with respect to a marker point (e.g., a center point) of the current node. The G-PCC encoder 200 may use the third laser angle and a laser correction value for the third laser to determine the location of the beam of the third laser. The range between the thresholds and the range exceeding the thresholds may correspond to various contexts. The G-PCC encoder 200 may then encode one or more bins of a syntax element (e.g., point_offset) indicating the vertical offset of the point by applying CABAC coding using the determined context. The vertical offset of the point may indicate the vertical difference between the point and the origin of the current node. A G-PCC coder, such as the G-PCC encoder 200 or the G-PCC decoder 300, may determine a context (idcmIdxAngular) for CABAC coding the bins of the syntax element point_offset using the process of Table 12. When executing the process of Table 12, the G-PCC coder may determine, based on the third laser angle, whether the third laser exceeds or is below a specific threshold defined with respect to a marker point (e.g., a center point) of the current node.

[0144]

Table 11

[0145] Item

[0131] in Table 12 can be determined as follows. This process is executed after point_offset_x[i][] and point_offset_y[i][] are decoded so that PointOffsetX[i] and PointOffsetY[i] are known. The x and y positions of the lidar for point i are derived as follows.

[0146]

Equation

[0147] Here, (xNchild, yNchild, zNchild) specifies the position of the geometry octree child nodeChild in the current slice. The reciprocal rInv of the radial distance of the point from the LIDAR is determined as follows.

[0148]

Equation

[0149] The corrected laser angle ThetaLaser of the laser associated with the child nodeChild is estimated as follows.

[0150]

Equation

[0151] Assuming that the bit point_offset_z[i][j2] for j2 in the range 0 to j - 1 is known, the point is known to belong to a virtual vertical interval whose half size is given as follows.

[0152]

Equation

[0153] The partial z-point position posZlidarPartial[i][j] that provides the lower end of the section is estimated as follows.

[0154]

Number

[0155]

[0132] In some examples where a node is coded using the planar mode, the G-PCC encoder 200 uses a third laser angle to determine a context for CABAC coding a syntax element (e.g., plane_position) that indicates the position of the horizontal plane passing through the current node. For example, a G-PCC coder such as the G-PCC encoder 200 or the G-PCC decoder 300 may determine a context (contextAngular) for CABAC coding the plane_position of a node (child) as shown in Table 13 below.

[0156]

Table 12

[0157]

[0133] In Table 13, rInv can be determined as follows.

[0158]

Number

[0159] Here,

[0160]

Number

[0161] Here, ChildNodeSizeXLog2 represents the base-2 logarithm of the x-dimension of the node (child). The angle theta32 can be determined for the child node as follows.

[0162]

Number

[0163] Here, zNchild specifies the z position of the geometry child node (Child) in the current slice.

[0164]

[0134] FIG. 7B is a flowchart illustrating an exemplary operation of the G-PCC decoder 300 according to one or more techniques of the present disclosure. In the example of FIG. 7B, the G-PCC decoder 300 (e.g., the geometry reconstruction unit 312 of the G-PCC decoder 300) may obtain (e.g., determine) a first laser angle (750). The first laser angle may be the tangent of the elevation angle of the first laser beam with respect to the horizontal plane defined by the first and second axes of the point cloud data. Additionally, the G-PCC decoder 300 may obtain a second laser angle (752). The second laser angle may be the tangent of the elevation angle of the second laser beam with respect to the horizontal plane defined by the first and second axes of the point cloud data. In some examples, the G-PCC decoder 300 may determine the first laser angle from the value of a syntax element (e.g., laser_angle) encoded in the geometry bitstream 203. In some examples, the G-PCC decoder 300 may determine the first laser angle and / or the second laser angle from a pre-determined laser angle and an additional syntax element (e.g., laser_angle_diff) encoded in the geometry bitstream 203. In other words, the G-PCC decoder 300 may determine the laser angle for laser i as follows.

[0165]

Number

[0166] In some examples, the G-PCC decoder 300 may decode a laser angle difference syntax element (e.g., laser_angle_diff) for a second laser angle, where the left bit of the laser angle difference syntax element for the second laser angle is a first signed integer zero-th exponential Golomb coded syntax element.

[0167]

[0135] Further, in the example of FIG. 7B, the G-PCC decoder 300 may obtain (754) a laser angle difference (e.g., laser_angle_diff syntax element) for a third laser angle. The third laser angle is the tangent of the elevation angle of the third laser beam with respect to the horizontal plane defined by the first and second axes of the point cloud data. In some examples, the laser angle difference is encoded in the geometry bitstream 203 as a signed integer zero-th exponential Golomb code, and the G-PCC decoder 300 may determine the value corresponding to this code. In other words, the G-PCC decoder 300 may decode the laser angle difference for the third laser angle as a first signed integer zero-th exponential Golomb coded syntax element with the left bit being 1.

[0168]

[0136] The G-PCC decoder 300 may determine a predicted value based on the first laser angle and the second laser angle (756). For example, the G-PCC decoder 300 may determine the predicted value by performing a linear prediction based on the first laser angle and the second laser angle. In other examples, the G-PCC decoder 300 may determine the predicted value by applying a weighted prediction using the first laser angle and the second laser angle.

[0169]

[0137] The G-PCC decoder 300 may determine the third laser angle based on the predicted value and the laser angle difference for the third laser angle (758). For example, the G-PCC decoder 300 may add the laser angle difference for the third laser angle to the predicted value to determine the third laser angle.

[0170]

[0138] In some examples, the G-PCC decoder 300 may decode a point of the point cloud data based on one of a first laser angle, a second laser angle, and a third laser angle. For example, the G-PCC decoder 300 may decode the vertical position of a point of the point cloud based on the third laser angle and, in some examples, a laser correction value of a laser having the third laser angle. For example, the G-PCC decoder 300 may decode the position of the third laser beam relative to a marker point (e.g., a center point, an origin, etc.) of the current node including the point based on the third laser angle (and, in some examples, the laser correction value of the laser having the third laser angle). The G-PCC decoder 300 may determine a context based on the position of the third laser beam relative to the current node. For example, the G-PCC decoder 300 may determine a context based on whether the third laser beam is within a specific interval defined by upper and lower distance thresholds from the marker point, as described above with respect to Table 12, for example. The G-PCC decoder 300 (e.g., the geometric arithmetic decoding unit 302 of the G-PCC decoder 300) may then decode one or more bins of a syntax element (e.g., point_pos) indicating the vertical offset of the point relative to the origin of the current node by applying CABAC decoding using the determined context. The G-PCC decoder 300 may then determine the vertical position of the point based on the vertical offset of the point and the origin of the current node. For example, the G-PCC decoder 300 may add the vertical offset of the point to the vertical coordinate of the origin of the current node to determine the vertical position of the point.

[0171]

[0139] In some examples where the current node containing the point is encoded using planar mode, the G-PCC decoder 300, as part of decoding the position of the points in the point cloud based on the third laser angle, may decode a syntax element indicating the vertical plane position (e.g., plane_position) based on the third laser angle and, in some examples, the laser correction value of the laser having the third laser angle. For example, the G-PCC decoder 300 may determine the context based on whether the third laser beam is within a specific interval defined by the upper and lower distance thresholds of the marker point of the current node, as described above with respect to Table 13. The G-PCC decoder 300 may use the third laser angle and, in some examples, the laser correction value of the laser having the third laser angle to determine the location of the third laser beam. The G-PCC decoder 300 may decode one or more bins of the syntax element indicating the vertical plane position by applying CABAC decoding using the determined context. The G-PCC decoder 300 may then decode the position of the points based on the syntax element indicating the vertical plane position. For example, the G-PCC decoder 300 may determine the position of the horizontal plane that divides the current node into an upper tier of child nodes and a lower tier of child nodes. The G-PCC decoder 300 may determine that the point is within a child node in the tier of child nodes immediately above the horizontal plane.

[0172] In the case of azimuth mode coding, the G-PCC encoder 200 may encode a syntax element (e.g., laser_numphi_perturn) that specifies the number of probes in the azimuth direction of the laser beam (e.g., for a full rotation of the laser beam or other range). The syntax element laser_numphi_perturn[i] is directly encoded using ue(v). ue(v) represents a first-order unsigned integer Golomb coded syntax element with the leftmost bit being 1. However, the value of this syntax element (e.g., laser_numphi_perturn) for a particular laser is strongly correlated with the value of this syntax element for neighboring lasers. Therefore, exploiting this correlation can improve the efficiency associated with coding these syntax elements (e.g., the laser_numphi_perturn syntax element).

[0173]

[0141] This disclosure describes a technique that can utilize the correlation between the values of syntax elements indicating the number of probes in the azimuthal direction of a laser beam (e.g., for a complete rotation or other range of the laser beam). For example, in some examples of this disclosure, instead of directly coding the laser_numphi_perturn[i] syntax element, the G-PCC encoder 200 can predict the value of laser_numphi_perturn[i] from laser_numphi_per_turn[i - 1] for i >= 1. In other words, the G-PCC coder can predict the number of probes in the azimuthal direction of laser i (e.g., for a complete rotation or other range of laser i) from the number of probes in the azimuthal direction of laser i - 1 (e.g., for a complete rotation or other range of laser i - 1). The G-PCC encoder 200 can derive a difference (e.g., laser_numphi_perturn_diff[i]) equal to (laser_numphi_per_turn[i] - laser_numphi_perturn[i - 1]) and then encode that difference. The G-PCC decoder 300 can use the number of probes in the azimuthal direction of laser beam i - 1 (e.g., for a complete rotation or other range of the laser beam) to determine the number of probes in the azimuthal direction of laser beam i (e.g., for a complete rotation or other range of the laser beam) and add the value of laser_numphi_perturn_diff[i]. The changes to the syntax and semantics of w19328_d2 corresponding to this example are <!---->...<!--!-->shown in Table 14 below using the <!----> tags.

[0174]

Table 13

[0175] For i within the range of 0 to number_lasers_minus1, laser_numphi_perturn[i] and laser_numphi_perturn_diff[i] specify the correction along the second internal axis of the i-th laser position with respect to geomAngularOrigin[2]. When not present, laser_correction[i] is presumed to be 0. Arrays LaserAngle and LaserCorrection with elements laserAngle[i] and LaserCorrection[i] are derived as follows for i within the range of 0 to number_lasers_minus1.

[0176]

Number

[0177] For i within the range of 0 to number_lasers_minus1, laser_numphi_perturn[i] and laser_numphi_perturn_diff[i] specify the number of probes in the azimuthal direction for a complete one revolution of the i-th laser. When not present, laser_numphi_perturn[i] is presumed to be 0.

[0178]

Number

[0179]

[0142] Thus, in some examples, the G-PCC encoder 200 encodes a syntax element that specifies a value for a first laser (e.g., similar to laser_numphi_perturn[0] in Table 14), where the value for the first laser indicates the number of probes in the azimuth direction for a complete rotation of the first laser, encodes a syntax element for a second laser (e.g., similar to laser_numphi_perturn_diff[i] in Table 14), where the syntax element for the second laser indicates the difference between the value for the first laser and the value for the second laser, and the value for the second laser indicates the number of probes in the azimuth direction for a complete rotation of the second laser, and may encode one or more points of the point cloud data based on one of the number of probes in the azimuth direction of the first laser and the number of probes in the azimuth direction for a complete rotation of the second laser.

[0180]

[0143] Similarly, the G-PCC decoder 300 may determine a value for the first laser (e.g., LaserNumPhiPerTurn[0] in the above syntax), where the value for the first laser indicates the number of probes in the azimuthal direction for a complete rotation of the first laser. Additionally, the G-PCC decoder 300 may decode a syntax element for the second laser (e.g., laser_numphi_perturn_diff[i] in Table 14). The syntax element for the second laser indicates the difference between the value for the first laser and the value for the second laser, where the value for the second laser may indicate the number of probes in the azimuthal direction for a complete rotation of the second laser. The G-PCC decoder 300 may determine a value for the second laser (e.g., in the above syntax, LaserNumPhiPerTurn[i]=LaserNumPhiPerTurn[i-1]+laser_numphi_perturn_diff[i]) indicating the number of probes in the azimuthal direction of the second laser based on the value for the first laser and the indication of the difference between the value for the first laser and the value for the second laser. Further, the G-PCC decoder 300 may decode one or more points of the point cloud data based on the number of probes in the azimuthal direction for a complete rotation of the second laser.

[0181]

[0144] FIG. 8A is a flowchart showing an exemplary operation of the G-PCC encoder 200 according to one or more techniques of the present disclosure. In the example of FIG. 8A, the G-PCC encoder 200 may obtain point cloud data (800). For example, the G-PCC encoder 200 may obtain a point cloud from the data source 104 (FIG. 1). The data source 104 may generate a point cloud using a LIDAR sensor, one or more cameras, a computer graphics program, or other sources.

[0182]

[0145] The G-PCC encoder 200 can determine a value for the first laser (e.g., LaserNumPhiPerTurn) (802). The value for the first laser indicates the number of probes in the azimuthal direction of the first laser (e.g., for a full rotation or other range of the first laser). For example, the G-PCC encoder 200 can determine the value for the first laser based on configuration information regarding the LIDAR system (or other system) provided to the G-PCC encoder 200. In some examples, the G-PCC encoder 200 can encode a syntax element (e.g., laser_num_phi_perturn) that specifies the value for the first laser.

[0183]

[0146] Further, in the example of FIG. 8A, the G-PCC encoder 200 can encode a syntax element for the second laser (e.g., laser_numphi_perturn_diff) (804). The syntax element for the second laser indicates the difference between the value for the first laser and the value for the second laser. The value for the second laser indicates the number of probes in the azimuthal direction of the second laser (e.g., for a full rotation or other range of the second laser). The G-PCC encoder 200 can determine the value for the second laser based on configuration information regarding the LIDAR system (or other system) provided to the G-PCC encoder 200. In some examples, the G-PCC encoder 200 can encode the syntax element as a zeroth order exponential Golomb coded syntax element. The G-PCC encoder 200 can include the encoded syntax element in the geometry bitstream 203.

[0184]

[0147] The G-PCC encoder 200 may encode one or more points of the point cloud data based on the number of probes in the azimuth direction of the second laser (e.g., for a full rotation or other range of the second laser) (806). For example, the G-PCC encoder 200 may determine the sampling location of the second laser within a node containing the point based on the number of probes in the azimuth direction of the second laser (e.g., for a full rotation or other range of the second laser). The G-PCC encoder 200 may then determine a context based on the sampling location of the second laser within the node. For example, the G-PCC encoder 200 may use the azimuth angle instead of the elevation angle (z) to determine the context in a process that is the same as or similar to the process described in Table 12 above. The G-PCC encoder 200 may then encode one or more bins of an azimuth offset syntax element (e.g., point_offset) indicating the azimuth offset of the point by applying CABAC encoding using the determined context.

[0185]

[0148] In some examples where the G-PCC encoder 200 uses an angular mode to encode a node containing a point, the G-PCC encoder 200 may determine the sampling location of the second laser within a node containing one of the one or more points based on the number of probes in the azimuth direction of the second laser (e.g., for a full rotation or other range of the second laser). Additionally, in this example, the G-PCC encoder 200 may determine a context based on the sampling location. For example, the G-PCC encoder 200 may use the azimuth angle instead of the elevation angle (z) to determine the context in a process that is the same as or similar to the process described in Table 13 above. The G-PCC encoder 200 may encode a syntax element indicating the position of the plane passing through the node containing the point by applying CABAC encoding using the determined context. The G-PCC encoder 200 may determine the position of the point based on the position of the plane.

[0186]

[0149] Figure 8B is a flowchart showing an exemplary operation of the G-PCC decoder 300 according to one or more techniques of the present disclosure. In the example of Figure 8B, the G-PCC decoder 300 may obtain a value for the first laser (e.g., LaserNumPhiPerTurn) (850). The value for the first laser indicates the number of probes in the azimuthal direction of the first laser (e.g., for a full rotation or other range of the first laser). For example, the G-PCC decoder 300 may determine the value for the first laser as the value of a syntax element (e.g., laser_numphi_perturn[0]) that specifies the number of probes in the azimuthal direction of the first laser (e.g., for a full rotation or other range of the first laser). In some examples, the G-PCC decoder 300 may obtain the value for the first laser by adding the value of a syntax element (e.g., laser_numphi_perturn_diff) to a value indicating the number of probes in the azimuthal direction of the previous laser.

[0187]

[0150] In addition, the G-PCC decoder 300 may decode a syntax element (e.g., laser_numphi_perturn_diff) for the second laser (852). The syntax element for the second laser indicates the difference between the value for the first laser and the value for the second laser (e.g., LaserNumPhiPerTurn). The value for the second laser indicates the number of probes in the azimuthal direction of the second laser (e.g., for a full rotation or other range of the second laser). In some examples, decoding the syntax element for the second laser includes converting a zero-order exponential Golomb code to the value of the syntax element for the second laser.

[0188]

[0151] The G-PCC decoder 300 can determine a value for the second laser indicating the number of probes in the azimuth direction of the second laser based on a first value and an indication of the difference between the value for the first laser and the value for the second laser (854). For example, the G-PCC decoder 300 can add the value for the first laser to the syntax element for the second laser to determine the value for the second laser.

[0189]

[0152] The G-PCC decoder 300 can determine one or more points of the point cloud based on the number of probes in the azimuth direction for a complete rotation of the laser (e.g., for a complete rotation of the second laser or for another range) (856). For example, the G-PCC decoder 300 can determine the sampling location (e.g., predPhi) of the second laser at the current node containing the point based on the number of probes in the azimuth direction for a complete rotation of the laser (e.g., for a complete rotation of the second laser or for another range). The G-PCC decoder 300 can then determine a context (e.g., idcmIdxAzimuthal) based on the sampling location. The G-PCC decoder 300 can determine the context in the same or a similar process as determining the context idcmIdxAngular in Table 12 above, using the azimuth instead of the elevation angle (z). In this example, the G-PCC decoder 300 can then decode one or more bins of the azimuth offset syntax element (e.g., point_offset) indicating the azimuth offset of the point by applying CABAC decoding using the determined context. The azimuth offset can indicate the offset of the azimuth coordinate of the point relative to the origin of the current node. The G-PCC decoder 300 can determine the position of the point based on the azimuth offset syntax element. For example, the G-PCC decoder 300 can convert the cylindrical coordinates (including the azimuth coordinate) of the point to Cartesian coordinates.

[0190]

[0153] In some examples where the node is encoded using the angular mode, the G-PCC decoder 300 may determine the sampling location of the second laser at a node including one of one or more points based on the number of probes in the azimuth direction of the second laser (e.g., for a full rotation of the second laser or other range). In addition, the G-PCC decoder 300 may determine a context based on the sampling location. For example, the G-PCC decoder 300 may determine a context based on whether the sampling location is before or after the midpoint of the node in the rotational direction of the second laser. The G-PCC decoder 300 may determine a context in the same or a similar process as determining the context of Table 13 above, using the azimuth instead of the elevation (z). Further, in this example, the G-PCC decoder 300 may decode a syntax element (e.g., plane_position) indicating the position of the plane passing through the node including the point by applying CABAC decoding using the determined context. The G-PCC decoder 300 may determine the position of the point based on the position of the plane. For example, the G-PCC decoder 300 may determine that the point is in the tear of the child node immediately after the plane.

[0191]

[0154] As described above, the number_lasers syntax element may be coded in a parameter set such as a geometry parameter set. The number_lasers syntax element indicates the number of lasers used in the angular coding mode. However, according to one or more techniques of the present disclosure, the number of lasers used in the angular coding mode is such that the number of lasers is obtained by adding the value L to the coded number_lasers_minusL value, and can be coded as number_lasers_minusL (e.g., in a parameter set such as a geometry parameter set or other syntax header). Thus, in some examples, a G-PCC coder (e.g., G-PCC encoder 200 or G-PCC decoder 300) may code a syntax element having a first value, where the first value + the second value indicates the number of lasers, and where the second value is the minimum number of lasers.

[0192]

[0155] In some examples, for example, since there should be at least one laser in the angular mode that is useful for coding the plane position in the plane mode or the point position offset in IDCM, the value L is equal to 1. The number_lasers_minus1 syntax element may be coded in the bitstream using a variable length code such as a k-th order exponential Golomb code, or a fixed length code. In some examples, the value L may be equal to the minimum number of lasers required for the angular mode to be useful for coding. In some examples, the number_lasers_minusL syntax element may be coded in the bitstream using a variable length code such as a k-th order exponential Golomb code, or a fixed length code.

[0193]

[0156] The geometry parameter set syntax table of w19328_d2 is modified as in Table 15 below, and the modified text is <!---->...It is indicated by the <!--!--> tag. More specifically, Table 15 shows the coding of number_of_lasers_minus1 in the geometry parameter set. In Table 15, the <#>...< / #> tag indicates the syntax elements related to the angle mode.

[0194] [Table 14]

[0195]

[0157] The semantics of the number_lasers_minus1 syntax element are given as follows. The numbers_lasers_minus1 value + 1 specifies the number of lasers used in the angle coding mode. When it does not exist, number_lasers_minus1 is presumed to be -1.

[0196]

[0158] In Table 15, num_lasers_minus1 + 1 specifies the number of lasers. Therefore, in Table 15, it is assumed that the minimum number of lasers is 1. However, angle mode eligibility requires the derivation of the minimum angle delta, which is impossible when the number of lasers is 1. In other words, the angle mode can only be used when there are two or more lasers. Therefore, in the first example, since angle eligibility requires the minimum angle difference between two lasers, the minimum number of lasers is 2. Therefore, the syntax element num_lasers_minus1 can be replaced using num_lasers_minus2. Therefore, when the number of lasers is 1, the angle mode is not applied. The changes to w19328_d2 are <!---->... shown in Table 16 using the <!--!--> tag.

[0197] [Table 15]

[0198] number_lasers_minus<!---->2<!--!-->+<!---->2<!--!-->specifies the number of lasers used in the angular coding mode. When absent, number_lasers_minus<!---->2<!--!-->is assumed to be 0.

[0199]

[0159] Thus, in some examples, the G-PCC encoder 200 or the G-PCC decoder 300 may encode or decode a syntax element (e.g., number_lasers_minus2), where the value of the syntax element +2 specifies the number of lasers used in the angular coding mode, and may encode or decode point cloud data using the angular coding mode.

[0200]

[0160] In a second example, when using single laser coding, it is proposed to qualify all nodes (skip the qualification conditions). The following changes are proposed for the determination of angular eligibility. The following process is applied to a child node Child to determine the angular eligibility angular_eligible[Child] of the child node. If geometry_angular_mode_flag is equal to 0, angular_eligible[Child] is set to be equal to 0. Otherwise, the following applies.

[0201]

Number

[0202] Here, deltaAngle is the minimum angular distance between lasers determined by the following formula.

[0203]

Number

[0204] Here, (sNchild, tNchild, vNchild) specifies the position of the geometric octree node Child in the current slice.

[0205]

[0161] FIG. 9 is a conceptual diagram showing an exemplary distance measurement system 900 that can be used with one or more techniques of the present disclosure. In the example of FIG. 9, the distance measurement system 900 includes an illuminator 902 and a sensor 904. The illuminator 902 can emit light 906. In some examples, the illuminator 902 can emit the light 906 as one or more laser beams. The light 906 can be one or more wavelengths such as infrared wavelengths or visible light wavelengths. In other examples, the light 906 is not coherent laser light. When the light 906 encounters an object such as the object 908, the light 906 generates return light 910. The return light 910 can include backscattered light and / or reflected light. The return light 910 can pass through a lens 911 that directs the return light 910 to generate an image 912 of the object 908 on the sensor 904. The sensor 904 generates a signal 914 based on the image 912. The image 912 can comprise a set of points (represented, for example, by dots in the image 912 of FIG. 9).

[0206]

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

[0207]

[0163] In some examples, the illuminator 902 generates a structured light pattern. In such examples, the distance measurement system 900 may include a plurality of sensors 904 on which respective images of the structured light pattern are formed. The distance measurement system 900 may use the parallax between images of the structured light pattern to determine the distance to an object 908 off of which the structured light pattern is backscattered. Structured light-based distance measurement systems can have a high level of accuracy (e.g., accuracy in the sub-millimeter range) when the object 908 is relatively close to the sensors 904 (e.g., between 0.2 meters and 2 meters). This high level of accuracy can be useful in face recognition applications such as unlocking a mobile device (e.g., a mobile phone, a tablet computer, etc.) and for security purposes.

[0208]

[0164] In some examples, the distance measurement system 900 is a time-of-flight (ToF)-based system. In some examples where the distance measurement system 900 is a ToF-based system, the illuminator 902 generates a pulse of light. In other words, the illuminator 902 may modulate the amplitude of the emitted light 906. In such examples, the sensor 904 detects the return light 910 from the pulse of light 906 generated by the illuminator 902. The distance measurement system 900 may then determine the distance to the object 908 off of which the light 906 is backscattered based on the delay between when the light 906 is emitted and detected and the known speed of light in air. In some examples, instead of (or in addition to) modulating the amplitude of the emitted light 906, the illuminator 902 may modulate the phase of the emitted light 1404. In such examples, the sensor 904 detects the phase of the return light 910 from the object 908 and, using the speed of light and based on the time difference between when the illuminator 902 generates the light 906 at a particular phase and when the sensor 904 detects the return light 910 at a particular phase, may determine the distance to a point on the object 908.

[0209]

[0165] In other examples, the point cloud can be generated without using the illuminator 902. For example, in some examples, the sensor 904 of the distance measurement system 900 can include two or more optical cameras. In such examples, the distance measurement system 900 can use the optical cameras to capture a stereo image of the environment including the object 908. The distance measurement system 900 (e.g., the point cloud generator 920) can then calculate the parallax between locations within the stereo image. The distance measurement system 900 can then use the parallax to determine the distance to the locations shown in the stereo image. From these distances, the point cloud generator 920 can generate a point cloud.

[0210]

[0166] The sensor 904 can also detect other attributes of the object 908, such as color and reflectivity information. In the example of FIG. 9, the point cloud generator 920 can generate a point cloud based on the signal 918 generated by the sensor 904. The distance measurement system 900 and / or the point cloud generator 920 can form part of the data source 104 (FIG. 1).

[0211] [

[0167] ] Figure 10 is a conceptual diagram showing an exemplary vehicle-based scenario in which one or more techniques of the present disclosure may be used. In the example of Figure 10, vehicle 1000 includes a laser package 1002, such as a LIDAR system. Laser package 1002 may be implemented in the same manner as laser package 500 (Figure 5). Although not shown in the example of Figure 10, vehicle 1000 may also include a data source, such as data source 104 (Figure 1), and a G-PCC encoder, such as G-PCC encoder 200 (Figure 1). In the example of Figure 10, laser package 1002 emits a laser beam 1004 that reflects off a pedestrian 1006 or other object in the road. The data source of vehicle 1000 may generate a point cloud based on the signals generated by laser package 1002. The G-PCC encoder of vehicle 1000 may encode the point cloud to generate a bitstream 1008, such as geometry bitstream 203 (Figure 2) and attribute bitstream 205 (Figure 2). Bitstream 1008 may contain far fewer bits than the unencoded point cloud obtained by the G-PCC encoder. The output interface of vehicle 1000 (e.g., output interface 108 (Figure 1)) may transmit bitstream 1008 to one or more other devices. Thus, vehicle 1000 may be able to transmit bitstream 1008 to other devices more quickly than unencoded point cloud data. Additionally, bitstream 1008 may require less data storage capacity.

[0212]

[0168] The techniques of this disclosure can further reduce the number of bits in the bitstream 1008. For example, determining a predicted value based on the first laser angle and the second laser angle, and determining a third laser angle based on the predicted value and the laser angle difference can reduce the number of bits in the bitstream 1008 associated with the third laser angle. Similarly, the bitstream 1008 can contain fewer bits when the G-PCC coder determines a value for a first laser indicating the number of probes in the azimuthal direction of the first laser, decodes a syntax element for a second laser indicating the difference between the value for the first laser and the value for a second laser indicating the number of probes in the azimuthal direction of the second laser, and determines one or more points of the point cloud data based on the number of probes in the azimuthal direction of the second laser.

[0213]

[0169] In the example of FIG. 10, the vehicle 1000 can transmit the bitstream 1008 to another vehicle 1010. The vehicle 1010 can include a G-PCC decoder such as the G-PCC decoder 300 (FIG. 1). The G-PCC decoder of the vehicle 1010 can decode the bitstream 1008 to reconstruct the point cloud. The vehicle 1010 can use the reconstructed point cloud for various purposes. For example, the vehicle 1010 can determine to start decelerating based on the reconstructed point cloud even before the driver of the vehicle 1010 recognizes that the pedestrian 1006 is on the road ahead of the vehicle 1000 and thus, for example, that the pedestrian 1006 is on the road. Thus, in some examples, the vehicle 1010 can perform an autonomous navigation operation, generate a notification or warning, or perform another action based on the reconstructed point cloud.

[0214]

[0170] Additionally or alternatively, vehicle 1000 may transmit bitstream 1008 to server system 1012. Server system 1012 may use bitstream 1008 for various purposes. For example, server system 1012 may store bitstream 1008 for subsequent reconstruction of the point cloud. In this example, server system 1012 may use the point cloud along with other data (e.g., vehicle telemetry data generated by vehicle 1000) to train an autonomous driving system. In other examples, server system 1012 may store bitstream 1008 for subsequent reconstruction for forensic accident investigation (e.g., if vehicle 1000 collides with pedestrian 1006).

[0215]

[0171] FIG. 11 is a conceptual diagram showing an exemplary extended reality system in which one or more techniques of the present disclosure may be used. Extended reality (XR) is a term used to cover a range of technologies including augmented reality (AR), mixed reality (MR), and virtual reality (VR). In the example of FIG. 11, a first user 1100 is located at a first location 1102. User 1100 wears an XR headset 1104. Alternatively to the XR headset 1104, user 1100 may use a mobile device (e.g., a mobile phone, a tablet computer, etc.). XR headset 1104 includes a depth detection sensor such as a LIDAR system that detects the positions of points on object 1106 at location 1102. The data source of XR headset 1104 may use the signals generated by the depth detection sensor to generate a point cloud representation of object 1106 at location 1102. XR headset 1104 may include a G-PCC encoder (e.g., G-PCC encoder 200 of FIG. 1) configured to encode the point cloud to generate bitstream 1108.

[0216]

[0172] The techniques of the present disclosure can further reduce the number of bits in the bitstream 1108. For example, determining a predicted value based on the first laser angle and the second laser angle, and determining a third laser angle based on the predicted value and the laser angle difference can reduce the number of bits in the bitstream 1108 associated with the third laser angle. Similarly, the bitstream 1108 can include fewer bits when the G-PCC coder determines a value for a first laser indicating the number of probes in the azimuth direction of the first laser, decodes a syntax element for a second laser indicating the difference between the value for the first laser and the value for a second laser indicating the number of probes in the azimuth direction of the second laser, and determines one or more points of the point cloud data based on the number of probes in the azimuth direction of the second laser.

[0217]

[0173] The XR headset 1104 may transmit a bitstream 1108 to an XR headset 1110 worn by a user 1112 at a second location 1114 (e.g., via a network such as the Internet). The XR headset 1110 may decode the bitstream 1108 to reconstruct a point cloud. The XR headset 1110 may use the point cloud to perform an XR visualization (e.g., an AR, MR, VR visualization) to represent an object 1106 at location 1102. Thus, in some examples, a user 1112 at location 1114, such as when the XR headset 1110 performs a VR visualization, may have a 3D immersive experience at location 1102. In some examples, the XR headset 1110 may determine the position of a virtual object based on the reconstructed point cloud. For example, the XR headset 1110 may determine, based on the reconstructed point cloud, that the environment (e.g., location 1102) includes a flat surface, and then may determine that a virtual object (e.g., a comic character) should be placed on the flat surface. The XR headset 1110 may perform an XR visualization with the virtual object at the determined position. For example, the XR headset 1110 may show a comic character sitting on the flat surface.

[0218]

[0174] FIG. 12 is a conceptual diagram showing an exemplary mobile device system in which one or more techniques of the present disclosure may be used. In the example of FIG. 12, a mobile device 1200, such as a mobile phone or a tablet computer, includes a depth detection sensor, such as a LIDAR system, that detects the position of a point on an object 1202 in the environment of the mobile device 1200. A data source of the mobile device 1200 may use the signal generated by the depth detection sensor to generate a point cloud representation of the object 1202. The mobile device 1200 may include a G-PCC encoder (e.g., G-PCC encoder 200 of FIG. 1) configured to encode the point cloud to generate a bitstream 1204. In the example of FIG. 12, the mobile device 1200 may transmit the bitstream to a remote device 1206, such as a server system or another mobile device. The remote device 1206 may decode the bitstream 1204 to reconstruct the point cloud. The remote device 1206 may use the point cloud for various purposes. For example, the remote device 1206 may use the point cloud to generate a map of the environment of the mobile device 1200. For example, the remote device 1206 may generate a map of the interior of a building based on the reconstructed point cloud. In another example, the remote device 1206 may generate an image (e.g., computer graphics) based on the point cloud. For example, the remote device 1206 may use the points of the point cloud as vertices of a polygon and use the color attributes of the points as a basis for shading the polygon. In some examples, the remote device 1206 may perform face recognition using the point cloud.

[0219]

[0175] The techniques of the present disclosure can further reduce the number of bits in the bitstream 1204. For example, determining a predicted value based on a first laser angle and a second laser angle, and determining a third laser angle based on the predicted value and the laser angle difference can reduce the number of bits in the bitstream 1204 associated with the third laser angle. Similarly, the bitstream 1204 can contain fewer bits when the G-PCC coder determines a value for a first laser indicating the number of probes in the azimuthal direction of the first laser, decodes a syntax element for a second laser indicating the difference between the value for the first laser and the value for a second laser indicating the number of probes in the azimuthal direction of the second laser, and determines one or more points of the point cloud data based on the number of probes in the azimuthal direction of the second laser.

[0220]

[0176] The examples in the various aspects of the present disclosure can be used individually or in any combination.

[0221]

[0177] The following is a non-limiting list of aspects that can be by one or more techniques of the present disclosure.

[0222]

[0178] Aspect 1A: A method of processing a point cloud includes coding a vertical plane position in a plane mode in a node of an octree representing the three-dimensional positions of points in the point cloud, where coding the vertical plane position in the plane mode includes determining a laser index of a laser candidate in a set of laser candidates, where the determined laser index indicates the position of a laser beam intersecting the node, determining a context index based on an intersection point of the laser beam and the node, and arithmetically coding the vertical plane position in the plane mode using the context indicated by the determined context index.

[0223] Aspect 2A: Determining the context index comprises determining the context index based on whether the laser beam is positioned above or below the marker point, where the marker point is the center of the node, as described in Aspect 1A.

[0224]

[0180] Aspect 3A: Determining the context index comprises determining the context index based on whether the laser beam is positioned above the first distance threshold, below the second distance threshold, or between the first distance threshold and the second distance threshold, as described in Aspect 1A.

[0225]

[0181] Aspect 4A: Determining the context index comprises determining the context index based on whether the laser beam is positioned above the first distance threshold, between the first distance threshold and the second distance threshold, between the second distance threshold and the third distance threshold, or below the third distance threshold, as described in Aspect 1A.

[0226]

[0182] Aspect 5A: A method of processing a point cloud includes coding a vertical point position offset within a node of an octree representing the three-dimensional position of points within the point cloud, where coding the vertical point position offset comprises determining a laser index of a laser candidate in a set of laser candidates, where the determined laser index indicates the position of a laser beam intersecting the node, determining a context index based on an intersection point of the laser beam and the node, and arithmetically coding a bin of the vertical point position offset using the context indicated by the determined context index.

[0227] Aspect 6A: Determining the context index comprises determining the context index based on whether the laser beam is positioned above or below the marker point, where the marker point is the center of the node, of the method according to Aspect 5A.

[0228] Aspect 7A: Determining the context index comprises determining the context index based on whether the laser beam is positioned above a first distance threshold, below a second distance threshold, or between the first distance threshold and the second distance threshold, of the method according to Aspect 5A.

[0229] Aspect 8A: Determining the context index comprises determining the context index based on whether the laser beam is positioned above a first distance threshold, between the first distance threshold and the second distance threshold, between the second distance threshold and the third distance threshold, or below the third distance threshold, of the method according to Aspect 5A.

[0230] Aspect 9A: A method of processing a point cloud includes coding a syntax element having a first value, where the first value + a second value indicates the number of lasers, where the second value is the minimum number of lasers.

[0231] Aspect 10A: The syntax element is a first syntax element, and the method further includes determining a laser index of a laser candidate in a set of laser candidates, where the set of laser candidates has a number of lasers, and the determined laser index intersects a node of an octree representing a three-dimensional position of a point in a point cloud, determining a context index based on an intersection point of the laser beam and the node indicating a position of the laser beam, and arithmetically coding a bin of the second syntax element using the context indicated by the determined context index. The method according to Aspect 9A.

[0232]

[0188] Aspect 11A: A method for processing a point cloud includes determining a laser index of a laser candidate in a set of laser candidates, where the determined laser index indicates a position of a laser beam intersecting a node of an octree representing a position of a three-dimensional position of a point in the point cloud, determining a context index based on an intersection point of the laser beam and the node using an angle mode, and arithmetically coding a bin of the second syntax element using the context indicated by the determined context index.

[0233]

[0189] Aspect 12A: A method for processing a point cloud includes signaling a corresponding laser angle and a corresponding laser offset for each laser in a set of laser candidates.

[0234]

[0190] Aspect 13A: The method according to Aspect 12A, further comprising the method according to any one of Aspects 1 to 11.

[0235]

[0191] Aspect 14A: The method according to any one of Aspects 1A to 13A, further comprising generating a point cloud.

[0236] Aspect 15A: A device for processing point clouds, comprising one or more means for executing the method according to any one of Aspects 1A to 14A.

[0237]

[0193] Aspect 16A: The device according to Aspect 15, wherein the one or more means comprise one or more processors implemented in a circuit.

[0238]

[0194] Aspect 17A: The device according to any one of Aspects 15A or 16A, further comprising a memory for storing data representing a point cloud.

[0239]

[0195] Aspect 18A: The device according to any one of Aspects 15A to 17A, comprising a decoder.

[0240]

[0196] Aspect 19A: The device according to any one of Aspects 15A to 18A, comprising an encoder.

[0241]

[0197] Aspect 20A: The device according to any one of Aspects 15A to 19A, further comprising a device for generating a point cloud.

[0242]

[0198] Aspect 21A: The device according to any one of Aspects 15A to 20A, further comprising a display for presenting an image based on a point cloud.

[0243]

[0199] Aspect 22A: A computer-readable storage medium storing instructions that, when executed, cause one or more processors to execute the method according to any one of Aspects 1A to 14A.

[0244]

[0200] Aspect 1B: A method for decrypting a point cloud, comprising determining a first laser angle, determining a second laser angle, decrypting a laser angle difference syntax element for a third laser angle, wherein the laser angle difference syntax element indicates a laser angle difference for the third laser angle, and predicting a third laser angle based on the first laser angle, the second laser angle, and the laser angle difference for the third laser angle.

[0245]

[0201] Aspect 2B: The method according to aspect 1B, wherein decrypting the laser angle difference syntax element for the third laser angle comprises decrypting the laser angle difference syntax element for the third laser angle as a signed integer zero-order exponential Golomb coded syntax element with the left bit being the first.

[0246]

[0202] Aspect 3B: The method according to any one of aspects 1B to 2B, wherein determining the second laser angle comprises decrypting a laser angle difference syntax element for the second laser angle, wherein the laser angle difference syntax element for the second laser angle is an unsigned integer zero-order exponential Golomb coded syntax element with the left bit being the first.

[0247]

[0203] Aspect 4B: The method according to any one of aspects 1B to 3B, wherein predicting the third laser angle comprises performing a linear prediction to determine the third laser angle based on the first laser angle, the second laser angle, and the laser angle difference for the third laser angle.

[0248]

[0204] Aspect 5B: The method according to any one of aspects 1B to 4B, wherein determining the position of a point in the point cloud based on the third laser angle comprises decrypting a vertical plane position syntax element based on the third laser angle and determining the position of the point based on the vertical plane position syntax element.

[0249]

[0205] Aspect 6B: A method according to any of Aspects 1B - 5B, further comprising decoding a laser information prediction indicator syntax element that specifies a method for deriving laser information from a laser angle difference syntax element for a third laser angle.

[0250]

[0206] Aspect 7B: A method according to any of Aspects 1B - 6B, further comprising determining the position of points in a point cloud based on a third laser angle.

[0251]

[0207] Aspect 8B: A method of encoding a point cloud, comprising determining a first laser angle, determining a second laser angle, determining the position of points in the point cloud using a laser having a third laser angle, and encoding a laser angle difference syntax element for the third laser angle, wherein the laser angle difference syntax element indicates a laser angle difference for the third laser angle, and the third laser angle is predictable based on the first laser angle, the second laser angle, and the laser angle difference for the third laser angle.

[0252]

[0208] Aspect 9B: The method according to Aspect 8B, wherein encoding the laser angle difference syntax element for the third laser angle comprises encoding the laser angle difference syntax element for the third laser angle as a signed integer zero - order exponential Golomb - coded syntax element with the left - most bit being the first bit.

[0253] Aspect 10B: A method further comprising encoding a laser angle difference syntax element for a second laser angle, wherein the laser angle difference syntax element for the second laser angle indicates a difference between the second laser angle and the first laser angle, and the left bit of the laser angle difference syntax element for the second laser angle is a first unsigned integer zero-th exponent Golomb coded syntax element, the method according to any of Aspects 8B-9B.

[0254]

[0210] Aspect 11B: The method according to any of Aspects 8B-10B, wherein the third laser angle is predictable based on a linear prediction of the first laser angle, the second laser angle, and the laser angle difference for the third laser angle.

[0255]

[0211] Aspect 12B: The method according to any of Aspects 8B-11B, further comprising encoding a laser information prediction indicator syntax element that specifies a method for deriving laser information from a laser angle difference syntax element for the third laser angle.

[0256]

[0212] Aspect 13B: A method of decoding a point cloud, comprising determining a value for a first laser indicating the number of probes in the azimuth direction for a complete rotation of the first laser, and decoding a syntax element for a second laser indicating a difference between the value for the first laser and a value for a second laser indicating the number of probes in the azimuth direction for a complete rotation of the second laser.

[0257]

[0213] Aspect 14B: The method according to Aspect 13B, further comprising determining one or more points in the point cloud based on the number of probes in the azimuth direction for a complete rotation of the second laser.

[0258]

[0214] Aspect 15B: The method according to Aspect 13B, further comprising the method according to any of Aspects 1B-7B.

[0259]

[0215] Aspect 16B: A method of encoding a point cloud, comprising determining a value for a first laser indicating the number of probes in the azimuth direction for a complete rotation of the first laser, and encoding a syntax element for a second laser indicating a difference between the value for the first laser and a value for a second laser indicating the number of probes in the azimuth direction for a complete rotation of the second laser.

[0260]

[0216] Aspect 17B: The method according to aspect 16B, further comprising encoding one or more points in the point cloud based on the number of probes in the azimuth direction for a complete rotation of the second laser.

[0261]

[0217] Aspect 18B: The method according to aspect 16B, further comprising the method according to any one of aspects 8 - 12.

[0262]

[0218] Aspect 19B: A method of coding a point cloud, comprising coding a syntax element, and coding the point cloud using an angle coding mode, where a value obtained by adding 2 to the syntax element specifies the number of lasers used in the angle coding mode.

[0263]

[0219] Aspect 20B: A device for decoding a point cloud, comprising one or more means for performing the method according to any one of aspects 1B - 7B, 13B - 15B, or 19B.

[0264]

[0220] Aspect 21B: A device for encoding a point cloud, comprising one or more means for performing the method according to any one of aspects 8B - 12B, or 16B - 19B.

[0265] Aspect 22B: The device according to any one of Aspects 20B or 21B, wherein one or more means comprise one or more processors implemented in a circuit.

[0266] Aspect 23B: The device according to any one of Aspects 20B to 22B, further comprising a memory for storing data representing a point cloud.

[0267] Aspect 24B: The device according to any one of Aspects 20B to 23B, comprising a decoder.

[0268] Aspect 25B: The device according to any one of Aspects 20B to 24B, comprising an encoder.

[0269] Aspect 26B: The device according to any one of Aspects 20B to 25B, further comprising a device for generating a point cloud.

[0270] Aspect 27B: The device according to any one of Aspects 20B to 26B, further comprising a display for presenting an image based on the point cloud.

[0271] Aspect 28B: A computer-readable storage medium storing instructions that, when executed, cause one or more processors to execute the method according to any one of Aspects 1B to 19B.

[0272] Aspect 1C: A device comprising a memory configured to store point cloud data and one or more processors coupled to the memory and implemented in a circuit, wherein the one or more processors are configured to obtain a first laser angle, obtain a second laser angle, obtain a laser angle difference for a third laser angle, determine a predicted value based on the first laser angle and the second laser angle, and determine the third laser angle based on the predicted value and the laser angle difference for the third laser angle.

[0273] Aspect 2C: The device according to Aspect 1C, wherein one or more processors are further configured to decode the vertical position of a point of the point cloud data based on a third laser angle.

[0274] Aspect 3C: The device according to Aspect 2C, wherein one or more processors are configured to decode the vertical position of a point based on a third laser angle and a laser correction value for a laser having the third laser angle.

[0275] Aspect 4C: The device according to any one of Aspects 1C to 3C, wherein one or more processors are configured to decode a syntax element specifying a laser angle difference for the third laser angle as a signed integer zero-th exponent Golomb-coded syntax element with the leftmost bit being the first bit as part of obtaining the laser angle difference for the third laser angle.

[0276] Aspect 5C: The device according to any one of Aspects 1C to 4C, wherein one or more processors are configured to decode a syntax element specifying a laser angle difference for the second laser angle, which includes a signed integer zero-th exponent Golomb-coded syntax element with the leftmost bit being the first bit, as part of obtaining the second laser angle.

[0277] Aspect 6C: The device according to any one of Aspects 1C to 5C, wherein one or more processors are configured to perform linear prediction to determine a predicted value based on a first laser angle and a second laser angle as part of determining the predicted value.

[0278] Aspect 7C: The method according to Aspect 6C, wherein one or more processors are configured to determine the predicted value as the sum of 2 * the first laser angle and -1 * the second laser angle as part of performing linear prediction to determine the predicted value.

[0279]

[0235] Aspect 8C: The device according to any one of Aspects 1C to 7C, wherein one or more processors are further configured to decode a syntax element indicating a vertical plane position based on a third laser angle.

[0280]

[0236] Aspect 9C: The device according to any one of Aspects 1C to 8C, wherein the first laser angle specifies the tangent of the elevation angle of the first laser with respect to the horizontal plane defined by the first axis and the second axis of the point cloud data, the second laser angle specifies the tangent of the elevation angle of the second laser with respect to the horizontal plane, and the third laser angle specifies the tangent of the elevation angle of the third laser with respect to the horizontal plane.

[0281]

[0237] Aspect 10C: The device according to Aspect 9C, wherein the first laser, the second laser, and the third laser are included in a laser package.

[0282]

[0238] Aspect 11C: The device according to any one of Aspects 1C to 9C, further comprising a display for presenting an image based on the point cloud data.

[0283]

[0239] Aspect 12C: A device comprising a memory configured to store point cloud data and one or more processors implemented in a circuit and coupled to the memory, wherein the one or more processors are configured to obtain a first laser angle, obtain a second laser angle, determine a predicted value based on the first laser angle and the second laser angle, and encode a laser angle difference for the third laser angle, wherein the laser angle difference is equal to the difference between the third laser angle and the predicted value.

[0284]

[0240] Aspect 13C: The device according to Aspect 12C, wherein one or more processors are configured to encode a vertical position of a point of the point cloud data based on a laser having a third laser angle.

[0285]

[0241] Aspect 14C: The device according to Aspect 13C, wherein one or more processors are configured to encode a vertical position of a point based on a third laser angle and a laser correction value for a laser having the third laser angle.

[0286]

[0242] Aspect 15C: The device according to any one of Aspects 12C - 14C, wherein one or more processors are configured to encode a syntax element that specifies a laser angle difference for a third laser angle as a signed integer zero - order exponential Golomb - coded syntax element whose left - most bit is the first.

[0287]

[0243] Aspect 16C: The device according to any one of Aspects 12C - 15C, wherein one or more processors are further configured to encode a syntax element that specifies a laser angle difference for a second laser angle, where the laser angle difference for the second laser angle indicates a difference between the second laser angle and the first laser angle, and the syntax element that specifies the laser angle difference for the second laser angle is encoded as a signed integer zero - order exponential Golomb - coded syntax element whose left - most bit is the first.

[0288]

[0244] Aspect 17C: The device according to any one of Aspects 12C - 16C, wherein one or more processors are configured to perform a linear prediction to determine a predicted value based on a first laser angle and a second laser angle as part of determining the predicted value.

[0289]

[0245] Aspect 18C: The device according to Aspect 17C, wherein one or more processors are configured to determine the predicted value as the sum of 2 * the first laser angle and - 1 * the second laser angle as part of performing a linear prediction to determine the predicted value.

[0290] Aspect 19C: The device according to any of Aspects 12C to 18C, wherein the first laser angle specifies the tangent of the elevation angle of the first laser with respect to the horizontal plane defined by the first axis and the second axis of the point cloud data, the second laser angle specifies the tangent of the elevation angle of the second laser with respect to the horizontal plane, and the third laser angle specifies the tangent of the elevation angle of the third laser with respect to the horizontal plane.

[0291] Aspect 20C: The device according to Aspect 19C, further comprising a laser package including a first laser, a second laser, and a third laser.

[0292] Aspect 21C: The device according to any of Aspects 12C to 20C, further comprising a sensor for generating point cloud data.

[0293] Aspect 22C: A method comprising obtaining a first laser angle, obtaining a second laser angle, obtaining a laser angle difference for a third laser angle, determining a predicted value based on the first laser angle and the second laser angle, and determining the third laser angle based on the predicted value and the laser angle difference for the third laser angle.

[0294] Aspect 23C: The method according to Aspect 22C, further comprising decoding the vertical position of a point in the point cloud data based on the third laser angle.

[0295] Aspect 24C: The method according to Aspect 22C, wherein decoding the vertical position of a point in the point cloud data comprises decoding the vertical position of the point based on the third laser angle and a laser correction value for the laser having the third laser angle.

[0296] Aspect 25C: Obtaining the laser angle difference for the third laser angle comprises decoding a syntax element that specifies the laser angle difference for the third laser angle as a signed integer zero-th exponent Golomb coded syntax element with the left bit being the first, according to the method described in any of Aspects 22C - 24C.

[0297] Aspect 26C: Obtaining a predicted value comprises performing linear prediction to determine the predicted value based on the first laser angle and the second laser angle, according to the method described in any of Aspects 22C - 25C.

[0298] Aspect 27C: Further comprises decoding a syntax element indicating the vertical plane position based on the third laser angle, according to the method described in any of Aspects 22C - 26C.

[0299] Aspect 28C: The first laser angle specifies the tangent of the elevation angle of the first laser with respect to the horizontal plane defined by the first and second axes of the point cloud data, the second laser angle specifies the tangent of the elevation angle of the second laser with respect to the horizontal plane, and the third laser angle specifies the tangent of the elevation angle of the third laser with respect to the horizontal plane, according to the method described in any of Aspects 22C - 27C.

[0300] Aspect 29C: A method comprising obtaining the first laser angle, obtaining the second laser angle, determining a predicted value based on the first laser angle and the second laser angle, and encoding the laser angle difference for the third laser angle, wherein the laser angle difference is equal to the difference between the third laser angle and the predicted value.

[0301] Aspect 30C: Further comprises encoding the vertical position of a point in the point cloud data based on a laser having the third laser angle, according to the method described in Aspect 29C.

[0302] Aspect 31C: The method according to any one of Aspects 29C to 30C, wherein determining the predicted value comprises determining the predicted value by performing a linear prediction based on a first laser angle and a second laser angle.

[0303] Aspect 32C: A device comprising means for obtaining a first laser angle, means for obtaining a second laser angle, means for obtaining a laser angle difference for a third laser angle, means for determining a predicted value based on the first laser angle and the second laser angle, and means for determining the third laser angle based on the predicted value and the laser angle difference for the third laser angle.

[0304] Aspect 33C: A device comprising means for obtaining a first laser angle, means for obtaining a second laser angle, means for determining a predicted value based on the first laser angle and the second laser angle, and means for encoding a laser angle difference for a third laser angle, wherein the laser angle difference is equal to the difference between the third laser angle and the predicted value.

[0305] Aspect 34C: A computer-readable storage medium storing instructions that, when executed, cause one or more processors to obtain a first laser angle, obtain a second laser angle, obtain a laser angle difference syntax element for a third laser angle, wherein the laser angle difference syntax element indicates the laser angle difference for the third laser angle, determine a predicted value based on the first laser angle and the second laser angle, and determine the third laser angle based on the predicted value and the laser angle difference for the third laser angle.

[0306] Aspect 35C: A computer-readable storage medium storing instructions that, when executed, cause one or more processors to obtain a first laser angle, obtain a second laser angle, determine a predicted value based on the first laser angle and the second laser angle, and encode a laser angle difference for a third laser angle, where the laser angle difference is equal to a difference between the third laser angle and the predicted value.

[0307] According to an example, it should be recognized that some of the operations or events of any of the techniques described herein can be executed in a different order, added, integrated, or completely excluded (e.g., not all of the described operations or events are necessary for the implementation of the technique). Further, in some examples, the operations or events can be executed simultaneously, rather than sequentially, for example, through multi-threaded processing, interrupt processing, or multiple processors.

[0308]

[0264] In one or more examples, the described functionality may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functionality 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. The computer-readable medium may include a computer-readable storage medium corresponding to a tangible medium such as a data storage medium, or a communication medium including any medium that facilitates transfer of a computer program from one place to another, for example, according to a communication protocol. In this way, the computer-readable medium generally may correspond to (1) a tangible computer-readable storage medium that is non-transitory, or (2) a communication medium such as a signal or carrier wave. The data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.

[0309] By way of example and not limitation, such a computer-readable storage medium can comprise RAM, ROM, EEPROM (registered trademark), 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 the desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection can appropriately be called a computer-readable medium. For example, if the instructions are transmitted using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, from a website, server, or other remote source, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of the medium. However, it should be understood that the computer-readable storage medium and data storage medium are directed to non-transitory, tangible storage media instead of including connections, carrier waves, signals, or other transitory media. As used herein, disk and disc include compact disc (CD), laser disc (registered trademark), optical disc, digital versatile disc (DVD), floppy (registered trademark) disk, and Blu-ray (registered trademark) disc, where disk typically magnetically reproduces data and disc optically reproduces data with a laser. Combinations of the above should also be included within the scope of computer-readable media.

[0310]

[0266] The commands can be executed by one or more processors such as one or more digital signal processors (DSPs), general-purpose microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated logic circuits or discrete logic circuits. Thus, the terms “processor” and “processing circuit” as used herein can refer to either the foregoing structures, or any other structure suitable for implementation of the techniques described herein. Further, in some aspects, the functions described herein can be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a composite codec. Also, the techniques can be implemented adequately with one or more circuits or logic elements.

[0311]

[0267] The techniques of the present disclosure can be implemented in a variety of devices or apparatuses including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chip sets). Although various components, modules, or units are described in the present disclosure to emphasize functional aspects of devices configured to execute the disclosed techniques, they do not necessarily require implementation by different hardware units. Rather, as described above, the various units can be combined in a codec hardware unit including one or more of the processors described above, along with appropriate software and / or firmware, or provided by a set of interoperable hardware units.

[0312]

[0268] Various examples have been described. These and other examples fall within the scope of the following claims. The invention described in the claims of the present application at the time of filing is appended below. [C1] A device comprising a memory configured to store point cloud data, and one or more processors implemented in a circuit and coupled to the memory, wherein the one or more processors are configured to: obtain a first laser angle; obtain a second laser angle; obtain a laser angle difference for a third laser angle; determine a predicted value based on the first laser angle and the second laser angle; and determine the third laser angle based on the predicted value and the laser angle difference for the third laser angle. A device configured to perform the above operations. [C2] The device according to C1, wherein the one or more processors are further configured to decode a vertical position of a point of the point cloud data based on the third laser angle. [C3] The device according to C2, wherein the one or more processors are configured to decode the vertical position of the point based on the third laser angle and a laser correction value for a laser having the third laser angle. [C4] The device according to C1, wherein, as part of obtaining the laser angle difference for the third laser angle, the one or more processors are configured to decode a syntax element specifying the laser angle difference for the third laser angle as a signed integer 0-th exponent Golomb coded syntax element with the leftmost bit being the first bit. [C5] The device according to C1, wherein, as part of obtaining the second laser angle, the one or more processors are configured to decode a syntax element specifying a laser angle difference for the second laser angle, the syntax element including a signed integer 0-th exponent Golomb coded syntax element with the leftmost bit being the first bit. [C6] The device according to C1, wherein, as part of determining the predicted value, the one or more processors are configured to perform linear prediction to determine the predicted value based on the first laser angle and the second laser angle. ​ ​ [C7] The device according to C6, wherein as part of executing the linear prediction to determine the predicted value, the one or more processors are configured to determine the predicted value as the sum of 2 * the first laser angle and -1 * the second laser angle. [C8] The device according to C1, wherein the one or more processors are further configured to decode a syntactic element indicating a vertical plane position based on the third laser angle. [C9] The first laser angle specifies the tangent of the elevation angle of the first laser with respect to the horizontal plane defined by the first and second axes of the point cloud data, the second laser angle specifies the tangent of the elevation angle of the second laser with respect to the horizontal plane, and the third laser angle specifies the tangent of the elevation angle of the third laser with respect to the horizontal plane. The device according to C1. [C10] The device according to C9, wherein the first laser, the second laser, and the third laser are included in a laser package. [C11] The device according to C1, further comprising a display for presenting an image based on the point cloud data. [C12] A memory configured to store point cloud data, and one or more processors implemented in a circuit and coupled to the memory comprising a device, wherein the one or more processors are configured to obtain a first laser angle, obtain a second laser angle, determine a predicted value based on the first laser angle and the second laser angle, encode a laser angle difference for the third laser angle, where the laser angle difference is equal to the difference between the third laser angle and the predicted value, and is configured to perform. [C13] The device according to C12, wherein the one or more processors are configured to encode the vertical position of a point in the point cloud data based on a laser having the third laser angle. [C14] The device according to C13, wherein the one or more processors are configured to encode the vertical position of the point based on the third laser angle and a laser correction value for the laser having the third laser angle. [C15] The one or more processors are configured to encode the syntax element that specifies the laser angle difference for the third laser angle as a signed integer zero-th exponent Golomb-coded syntax element with the leftmost bit being the first, as described in C12. [C16] The one or more processors are further configured to encode a syntax element that specifies a laser angle difference for the second laser angle, where the laser angle difference for the second laser angle represents the difference between the second laser angle and the first laser angle, and the syntax element that specifies the laser angle difference for the second laser angle is encoded as a signed integer zero-th exponent Golomb-coded syntax element with the leftmost bit being the first, as described in C12. [C17] The one or more processors are configured to perform a linear prediction to determine the predicted value based on the first laser angle and the second laser angle as part of determining the predicted value, as described in C12. [C18] The one or more processors are configured to determine the predicted value as the sum of 2 * the first laser angle and -1 * the second laser angle as part of performing the linear prediction to determine the predicted value, as described in C17. [C19] The first laser angle specifies the tangent of the elevation angle of the first laser with respect to the horizontal plane defined by the first and second axes of the point cloud data, the second laser angle specifies the tangent of the elevation angle of the second laser with respect to the horizontal plane, and the third laser angle specifies the tangent of the elevation angle of the third laser with respect to the horizontal plane, as described in C12. [C20] The device described in C19 further comprises a laser package comprising the first laser, the second laser, and the third laser. [C21] The device described in C12 further comprises a sensor for generating the point cloud data. [C22] Obtaining a first laser angle, obtaining a second laser angle, obtaining a laser angle difference for the third laser angle, Determining a predicted value based on the first laser angle and the second laser angle; Determining the third laser angle based on the predicted value and the laser angle difference for the third laser angle; A method comprising the steps. [C23] The method according to C22, further comprising decoding the vertical position of a point of the point cloud data based on the third laser angle. [C24] Decoding the vertical position of the point of the point cloud data comprises decoding the vertical position of the point based on the third laser angle and a laser correction value for a laser having the third laser angle, according to the method of C22. [C25] Obtaining the laser angle difference for the third laser angle comprises decoding a syntax element specifying the laser angle difference for the third laser angle as a signed integer zero-th exponent Golomb-coded syntax element with the leftmost bit being the first bit, according to the method of C22. [C26] Obtaining the predicted value comprises performing a linear prediction to determine the predicted value based on the first laser angle and the second laser angle, according to the method of C22. [C27] The method according to C22, further comprising decoding a syntax element indicating a vertical plane position based on the third laser angle. [C28] The first laser angle specifies the tangent of the elevation angle of the first laser with respect to a horizontal plane defined by a first axis and a second axis of the point cloud data; The second laser angle specifies the tangent of the elevation angle of the second laser with respect to the horizontal plane; The third laser angle specifies the tangent of the elevation angle of the third laser with respect to the horizontal plane, The method according to C22. [C29] Obtaining a first laser angle; Obtaining a second laser angle; Determining a predicted value based on the first laser angle and the second laser angle; Encoding a laser angle difference for a third laser angle, where the laser angle difference is equal to the difference between the third laser angle and the predicted value; A method comprising the steps. [C30] The method according to C29, further comprising encoding the vertical position of a point of the point cloud data based on a laser having the third laser angle. [C31] The method according to C29, wherein determining the predicted value comprises determining the predicted value by performing a linear prediction based on the first laser angle and the second laser angle. [C32] means for obtaining a first laser angle; means for obtaining a second laser angle; means for obtaining a laser angle difference for a third laser angle; means for determining a predicted value based on the first laser angle and the second laser angle; means for determining the third laser angle based on the predicted value and the laser angle difference for the third laser angle A device comprising. [C33] means for obtaining a first laser angle; means for obtaining a second laser angle; means for determining a predicted value based on the first laser angle and the second laser angle; means for encoding a laser angle difference for a third laser angle, wherein the laser angle difference is equal to the difference between the third laser angle and the predicted value, a device comprising. [C34] When executed, on one or more processors, obtaining a first laser angle; obtaining a second laser angle; obtaining a laser angle difference syntax element for a third laser angle, wherein the laser angle difference syntax element indicates a laser angle difference for the third laser angle; determining a predicted value based on the first laser angle and the second laser angle; determining the third laser angle based on the predicted value and the laser angle difference for the third laser angle A computer-readable storage medium storing instructions to cause. [C35] When executed, on one or more processors, obtaining a first laser angle; obtaining a second laser angle; determining a predicted value based on the first laser angle and the second laser angle; encoding a laser angle difference for a third laser angle, wherein the laser angle difference is equal to the difference between the third laser angle and the predicted value; A computer-readable storage medium storing instructions to cause.

Claims

1. A memory configured to store point cloud data, and one or more processors coupled to the memory and implemented in a circuit, wherein the one or more processors are configured to: obtain a first laser angle, where the first laser angle specifies the tangent of the elevation angle of a first laser with respect to a horizontal plane defined by a first axis and a second axis of the point cloud data; obtain a second laser angle, where the second laser angle specifies the tangent of the elevation angle of a second laser with respect to the horizontal plane; obtain a laser angle difference for a third laser angle, where the third laser angle specifies the tangent of the elevation angle of a third laser with respect to the horizontal plane; determine a predicted value based on the first laser angle and the second laser angle; determine the third laser angle based on the predicted value and the laser angle difference for the third laser angle; decode the vertical position of a point of the point cloud data based on the third laser angle; A device configured to perform the above operations.

2. The device according to claim 1, wherein the one or more processors are configured to decode the vertical position of the point based on the third laser angle and a laser correction value for a laser having the third laser angle.

3. The device according to claim 1, wherein, as part of obtaining the laser angle difference for the third laser angle, the one or more processors are configured to decode a syntax element specifying the laser angle difference for the third laser angle as a signed integer zero-th exponent Golomb-coded syntax element with the leftmost bit being the first bit.

4. The device according to claim 1, wherein, as part of obtaining the second laser angle, the one or more processors are configured to decode a syntax element specifying a laser angle difference for the second laser angle, the syntax element including a signed integer zero-th exponent Golomb-coded syntax element with the leftmost bit being the first bit.

5. The device according to claim 1, wherein the one or more processors are configured to perform a linear prediction to determine the predicted value based on the first laser angle and the second laser angle as part of determining the predicted value.

6. The device according to claim 5, wherein the one or more processors are configured to determine the predicted value as the sum of 2 * the first laser angle and -1 * the second laser angle as part of performing the linear prediction to determine the predicted value.

7. The device according to claim 1, wherein the one or more processors are further configured to decode a syntactic element indicating a vertical plane position based on the third laser angle.

8. The device according to claim 1, further comprising a display for presenting an image based on the point cloud data.

9. A device comprising: a memory configured to store point cloud data; and one or more processors implemented in a circuit and coupled to the memory, wherein the one or more processors are configured to: obtain a first laser angle, where the first laser angle specifies the tangent of the elevation angle of the first laser with respect to a horizontal plane defined by a first axis and a second axis of the point cloud data; obtain a second laser angle, where the second laser angle specifies the tangent of the elevation angle of the second laser with respect to the horizontal plane; determine a predicted value based on the first laser angle and the second laser angle; encode a laser angle difference for a third laser angle, where the laser angle difference is equal to the difference between the third laser angle and the predicted value, and the third laser angle specifies the tangent of the elevation angle of the third laser with respect to the horizontal plane; encode a vertical position of a point of the point cloud data based on a laser having the third laser angle; The device is configured to perform.

10. The device according to claim 9, wherein the one or more processors are configured to encode the vertical position of the point based on the third laser angle and a laser correction value for the laser having the third laser angle.

11. The device according to claim 9, further comprising a laser package comprising the first laser, the second laser, and the third laser.

12. The device according to claim 9, further comprising a sensor for generating the point cloud data.

13. Obtaining a first laser angle, wherein the first laser angle specifies the tangent of the elevation angle of the first laser with respect to a horizontal plane defined by a first axis and a second axis of point cloud data, Obtaining a second laser angle, wherein the second laser angle specifies the tangent of the elevation angle of the second laser with respect to the horizontal plane, Obtaining a laser angle difference for a third laser angle, wherein the third laser angle specifies the tangent of the elevation angle of the third laser with respect to the horizontal plane, Determining a predicted value based on the first laser angle and the second laser angle, Determining the third laser angle based on the predicted value and the laser angle difference for the third laser angle, Decoding the vertical position of a point of the point cloud data based on the third laser angle A method comprising.

14. Obtaining a first laser angle, wherein the first laser angle specifies the tangent of the elevation angle of the first laser with respect to a horizontal plane defined by a first axis and a second axis of point cloud data, Obtaining a second laser angle, wherein the second laser angle specifies the tangent of the elevation angle of the second laser with respect to the horizontal plane, Determining a predicted value based on the first laser angle and the second laser angle, Encoding a laser angle difference for a third laser angle, wherein the laser angle difference is equal to the difference between the third laser angle and the predicted value, and the third laser angle specifies the tangent of the elevation angle of the third laser with respect to the horizontal plane, Encoding the vertical position of a point of the point cloud data based on a laser having the third laser angle A method comprising.

15. A computer-readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to perform the method according to claim 13 or 14.

Citation Information

Patent Citations

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

    WO2021095879A1