Geometric point cloud compression using vertical prediction

By using predictive geometric decoding technology and vertical predictors in point cloud encoding and decoding, the problem of low decoding efficiency in the existing technology is solved, and more efficient point cloud data decoding is achieved.

CN119487550APending Publication Date: 2025-02-18QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380053383.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-07-18
Filing Date
2023-07-19
Publication Date
2025-02-18

AI Technical Summary

Technical Problem

The prior art has low decoding efficiency in point cloud encoding and decoding, especially in rotating LIDAR systems, where the distances of adjacent capture points of the same object are similar but not fully utilized, resulting in lower decoding efficiency.

Method used

Using predictive geometric decoding technology, combined with a vertical predictor, point cloud data is decoded by determining the pivot laser ID and vertical predictor, and vertical predictors are used to decode vertical predictors and predictive geometric decoding.

Benefits of technology

Improve the decoding efficiency of point cloud data, by using points from different laser IDs as vertical predictors, the number of points that can be used to perform predicted geometric decoding is increased, and the proximity of coordinate values ​​is improved, thereby improving the overall translation. Code performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119487550A_ABST
    Figure CN119487550A_ABST
Patent Text Reader

Abstract

The point cloud encoder and decoder are configured to code point cloud data using predictive geometry coding and a vertical predictor. The vertical predictor is a previously coded point in the point cloud having a different laser ID than the current coded point. The point cloud encoder and decoder may be configured to determine a pivot laser ID, determine a vertical predictor for a current point of the point cloud data, where the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and code the current point using the vertical predictor and predictive geometry decoding.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application claims priority to U.S. Patent Application No. 18 / 354,443, filed on July 18, 2023, and U.S. Provisional Patent Application No. 63 / 368,971, filed on July 20, 2022, the entire contents of which are incorporated herein by reference. U.S. Patent Application No. 18 / 354,443, filed on July 18, 2023, claims the benefit of U.S. Provisional Application No. 63 / 368,971, filed on July 20, 2022. Technical Field

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

[0003] A point cloud is a collection of points in a three-dimensional space. The points may correspond to points on an object within the three-dimensional space. Therefore, a point cloud may be used to represent the physical contents of a three-dimensional space. Point clouds may have utility in a wide variety of situations. For example, a point cloud may be used in the context of an autonomous vehicle to represent the localization of objects on a road. In another example, a point cloud may be used in the context of representing the physical contents of an environment for the purpose of localizing virtual objects in augmented reality (AR) or mixed reality (MR) applications. Point cloud compression is a process used to encode and decode point clouds. Encoding a point cloud may reduce the amount of data required to store and transmit the point cloud. Summary of the invention

[0004] In general, the present disclosure describes techniques for predictive geometry coding in geometry-based point cloud compression. Specifically, a point cloud encoder and decoder are configured to decode point cloud data using predictive geometry coding and a vertical predictor. A vertical predictor is a previously decoded point in the point cloud that has a different laser ID than the current decoded point.

[0005] Using such a vertical predictor with a different laser ID than the point being decoded can increase the number of points that can be used to perform predictive geometry decoding. In particular, points from different laser IDs can sometimes have coordinate values ​​that are closer to the coordinate values ​​of the current point than other encoded points with the same laser ID. Therefore, predictive geometry decoding techniques using the vertical predictor of the present disclosure can improve decoding efficiency. In general, the point cloud encoder and decoder can be configured to determine a pivot laser ID, determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and decode the current point using the vertical predictor and predictive geometry decoding.

[0006] In one example, the present disclosure describes an apparatus configured to decode point cloud data, the apparatus comprising a memory and one or more processors coupled to the memory. The one or more processors are configured to cause the apparatus to determine a pivot laser ID, determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and decode the current point using the vertical predictor and the predicted geometry decoding.

[0007] In another example, the present disclosure describes an apparatus configured to encode point cloud data, the apparatus comprising a memory and one or more processors coupled to the memory. The one or more processors are configured to cause the apparatus to determine a pivot laser ID, determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and encode the current point using the vertical predictor and a predicted geometry encoding.

[0008] In another example, the present disclosure describes a method for decoding point cloud data, the method comprising determining a pivot laser ID, determining a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and decoding the current point using the vertical predictor and predicted geometry decoding.

[0009] In another example, the present disclosure describes a method for encoding point cloud data, the method comprising determining a pivot laser ID, determining a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and encoding the current point using the vertical predictor and a predicted geometry encoding.

[0010] In another example, the present disclosure describes a non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors to be configured to decode point cloud data to determine a pivot laser ID, determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and decode the current point using the vertical predictor and the predicted geometry decoding.

[0011] In another example, the present disclosure describes a non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors to be configured to encode point cloud data to determine a pivot laser ID, determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and encode the current point using the vertical predictor and a predicted geometry encoding.

[0012] In another example, the present disclosure describes an apparatus configured to decode point cloud data, the apparatus comprising: a component for determining a pivot laser ID, a component for determining a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and a component for decoding the current point using the vertical predictor and predicted geometry decoding.

[0013] In another example, the present disclosure describes an apparatus configured to encode point cloud data, the apparatus comprising: a component for determining a pivot laser ID, a component for determining a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and a component for encoding the current point using the vertical predictor and a predicted geometry encoding.

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

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

[0016] Figure 2 is a block diagram illustrating an example Geometric Point Cloud Compression (G-PCC) encoder.

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

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

[0019] Figure 5 A more detailed map shows Figure 2 Block diagram of an example geometry encoding unit.

[0020] Figure 6 A more detailed map shows Figure 2 Block diagram of an example attribute encoding unit.

[0021] Figure 7 A more detailed map shows Figure 3 Block diagram of an example geometry decoding unit.

[0022] Figure 8 A more detailed map shows Figure 3 Block diagram of an example attribute decoding unit.

[0023] Fig. 9 is a conceptual diagram illustrating an example of a prediction tree.

[0024] Fig. 10A and 10B is a conceptual diagram illustrating an example of a rotating light detection and ranging (LIDAR) acquisition model.

[0025] Fig.11 is a conceptual diagram illustrating an example of inter-frame prediction of a current point from a point in a reference frame.

[0026] Fig.12 is a flow chart illustrating the operation of a G-PCC decoder.

[0027] Fig.13 is a conceptual diagram illustrating an example of an additional inter prediction point obtained from a first point having an azimuth angle greater than an inter prediction point.

[0028] Fig.14 is a flow chart illustrating an example motion compensation technique.

[0029] Fig.15 is a conceptual diagram illustrating an example of derivation of a vertical predictor.

[0030] Fig.16 is a conceptual diagram illustrating another example of derivation of a vertical predictor.

[0031] Fig.17 is a conceptual diagram illustrating another example of derivation of a vertical predictor.

[0032] Fig.18 is a conceptual diagram illustrating another example of derivation of a vertical predictor.

[0033] Fig.19 is a flow chart illustrating one example encoding technique of the present disclosure.

[0034] Fig. 20 is a flow chart illustrating one example decoding technique of the present disclosure.

[0035] Fig.21 is a flow chart illustrating another example encoding technique of the present disclosure.

[0036] Fig. 22 is a flow chart illustrating another example decoding technique of the present disclosure.

[0037] Fig.23 is a conceptual diagram illustrating an example ranging system that may be used with one or more techniques of this disclosure.

[0038] Fig.24 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of this disclosure may be employed.

[0039] Fig.25 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of this disclosure may be used.

[0040] Fig.26 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of this disclosure may be employed. DETAILED DESCRIPTION

[0041] In intra prediction for predictive geometry coding, one or more points being decoded are placed in a predictor list. For example, a G-PCC encoder and a G-PCC decoder may place one or more points in a predictor list. A prediction of the radius and azimuth values ​​(and in some cases the laser ID) of the spherical coordinates of the points is performed. Typically, the predictor points in the list are the points with the same laser ID as the currently decoded point, based on the order in which the points were decoded.

[0042] For a rotating LIDAR system with more than one laser, adjacent lasers may capture points belonging to the same object. For conventional objects, the distances of adjacent captured points of the same object may be similar. This correlation is currently not used in the prediction mechanism in predictive geometry decoding, resulting in lower decoding efficiency. The technology of the present disclosure solves this problem.

[0043] Specifically, the point cloud encoder and decoder are configured to decode the point cloud data using predictive geometry decoding and a vertical predictor based on previously decoded points in the point cloud having different laser IDs than the current decoded point.

[0044] Using such a vertical predictor with a different laser ID than the point being decoded can increase the number of points that can be used to perform predictive geometry decoding. In particular, points from different laser IDs can sometimes have coordinate values ​​that are closer to the coordinate values ​​of the current point than other decoded points with the same laser ID. Therefore, predictive geometry decoding techniques using the vertical predictor of the present disclosure can improve decoding efficiency. In general, the point cloud encoder and decoder can be configured to determine a pivot laser ID, determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and decode the current point using the vertical predictor and predictive geometry decoding.

[0045] Figure 1 1 is a block diagram illustrating an example encoding and decoding system 100 that can perform the techniques of the present disclosure. The techniques of the present disclosure generally relate to decoding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. Generally, point cloud data includes any data used to process point clouds. Decoding can effectively compress and / or decompress point cloud data.

[0046] like Figure 1 As shown, system 100 includes source device 102 and destination device 116. Source device 102 provides encoded point cloud data to be decoded by destination device 116. Figure 1 In an example of , source device 102 provides point cloud data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 may include any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smart phones, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, ground or sea vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, or the like. In some cases, source device 102 and destination device 116 may be equipped for wireless communication.

[0047] exist Figure 1 In the example of , 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. According to the present disclosure, the G-PCC encoder 200 of the source device 102 and the G-PCC decoder 300 of the destination device 116 can be configured to apply the techniques related to vertical prediction in G-PCC of the present disclosure. Therefore, the source device 102 represents an example of an encoding device, and 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 arrangements. For example, the source device 102 may receive data (e.g., point cloud data) from an internal or external source. Similarly, the destination device 116 may interface with an external data consumer instead of including the data consumer in the same device.

[0048] As will be described in more detail below, the G-PCC encoder 200 and the G-PCC decoder 300 can be configured to decode the point cloud data using the techniques of the present disclosure, including decoding the point cloud data using predictive geometry decoding and a vertical predictor. In one example of the present disclosure, the G-PCC encoder 200 and the G-PCC decoder 300 can be configured to determine a pivot laser ID, determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and decode the current point using the vertical predictor and predictive geometry decoding.

[0049] like Figure 1The system 100 shown is only an example. In general, other digital encoding and / or decoding devices can perform the technology of the present disclosure related to vertical prediction in G-PCC. The source device 102 and the destination device 116 are only examples of such devices in which the source device 102 generates decoded data for transmission to the destination device 116. The present disclosure refers to a "decoding" device as a device that performs decoding (encoding and / or decoding) of data. Therefore, the G-PCC encoder 200 and the G-PCC decoder 300 represent examples of decoding devices, in particular encoders and decoders, respectively. In some examples, the source device 102 and the destination device 116 can operate in a substantially symmetrical manner, so that each of the source device 102 and the destination device 116 includes encoding and decoding components. Therefore, the system 100 can support unidirectional or bidirectional transmission between the source device 102 and the destination device 116, such as for streaming, playback, broadcasting, telephone, navigation and other applications.

[0050] Typically, the data source 104 represents a data source (i.e., raw, unencoded point cloud data), and a series of continuous "frames" of data can be provided to the G-PCC encoder 200, and the G-PCC encoder 200 encodes the data of the frame. The data source 104 of the source device 102 may include a point cloud capture device, such as any of a variety of cameras or sensors, such as a 3D scanner or a light detection and ranging (LIDAR) device, one or more cameras, an archive containing previously captured data, and / or a data feed interface for receiving data from a data content provider. Alternatively or additionally, the point cloud data may be generated by a scanner, camera, sensor, or other data computer. For example, the data source 104 may generate computer graphics-based data as source data, or generate a combination of real-time data, archived data, and computer-generated data. In each case, the G-PCC encoder 200 encodes captured, pre-captured, or computer-generated data. The G-PCC encoder 200 may rearrange the frames from the order in which they are received (sometimes referred to as "display order") into a decoding order for decoding. The G-PCC encoder 200 may generate one or more bit streams including encoded data. Source device 102 may then output the encoded data onto computer-readable medium 110 via output interface 108 for receipt and / or retrieval by, for example, input interface 122 of destination device 116 .

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

[0052] The computer-readable medium 110 may represent any type of medium or device capable of transmitting the encoded data from the source device 102 to the destination device 116. In one example, the computer-readable medium 110 represents a communication medium that enables the source device 102 to directly transmit the encoded data to the destination device 116 in real time, for example, via a radio frequency network or a computer-based network. According to a communication standard (such as a wireless communication protocol), the output interface 108 can modulate a transmission signal containing the encoded data, and the input interface 122 can demodulate the received transmission signal. The communication medium may include any wireless or wired communication medium, such as a 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 a router, a switch, a base station, or any other device that can be used to facilitate communication from the source device 102 to the destination device 116.

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

[0054] In some examples, source device 102 may output the encoded data to file server 114 or another intermediate storage device that may store the encoded data generated by source device 102. Destination device 116 may access the stored data from file server 114 via streaming or downloading. File server 114 may be any type of server device capable of storing encoded data and sending the encoded data to destination device 116. File server 114 may represent a network 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 via any standard data connection (including an Internet connection). This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of both that is 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.

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

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

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

[0058] 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 technology is partially implemented in software, the device may store instructions for the software in a suitable non-transitory computer-readable medium, and use one or more processors to execute the instructions in hardware to perform the technology of the present disclosure. Each of the G-PCC encoder 200 and the G-PCC decoder 300 may be included in one or more encoders or decoders, and any of the encoders or decoders may be integrated as part of a combined encoder / decoder (CODEC) in the corresponding device. The device including the G-PCC encoder 200 and / or the G-PCC decoder 300 may include one or more integrated circuits, microprocessors, and / or other types of devices.

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

[0060] 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 ​​of syntax elements and / or other data used to decode encoded data. That is, the G-PCC encoder 200 may signal the values ​​of syntax elements in a bitstream. In general, signaling refers to producing values ​​in a bitstream. As mentioned above, the source device 102 may transmit the bitstream to the destination device 116 substantially in real time or in non-real time, such as may occur when storing syntax elements to the storage device 112 for later retrieval by the destination device 116.

[0061] ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) and more recently ISO / IEC MPEG 3DG (JTC 1 / SC29 / WG 7) are investigating the standardization of point cloud coding techniques with compression capabilities significantly exceeding those of current methods. MPEG is working on this exploration activity in a collaborative effort known as the 3D Graphics Group (3DG) to evaluate compression technology designs proposed by their experts in the field.

[0062] Point cloud compression activities are categorized in two different approaches. The first approach is “Video Point Cloud Compression” (V-PCC), which segments 3D objects and projects the segments in multiple 2D planes (which are represented as “patches” in 2D frames), which are further decoded by a conventional 2D video decoder such as High Efficiency Video Coding (HEVC) (ITU-T H.265) decoder. The second approach 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 the compression of point clouds in category 1 (static point clouds) and category 3 (dynamically acquired point clouds). The most recent G-PCC draft standard is available in ISO / IEC FDIS 23090-9 Geometry-based Point Cloud Compression, ISO / IEC JTC 1 / SC29 / WG 7 m55637, Teleconference, October 2020, and a description of the decoder is available in G-PCC CodecDescription, ISO / IEC JTC 1 / SC29 / WG 7 MDS20983, Teleconference, October 2021.

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

[0064] The 3D space occupied by the point cloud data can be surrounded by a virtual bounding box. The position of the points in the bounding box can be represented by a specific precision; therefore, the position of one or more points can be quantified based on the precision. At the smallest level, the bounding box is divided into voxels, which are the smallest spatial units represented by unit cubes. The voxels in the bounding box can be associated with zero, one, or more than one point. The bounding box can be divided into multiple cube / cuboid areas, which can be referred to as tiles. Each tile can be decoded into one or more slices. The division of the bounding box into slices and tiles can be based on the number of points in each partition, or based on other considerations (for example, a particular area can be decoded as a tile). The slice area can be further divided using a split decision similar to the split decision in the video decoder.

[0065] Figure 2 An overview of the G-PCC encoder 200 is provided. Figure 3 An overview of the G-PCC decoder 300 is provided. The modules shown are logical and do not necessarily correspond one-to-one to the decoding implemented. Figure 2 In the example of , the G-PCC encoder 200 may include a geometry encoding unit 250 and an attribute encoding unit 260. In general, the geometry encoding unit 250 is configured to encode the location of points in the point cloud frame to produce a geometry bitstream 203. The attribute encoding unit 260 is configured to encode the attributes of the points of the point cloud frame to produce an attribute bitstream 205. As will be explained below, the attribute encoding unit 260 can also use the location and the encoded geometry (e.g., reconstruction) from the geometry encoding unit 250 to encode the attributes.

[0066] exist Figure 3 In the example of , the G-PCC decoder 300 may include a geometry decoding unit 350 and an attribute decoding unit 360. In general, the geometry encoding unit 350 is configured to decode the geometry bitstream 203 to recover the location of the points in the point cloud frame. The attribute decoding unit 360 is configured to decode the attribute bitstream 205 to recover the attributes of the points of the point cloud frame. As will be explained below, the attribute decoding unit 360 can also use the location of the decoded geometry (e.g., reconstruction) from the geometry decoding unit 350 to encode the attributes.

[0067] In the G-PCC encoder 200 and the G-PCC decoder 300, the point cloud location is first decoded. The attribute decoding depends on the decoded geometry. Figures 5 to 8 In , the coding units with vertical hashing are an option commonly used for category 1 data. The diagonal cross-hatched coding units are an option commonly used for category 3 data. All other modules are common between category 1 and category 3.

[0068] For geometry, there are two different types of decoding techniques: octree and prediction tree decoding. For category 3 data, the compressed geometry is typically represented as an octree from the root down to the leaf level of a single voxel. For category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree from the root down to the leaf level of blocks larger than a voxel) plus a model that approximates the surface within each leaf of the pruned octree. In this way, category 1 and category 3 data share the octree decoding mechanism, while category 1 data can additionally approximate the voxels within each leaf with a surface model. The surface model used is a triangulation that includes 1 to 10 triangles per block, resulting in a shuffled set of triangles. Therefore, category 1 geometry decoders are called triplet geometry decoders, while category 3 geometry decoders are called octree geometry decoders.

[0069] At each node of the octree, occupancy is signaled (when not inferred) for one or more of its children (up to eight nodes). Multiple neighborhoods are specified, including (a) nodes that share faces with the current octree node, (b) nodes that share faces, edges, or vertices 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 points that are sparsely populated in certain nodes of the octree, the decoder also supports a direct decoding mode in which the 3D positioning of the points is encoded directly. A flag can be signaled to indicate that direct mode is signaled. At the lowest level, the number of points associated with the octree node / leaf node can also be decoded.

[0070] Figure 4It is a conceptual diagram illustrating an example octree partition for geometric decoding. At each node of the octree 400, the G-PCC encoder 200 can signal the occupancy of one or more sub-nodes (e.g., up to eight nodes) of the sub-nodes of the node to the G-PCC decoder 300 (when the G-PCC decoder 300 does not infer the occupancy). Specify multiple neighborhoods, 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. In each neighborhood, the occupancy of the node and / or the sub-nodes of the node can be used to predict the occupancy of the current node or the sub-nodes of the node. For points that are sparsely populated in some nodes of the octree, the decoder also supports a direct decoding mode, in which the 3D positioning of the points is directly decoded. The G-PCC encoder 200 can send a flag with a signal to indicate that a direct mode has been signaled. At the lowest level, the number of points associated with the octree node / leaf node can also be decoded.

[0071] Once the geometry is decoded, the attributes corresponding to the geometry points are decoded. When there are multiple attribute points corresponding to one reconstructed / decoded geometry point, the attribute value representing the reconstructed point can be derived.

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

[0073] The encoding of attributes can be done in levels of detail (LODs), where with each LOD a finer representation of the point cloud attributes can be obtained. Each LOD can be specified based on a distance metric to neighboring nodes or based on a sampling distance.

[0074] At the G-PCC encoder 200, the residual obtained as the output of the coding method of the attribute is quantized. The residual can be obtained by subtracting the attribute value from a prediction derived based on points in the neighborhood of the current point and based on the attribute value of the previously encoded point. The quantized residual can be decoded using context adaptive arithmetic coding.

[0075] Figure 5 A more detailed map shows Figure 22 is a block diagram of an example of a geometry encoding unit 250. The geometry encoding unit 250 may include a coordinate transformation unit 202, a voxelization unit 206, a prediction tree construction unit 207, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic coding unit 214, and a geometry reconstruction unit 216.

[0076] like Figure 5 As shown in the example of , the geometry encoding unit 250 can obtain a set of locations of points in the point cloud. In one example, the geometry encoding unit 250 can obtain a set of locations of points in the point cloud from the data source 104 ( Figure 1 ) obtains a set of locations and a set of attributes of points in the point cloud. These locations may include the coordinates of the points in the point cloud. The geometry encoding unit 250 may generate a geometry bitstream 203, which includes an encoded representation of the locations of the points in the point cloud.

[0077] The coordinate transformation unit 202 may apply a transformation to the coordinates of the point to transform the coordinates from the initial domain to the transformed domain. The present disclosure may refer to the transformed coordinates as transformed coordinates. The voxelization unit 206 may voxelize the transformed coordinates. Voxelization of the transformed coordinates may include quantizing and removing some points of the point cloud. In other words, multiple points of the point cloud may be contained within a single "voxel", which may then be considered as one point in some respects.

[0078] The prediction tree construction unit 207 may be configured to generate a prediction tree based on the voxelized transformed coordinates. The prediction tree construction unit 207 may be configured to perform any of the prediction tree coding techniques described above in an intra prediction mode or an inter prediction mode. To perform prediction tree coding using inter prediction, the prediction tree construction unit 207 may access points from a previously encoded frame from the geometry reconstruction unit 216. The dotted line from the geometry reconstruction unit 216 shows the data path when performing inter prediction. The arithmetic coding unit 214 may entropy encode the syntax elements representing the encoded prediction tree.

[0079] In some examples, the prediction tree construction unit 207 may include a vertical predictor unit 209. The vertical predictor unit 209 may be configured to encode the point cloud data using the techniques of the present disclosure, including encoding the point cloud data using predictive geometry coding and a vertical predictor. In one example of the present disclosure, the G-PCC encoder 200 may be configured to determine a pivot laser ID, determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and encode the current point using the vertical predictor and predictive geometry coding.

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

[0081] Octree-based coding may be performed as an intra prediction technique or an inter prediction technique. To perform octree coding using inter prediction, the octree analysis unit 210 and the surface approximation analysis unit 212 may access points from previously encoded frames from the geometry reconstruction unit 216. The dashed line from the geometry reconstruction unit 216 shows the data path when performing inter prediction.

[0082] The geometric reconstruction unit 216 may reconstruct the transformed coordinates of the points in the point cloud based on the octree, the prediction tree, the data indicating the surface determined by the surface approximation analysis unit 212, and / or other information. Due to voxelization and surface approximation, the number of transformed coordinates reconstructed by the geometric reconstruction unit 216 may be different from the original number of points of the point cloud. The present disclosure may refer to the resulting points as reconstructed points.

[0083] Figure 6 A more detailed map shows Figure 2 2 is a block diagram of an example of an attribute encoding unit 260 of the invention. The attribute encoding unit 250 may include a color transform unit 204, an attribute transfer unit 208, a RAHT unit 218, a LoD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, an arithmetic coding unit 226, and an attribute reconstruction unit 228. The attribute encoding unit 260 may encode attributes of points of the point cloud to generate an attribute bitstream 205 including an encoded representation of a set of attributes. The attributes may include information about the points in the point cloud, such as a color associated with the points in the point cloud.

[0084] The color transform unit 204 may apply a transform to transform the color information of the attribute to a different domain. For example, the color transform unit 204 may transform the color information from an RGB color space to a YCbCr color space. 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. The attribute transfer unit 208 may use the original positioning of the points and the positioning generated from the attribute encoding unit 250 (e.g., from the geometry reconstruction unit 216) for the transfer.

[0085] The RAHT unit 218 may apply RAHT coding to the attributes of the reconstructed points. In some examples, under RAHT, the attributes of the block located at the 2×2×2 point are taken and transformed in one direction to obtain four low (L) and four high (H) frequency nodes. Subsequently, the four low-frequency nodes (L) are transformed in the second direction to obtain two low (LL) and two high (LH) frequency nodes. The two low-frequency nodes (LL) are transformed along the third direction to obtain one low-frequency (LLL) and one high-frequency (LLH) node. The low-frequency node LLL corresponds to the DC coefficient, and the high-frequency nodes H, LH and LLH correspond to the AC coefficient. The transform in each direction may be a 1-D transform with two coefficient weights. The low-frequency coefficients may be regarded as coefficients of the 2×2×2 block for the next higher-level RAHT transform, and the AC coefficients are encoded without changes; this transform continues until the top root node. The tree traversal for encoding is used from top to bottom to calculate the weights to be used for the coefficients; the transform order is from bottom to top. The coefficients may then be quantized and decoded.

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

[0087] 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 produced 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 contain other syntax elements, including non-arithmetic coded syntax elements.

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

[0089] Figure 7 is a more detailed description Figure 3 The geometry decoding unit 350 may be configured to perform the same operations as those performed by Figure 5 The process is the inverse of the process performed by the geometry encoding unit 250. The geometry decoding unit 350 receives the geometry bitstream 203 and generates the location of the points of the point cloud frame. The geometry decoding unit 350 may include a geometry arithmetic decoding unit 302, an octree synthesis unit 306, a prediction tree synthesis unit 307, a surface approximation synthesis unit 310, a geometry reconstruction unit 312 and an inverse coordinate transformation unit 320.

[0090] The geometry decoding unit 350 may receive the geometry bitstream 203 . The geometry arithmetic decoding unit 302 may apply arithmetic decoding (eg, context adaptive binary arithmetic coding (CABAC) or other types of arithmetic decoding) to syntax elements in the geometry bitstream 203 .

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

[0092] At the final level of the octree, each node corresponds to a voxel location; when a leaf node is occupied, one or more points can be specified to be occupied at the voxel location. In some cases, due to quantization, some branches of the octree may terminate earlier than the final level. In this case, the leaf node is considered to be an occupied node with no child nodes. In the case of using surface approximation in the geometry bitstream 203, the surface approximation synthesis unit 310 can determine the surface model based on the syntax elements parsed from the geometry bitstream 203 and based on the octree.

[0093] Octree-based coding may be performed as an intra prediction technique or an inter prediction technique. To perform octree coding using inter prediction, the octree synthesis unit 306 and the surface approximation synthesis unit 310 may access points from previously decoded frames from the geometry reconstruction unit 312. The dashed line from the geometry reconstruction unit 312 shows the data path when performing inter prediction.

[0094] The prediction tree synthesis unit may synthesize a prediction tree based on syntax elements parsed from the geometry bitstream 203. The prediction tree synthesis unit 307 may be configured to synthesize a prediction tree using any of the techniques described above, including using intra prediction techniques or both intra prediction techniques. To perform prediction tree coding using inter prediction, the prediction tree synthesis unit 307 may access points from a previously decoded frame from the geometry reconstruction unit 312. The dashed line from the geometry reconstruction unit 312 shows the data path when performing inter prediction.

[0095] In some examples, the prediction tree synthesis unit 307 may include a vertical predictor unit 309. The vertical predictor unit 309 may be configured to decode the point cloud data using the techniques of the present disclosure, including decoding the point cloud data using predictive geometry decoding and a vertical predictor. In one example of the present disclosure, the G-PCC decoder 300 may be configured to determine a pivot laser ID, determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and decode the current point using the vertical predictor and predictive geometry decoding.

[0096] The geometric reconstruction unit 312 may perform reconstruction to determine the coordinates of the points in the point cloud. For each location at a leaf node of the octree, the geometric reconstruction unit 312 may reconstruct the node position by using the binary representation of the leaf node in the octree. At each respective leaf node, the number of points at the respective leaf node is signaled; this indicates the number of repeated points at the same voxel location. When geometric quantization is used, the point location is scaled to determine the reconstructed point location value.

[0097] The inverse transform coordinate unit 320 can apply an inverse transform to the reconstructed coordinates to convert the reconstructed coordinates (positioning) of the points in the point cloud from the transformed domain back to the original domain. The positioning of the points in the point cloud can be in the floating point domain, but the point positioning in the G-PCC decoder is decoded in the integer domain. The inverse transform can be used to convert the positioning back to the original domain.

[0098] Figure 8 is a more detailed description Figure 3 The attribute decoding unit 360 may be configured to perform the same Figure 6The attribute decoding unit 360 receives the attribute bitstream 205 and generates the attributes of the points of the point cloud frame. The attribute decoding unit 356 may include an attribute arithmetic decoding unit 304, an inverse quantization unit 308, an inverse RAHT unit 314, a LoD generation unit 316, an inverse lifting unit 318, an inverse transformation color unit 322, and an attribute reconstruction unit 328.

[0099] The attribute arithmetic decoding unit 304 may apply arithmetic decoding to the syntax elements in the attribute bitstream 205. The inverse quantization unit 308 may inverse quantize the property value. The property value may be based on the syntax elements obtained from the attribute bitstream 205 (eg, including the syntax elements decoded by the attribute arithmetic decoding unit 304).

[0100] Depending on how the attribute value is encoded, the inverse RAHT unit 314 may perform RAHT decoding to determine the color value of the point of the point cloud based on the inverse quantized attribute value. RAHT decoding is performed from the top to the bottom of the tree. At each level, the low-frequency coefficients and high-frequency coefficients derived from the inverse quantization process are used to derive the component values. At the leaf node, the derived value corresponds to the attribute value of the coefficient. The weight derivation process for the point is similar to the process used at the G-PCC encoder 200. Alternatively, the LoD generation unit 316 and the inverse lifting unit 318 may use a detail level-based technique to determine the color value of the point of the point cloud. The LoD generation unit 316 decodes each LoD, giving a gradually finer representation of the attribute of the point. Using the prediction transform, the LoD generation unit 316 derives the prediction of the point from the weighted sum of the points previously reconstructed in the same LoD or in the previous LoD. The LoD generation unit 316 may add the prediction to the residual (which is obtained after inverse quantization) to obtain the reconstructed value of the attribute. When using the lifting scheme, the LoD generation unit 316 may also include an update operator to update the coefficients used to derive the attribute value. In this case, the LoD generation unit 316 may also apply inverse adaptive quantization.

[0101] In addition, Figure 8 In the example of , the inverse color transform unit 322 may apply an inverse color transform to the color value. The inverse color transform may be the inverse of the color transform applied by the color transform unit 204 of the encoder 200. For example, the color transform unit 204 may transform the color information from the RGB color space to the YCbCr color space. Thus, the inverse color transform unit 322 may transform the color information from the YCbCr color space to the RGB color space.

[0102] The attribute reconstruction unit 328 may be configured to store attributes from previously decoded frames. Attribute decoding may be performed as an intra prediction technique or an inter prediction technique. To perform attribute decoding using inter prediction, the inverse RAHT unit 314 and / or the LoD generation unit 316 may access attributes from previously decoded frames from the attribute reconstruction unit 328. The dashed line from the attribute reconstruction unit 328 shows the data path when inter prediction is performed.

[0103] Figures 5 to 8 Various units are illustrated to help understand the operations performed by the G-PCC encoder 200 and the G-PCC decoder 300. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit refers to a circuit that provides a specific functionality and is preset on executable operations. A programmable circuit refers to a circuit that can be programmed to perform various tasks and provide flexible functions in the operations that can be performed. For example, a programmable circuit may execute software or firmware that causes the programmable circuit to operate in a manner defined by instructions of the software or firmware. Fixed-function circuits may execute software instructions (e.g., to receive parameters or output parameters), but the type of operation performed by the fixed-function circuit is generally immutable. In some examples, one or more of the units may be different circuit blocks (fixed-function or programmable), and in some examples, one or more of the units may be integrated circuits.

[0104] Predictive Geometry Decoding

[0105] Prediction geometry coding (see e.g. G-PCC coder description) was introduced as an alternative to octree geometry coding, where nodes are arranged in a tree structure (which defines the prediction structure), and various prediction strategies are used to predict the coordinates of each node in the tree relative to its predictor. Prediction tree coding may be more efficient for coding sparse content than octree coding. Fig. 9 An example of a prediction tree as a directed graph is shown, with arrows pointing in the direction of prediction. Horizontal hash nodes are root vertices and have no predictors; cross-hatched nodes have two children; diagonal hash nodes have 3 children; non-hashed nodes have one child, and vertical hash nodes are leaf nodes, and these nodes have no children. Except for the root node, each node has only one parent node.

[0106] Fig. 9 5 is a conceptual diagram illustrating an example of a prediction tree. Node 500 is the root vertex and has no predictor. Nodes 502 and 504 have two child nodes. Node 506 has three child nodes. Nodes 508, 510, 512, 514, and 516 are leaf nodes, and these nodes have no child nodes. The remaining nodes each have one child node. Each node except the root node 500 has only one parent node.

[0107] Four prediction strategies are specified for each node based on its parent node (p0), grandparent node (p1), and great-grandparent node (p2):

[0108] No forecast / Zero forecast (0)

[0109] Incremental prediction (p0)

[0110] Linear prediction (2*P0-P1)

[0111] Parallelogram prediction (p0+P1-P2)

[0112] In the above, the p0, p1, and p2 values ​​may represent the (x, y, z) location of each node (e.g., point). The G-PCC encoder 200 may employ any algorithm to generate the prediction tree; the algorithm used may be determined based on the application / use case, and several strategies may be used. Some strategies are described in the G-PCC decoder description.

[0113] For each node, the residual coordinate values ​​are coded in the bitstream starting from the root node in a depth-first manner (eg, in each of the x, y, and z directions). For example, the G-PCC encoder 200 may code the residual coordinate values ​​in the bitstream.

[0114] Predictive geometry decoding can be used for Category 3 (LIDAR acquired) point cloud data, for example, for low latency applications.

[0115] Angle mode for predictive geometry decoding

[0116] Fig. 10A and 10B is a conceptual diagram illustrating an example of a rotating LIDAR acquisition model. Angle mode can be used to predict geometric decoding, where the characteristics of the LIDAR sensor can be used to more efficiently decode the prediction tree. The located coordinates are converted to (radius, azimuth, and laser index (ID)) domain 600, and prediction is performed in this domain 600 (e.g., residual in domain). Due to rounding errors, The decoding is not lossless, so a second set of residuals corresponding to Cartesian coordinates may be encoded. The description of the encoding and decoding strategy for the angular mode of predictive geometry coding is reproduced below from the G-PCC decoder description.

[0117] The technique focuses on the point cloud acquired using a rotating LIDAR model. Here, the LIDAR 602 has a rotation angle according to the azimuth. N lasers (e.g. N=16, 32, 64) rotating around the Z axis. Each laser can have a different altitude and height .. Assume that laser i hits point M, which has FIG. 10A to FIG. 10B The coordinate system shown in is defined by Cartesian integer coordinates (x, y, z).

[0118] This technique uses three parameters For the positioning model of M, these three parameters are calculated as follows:

[0119]

[0120]

[0121] ,

[0122] In the above equation, r is the radius, is the azimuth angle, θ is the elevation angle, and i is the laser ID.

[0123] More specifically, the technique uses The quantitative version of , where three integers , and i are calculated as follows:

[0124]

[0125]

[0126]

[0127] in( and Control and The quantization parameter of the accuracy. is a function that returns 1 if t is positive, otherwise it returns (-1). |t| is the absolute value of t.

[0128] To avoid reconstruction mismatches due to the use of floating-point operations, The values ​​are precomputed and quantized as follows:

[0129]

[0130]

[0131] in( and Is controlled separately and The quantization parameter of the accuracy.

[0132] The reconstructed Cartesian coordinates are obtained as follows:

[0133]

[0134]

[0135] ,

[0136] in and yes and , and the calculations can be performed using fixed-point representation, lookup tables, and / or linear interpolation.

[0137] Note that for various reasons, Possibly Different, such as quantization, approximation, model inaccuracy, model parameter inaccuracy, etc.

[0138] is the reconstructed residual defined as follows:

[0139]

[0140]

[0141]

[0142] Using this technique, the G-PCC encoder 200 can proceed as follows:

[0143] 1) For the model parameters and the quantization parameter to encode.

[0144] 2) Apply the geometric prediction scheme to the express.

[0145] A new predictor that exploits the characteristics of LIDAR can be introduced. For example, the rotation speed of the LIDAR scanner around the z-axis is usually constant. Therefore, the G-PCC encoder 200 predicts the current as follows :

[0146]

[0147] in is a set of potential speeds that the G-PCC encoder 200 can use. The index k can be written explicitly into the bitstream, or can be inferred from the context based on a deterministic strategy applied by both the G-PCC encoder 200 and the G-PCC decoder 300, and n(j) is the number of skip points that can be written explicitly into the bitstream, or can be inferred from the context based on a deterministic strategy applied by both the G-PCC encoder 200 and the G-PCC decoder 300. n(j) is also referred to herein as the "phi multiplier". Note that in some examples, the phi multiplier is used only with the delta predictor.

[0148] 3) Reconstruct the residual using each node pair to encode.

[0149] The G-PCC decoder 300 may proceed as follows:

[0150] 1) Decoding the model parameters And the quantization parameter .

[0151] 2) The parameters associated with the node are predicted according to a geometric prediction scheme. to decode.

[0152] 3) Calculate the reconstructed coordinates as described above .

[0153] 4) Decoding residual

[0154] As discussed in the next section, the residual can be reconstructed by quantizing To support lossy compression

[0155] 5) Calculate the original coordinate:

[0156]

[0157]

[0158]

[0159] Lossy compression can be achieved by reconstructing the residual Apply quantization or do it by dropping points.

[0160] The quantized reconstruction residual can be calculated as follows:

[0161]

[0162]

[0163]

[0164] in, , Is controlled separately , and For example, the G-PCC encoder 200 and the G-PCC decoder 300 may calculate a quantized residual.

[0165] The G-PCC encoder 200 and the G-PCC decoder 300 may use trellis quantization to further improve RD (rate-distortion) performance results.

[0166] The quantization parameter can be changed at sequence / frame / slice / block level to achieve region-adaptive quality and / or for rate control purposes.

[0167] Several other improvements to predicted geometry have been proposed. An overview of improvements relevant to the present disclosure is presented herein.

[0168] Inter-frame prediction for predictive geometry coding

[0169] Predictive geometry coding uses a prediction tree structure to predict the location of a point. When angular coding is enabled, the x, y, z coordinates are transformed into radius, azimuth, and laser ID, and residuals can be signaled in these three coordinates as well as in the x, y, z dimensions. Intra-frame prediction for radius, azimuth, and laser ID can be one of four modes, and the predictor is a node that is classified as a parent, grandparent, and great-grandparent in the prediction tree relative to the current node. Predictive geometry coding as designed in G-PCC Ed.1 is an intra-frame coding tool because it only uses points in the same frame for prediction. In addition, using points from previously decoded frames can provide better predictions and therefore better compression performance.

[0170] For inter prediction, it was initially proposed to predict the radius of a point from a reference frame. For each point in the prediction tree, the G-PCC decoder 300 can determine whether the point is inter predicted or intra predicted. For example, the G-PCC encoder 200 can indicate such inter prediction or intra prediction by a flag that the G-PCC encoder 200 can signal in the bitstream. When intra prediction is used, the intra prediction mode of predictive geometry decoding is used. When inter prediction is used, the azimuth and laser ID are still predicted by intra prediction, while the radius is predicted from the point in the reference frame that has the same laser ID as the current point and the azimuth closest to the current azimuth.

[0171] In addition to radius prediction, further changes to the technique enable inter-frame prediction of azimuth and laser ID. When inter-frame decoding is applied, the radius, azimuth and laser ID of the current point are predicted based on points near the azimuth position of the previously decoded point in the reference frame. In addition, separate context sets are used for inter-frame and intra-frame prediction.

[0172] Fig.11 A conceptual diagram illustrating an example of inter-frame prediction of a current point from a point in a reference frame. The extension of inter-frame prediction to azimuth, radius, and laser ID includes the following steps, which may be performed, for example, by the G-PCC decoder 300:

[0173] 1) For a given point (eg, the current point curPoint 700 in the current frame 704), a previously decoded point (prevDecP0 702) is selected.

[0174] 2) Select a position in the reference frame 708 that has the same scaled azimuth and laser ID as prevDecP0 702 (eg, refFrameP0 706 ).

[0175] 3) In the reference frame 708, find the first point (interPredPt 710) whose azimuth is greater than the azimuth of refFrameP0 706. interPredPt 710 may also be referred to as the "next" inter-frame predictor.

[0176] Fig.12 is a flow chart illustrating the operation of a G-PCC decoder. Fig.12 The figure illustrates a decoding flow associated with an “inter_flag” signaled for each point. The G-PCC decoder 300 may determine whether the inter-frame flag is true (e.g., equal to 1) (800). If the inter-frame flag is true (taking the “YES” path from box 800), the G-PCC decoder 300 may select a previously decoded point in decoding order using the radius, azimuth, and laser ID (802). The G-PCC decoder 300 may derive a quantized phi, Q(phi) (e.g., a quantized value of the azimuth) of the selected previously decoded point (e.g., prevDecP0 702) (804). The G-PCC decoder 300 may check a reference frame (e.g., Fig.11 708), where the quantized phi value of such a point is greater than Q(phi), which may result in interPredPt 710 (806). The G-PCC decoder 300 may then use interPredPt 710 as an inter-frame predictor for the current point (curPoint 700) (808). The G-PCC decoder 300 may then increment the phi multiplier (e.g., as described above) by Add to the main residual (810).

[0177] If the inter flag is false (eg, equal to 0) (taking the "NO" path from block 800), the G-PCC decoder 300 may select an intra prediction candidate (812) and apply intra prediction. The G-PCC decoder 300 may then add the delta phi multiplier to produce the primary residual (810).

[0178] Additional predictor candidates

[0179] Fig.13 1 is a conceptual diagram illustrating an example of an additional inter predictor point obtained from a first point having an azimuth angle greater than an inter predictor point. In the above inter prediction technique for predicting geometry, when inter coding is applied, for example, by the G-PCC decoder 300, the following steps are used to predict the radius, azimuth angle, and laser ID of the current point based on the collocated azimuthally positioned nearby points in the reference frame:

[0180] 1) For a given point (e.g., current point, CurrPoint900), select the previously decoded point (e.g., Prev DecPoint 902),

[0181] 2) select a location (e.g., Ref Point 906) in reference frame 908 that has the same scaled azimuth and laser ID as the previously decoded point (e.g., Prev Dec Point 902),

[0182] 3) Select from the first point a location in reference frame 908 (inter-frame prediction point 910) to be used as an inter-frame predictor point, the location having an azimuth greater than a location in reference frame 908 having the same scaled azimuth and laser ID as the previous decode point (eg, Prev Dec Point 902).

[0183] The technique adds an additional inter-frame predictor point 912 obtained by finding the first point (eg, InterPred Point 910) having an azimuth angle greater than the inter-frame predictor point, as shown in FIG. Fig.13 As shown. If the G-PCC encoder 200 has applied inter-frame decoding, additional signaling is used to indicate which predictor is selected. For example, the G-PCC encoder 200 can signal the G-PCC decoder 300 which predictor is selected. The additional inter-frame prediction point can also be referred to as the "NextNext" inter-frame predictor.

[0184] Improved inter-frame prediction flag decoding

[0185] In some examples, an improved context selection algorithm may be applied to code the inter prediction flag.The inter prediction flag values ​​of five previous coding points may be used to select the context of the inter prediction flag in prediction geometry coding.

[0186] Global Motion Compensation

[0187] Fig.14 is a flow chart illustrating an example motion compensation technique. When global motion (GM) parameters are available, inter-frame prediction can be applied using a reference system that uses the GM parameters for motion compensation. The GM parameters may include rotation parameters and / or translation parameters. Typically, global motion compensation is applied in the Cartesian domain; in some cases, it can also be performed in the spherical domain. Depending on which domain the reference system is stored in and in which domain the reference system is compensated, one or more of a Cartesian domain to spherical domain conversion or a spherical domain to Cartesian domain conversion can be applied. For example, the G-PCC encoder 200 and the G-PCC decoder 300 can apply a coordinate domain conversion when applying motion compensation.

[0188] For example, Fig.14 As shown, when the reference frame is stored in the spherical domain and motion compensation is performed in the Cartesian domain, the G-PCC encoder 200 and the G-PCC decoder 300 may first apply a spherical->Cartesian translation 1000. Then, using the reference frame in the Cartesian domain, the G-PCC encoder 200 and the G-PCC decoder 300 may apply motion compensation 1002 to obtain a compensated reference frame in the Cartesian domain. The G-PCC encoder 200 and the G-PCC decoder 300 may then apply a Cartesian->spherical translation 1004 before outputting and / or storing the compensated reference frame in the spherical domain. In this case, the compensated reference frame may be used for inter-frame prediction.

[0189] Given a Cartesian coordinate system, , the G-PCC encoder 200 and the G-PCC decoder 300 may calculate the corresponding radius and azimuth (floating point implementation) as follows (as in the Cartesian spherical transfer function):

[0190] int64_t r0 = int64_t(std::round(hypot(xyz[0], xyz[1])));

[0191] auto phi0 = std::round((atan2(xyz[1], xyz[0]) / (2.0 * M_PI)) *scalePhi);

[0192] Among them, scalePhi is modified for different rate points in the lossy configuration; when decoding the geometry losslessly, the maximum value of 24 bits is used for azimuth. A fixed-point implementation of azimuth is available in the convertXyZToRpl function.

[0193] radius:

[0194] Floating point implementation int64_t r0 = int64_t(std::round(hypot(xyz[0], xyz[1]))); Fixed point implementation (in convertXyzToRpl) int64_t xLaser = xyz[0] << 8;int64_t yLaser = xyz[1] << 8;int64_t r0 = isqrt(xLaser * xLaser + yLaser * yLaser) >> 8;

[0195] Floating point implementation auto phi0 = std::round((atan2(xyz[1], xyz[0]) / (2.0 * M_PI)) *scalePhi); Fixed point implementation (in convertXyzToRpl) (*dst)[1] = (iatan2(yLaser, xLaser) + 3294199) >> 8;

[0196] Vertical prediction of G-PCC

[0197] In intra prediction for predictive geometry coding, one or more points to be decoded are placed in a predictor list. For example, the G-PCC encoder 200 and the G-PCC decoder 300 generate a predictor list comprising one or more points. Prediction of radius and azimuth (and in some cases laser ID) values ​​is performed. Typically, based on the order in which the points are decoded, the predicted points in the list are points with the same laser ID as the currently decoded point.

[0198] For a rotating LIDAR system with more than one laser, adjacent lasers may capture points belonging to the same object. For regular objects (e.g., objects with continuous or nearly continuous surfaces), the distances of adjacent captured points of the same object (e.g., captured from adjacent lasers) may be similar. The present disclosure describes the following techniques for using information from adjacent lasers in predictive geometry decoding. For example, spherical or Cartesian coordinates of points captured by adjacent lasers (e.g., "vertical predictors") may be used in the predictive geometry decoding process. Because such vertical predictors from adjacent lasers (e.g., points with different laser IDs) result in better predictions than other points from the same laser ID, the techniques of the present disclosure can result in better decoding efficiency.

[0199] As will be explained in more detail below, the G-PCC encoder 200 and the G-PCC decoder 300 can be configured to determine a pivot laser ID, determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and decode the current point using the vertical predictor and predictive geometry decoding.

[0200] Predictor Laser ID List

[0201] For the current point, the G-PCC encoder 200 and the G-PCC decoder 300 may be configured to generate a list of predictor laser IDs that may be used to derive one or more vertical predictors to be used for prediction in predictive geometry decoding. For example, the G-PCC encoder 200 and the G-PCC decoder 300 may be configured to determine a pivot laser ID L. The laser may represent the laser ID of the current point (e.g., if the laser ID has already been decoded), or the pivot laser may be the laser ID of a previously decoded point (e.g., immediately following a previously decoded point).

[0202] The G-PCC encoder 200 and the G-PCC decoder 300 may be configured to generate a predictor laser ID list as follows: [L+1, L-1, L+2, L-2, ..., L+N, LN], where N is a fixed or signaled value indicating the size of the predictor laser ID list. In other examples, an asymmetric list may be generated. That is, the term "pivot laser ID" does not require the generation of a predictor laser ID list that is symmetric about a certain pivot.

[0203] If there is L in the LIDAR system max laser IDs, then the valid laser ID set is [0, L max -1]. If any laser ID value in the laser ID list is outside the valid laser ID range, such laser IDs may be removed or pruned from the predictor laser ID list. For example, the G-PCC encoder 200 and the G-PCC decoder 300 may remove any laser ID value outside the valid laser ID range.

[0204] Additionally, there may be another limit N on the number of laser IDs in the predictor laser ID list. list If the number of entries in the laser ID list is greater than N list , then the size is reduced to N by removing the entries at the end of the predictor laser ID list list For example, the G-PCC encoder 200 and the G-PCC decoder 300 may remove the number of laser IDs exceeding N at the end of the predictive laser ID list. list The value of the entry.

[0205] Therefore, as part of determining the vertical predictor, the G-PCC encoder 200 and the G-PCC decoder 300 may determine a predictor laser ID list based on the pivot laser ID, wherein the predictor laser ID list includes a plurality of laser IDs. In some examples, the predictor laser ID list includes at least one laser ID above the pivot laser ID and at least one laser ID below the pivot laser ID. The laser ID above the pivot laser ID has an ID value greater than the pivot ID. The laser ID below the pivot laser ID has an ID value less than the pivot ID. When determining the predictor laser ID list, the G-PCC encoder 200 and the G-PCC decoder 300 may determine whether any laser ID in the predictor laser ID list is outside the laser ID range, and remove any laser ID in the predictor laser ID list that is outside the laser ID range.

[0206] Vertical Predictor

[0207] For each laser ID in the predictor laser ID list, the G-PCC encoder 200 and the G-PCC decoder 300 may be configured to derive a vertical predictor. In this context, a vertical predictor may be an adjacent or nearby laser relative to the current laser ID (or pivot laser ID) in the predictor laser ID list.

[0208] For a current point having laser ID L and laser ID L1 (e.g., L+1) in the predictor laser ID list, the G-PCC encoder 200 and the G-PCC decoder 300 may be configured to derive a vertical predictor as follows. The G-PCC encoder 200 and the G-PCC decoder 300 determine a pivot azimuth value for the current point. In some cases, the pivot azimuth is the azimuth of the current point or an estimate of the azimuth of the current point (e.g., if the current point has been decoded). In some cases, the pivot azimuth is selected as the azimuth (or an estimate of the azimuth) of a previously decoded point. In one example, the G-PCC encoder 200 and the G-PCC decoder 300 may be configured to derive a first pivot azimuth index by scaling the pivot azimuth value. By scaling the pivot azimuth value, the first pivot azimuth index is effectively quantized to be within a range. Therefore, nearby azimuth values ​​match each other more closely. The G-PCC encoder 200 may be configured to signal a vertical predictor azimuth scaling value to the G-PCC decoder 300, the vertical predictor azimuth scaling value being used to derive a first pivot azimuth index. The first pivot azimuth index is typically associated with a pivot laser ID.

[0209] G-PCC encoder 200 and G-PCC decoder 300 can derive the second azimuth index based on the value of the first pivot azimuth index. In some cases, the second azimuth index is set to be equal to the first pivot azimuth index. The first pivot azimuth index is usually associated with the laser ID in the predictor laser ID list. G-PCC encoder 200 and G-PCC decoder 300 can derive the predictor azimuth index from the second azimuth index.

[0210] For example, if the pivot azimuth value corresponds to the azimuth of the current point, the G-PCC encoder 200 and the G-PCC decoder 300 are configured to set the predictor azimuth index equal to the second azimuth index. In one example, the G-PCC encoder 200 and the G-PCC decoder 300 set the predictor azimuth index equal to the minimum index value azim sm , the minimum index value azim sm is greater than or equal to the second azimuth index, and for the minimum index value azim sm There is a laser with ID L1 and azimuth index azim sm Related points.

[0211] If the pivot azimuth value corresponds to the azimuth of the previous coded point, the G-PCC encoder 200 and the G-PCC decoder 300 set the predictor azimuth index equal to an index value greater than the second azimuth index. In an alternative example, the G-PCC encoder 200 and the G-PCC decoder 300 set the predictor azimuth index equal to the minimum index value azim sm , the minimum index value azim sm is greater than the second azimuth index, and for this minimum index value azim sm There is a laser with ID L1 and azimuth index azim sm In another alternative example, the G-PCC encoder 200 and the G-PCC decoder 300 set the predictor azimuth index equal to the second minimum index value azim ssm , the second minimum index value azim ssm is greater than the second azimuth index, and for the second minimum index value azim ssm There is a laser with ID L1 and azimuth index azim ssm In another alternative example, the G-PCC encoder 200 and the G-PCC decoder 300 set the predictor azimuth index equal to the maximum index value azim sm , the maximum index value azim sm is less than the second azimuth index, and for the maximum index value azim smThere is a laser with ID L1 and azimuth index azim sm Related points.

[0212] The G-PCC encoder 200 and the G-PCC decoder 300 may select a previously decoded point having a laser ID equal to L1 and having an azimuth index (eg, a scaled azimuth value) equal to the predictor azimuth index. This point may be referred to as (r P ,azim P , L1), and the G-PCC encoder 200 and the G-PCC decoder 300 can select this point as the vertical predictor. P is the radius of the vertical predictor, azim P is the azimuth angle of the vertical predictor, and L1 is the laser ID of the vertical predictor. If such a point does not exist, the G-PCC encoder 200 and the G-PCC decoder 300 do not select the vertical predictor corresponding to the laser ID L1.

[0213] In other examples, the G-PCC encoder 200 and the G-PCC decoder 300 may be configured to derive multiple predictor indices for the predictor list laser ID L1. More generally, more than one predictor value (e.g., index) may be associated with the predictor list laser ID L1. The G-PCC encoder 200 and the G-PCC decoder 300 may derive a final predictor associated with L1 from multiple predictor values ​​associated with the predictor list laser ID L1. For example, if there are two predictor values ​​associated with the predictor list laser ID L1, the G-PCC encoder 200 and the G-PCC decoder 300 may derive a final predictor associated with L1 using a weighted average or linear interpolation of the two predictor values.

[0214] Again, the G-PCC encoder 200 and the G-PCC decoder 300 can be configured to determine a pivot laser ID, determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID, and decode the current point using the vertical predictor and the predicted geometry decoding. In one example, the pivot laser ID is the laser ID of a previously decoded point. In another example, the pivot laser ID is the laser ID of the current point.

[0215] In order to determine the vertical predictor of the current point, the G-PCC encoder 200 and the G-PCC decoder 300 can be configured to determine the pivot azimuth value, scale the pivot azimuth value to obtain a first pivot azimuth index, determine the second azimuth index based on the first pivot azimuth index, and determine the predictor azimuth index based on the second azimuth index. The G-PCC encoder 200 and the G-PCC decoder 300 can then be configured to determine the vertical predictor based on the predictor azimuth index. In order to determine the pivot azimuth value, the G-PCC encoder 200 and the G-PCC decoder 300 can be configured to determine the pivot azimuth value according to one of the azimuth of the previous decoded point, the azimuth of the current point, the estimation of the azimuth of the previous decoded point, or the estimation of the azimuth of the current point.

[0216] To scale the pivot azimuth value, the G-PCC decoder 300 may be configured to receive a vertical predictor azimuth scaling value (eg, from the G-PCC encoder 200 ) and scale the pivot azimuth value using the vertical predictor azimuth scaling value to obtain a first pivot azimuth index.

[0217] In one example, to determine the vertical predictor based on the predictor azimuth index, the G-PCC encoder 200 and the G-PCC decoder 300 may be configured to determine the vertical predictor as a previously decoded point having the second laser ID and an azimuth index equal to the predictor azimuth index.

[0218] In another example, the pivot azimuth value corresponds to the azimuth of the previously decoded point. In this example, to determine the predictor azimuth index based on the second azimuth index, the G-PCC encoder 200 and the G-PCC decoder 300 can be configured to set the predictor azimuth index equal to a minimum index value that is greater than the value of the second azimuth index for which there is a point associated with the second laser ID.

[0219] In order to decode the current point using the vertical predictor and the predicted geometry decoding, the G-PCC decoder 300 can be configured to decode the residual coordinate value of the current point, determine the coordinate value of the vertical predictor, and add the coordinate value of the vertical predictor to the residual coordinate value to obtain the reconstructed current point. In some examples, the residual coordinate value and the coordinate value of the vertical predictor are in the spherical domain. In this example, the G-PCC decoder 300 can also convert the reconstructed current point from the spherical domain to the Cartesian domain.

[0220] In a reciprocal manner of encoding the current point using a vertical predictor and predictive geometry coding, the G-PCC encoder 200 can be configured to determine a coordinate value of the current point, determine a coordinate value of the vertical predictor, subtract the coordinate value of the vertical predictor from the coordinate value of the current point to obtain a residual value of the current point, and encode the residual value. In an example, the coordinate value of the current point and the coordinate value of the vertical predictor are in a spherical domain. The G-PCC encoder 200 can also be configured to convert the current point from a Cartesian domain to a spherical domain to obtain the coordinate value of the current point.

[0221] Example

[0222] Several examples of derivation of the vertical predictor are provided below. In Examples 1 and 2, the G-PCC encoder 200 and the G-PCC decoder 300 are configured to associate the pivoted laser azimuth with the azimuth of the current point. In Examples 3 and 4, the G-PCC encoder 200 and the G-PCC decoder 300 are configured to associate the pivoted laser azimuth with the azimuth of the previously decoded point. Figure 15-18 The dashed lines in indicate the boundaries of the azimuth index values, where points within two adjacent boundary lines have the same azimuth index (e.g., quantized or scaled azimuth value). Fig.15 , the current point (CP) 1100 and the predictor (P) 1102 have the same azimuth index. The G-PCC encoder 200 and the G-PCC decoder 300 may implement the following examples.

[0223] Example 1

[0224] Fig.15 is a conceptual diagram illustrating an example of the derivation of a vertical predictor. In this example, the current point (CP) 1100 corresponds to laser ID L, and the previous point also has laser ID L (not shown). The G-PCC encoder 200 and the G-PCC decoder 300 determine the vertical predictor laser ID value to be L+1. The pivot azimuth value is associated with the azimuth of the current point; the first azimuth index is x+1; the second azimuth index is also x+1, and the predictor azimuth index is also x+1. The G-PCC encoder 200 and the G-PCC decoder 300 determine the point (VP) 1102 with azimuth index x+1 as the vertical predictor.

[0225] Example 2

[0226] Fig.16is a conceptual diagram illustrating another example of the derivation of a vertical predictor. In this example, the current point (CP) 1200 corresponds to laser ID L, and the previous point also has laser ID L (not shown). The G-PCC encoder 200 and the G-PCC decoder 300 determine the vertical predictor laser ID value to be L+1. The pivot azimuth value is associated with the azimuth of the current point; the first azimuth index is x+1; the second azimuth index is also x+1, and the predictor azimuth index is x+2 (the smallest azimuth index greater than x+1 (for which a point exists)). The G-PCC encoder 200 and the G-PCC decoder 300 determine the point (VP) 1202 with azimuth index x+2 as the vertical predictor.

[0227] Example 3

[0228] Fig.17 is a conceptual diagram illustrating another example of the derivation of a vertical predictor. In this example, the current point (CP) 1300 corresponds to the laser ID L, and the previous point (PP) 1304 also has the laser ID L. The G-PCC encoder 200 and the G-PCC decoder 300 determine the vertical predictor laser ID value to be L+1. The pivot azimuth value is associated with the azimuth of the previous point (PP) 1304; the first azimuth index is x, the second azimuth index is also x, and the predictor azimuth index is x+1 (the smallest azimuth index greater than x, for which there is a point). The G-PCC encoder 200 and the G-PCC decoder 300 determine the point (VP) 1302 with the azimuth index x+1 as the vertical predictor.

[0229] Example 4

[0230] Fig.18 is a conceptual diagram illustrating another example of the derivation of a vertical predictor. In this example, the current point (CP) 1400 corresponds to the laser ID L, and the previous point (PP) 1404 also has the laser ID L. The G-PCC encoder 200 and the G-PCC decoder 300 determine the vertical predictor laser ID value to be L+1. The pivot azimuth value is associated with the azimuth of the previous point (PP) 1404; the first azimuth index is x, the second azimuth index is also x, and the predictor azimuth index is x+3 (the smallest azimuth index greater than x, for which there is a point). The G-PCC encoder 200 and the G-PCC decoder 300 determine the point (VP) 1402 with the azimuth index x+3 as the vertical predictor.

[0231] Vertical predictor azimuth scaling vector

[0232] In some examples, the G-PCC encoder 200 and the G-PCC decoder 300 use the vertical predictor azimuth scaling value to derive the azimuth index from the azimuth value. For example, the G-PCC encoder 200 and the G-PCC decoder 300 can derive the azimuth index by dividing the azimuth value by the scaling value after adding an offset to the azimuth value.

[0233] The azimuth index can also be represented as a quantized version of the azimuth value based on the azimuth scaling value. For example, the G-PCC encoder 200 and the G-PCC decoder 300 can determine the azimuth index by quantizing the azimuth value with the azimuth scaling value, and then multiplying the azimuth scaling value to make the azimuth reach the same zoom level. If the azimuth value is quantized by different scaling values, the azimuth values ​​across laser IDs may be incomparable. Therefore, multiplying by the corresponding scaling value can bring the azimuth value back to the same scaling space, and then the azimuth index can be compared across laser IDs. Based on the scaling value, the azimuth index of one laser ID can be in a coarser or finer representation than the azimuth index of another laser ID.

[0234] In some examples, the vertical predictor azimuth scaling value may be the same for all laser ID values. In one example, the same azimuth scaling value may be sufficient for a laser ID if all laser IDs have similar point sampling frequencies.

[0235] In some examples, the vertical predictor azimuth scaling value may be different for different laser ID values. In some examples, the sampling frequencies of different laser IDs may be different. In this case, different scaling values ​​may be applied to different laser IDs. For example, if the sampling frequency of laser ID x is K1 and the sampling frequency of laser ID y is K2, the azimuth scaling value of the point of laser ID x may be s / K1, while the azimuth scaling value of the point of laser ID y may be s / K2, where s is a constant value. The scaling values ​​may also be s*K1 and s*K2, depending on whether the scaling values ​​are multiplied or divided.

[0236] In some examples, G-PCC encoder 200 and G-PCC decoder 300 may derive vertical predictor scaling values ​​based on a sampling frequency or a number of points associated with a laser ID in a frame.

[0237] In one example, the azimuth scaling values ​​can be different for points in the pivot laser ID and points in the predictor laser ID. For example, for the pivot laser ID L, the azimuth scaling value can be s1. As the predictor laser ID value increases, the point becomes increasingly farther away from the pivot laser ID. In this case, the farther laser ID can be given a different scaling value so that the farther laser ID has a coarser azimuth representation than the closer laser ID.

[0238] The scaling value can be positive, and in some cases is expressed as a power of 2 (e.g., 2 n or 1 / (2 n )).

[0239] Lookup Table

[0240] G-PCC encoder 200 and G-PCC decoder 300 can generate a lookup table for the current frame when the current frame is decoded. The lookup table has an index as a 2-tuple laser ID and an azimuth index, and for each entry, one or more of the following coordinates of a point can be selected: radius, azimuth. In the case where there is more than one point associated with a lookup table entry, each point can be stored in a list associated with the lookup table entry (for example, the lookup table entry is actually a list). G-PCC encoder 200 and G-PCC decoder 300 can update the lookup table when each point is decoded in the current frame. The lookup table can be used to search for a point with a specific azimuth index and a laser ID value.

[0241] Vertical predictor mode

[0242] The G-PCC encoder 200 and the G-PCC decoder 300 may be configured to be based on a max The maximum number of vertical predictors is used to decode the point cloud. max When the value of is greater than 1 (more than one vertical predictor may be used for prediction), the G-PCC encoder 200 may signal a syntax element to the G-PCC decoder 300 to specify which vertical predictor to use for prediction.

[0243] Vertical predictor indication

[0244] The G-PCC encoder 200 may signal a flag to the G-PCC decoder 300 to indicate the use of a vertical predictor. In another example, the PCC encoder 200 and the G-PCC decoder 300 may be configured to add the vertical predictor to a predictor list of prediction candidates. The context selection for the vertical predictor flag may be performed as follows: a single context may be used to decode the vertical predictor flag; or two contexts may be used to decode the vertical predictor flag, wherein the context is selected based on whether vertical prediction was used to predict a previous coding point.

[0245] Indication of vertical prediction mode

[0246] When there is more than one vertical predictor for the current point, the G-PCC encoder 200 may signal a mode value to the G-PCC decoder 300 to indicate which predictor to use for prediction. The mode value may be an index into a predictor list indicating the vertical predictor to be used.

[0247] Example Implementations

[0248] The following example describes the use of a vertical predictor in an intra prediction mechanism. The G-PCC encoder 200 and the G-PCC decoder 300 may derive the vertical predictor from the neighboring laser IDs as described above. The G-PCC encoder 200 may signal a flag to the G-PCC decoder 300 to indicate the use of the vertical predictor.

[0249] The G-PCC encoder 200 and the G-PCC decoder 300 may determine the pivot laser ID as the laser ID L of the previously decoded point. The G-PCC encoder 200 and the G-PCC decoder 300 may determine the laser ID list as [L+1, L-1]. In this example, only one vertical predictor is used for any point. Therefore: if there is a vertical predictor corresponding to the laser ID entry L+1, it is used as the vertical predictor; if there is a vertical predictor corresponding to the laser ID entry L-1, it is used as the vertical predictor; otherwise (e.g., vertical predictors corresponding to laser ID entries L+1 and L-1 do not exist), no vertical predictor can be used for the current point.

[0250] The G-PCC encoder 200 and the G-PCC decoder 300 may determine the pivot azimuth value as the azimuth of the previously decoded point. The G-PCC encoder 200 signals the vertical predictor azimuth scaling value in the bitstream. The G-PCC decoder 300 uses the vertical predictor azimuth scaling value to derive a first pivot azimuth index. The second azimuth index is selected to be the same as the first pivot index. The predictor index is selected to be the smallest azimuth index azimIdx greater than the second azimuth index sm, such that there is a laser ID list entry with a laser ID equal to the vertical predictor laser ID list entry and with a laser ID list entry equal to azimIdx sm The previously decoded point of the scaled azimuth.

[0251] Fig.19 is a flow chart illustrating an example encoding technique. Fig.19 The technique may be performed by a G-PCC encoder 200, which includes Figure 5 The prediction tree construction unit 207 and the vertical predictor unit 209 are provided.

[0252] In one example of the present disclosure, the G-PCC encoder 200 may first determine whether to use vertical prediction (1500). If so, the G-PCC encoder 200 may determine a predictor laser ID list (1502) using a combination of the above techniques. The G-PCC encoder 200 may then select a laser index L corresponding to the vertical predictor from the laser ID list. The G-PCC encoder 200 may then determine a pivot azimuth value (1506).

[0253] Next, the G-PCC encoder 200 may determine a first pivot azimuth index by scaling the pivot azimuth value (1508). The G-PCC encoder 200 may then determine a second pivot azimuth index based on the first azimuth index (1510). The G-PCC encoder 200 may then determine a predictor index based on the second pivot index (1512).

[0254] The G-PCC encoder 200 may then determine a predictor value (e.g., a vertical predictor) based on the predictor index and the laser index L (1514). The G-PCC encoder 200 may then use the predictor (e.g., a vertical predictor) to predict one or more coordinates of the current point (1516). The G-PCC encoder 200 may signal a syntax element indicating that vertical prediction is used to the G-PCC decoder 300 (1518). If more than one vertical predictor is applicable, the G-PCC encoder 200 may further signal another syntax element indicating a mode of the predictor.

[0255] Fig. 20 is a flow chart illustrating an example decoding technique. Fig. 20 The technique may be performed by a G-PCC decoder 300, which includes Figure 7 The prediction tree synthesis unit 307 and the vertical predictor unit 309 are provided.

[0256] The G-PCC decoder 300 may decode a syntax element indicating that vertical prediction is used to code the current point ( 1550 ). If more than one vertical predictor is applicable, the G-PCC decoder 300 may further decode another syntax element indicating a mode of a predictor.

[0257] The G-PCC decoder 300 may then use a combination of the above techniques to determine a predictor laser ID list (1554). The G-PCC decoder 300 may then select a laser index L corresponding to the vertical predictor from the laser ID list based on the predictor mode (1556). The G-PCC decoder 300 may then determine a pivot azimuth angle value (1558).

[0258] Next, the G-PCC decoder 300 may determine a first pivot azimuth index by scaling the pivot azimuth value (1560). The G-PCC decoder 300 may then determine a second pivot azimuth index based on the first azimuth index (1562). The G-PCC decoder 300 may then determine a predictor index based on the second pivot index (1564).

[0259] The G-PCC decoder 300 may then determine a predictor value (eg, a vertical predictor) based on the predictor index and the laser index L (1566). The G-PCC decoder 300 may then use the predictor (eg, the vertical predictor) to predict one or more coordinates of the current point (1568).

[0260] Fig.21 is a flow chart illustrating another example encoding technique of the present disclosure. Fig.21 The technique may be performed by the G-PCC encoder 200 including a prediction tree construction unit 207 and a vertical predictor unit 209.

[0261] According to the above technology, the G-PCC encoder 200 can be configured to determine a pivot laser ID (1600), determine a vertical predictor (1610) for a current point of the point cloud data, wherein the vertical predictor is based on a second point (1610) having a second laser ID different from the pivot laser ID, and encode the current point (1620) using the vertical predictor and the predicted geometry encoding.

[0262] To determine the pivot laser ID, the G-PCC encoder 200 may be configured to determine the pivot laser ID as the laser ID of the previously encoded point. In another example, the G-PCC encoder 200 may be configured to determine the pivot laser ID as the laser ID of the current point.

[0263] In another example, the G-PCC encoder 200 can be configured to determine a predictor laser ID list based on the pivot laser ID, wherein the predictor laser ID list includes a plurality of laser IDs including the second laser ID. In one example, the predictor laser ID list includes at least one laser ID above the pivot laser ID and at least one laser ID below the pivot laser ID.

[0264] In another example, to determine the vertical predictor, the G-PCC encoder 200 may be configured to determine a corresponding vertical predictor for each of a plurality of laser IDs in a predictor laser ID list, determine the vertical predictor to be a first corresponding vertical predictor associated with a laser ID directly above the pivot laser ID, or determine the vertical predictor to be a second corresponding vertical predictor associated with a laser ID directly below the pivot laser ID based on the first corresponding vertical predictor being unavailable, or determine that no vertical predictor is available based on the first corresponding vertical predictor being unavailable and the second corresponding vertical predictor being unavailable.

[0265] To determine the predictor laser ID list, the G-PCC encoder 200 may be configured to determine whether any laser ID in the predictor laser ID list is outside the laser ID range, and remove any laser ID outside the laser ID range from the predictor laser ID list. In another example, to determine a vertical predictor for a current point, the G-PCC encoder 200 may be configured to determine a pivot azimuth value, scale the pivot azimuth value to obtain a first pivot azimuth index, determine a second azimuth index based on the first pivot azimuth index, determine a predictor azimuth index based on the second azimuth index, and determine a vertical predictor based on the predictor azimuth index.

[0266] In one example, to determine the pivot azimuth value, the G-PCC encoder 200 may be configured to determine the pivot azimuth value based on one of the azimuth of a previously encoded point, the azimuth of a current point, an estimate of the azimuth of a previously encoded point, or an estimate of the azimuth of a current point.

[0267] In one example, to scale the pivot azimuth value, the G-PCC encoder 200 may be configured to scale the pivot azimuth value using the vertical predictor azimuth scaling value to obtain a first pivot azimuth index, and encode a syntax element indicating the vertical predictor azimuth scaling value.

[0268] In another example, to determine the vertical predictor based on the predictor azimuth index, the G-PCC encoder 200 may be configured to determine the vertical predictor as a previously coded point having the second laser ID and an azimuth index equal to the predictor azimuth index.

[0269] In another example, the pivot azimuth value corresponds to the azimuth of the previously decoded point. In this example, to determine the predictor azimuth index based on the second azimuth index, the G-PCC encoder 200 may be configured to set the predictor azimuth index equal to a minimum index value that is greater than the value of the second azimuth index for which there is a point associated with the second laser ID.

[0270] In order to encode the current point using the vertical predictor and predictive geometry coding, the G-PCC encoder 200 can be configured to determine a coordinate value of the current point, wherein the coordinate value of the current point is in a spherical domain and includes a radius, determine a coordinate value of the vertical predictor, wherein the coordinate value of the vertical predictor is in a spherical domain and includes a vertical predictor radius, and subtract the coordinate value of the vertical predictor from the coordinate value of the current point to obtain a residual value of the current point. In order to subtract the coordinate value of the vertical predictor from the coordinate value of the current point, one or more processors are further configured to cause the device to subtract the vertical predictor radius from the radius and encode the residual value. The G-PCC encoder 200 can also be configured to convert the current point from a Cartesian domain to a spherical domain to obtain the coordinate value of the current point.

[0271] Fig. 22 is a flow chart illustrating another example decoding technique of the present disclosure. Fig.21 The technique may be performed by the G-PCC decoder 300 including a prediction tree synthesis unit 307 and a vertical predictor unit 309.

[0272] According to the above techniques, the G-PCC decoder 300 can be configured to determine a pivot laser ID (1650), determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID (1660), and decode the current point using the vertical predictor and the predicted geometry decoding (1670).

[0273] To determine the pivot laser ID, the G-PCC decoder 300 may be configured to determine the pivot laser ID as the laser ID of the previously decoded point. In another example, the G-PCC decoder 300 may be configured to determine the pivot laser ID as the laser ID of the current point.

[0274] In another example, the G-PCC decoder 300 can be configured to determine a predictor laser ID list based on the pivot laser ID, wherein the predictor laser ID list includes a plurality of laser IDs including the second laser ID. In one example, the predictor laser ID list includes at least one laser ID above the pivot laser ID and at least one laser ID below the pivot laser ID.

[0275] In another example, to determine the vertical predictor, the G-PCC decoder 300 may be configured to determine a corresponding vertical predictor for each of a plurality of laser IDs in the predictor laser ID list, determine the vertical predictor to be a first corresponding vertical predictor associated with a laser ID directly above the pivot laser ID, or determine the vertical predictor to be a second corresponding vertical predictor associated with a laser ID directly below the pivot laser ID based on the first corresponding vertical predictor being unavailable, or determine that no vertical predictor is available based on the first corresponding vertical predictor being unavailable and the second corresponding vertical predictor being unavailable.

[0276] To determine the predictor laser ID list, the G-PCC decoder 300 may be configured to determine whether any laser ID in the predictor laser ID list is outside the laser ID range, and remove any laser ID outside the laser ID range from the predictor laser ID list. In another example, to determine a vertical predictor for a current point, the G-PCC decoder 300 may be configured to determine a pivot azimuth value, scale the pivot azimuth value to obtain a first pivot azimuth index, determine a second azimuth index based on the first pivot azimuth index, determine a predictor azimuth index based on the second azimuth index, and determine a vertical predictor based on the predictor azimuth index.

[0277] In one example, to determine the pivot azimuth value, the G-PCC decoder 300 may be configured to determine the pivot azimuth value based on one of the azimuth of a previously decoded point, the azimuth of a current point, an estimate of the azimuth of a previously decoded point, or an estimate of the azimuth of a current point.

[0278] In one example, to scale the pivot azimuth value, the G-PCC decoder 300 may be configured to receive a vertical predictor azimuth scaling value and scale the pivot azimuth value using the vertical predictor azimuth scaling value to obtain a first pivot azimuth index.

[0279] In another example, to determine the vertical predictor based on the predictor azimuth index, the G-PCC decoder 300 may be configured to determine the vertical predictor as a previous coded point having the second laser ID and an azimuth index equal to the predictor azimuth index.

[0280] In another example, the pivot azimuth value corresponds to the azimuth of the previously decoded point. In this example, to determine the predictor azimuth index based on the second azimuth index, the G-PCC decoder 300 can be configured to set the predictor azimuth index equal to a minimum index value that is greater than the value of the second azimuth index for which there is a point associated with the second laser ID.

[0281] In another example, in order to decode the current point using the vertical predictor and the prediction geometry decoding, the G-PCC decoder 300 is configured to decode the residual coordinate value of the current point, wherein the residual coordinate value is in the spherical domain and includes the residual radius, determine the coordinate value of the vertical predictor, wherein the coordinate value of the vertical predictor is in the spherical domain and includes the vertical predictor radius, and add the coordinate value of the vertical predictor to the residual coordinate value to obtain the reconstructed current point. In order to add the coordinate value of the vertical predictor to the residual coordinate value, the one or more processors are also configured to cause the device to add the residual radius to the vertical predictor radius. The G-PCC decoder 300 can also be configured to convert the reconstructed current point from the spherical domain to the Cartesian domain.

[0282] Fig.23 1700 is a conceptual diagram illustrating an example ranging system that can be used with one or more techniques of the present disclosure to decode point cloud data using predictive geometry coding and a vertical predictor. Fig.23 In the example of , ranging system 1700 includes illuminator 1702 and sensor 1704. Illuminator 1702 can emit light 1706. In some examples, illuminator 1702 can emit light 1706 as one or more laser beams. Light 1706 can have one or more wavelengths, such as infrared wavelengths or visible light wavelengths. In other examples, light 1706 is not a coherent laser. When light 1706 encounters an object, such as object 1708, light 1706 produces return light 1710. Return light 1710 may include backscattered light and / or reflected light. Return light 1710 may pass through lens 1711, which guides return light 1710 to create an image 1712 of object 1708 on sensor 1704. Sensor 1704 generates signal 1714 based on image 1712. Image 1712 may include a set of points (e.g., such as Fig.23 1712).

[0283] In some examples, illuminator 1702 and sensor 1704 can be mounted on a rotating structure so that illuminator 1702 and sensor 1704 capture a 360 degree view of the environment (e.g., a rotating LIDAR sensor). In other examples, ranging system 1700 can include one or more optical components (e.g., mirrors, collimators, diffraction gratings, etc.) that enable illuminator 1702 and sensor 1704 to detect the range of objects within a certain range (e.g., up to 360 degrees). Although Fig.23 The example of shows only a single illuminator 1702 and sensor 1704, but the ranging system 1700 may include multiple sets of illuminators and sensors.

[0284] In some examples, the illuminator 1702 generates a structured light pattern. In such an example, the ranging system 1700 may include a plurality of sensors 1704 on which respective images of the structured light pattern are formed. The ranging system 1700 may use differences between the images of the structured light pattern to determine a distance to an object 1708 from which the structured light pattern is backscattered. When the object 1708 is relatively close to the sensor 1704 (e.g., 0.2 meters to 2 meters), the ranging system based on structured light may have a high level of accuracy (e.g., accuracy in the sub-millimeter range). This high level of accuracy may be useful in facial recognition applications such as unlocking a mobile device (e.g., a mobile phone, a tablet computer, etc.) and for security applications.

[0285] In some examples, the ranging system 1700 is a time-of-flight (ToF) based system. In some examples where the ranging system 1700 is a ToF based system, the illuminator 1702 generates a light pulse. In other words, the illuminator 1702 can modulate the amplitude of the emitted light 1706. In such an example, the sensor 1704 detects the return light 1710 from the light pulse 1706 generated by the illuminator 1702. The ranging system 1700 can then determine the distance to the object 1708 from which the light 1706 was backscattered based on the delay between the time when the light 1706 was emitted and detected and the known speed of light in air. In some examples, instead of modulating the amplitude of the emitted light 1706 (or in addition to modulating the amplitude of the emitted light 1706), the illuminator 1702 can modulate the phase of the emitted light 1706. In such an example, sensor 1704 can detect the phase of return light 1710 from object 1708 and determine the distance to a point on object 1708 using the speed of light and based on the time difference between the time when illuminator 1702 generates light 1706 at a particular phase and the time when sensor 1704 detects return light 1710 at the particular phase.

[0286] In other examples, the point cloud can be generated without using the illuminator 1702. For example, in some examples, the sensor 1704 of the ranging system 1700 can include two or more optical cameras. In such an example, the ranging system 1700 can use the optical cameras to capture stereo images of the environment (including the object 1708). The ranging system 1700 may include a point cloud generator 1716, which can calculate the disparity between the locations in the stereo images. The ranging system 1700 can then use the disparity to determine the distance to the locations shown in the stereo images. Based on these distances, the point cloud generator 1716 can generate a point cloud.

[0287] Sensor 1704 may also detect other properties of object 1708, such as color and reflectivity information. Fig.23In the example of , the point cloud generator 1716 can generate a point cloud based on the signal 1714 generated by the sensor 1704. The ranging system 1700 and / or the point cloud generator 1716 can form a data source 104 ( Figure 1 ). Therefore, the point cloud generated by the ranging system 1700 can be encoded and / or decoded according to any of the techniques of this disclosure. Inter-frame prediction and residual prediction as described in this disclosure can reduce the size of the encoded data.

[0288] Fig.24 A conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of the present disclosure for coding point cloud data using predictive geometry coding and a vertical predictor may be used. Fig.24 In the example of FIG. 1 , vehicle 1800 includes a ranging system 1802. The ranging system 1802 can be related to Fig.23 Although the Fig.24 , but the vehicle 1800 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 )).exist Fig.24 In the example of FIG. 1 , a range finding system 1802 emits a laser beam 1804 that reflects off a pedestrian 1806 or other object in the road. A data source of vehicle 1800 may generate a point cloud based on the signal generated by the range finding system 1802. A G-PCC encoder of vehicle 1800 may encode the point cloud to generate a bitstream 1808, such as a geometry bitstream ( Figure 2 ) and the attribute bitstream ( Figure 2 ). Inter-frame prediction and residual prediction as described in the present disclosure can reduce the size of the geometry bitstream. The bitstream 1808 may include significantly fewer bits than the unencoded point cloud obtained by the G-PCC encoder.

[0289] The output interface of the vehicle 1800 (eg, the output interface 108 ( Figure 1 )) The bitstream 1808 may be sent to one or more other devices. The bitstream 1808 may include significantly fewer bits than the unencoded point cloud obtained by the G-PCC encoder. Therefore, the vehicle 1800 is able to send the bitstream 1808 to other devices faster than the unencoded point cloud data. In addition, the bitstream 1808 may require less data storage capacity on the device.

[0290] exist Fig.24 In the example of FIG. 1 , vehicle 1800 may send a bitstream 1808 to another vehicle 1810. Vehicle 1810 may include a G-PCC decoder, such as G-PCC decoder 300 ( Figure 1). The G-PCC decoder of vehicle 1810 can decode bitstream 1808 to reconstruct the point cloud. Vehicle 1810 can use the reconstructed point cloud for various purposes. For example, vehicle 1810 can determine that pedestrian 1806 is in the road in front of vehicle 1800 based on the reconstructed point cloud, and thus, for example, begin to slow down even before the driver of vehicle 1810 realizes that pedestrian 1806 is in the road. Therefore, in some examples, vehicle 1810 can perform autonomous navigation operations based on the reconstructed point cloud.

[0291] Additionally or alternatively, the vehicle 1800 may send the bitstream 1808 to the server system 1812. The server system 1812 may use the bitstream 1808 for various purposes. For example, the server system 1812 may store the bitstream 1808 for subsequent reconstruction of the point cloud. In this example, the server system 1812 may use the point cloud along with other data (e.g., vehicle telemetry data generated by the vehicle 1800) to train an autonomous driving system. In other examples, the server system 1812 may store the bitstream 1808 for subsequent reconstruction for a forensic collision investigation.

[0292] Fig.25 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of the present disclosure for decoding point cloud data using predictive geometry decoding and a vertical predictor may be used. Extended reality (XR) is a term used to encompass a range of technologies including augmented reality (AR), mixed reality (MR), and virtual reality (VR). Fig.25 In the example of FIG. 1 , user 1900 is located at a first location 1902. User 1900 wears an XR headset 1904. As an alternative to XR headset 1904, user 1900 may use a mobile device (e.g., a mobile phone, a tablet computer, etc.). XR headset 1904 includes a depth detection sensor, such as a range finding system, that detects the location of a point on object 1906 at location 1902. A data source for XR headset 1904 may use a signal generated by the depth detection sensor to generate a point cloud representation of object 1906 at location 1902. XR headset 1904 may include a G-PCC encoder (e.g., Figure 1 The G-PCC encoder 200 is configured to encode the point cloud to generate a bitstream 1908. The inter-frame prediction and residual prediction as described in the present disclosure can reduce the size of the bitstream 1908.

[0293] The XR headset 1904 may transmit the bitstream 1908 (e.g., via a network such as the Internet) to an XR headset 1910 worn by a user 1912 at a second location 1914. The XR headset 1910 may decode the bitstream 1908 to reconstruct the point cloud. The XR headset 1910 may use the point cloud to generate an XR visualization (e.g., AR, MR, VR visualization) representing an object 1906 at the location 1902. Thus, in some examples, such as when the XR headset 1910 generates a VR visualization, the user 1912 may have a 3D immersive experience of the location 1902. In some examples, the XR headset 1910 may determine the location of a virtual object based on the reconstructed point cloud. For example, the XR headset 1910 may determine that the environment (e.g., location 1902) includes a flat surface based on the reconstructed point cloud, and then determine that the virtual object (e.g., a cartoon character) is to be positioned on the flat surface. The XR headset 1910 may generate an XR visualization in which the virtual object is at the determined location. For example, the XR headset 1910 may show a cartoon character sitting on a flat surface.

[0294] Fig.26 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of the present disclosure for coding point cloud data using predictive geometry coding and a vertical predictor may be used. Fig.26 In an example of the present invention, a mobile device 2000 (e.g., a wireless communication device) such as a mobile phone or tablet computer includes a range finding system, such as a LIDAR system, which detects the location of points on an object 2002 in the environment of the mobile device 2000. A data source of the mobile device 2000 may use a signal generated by a depth detection sensor to generate a point cloud representation of the object 2002. The mobile device 2000 may include a G-PCC encoder (e.g., Figure 1 A G-PCC encoder 200 is configured to encode the point cloud to generate a bitstream 2004. Fig.26In an example, the mobile device 2000 can send a bitstream to a remote device 2006 (e.g., a server system or other mobile device). Inter-frame prediction and residual prediction as described in the present disclosure can reduce the size of the bitstream 2004. The remote device 2006 can decode the bitstream 2004 to reconstruct the point cloud. The remote device 2006 can use the point cloud for various purposes. For example, the remote device 2006 can use the point cloud to generate a map of the environment of the mobile device 2000. For example, the remote device 2006 can generate a map of the interior of a building based on the reconstructed point cloud. In another example, the remote device 2006 can generate an image (e.g., computer graphics) based on the point cloud. For example, the remote device 2006 can use the points of the point cloud as the vertices of a polygon, and use the color attributes of the points as the basis for coloring the polygon. In some examples, the remote device 2006 can use the reconstructed point cloud for facial recognition or other security applications.

[0295] The examples in various aspects of this disclosure may be used alone or in any combination.

[0296] This disclosure includes the following non-limiting terms.

[0297] Clause 1A. A method of processing point cloud data, the method comprising: determining a first laser ID of a first point of the point cloud data, the first point comprising a current point or a previously decoded point; determining a predictor laser ID list based on the first laser ID of the first point; and determining whether any laser ID in the predictor laser ID list is between 0 and L. max -1 outside the laser ID range, where L max is the maximum number of lasers in the LIDAR system; removing any laser IDs in the predictor laser ID list that are outside the laser ID range; and processing the point cloud data based on the predictor laser ID list.

[0298] Clause 2A. The method as described in Clause 1A also includes: determining that the number of entries in the predictor laser ID list is greater than the maximum number of entries in the predictor laser ID list; and based on the determination that the number of entries in the predictor laser ID list is greater than the maximum number of entries in the predictor laser ID list, removing one or more entries at the end of the predictor laser ID list until the number of entries in the predictor laser ID list is no greater than the maximum number of entries in the predictor laser ID list.

[0299] Clause 3A. The method of Clause 1A or Clause 2A, further comprising: for each laser ID in the predictor laser ID list, deriving a corresponding vertical predictor.

[0300] Clause 4A. A method according to clause 3A, wherein deriving a corresponding vertical predictor includes, for a first point having a first laser ID: determining a pivot azimuth value, the pivot azimuth value including the azimuth of the current point, an estimate of the azimuth of the current point, the azimuth of a previously decoded point, or an estimate of the azimuth of a previously decoded point; determining a first pivot azimuth index by scaling the pivot azimuth value; determining a second azimuth index based on the value of the first pivot azimuth index; determining a predictor azimuth index based on the value of the second azimuth index; and determining the vertical predictor to be a previously decoded point having the first laser ID and an azimuth index equal to the predicted value azimuth index.

[0301] Clause 5A. The method of clause 4A, wherein the pivot azimuth value corresponds to an azimuth of the current point, and wherein determining the predictor azimuth index based on the value of a second pivot azimuth index comprises setting the predictor azimuth index equal to the value of the second azimuth index.

[0302] Clause 6A. A method according to clause 4A, wherein the pivot azimuth value corresponds to the azimuth of the current point, and wherein determining the predictor azimuth index based on the value of the second pivot azimuth index includes setting the predictor azimuth index equal to a minimum azimuth index value, the minimum azimuth index value being greater than or equal to the value of the second azimuth index.

[0303] Clause 7A. A method as described in clause 4A, wherein the pivot azimuth value corresponds to the azimuth of a previously decoded point, and wherein determining the predictor azimuth index based on the value of the second pivot azimuth index includes setting the predictor azimuth index to an index value equal to a value greater than the value of the second azimuth index.

[0304] Clause 8A. A method according to clause 4A, wherein the pivot azimuth value corresponds to the azimuth of a previously decoded point, and wherein determining the predictor azimuth index based on the value of the second pivot azimuth index includes setting the predictor azimuth index equal to a minimum index value, the minimum index value is greater than the value of the second azimuth index, and for the minimum index value, there is a point associated with the first laser ID and a minimum index value that is greater than the value of the second azimuth index.

[0305] Clause 9A. A method according to clause 4A, wherein the pivot azimuth value corresponds to the azimuth of a previously decoded point, and wherein determining the predictor azimuth index based on the value of a second pivot azimuth index includes setting the predictor azimuth index equal to a second minimum index value, the second minimum index value is greater than the value of the second azimuth index, and for the second minimum index value, there is a point associated with the first laser ID and a second minimum index value that is greater than the value of the second azimuth index.

[0306] Clause 10A. A method according to clause 4A, wherein the pivot azimuth value corresponds to the azimuth of a previously decoded point, and wherein determining the predictor azimuth index based on the value of the second pivot azimuth index includes setting the predictor azimuth index equal to a maximum index value, the maximum index value is less than the value of the second azimuth index, and for the maximum index value, there is a point associated with the first laser ID and a maximum index value that is less than the value of the second azimuth index.

[0307] Clause 11A. The method of Clause 3A, wherein deriving the corresponding vertical predictor comprises, for a first point having a first laser ID: determining a plurality of predictor azimuth index values; and determining the vertical predictor based on a weighted average or applying linear interpolation to a plurality of previously decoded points.

[0308] Clause 12A. The method of any of Clauses 1A-11A, further comprising generating a point cloud.

[0309] Clause 13A. An apparatus for processing a point cloud, the apparatus comprising one or more components for performing the method of any of Clauses 1A-12A.

[0310] Clause 14A. The apparatus of Clause 13A, wherein the one or more components include one or more processors implemented in circuitry.

[0311] Clause 15A. The apparatus of any of Clauses 13A or 14A, further comprising a memory for storing data representing the point cloud.

[0312] Clause 16A. The apparatus of any of clauses 13A-15A, wherein the apparatus comprises a decoder.

[0313] Clause 17A. The apparatus of any of clauses 13A-16A, wherein the apparatus comprises an encoder.

[0314] Clause 18A. The apparatus of any of Clauses 13A to 17A, further comprising a device for generating a point cloud.

[0315] Clause 19A. The apparatus of any of Clauses 13A to 18A, further comprising a display for presenting an image based on the point cloud.

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

[0317] Item 1B. A device configured to decode point cloud data, the device comprising: a memory; and one or more processors coupled to the memory, the one or more processors configured to cause the device to: determine a pivot laser ID; determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID; and decode the current point using the vertical predictor and predicted geometry decoding.

[0318] Clause 2B. The device of clause 1B, wherein to determine the pivot laser ID, the one or more processors are further configured to cause the device to: determine the pivot laser ID as the laser ID of a previous decode point.

[0319] Clause 3B. The apparatus of clause 1B, wherein to determine the pivot laser ID, the one or more processors are further configured to cause the apparatus to: determine the pivot laser ID as the laser ID of the current point.

[0320] Clause 4B. The apparatus of clause 1B, wherein the one or more processors are further configured to cause the apparatus to: determine a predictor laser ID list based on the pivot laser ID, wherein the predictor laser ID list includes a plurality of laser IDs, the plurality of laser IDs including the second laser ID.

[0321] Clause 5B. The apparatus of clause 4B, wherein the predictor laser ID list includes at least one laser ID above the pivot laser ID and at least one laser ID below the pivot laser ID.

[0322] Clause 6B. An apparatus as described in clause 5B, wherein, to determine the vertical predictor, the one or more processors are further configured to cause the apparatus to: determine a corresponding vertical predictor for each of a plurality of laser IDs in the predictor laser ID list; determine the vertical predictor as a first corresponding vertical predictor associated with a laser ID directly above the pivot laser ID; or based on the first corresponding vertical predictor being unavailable, determine the vertical predictor as a second corresponding vertical predictor associated with a laser ID directly below the pivot laser ID; or based on the first corresponding vertical predictor being unavailable and the second corresponding vertical predictor being unavailable, determine that no vertical predictor is available.

[0323] Clause 7B. The apparatus of clause 4B, wherein to determine the predictor laser ID list, the one or more processors are further configured to cause the apparatus to:

[0324] determining whether any laser ID in the predictor laser ID list is outside of a laser ID range; and removing any laser ID outside of the laser ID range from the predictor laser ID list.

[0325] Clause 8B. An apparatus as described in any of clauses 1B-7B, wherein, in order to determine a vertical predictor for a current point, one or more processors are further configured to cause the apparatus to: determine a pivot azimuth value; scale the pivot azimuth value to obtain a first pivot azimuth index; determine a second azimuth index based on the first pivot azimuth index; determine a predictor azimuth index based on the second azimuth index; and determine a vertical predictor based on the predictor azimuth index.

[0326] Item 9B. An apparatus as described in Item 8B, wherein, in order to determine the pivot azimuth value, one or more processors are further configured to enable the apparatus to: determine the pivot azimuth value based on one of the azimuth of a previously decoded point, the azimuth of a current point, an estimate of the azimuth of a previously decoded point, or an estimate of the azimuth of the current point.

[0327] Clause 10B. An apparatus as described in clause 8B, wherein to scale the pivot azimuth value, the one or more processors are further configured to cause the apparatus to: receive a vertical predictor azimuth scaling value; and scale the pivot azimuth value using the vertical predictor azimuth scaling value to obtain a first pivot azimuth index.

[0328] Clause 11B. The apparatus of clause 8B, wherein to determine the vertical predictor based on the predictor azimuth index, the one or more processors are further configured to cause the apparatus to: determine the vertical predictor as a previously decoded point having the second laser ID and an azimuth index equal to the predictor azimuth index.

[0329] Clause 12B. An apparatus as described in clause 8B, wherein the pivot azimuth value corresponds to the azimuth of a previously decoded point, and wherein to determine the predictor azimuth index based on the second azimuth index, the one or more processors are further configured to cause the apparatus to: set the predictor azimuth index equal to a minimum index value that is greater than the value of the second azimuth index for which there is a point associated with the second laser ID.

[0330] Clause 13B. An apparatus according to any of clauses 1B-12B, wherein to decode a current point using a vertical predictor and predicted geometry decoding, the one or more processors are further configured to cause the apparatus to: decode residual coordinate values ​​of the current point, wherein the residual coordinate values ​​are in a spherical domain and include a residual radius; determine coordinate values ​​of the vertical predictor, wherein the coordinate values ​​of the vertical predictor are in a spherical domain and include a vertical predictor radius; and add the coordinate values ​​of the vertical predictor to the residual coordinate values ​​to obtain a reconstructed current point, wherein to add the coordinate values ​​of the vertical predictor to the residual coordinate values, the one or more processors are further configured to cause the apparatus to add the residual radius to the vertical predictor radius.

[0331] Clause 14B. The apparatus of clause 13B, wherein the one or more processors are further configured to cause the apparatus to: transform the reconstructed current point from a spherical domain to a Cartesian domain.

[0332] Clause 15B. The apparatus of Clause 13B, further comprising a display configured to present an image based on the reconstructed current point.

[0333] Item 16B. A device configured to encode point cloud data, the device comprising: a memory; and one or more processors coupled to the memory, the one or more processors configured to cause the device to: determine a pivot laser ID; determine a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID; and encode the current point using the vertical predictor and a predicted geometry encoding.

[0334] Clause 17B. The apparatus of clause 16B, wherein to determine the pivot laser ID, the one or more processors are further configured to cause the apparatus to: determine the pivot laser ID as the laser ID of the previous encoding point.

[0335] Clause 18B. The apparatus of clause 16B, wherein to determine the pivot laser ID, the one or more processors are further configured to cause the apparatus to: determine the pivot laser ID as the laser ID of the current point.

[0336] Clause 19B. The apparatus of clause 16B, wherein the one or more processors are further configured to cause the apparatus to: determine a predictor laser ID list based on the pivot laser ID, wherein the predictor laser ID list includes a plurality of laser IDs, the plurality of laser IDs including the second laser ID.

[0337] Clause 20B. The apparatus of clause 19B, wherein the predictor laser ID list includes at least one laser ID above the pivot laser ID and at least one laser ID below the pivot laser ID.

[0338] Clause 21B. An apparatus as described in clause 20B, wherein, to determine the vertical predictor, the one or more processors are further configured to cause the apparatus to: determine a corresponding vertical predictor for each of a plurality of laser IDs in a predictor laser ID list; determine the vertical predictor as a first corresponding vertical predictor associated with a laser ID directly above the pivot laser ID; or based on the first corresponding vertical predictor being unavailable, determine the vertical predictor as a second corresponding vertical predictor associated with a laser ID directly below the pivot laser ID; or based on the first corresponding vertical predictor being unavailable and the second corresponding vertical predictor being unavailable, determine that no vertical predictor is available.

[0339] Clause 22B. The apparatus of clause 19B, wherein to determine the predictor laser ID list, the one or more processors are further configured to cause the apparatus to:

[0340] Determining whether any laser ID in the predictor laser ID list is outside the laser ID range; and removing any laser ID outside the laser ID range from the predictor laser ID list.

[0341] Clause 23B. An apparatus as described in any of clauses 16B-22B, wherein, in order to determine a vertical predictor for a current point, one or more processors are further configured to cause the apparatus to: determine a pivot azimuth value; scale the pivot azimuth value to obtain a first pivot azimuth index; determine a second azimuth index based on the first pivot azimuth index; determine a predictor azimuth index based on the second azimuth index; and determine a vertical predictor based on the predictor azimuth index.

[0342] Item 24B. An apparatus as described in Item 23B, wherein, in order to determine the pivot azimuth value, one or more processors are further configured to enable the apparatus to: determine the pivot azimuth value based on one of the azimuth of a previously encoded point, the azimuth of a current point, an estimate of the azimuth of a previously encoded point, or an estimate of the azimuth of the current point.

[0343] Clause 25B. A device according to clause 23B, wherein to scale the pivot azimuth value, the one or more processors are further configured to cause the device to: scale the pivot azimuth value using a vertical predictor azimuth scaling value to obtain a first pivot azimuth index; and encode a syntax element indicating the vertical predictor azimuth scaling value.

[0344] Clause 26B. The apparatus of clause 23B, wherein to determine the vertical predictor based on the predictor azimuth index, the one or more processors are further configured to cause the apparatus to: determine the vertical predictor as a previously decoded point having the second laser ID and an azimuth index equal to the predictor azimuth index.

[0345] Clause 27B. An apparatus as described in clause 23B, wherein the pivot azimuth value corresponds to the azimuth of a previously decoded point, and wherein to determine the predictor azimuth index based on the second azimuth index, the one or more processors are further configured to cause the apparatus to: set the predictor azimuth index equal to a minimum index value that is greater than the value of the second azimuth index for which there is a point associated with the second laser ID.

[0346] Clause 28B. A device according to any of clauses 16B-27B, wherein to encode a current point using a vertical predictor and predictive geometry coding, the one or more processors are further configured to cause the device to: determine a coordinate value of the current point, wherein the coordinate value of the current point is in a spherical domain and includes a radius; determine a coordinate value of the vertical predictor, wherein the coordinate value of the vertical predictor is in a spherical domain and includes a vertical predictor radius; subtract the coordinate value of the vertical predictor from the coordinate value of the current point to obtain a residual value for the current point, wherein to subtract the coordinate value of the vertical predictor from the coordinate value of the current point, the one or more processors are further configured to cause the device to subtract the vertical predictor radius from the radius; and encode the residual value.

[0347] Clause 29B. The apparatus of Clause 28B, wherein the one or more processors are further configured to cause the apparatus to: transform the current point from a Cartesian domain to a spherical domain to obtain coordinate values ​​of the current point.

[0348] Clause 30B. The apparatus of clause 16, further comprising a sensor configured to capture point cloud data.

[0349] Item 31B. A method for decoding point cloud data, the method comprising: determining a pivot laser ID; determining a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID; and decoding the current point using the vertical predictor and predicted geometry decoding.

[0350] Clause 32B. The method of clause 31B, wherein determining the pivot laser ID comprises determining the pivot laser ID as the laser ID of a previous decode point.

[0351] Clause 33B. The method of clause 31B, wherein determining the pivot laser ID comprises determining the pivot laser ID as the laser ID of the current point.

[0352] Clause 34B. The method of clause 31B, further comprising: determining a predictor laser ID list based on the pivot laser ID, wherein the predictor laser ID list includes a plurality of laser IDs including the second laser ID.

[0353] Clause 35B. The method of clause 34B, wherein the predictor laser ID list includes at least one laser ID above the pivot laser ID and at least one laser ID below the pivot laser ID.

[0354] Clause 36B. A method according to clause 35B, wherein determining the vertical predictor includes: determining a corresponding vertical predictor for each of a plurality of laser IDs in a predictor laser ID list; determining the vertical predictor as a first corresponding vertical predictor associated with a laser ID directly above a pivot laser ID; or based on the first corresponding vertical predictor being unavailable, determining the vertical predictor as a second corresponding vertical predictor associated with a laser ID directly below the pivot laser ID; or based on the first corresponding vertical predictor being unavailable and the second corresponding vertical predictor being unavailable, determining that no vertical predictor is available.

[0355] Clause 37B. The method of clause 34B, wherein determining the predictor laser ID list comprises: determining whether any laser ID in the predictor laser ID list is outside of a laser ID range; and removing any laser ID outside of the laser ID range from the predictor laser ID list.

[0356] Clause 38B. A method according to any of clauses 31B-37B, wherein determining a vertical predictor for a current point comprises: determining a pivot azimuth value; scaling the pivot azimuth value to obtain a first pivot azimuth index; determining a second azimuth index based on the first pivot azimuth index; determining a predictor azimuth index based on the second azimuth index; and determining a vertical predictor based on the predictor azimuth index.

[0357] Clause 39B. The method of clause 38B, wherein determining the pivot azimuth value comprises determining the pivot azimuth value from one of an azimuth of a previously decoded point, an azimuth of the current point, an estimate of an azimuth of a previously decoded point, or an estimate of an azimuth of the current point.

[0358] Clause 40B. The method of clause 38B, wherein scaling the pivot azimuth value comprises: receiving a vertical predictor azimuth scaling value; and scaling the pivot azimuth value using the vertical predictor azimuth scaling value to obtain a first pivot azimuth index.

[0359] Clause 41B. The method of clause 38B, wherein determining the vertical predictor based on the predictor azimuth index comprises determining the vertical predictor as a previously decoded point having the second laser ID and an azimuth index equal to the predictor azimuth index.

[0360] Clause 42B. A method according to clause 38B, wherein the pivot azimuth value corresponds to the azimuth of a previously decoded point, and wherein determining the predictor azimuth index based on the second azimuth index includes: setting the predictor azimuth index equal to a minimum index value, the minimum index value being greater than the value of the second azimuth index for which there is a point associated with the second laser ID.

[0361] Clause 43B. The method of any of clauses 31B-42B, wherein decoding the current point using a vertical predictor and predicted geometry decoding comprises: decoding a residual coordinate value of the current point, wherein the residual coordinate value is in a spherical domain and includes a residual radius; determining a coordinate value of the vertical predictor, wherein the coordinate value of the vertical predictor is in a spherical domain and includes a vertical predictor radius; and adding the coordinate value of the vertical predictor to the residual coordinate value to obtain a reconstructed current point, comprising adding the residual radius to the vertical predictor radius.

[0362] Clause 44B. The method of Clause 43B, further comprising: transforming the reconstructed current point from the spherical domain to the Cartesian domain.

[0363] Clause 45B. The method of Clause 43B, further comprising: displaying the image based on the reconstructed current point.

[0364] Item 46B. A method for encoding point cloud data, the method comprising: determining a pivot laser ID; determining a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID; and encoding the current point using the vertical predictor and a predicted geometry encoding.

[0365] Clause 47B. The method of clause 46B, wherein determining the pivot laser ID comprises determining the pivot laser ID as the laser ID of a previous encoding point.

[0366] Clause 48B. The method of clause 46B, wherein determining the pivot laser ID comprises determining the pivot laser ID as the laser ID of the current point.

[0367] Clause 49B. The method of clause 46B, further comprising: determining a predictor laser ID list based on the pivot laser ID, wherein the predictor laser ID list includes a plurality of laser IDs, the plurality of laser IDs including the second laser ID.

[0368] Clause 50B. The method of clause 49B, wherein the predictor laser ID list includes at least one laser ID above the pivot laser ID and at least one laser ID below the pivot laser ID.

[0369] Clause 51B. A method according to clause 50B, wherein determining the vertical predictor includes: determining a corresponding vertical predictor for each of a plurality of laser IDs in a predictor laser ID list; determining the vertical predictor as a first corresponding vertical predictor associated with a laser ID directly above a pivot laser ID; or based on the first corresponding vertical predictor being unavailable, determining the vertical predictor as a second corresponding vertical predictor associated with a laser ID directly below the pivot laser ID; or based on the first corresponding vertical predictor being unavailable and the second corresponding vertical predictor being unavailable, determining that no vertical predictor is available.

[0370] Clause 52B. The method of clause 49B, wherein determining the predictor laser ID list comprises: determining whether any laser ID in the predictor laser ID list is outside of a laser ID range; and removing any laser ID outside of the laser ID range from the predictor laser ID list.

[0371] Clause 53B. A method according to any of clauses 46B-52B, wherein determining a vertical predictor for a current point comprises: determining a pivot azimuth value; scaling the pivot azimuth value to obtain a first pivot azimuth index; determining a second azimuth index based on the first pivot azimuth index; determining a predictor azimuth index based on the second azimuth index; and determining a vertical predictor based on the predictor azimuth index.

[0372] Clause 54B. The method of clause 53B, wherein determining the pivot azimuth value comprises determining the pivot azimuth value based on one of an azimuth of a previously encoded point, an azimuth of the current point, an estimate of an azimuth of a previously encoded point, or an estimate of an azimuth of the current point.

[0373] Clause 55B. The method of clause 53B, wherein scaling the pivot azimuth value comprises: scaling the pivot azimuth value using a vertical predictor azimuth scaling value to obtain a first pivot azimuth index; and encoding a syntax element indicating the vertical predictor azimuth scaling value.

[0374] Clause 56B. The method of clause 53B, wherein determining the vertical predictor based on the predictor azimuth index comprises determining the vertical predictor as a previously decoded point having the second laser ID and an azimuth index equal to the predictor azimuth index.

[0375] Clause 57B. A method according to clause 53B, wherein the pivot azimuth value corresponds to the azimuth of a previously decoded point, and wherein determining the predictor azimuth index based on the second azimuth index includes: setting the predictor azimuth index equal to a minimum index value, the minimum index value being greater than the value of the second azimuth index for which there is a point associated with the second laser ID.

[0376] Clause 58B. The method of any of clauses 46B-527B, wherein encoding the current point using a vertical predictor and predicted geometry coding comprises: determining a coordinate value for the current point, wherein the coordinate value for the current point is in a spherical domain and includes a radius; determining a coordinate value for the vertical predictor, wherein the coordinate value for the vertical predictor is in a spherical domain and includes a vertical predictor radius; subtracting the coordinate value for the vertical predictor from the coordinate value for the current point to obtain a residual value for the current point, comprising subtracting the vertical predictor radius from the radius; and encoding the residual value.

[0377] Clause 59B. The method of Clause 58B, further comprising: transforming the current point from the Cartesian domain to the spherical domain to obtain coordinate values ​​of the current point.

[0378] Clause 60B. The method of clause 46B, further comprising: capturing point cloud data.

[0379] It should be appreciated that, depending on the example, certain actions or events of any of the techniques described herein may be performed in a different order, may be added, combined, or omitted entirely (e.g., not all described actions or events are required to practice the techniques). Furthermore, in some examples, actions or events may be performed simultaneously rather than sequentially, for example, through multithreading, interrupt processing, or multiple processors.

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

[0381] By way of example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage devices, magnetic disk storage devices 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 can be accessed by a computer. In addition, any connection is appropriately referred to as a computer-readable medium. For example, if a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technology (such as infrared, radio, and microwave) is used to transmit instructions from a website, server, or other remote source, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technology (such as infrared, radio, and microwave) is included in the definition of the medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other temporary media, but are actually directed to non-temporary tangible storage media. As used herein, disks and optical disks include compact disks (CDs), laser optical disks, optical optical disks, digital versatile disks (DVDs), floppy disks, and Blu-ray disks, where disks typically reproduce data magnetically, and optical disks reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0382] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, the terms "processor" and "processing circuit" as used herein may refer to any of the aforementioned structures or any other structure suitable for implementing the techniques described herein. In addition, in some aspects, the functionality described herein may be provided in dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined decoder. In addition, these techniques may be fully implemented in one or more circuits or logic elements.

[0383] The techniques of the present disclosure may be implemented in a wide variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chipsets). Various components, modules, or units are described in the present disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily need to be implemented by different hardware units. Specifically, as described above, the various units may be combined in a decoder hardware unit in conjunction with appropriate software and / or firmware, or provided by a collection of interoperable hardware units (including one or more processors as described above).

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

Claims

1. A device configured to decode point cloud data, the device comprising: Memory; as well as one or more processors coupled to the memory, the one or more processors being configured to cause the apparatus to: Determine the pivot laser ID; determining a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID; and The current point is decoded using the vertical predictor and prediction geometry decoding.

2. The device according to claim 1, wherein: To determine the pivot laser ID, the one or more processors are further configured to cause the device to: The pivot laser ID is determined to be the laser ID of the previous decode point.

3. The device according to claim 1, wherein: To determine the pivot laser ID, the one or more processors are further configured to cause the device to: The pivot laser ID is determined as the laser ID of the current point.

4. The device according to claim 1, wherein: The one or more processors are further configured to cause the apparatus to: A predictor laser ID list is determined based on the pivot laser ID, wherein the predictor laser ID list includes a plurality of laser IDs including the second laser ID.

5. The device according to claim 4, wherein: The predictor laser ID list includes at least one laser ID above the pivot laser ID and at least one laser ID below the pivot laser ID.

6. The device according to claim 5, wherein: To determine the vertical predictor, the one or more processors are further configured to cause the apparatus to: determining a corresponding vertical predictor for each of the plurality of laser IDs in the predictor laser ID list; determining the vertical predictor to be a first corresponding vertical predictor associated with the laser ID directly above the pivoting laser ID; or determining the vertical predictor to be a second corresponding vertical predictor associated with the laser ID directly below the pivoting laser ID based on the first corresponding vertical predictor being unavailable; or Based on the first corresponding vertical predictor being unavailable and the second corresponding vertical predictor being unavailable, it is determined that no vertical predictor is available.

7. The device according to claim 4, wherein: To determine the predictor laser ID list, the one or more processors are further configured to cause the apparatus to: determining whether any laser ID in the predictor laser ID list is outside of a laser ID range; as well as Any laser IDs outside the laser ID range are removed from the predictor laser ID list.

8. The device according to claim 1, wherein: To determine the vertical predictor for the current point, the one or more processors are further configured to cause the apparatus to: determining a pivot azimuth value; scaling the pivot azimuth value to obtain a first pivot azimuth index; determining a second azimuth index based on the first pivot azimuth index; determining a predictor azimuth index based on the second azimuth index; and The vertical predictor is determined based on the predictor azimuth index.

9. The device according to claim 8, wherein: To determine the pivot azimuth value, the one or more processors are further configured to cause the apparatus to: The pivot azimuth value is determined from one of an azimuth of a previously decoded point, an azimuth of the current point, an estimate of the azimuth of the previously decoded point, or an estimate of the azimuth of the current point.

10. The device according to claim 8, wherein: To scale the pivot azimuth value, the one or more processors are further configured to cause the apparatus to: receiving a vertical predictor azimuth scaling value; and The pivot azimuth value is scaled using the vertical predictor azimuth scaling value to obtain the first pivot azimuth index.

11. The device according to claim 8, wherein: To determine the vertical predictor based on the predictor azimuth index, the one or more processors are further configured to cause the apparatus to: The vertical predictor is determined to be a previously decoded point having the second laser ID and an azimuth index equal to the predictor azimuth index.

12. The device according to claim 8, wherein: The pivot azimuth value corresponds to an azimuth of a previously decoded point, and wherein, to determine the predictor azimuth index based on the second azimuth index, the one or more processors are further configured to cause the apparatus to: The predictor azimuth index is set equal to a minimum index value that is greater than the value of the second azimuth index for which there is a point associated with the second laser ID.

13. The device according to claim 1, wherein: To decode the current point using the vertical predictor and prediction geometry decoding, the one or more processors are further configured to cause the apparatus to: Decoding a residual coordinate value of the current point, wherein the residual coordinate value is in a spherical domain and includes a residual radius; determining coordinate values ​​of the vertical predictor, wherein the coordinate values ​​of the vertical predictor are in the spherical domain and include a vertical predictor radius; and adding the coordinate value of the vertical predictor to the residual coordinate value to obtain a reconstructed current point, wherein, in order to add the coordinate value of the vertical predictor to the residual coordinate value, the one or more processors are further configured to cause the device to add the residual radius to the vertical predictor radius.

14. The device according to claim 13, wherein: The one or more processors are further configured to cause the apparatus to: The reconstructed current point is transformed from the spherical domain to the Cartesian domain.

15. The apparatus of claim 13, further comprising a display configured to present an image based on the reconstructed current point.

16. A device configured to encode point cloud data, the device comprising: Memory; as well as one or more processors coupled to the memory, the one or more processors being configured to cause the apparatus to: Determine the pivot laser ID; determining a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID; as well as The current point is encoded using the vertical predictor and predictive geometry coding.

17. The device according to claim 16, wherein: To determine the pivot laser ID, the one or more processors are further configured to cause the device to: The pivot laser ID is determined to be the laser ID of the previous encoding point.

18. The device according to claim 16, wherein: To determine the pivot laser ID, the one or more processors are further configured to cause the device to: The pivot laser ID is determined as the laser ID of the current point.

19. The device according to claim 16, wherein: The one or more processors are further configured to cause the apparatus to: A predictor laser ID list is determined based on the pivot laser ID, wherein the predictor laser ID list includes a plurality of laser IDs including the second laser ID.

20. The device according to claim 19, wherein The predictor laser ID list includes at least one laser ID above the pivot laser ID and at least one laser ID below the pivot laser ID.

21. The device according to claim 20, wherein: To determine the vertical predictor, the one or more processors are further configured to cause the apparatus to: determining a corresponding vertical predictor for each of the plurality of laser IDs in the predictor laser ID list; determining the vertical predictor to be a first corresponding vertical predictor associated with the laser ID directly above the pivoting laser ID; or determining the vertical predictor to be a second corresponding vertical predictor associated with the laser ID directly below the pivoting laser ID based on the first corresponding vertical predictor being unavailable; or Based on the first corresponding vertical predictor being unavailable and the second corresponding vertical predictor being unavailable, it is determined that no vertical predictor is available.

22. The device according to claim 19, wherein To determine the predictor laser ID list, the one or more processors are further configured to cause the apparatus to: determining whether any laser ID in the predictor laser ID list is outside of a laser ID range; as well as Any laser IDs outside the laser ID range are removed from the predictor laser ID list.

23. The device according to claim 16, wherein: To determine the vertical predictor for the current point, the one or more processors are further configured to cause the apparatus to: determining a pivot azimuth value; scaling the pivot azimuth value to obtain a first pivot azimuth index; determining a second azimuth index based on the first pivot azimuth index; determining a predictor azimuth index based on the second azimuth index; and The vertical predictor is determined based on the predictor azimuth index.

24. The device according to claim 23, wherein: To determine the pivot azimuth value, the one or more processors are further configured to cause the apparatus to: The pivot azimuth value is determined from one of an azimuth of a previous encoded point, an azimuth of the current point, an estimate of the azimuth of the previous encoded point, or an estimate of the azimuth of the current point.

25. The device according to claim 23, wherein: To scale the pivot azimuth value, the one or more processors are further configured to cause the apparatus to: scaling the pivot azimuth value using a vertical predictor azimuth scaling value to obtain the first pivot azimuth index; and A syntax element indicating the vertical predictor azimuth scaling value is encoded.

26. The device according to claim 23, wherein To determine the vertical predictor based on the predictor azimuth index, the one or more processors are further configured to cause the apparatus to: The vertical predictor is determined to be a previously decoded point having the second laser ID and an azimuth index equal to the predictor azimuth index.

27. The device according to claim 23, wherein: The pivot azimuth value corresponds to an azimuth of a previously decoded point, and wherein, to determine the predictor azimuth index based on the second azimuth index, the one or more processors are further configured to cause the apparatus to: The predictor azimuth index is set equal to a minimum index value that is greater than the value of the second azimuth index for which there is a point associated with the second laser ID.

28. The device according to claim 16, wherein: To encode the current point using the vertical predictor and predictive geometry coding, the one or more processors are further configured to cause the apparatus to: Determining a coordinate value of the current point, wherein the coordinate value of the current point is in a spherical domain and includes a radius; determining coordinate values ​​of the vertical predictor, wherein the coordinate values ​​of the vertical predictor are in the spherical domain and include a vertical predictor radius; subtracting the coordinate value of the vertical predictor from the coordinate value of the current point to obtain a residual value of the current point, wherein, in order to subtract the coordinate value of the vertical predictor from the coordinate value of the current point, the one or more processors are further configured to cause the apparatus to subtract the vertical predictor radius from the radius; and The residual value is encoded.

29. The device according to claim 28, wherein The one or more processors are further configured to cause the apparatus to: The current point is transformed from the Cartesian domain to the spherical domain to obtain a coordinate value of the current point.

30. The apparatus of claim 16, further comprising a sensor configured to capture the point cloud data.

31. A method for decoding point cloud data, the method comprising: Determine the pivot laser ID; determining a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID; as well as The current point is decoded using the vertical predictor and prediction geometry decoding.

32. The method according to claim 31, wherein: Determining the pivot laser ID includes: The pivot laser ID is determined to be the laser ID of the previous decode point.

33. The method according to claim 31, wherein: Determining the pivot laser ID includes: The pivot laser ID is determined as the laser ID of the current point.

34. The method of claim 31 , further comprising: A predictor laser ID list is determined based on the pivot laser ID, wherein the predictor laser ID list includes a plurality of laser IDs including the second laser ID.

35. The method of claim 34, wherein: The predictor laser ID list includes at least one laser ID above the pivot laser ID and at least one laser ID below the pivot laser ID.

36. The method of claim 35, wherein: Determining the vertical predictor comprises: determining a corresponding vertical predictor for each of the plurality of laser IDs in the predictor laser ID list; determining the vertical predictor to be a first corresponding vertical predictor associated with the laser ID directly above the pivoting laser ID; or determining the vertical predictor to be a second corresponding vertical predictor associated with the laser ID directly below the pivoting laser ID based on the first corresponding vertical predictor being unavailable; or Based on the first corresponding vertical predictor being unavailable and the second corresponding vertical predictor being unavailable, it is determined that no vertical predictor is available.

37. The method of claim 34, wherein: Determining the predictor laser ID list includes: determining whether any laser ID in the predictor laser ID list is outside of a laser ID range; and Any laser IDs outside the laser ID range are removed from the predictor laser ID list.

38. The method of claim 31, wherein: Determining the vertical predictor of the current point comprises: determining a pivot azimuth value; scaling the pivot azimuth value to obtain a first pivot azimuth index; determining a second azimuth index based on the first pivot azimuth index; determining a predictor azimuth index based on the second azimuth index; and The vertical predictor is determined based on the predictor azimuth index.

39. The method of claim 38, wherein: Determining the pivot azimuth value includes: The pivot azimuth value is determined from one of an azimuth of a previously decoded point, an azimuth of the current point, an estimate of the azimuth of the previously decoded point, or an estimate of the azimuth of the current point.

40. The method of claim 38, wherein: Scaling the pivot azimuth value includes: receiving a vertical predictor azimuth scaling value; and The pivot azimuth value is scaled using the vertical predictor azimuth scaling value to obtain the first pivot azimuth index.

41. The method of claim 38, wherein: Determining the vertical predictor based on the predictor azimuth index comprises: The vertical predictor is determined to be a previously decoded point having the second laser ID and an azimuth index equal to the predictor azimuth index.

42. The method of claim 38, wherein the pivot azimuth value corresponds to the azimuth of a previous decode point, and wherein, Determining the predictor azimuth index based on the second azimuth index comprises: The predictor azimuth index is set equal to a minimum index value that is greater than the value of the second azimuth index for which there is a point associated with the second laser ID.

43. The method of claim 31, wherein: Decoding the current point using the vertical predictor and prediction geometry decoding comprises: Decoding a residual coordinate value of the current point, wherein the residual coordinate value is in a spherical domain and includes a residual radius; determining coordinate values ​​of the vertical predictor, wherein the coordinate values ​​of the vertical predictor are in the spherical domain and include a vertical predictor radius; and Adding the coordinate value of the vertical predictor to the residual coordinate value to obtain a reconstructed current point includes adding the residual radius to the vertical predictor radius.

44. The method of claim 43, further comprising: The reconstructed current point is transformed from the spherical domain to the Cartesian domain.

45. The method of claim 43, further comprising: An image is displayed based on the reconstructed current point.

46. ​​A method for encoding point cloud data, the method comprising: Determine the pivot laser ID; determining a vertical predictor for a current point of the point cloud data, wherein the vertical predictor is based on a second point having a second laser ID different from the pivot laser ID; as well as The current point is encoded using the vertical predictor and predictive geometry coding.

47. The method of claim 46, wherein: Determining the pivot laser ID includes: The pivot laser ID is determined to be the laser ID of the previous encoding point.

48. The method of claim 46, wherein: Determining the pivot laser ID includes: The pivot laser ID is determined as the laser ID of the current point.

49. The method of claim 46, further comprising: A predictor laser ID list is determined based on the pivot laser ID, wherein the predictor laser ID list includes a plurality of laser IDs including the second laser ID.

50. The method of claim 49, wherein: The predictor laser ID list includes at least one laser ID above the pivot laser ID and at least one laser ID below the pivot laser ID.

51. The method of claim 50, wherein: Determining the vertical predictor comprises: determining a corresponding vertical predictor for each of the plurality of laser IDs in the predictor laser ID list; determining the vertical predictor to be a first corresponding vertical predictor associated with the laser ID directly above the pivoting laser ID; or determining the vertical predictor to be a second corresponding vertical predictor associated with the laser ID directly below the pivoting laser ID based on the first corresponding vertical predictor being unavailable; or Based on the first corresponding vertical predictor being unavailable and the second corresponding vertical predictor being unavailable, it is determined that no vertical predictor is available.

52. The method of claim 49, wherein: Determining the predictor laser ID list includes: determining whether any laser ID in the predictor laser ID list is outside of a laser ID range; and Any laser IDs outside the laser ID range are removed from the predictor laser ID list.

53. The method of claim 46, wherein: Determining the vertical predictor of the current point comprises: determining a pivot azimuth value; scaling the pivot azimuth value to obtain a first pivot azimuth index; determining a second azimuth index based on the first pivot azimuth index; determining a predictor azimuth index based on the second azimuth index; and The vertical predictor is determined based on the predictor azimuth index.

54. The method of claim 53, wherein: Determining the pivot azimuth value includes: The pivot azimuth value is determined from one of an azimuth of a previous encoded point, an azimuth of the current point, an estimate of the azimuth of the previous encoded point, or an estimate of the azimuth of the current point.

55. The method of claim 53, wherein: Scaling the pivot azimuth value includes: scaling the pivot azimuth value using a vertical predictor azimuth scaling value to obtain the first pivot azimuth index; and A syntax element indicating the vertical predictor azimuth scaling value is encoded.

56. The method of claim 53, wherein: Determining the vertical predictor based on the predictor azimuth index comprises: The vertical predictor is determined to be a previously decoded point having the second laser ID and an azimuth index equal to the predictor azimuth index.

57. The method of claim 53, wherein: The pivot azimuth value corresponds to an azimuth of a previously decoded point, and wherein determining the predictor azimuth index based on the second azimuth index comprises: The predictor azimuth index is set equal to a minimum index value that is greater than the value of the second azimuth index for which there is a point associated with the second laser ID.

58. The method of claim 46, wherein: Encoding the current point using the vertical predictor and predictive geometry coding comprises: Determining a coordinate value of the current point, wherein the coordinate value of the current point is in a spherical domain and includes a radius; determining coordinate values ​​of the vertical predictor, wherein the coordinate values ​​of the vertical predictor are in the spherical domain and include a vertical predictor radius; subtracting the coordinate value of the vertical predictor from the coordinate value of the current point to obtain a residual value of the current point, which includes subtracting the vertical predictor radius from the radius; and The residual value is encoded.

59. The method of claim 58, further comprising: The current point is transformed from the Cartesian domain to the spherical domain to obtain a coordinate value of the current point.

60. The method of claim 46, further comprising: The point cloud data is captured.