Coding color attribute components in geometry-based point cloud compression (G-PCC)
By predicting attribute values using neighboring points and applying non-integer scaling factors, the G-PCC encoder and decoder enhance coding efficiency by reducing bit usage for residual values in point cloud compression.
Patent Information
- Application Number
- JP2023516574
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-09-24
- Filing Date
- 2021-09-27
- Publication Date
- 2025-10-07
- Estimated Expiration
- 2041-09-27
AI Technical Summary
Existing point cloud compression techniques are inefficient in signaling color attribute values, leading to excessive bit usage due to direct signaling of residual values without exploiting inter-channel correlations.
Implementing a G-PCC encoder and decoder that predict attribute values using neighboring points and apply scaling factors with non-integer or absolute values greater than 1 to generate more accurate residual values, reducing the need for signaling the entire residual value.
This approach reduces the number of bits required to signal attribute values by generating smaller residual values, thereby improving coding efficiency.
Smart Images

Figure 0007750941000003 
Figure 0007750941000004 
Figure 0007750941000005
Abstract
Description
[Technical Field]
[0001] This application claims priority to U.S. Patent Application No. 17 / 484,792, filed September 24, 2021, and U.S. Provisional Patent Application No. 63 / 088,306, filed October 6, 2020, the entire contents of each of which are incorporated herein by reference. U.S. Patent Application No. 17 / 484,792, filed September 24, 2021, claims the benefit of U.S. Provisional Patent Application No. 63 / 088,306, filed October 6, 2020.
[0002] This disclosure relates to point cloud encoding and decoding. [Background technology]
[0003] A point cloud is a collection of points in three-dimensional space. The points may correspond to points on an object in the three-dimensional space. Thus, a point cloud can be used to represent the physical content of a three-dimensional space. Point clouds can have utility in a wide variety of situations. For example, a point cloud can be used in the context of an autonomous vehicle to represent the location of an object on a road. In another example, a point cloud can be used in the context of representing the physical content of an environment for the purpose of positioning virtual objects in an augmented reality (AR) or mixed reality (MR) application. Point cloud compression is a process for encoding and decoding a point cloud. Encoding a point cloud can reduce the amount of data required for storage and transmission of the point cloud. [Prior art documents] [Non-patent literature]
[0004] [Non-Patent Document 1] G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19088, Brussels, Belgium, January 2020 [Non-patent document 2] G-PCC Codec Description v6, ISO / IEC JTC1 / SC29 / WG11 w19091, Brussels, Belgium, January 2020 Summary of the Invention [Means for solving the problem]
[0005] According to some techniques, to improve coding efficiency, a G-PCC encoder and decoder may be configured to predict an attribute value (e.g., YCbCr) of a point from attribute values of neighboring points that have already been coded, and signal a difference value between the predicted attribute value and the actual attribute value from the encoder to the decoder. For some color components (e.g., Cr), the encoder and decoder may be configured to determine an initial prediction value based on neighboring points that have already been coded, and additionally predict a residual value based on a previously coded residual value of another component (e.g., Cb). Thus, instead of signaling the entire difference between the initial prediction of an attribute value and the actual attribute value, the G-PCC encoder only needs to signal the remaining difference between the actual attribute value and the initial prediction value plus the predicted residual value to the G-PCC decoder. This remaining residual value may typically be a smaller number than the entire residual value, so the remaining residual value may be signaled with fewer bits than the entire residual value. This use of predicted and residual values may reduce the bits required to signal the attribute values compared to signaling the attribute values directly.
[0006] This disclosure describes techniques for determining predicted residual values. G-PCC encoders and decoders implementing the techniques of this disclosure may generate more accurate predicted residual values and may be able to make the residual values smaller compared to residual residual values determined by existing residual prediction techniques. Because smaller values can typically be coded using fewer bits by making the residual residual values smaller, the techniques of this disclosure may reduce the overall number of bits required to signal attribute values.
[0007] According to one example, a device for decoding encoded point cloud data includes a memory configured to store the encoded point cloud data and one or more processors implemented in a circuit, wherein the one or more processors are configured to: determine, for a point of the point cloud, a first attribute value for a first color component based on a first predicted value and a first residual value; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; receive, for the point of the point cloud, a second residual value in the encoded point cloud data; determine a final second residual value based on the predicted second residual value and the received second residual value; and determine, for the point cloud point, a second attribute value for a second color component based on the second predicted value and the final second residual value.
[0008] According to another example, a method of decoding encoded point cloud data includes, for a point of the point cloud, determining a first attribute value for a first color component based on a first predicted value and a first residual value; applying a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value and an absolute value greater than 1; receiving a second residual value in the encoded point cloud data for the point of the point cloud; determining a final second residual value based on the predicted second residual value and the received second residual value; and determining a second attribute value for the point cloud point based on the second predicted value and the final second residual value.
[0009] According to another example, a device for encoding point cloud data includes a memory configured to store the encoded point cloud data and one or more processors implemented in a circuit, the one or more processors configured to: determine, for a point of the point cloud, a first attribute value for a first color component; encode the first attribute value for the first color component as a first predicted value and a first residual value; determine, for the point cloud point, a second attribute value for a second color component; determine a second predicted value for the second attribute value for the second color component; determine a second residual value for the second attribute value for the second color component; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; and generate a syntax element representing a difference between the second residual value and the predicted second residual value for inclusion in the point cloud data.
[0010] According to another example, a method for encoding point cloud data includes determining, for a point of the point cloud, a first attribute value for a first color component; encoding the first attribute value for the first color component as a first predicted value and a first residual value; determining, for the point cloud point, a second attribute value for a second color component; determining a second predicted value for the second attribute value for the second color component; determining a second residual value for the second attribute value for the second color component; applying a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value and an absolute value greater than 1; and generating a syntax element representing a difference between the second residual value and the predicted second residual value for inclusion in the point cloud data.
[0011] According to another example, a computer-readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to: determine, for a point of the point cloud, a first attribute value for a first color component based on the first predicted value and the first residual value; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; receive, for the point of the point cloud, a second residual value in the encoded point cloud data; determine a final second residual value based on the predicted second residual value and the received second residual value; and determine, for the point of the point cloud, a second attribute value for a second color component based on the second predicted value and the final second residual value.
[0012] According to another example, a computer-readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to: determine, for a point of the point cloud, a first attribute value for a first color component; encode the first attribute value for the first color component as a first predicted value and a first residual value; determine, for the point cloud point, a second attribute value for a second color component; determine a second predicted value for the second attribute value for the second color component; determine a second residual value for the second attribute value for the second color component; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; and generate a syntax element representing a difference between the second residual value and the predicted second residual value for inclusion in the point cloud data.
[0013] According to another example, an apparatus for decoding encoded point cloud data includes: means for determining, for a point of the point cloud, a first attribute value for a first color component based on a first predicted value and a first residual value; means for applying a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than one; means for receiving, for the point cloud point, a second residual value in the encoded point cloud data; means for determining a final second residual value based on the predicted second residual value and the received second residual value; and means for determining, for the point cloud point, a second attribute value for a second color component based on the second predicted value and the final second residual value.
[0014] According to another example, an apparatus for encoding point cloud data includes: means for determining, for a point of the point cloud, a first attribute value for a first color component; means for encoding the first attribute value for the first color component as a first predicted value and a first residual value; means for determining, for the point cloud point, a second attribute value for a second color component; means for determining a second predicted value for the second attribute value for the second color component; means for determining a second residual value for the second attribute value for the second color component; means for applying a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; and means for generating a syntax element representing a difference between the second residual value and the predicted second residual value for inclusion in the point cloud data.
[0015] According to another example, a computer program product includes program instructions that, when executed by one or more processors, cause the one or more processors to: determine, for a point of the point cloud, a first attribute value for a first color component based on a first predicted value and a first residual value; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; receive, for the point of the point cloud, a second residual value in the encoded point cloud data; determine a final second residual value based on the predicted second residual value and the received second residual value; and determine, for the point of the point cloud, a second attribute value for a second color component based on the second predicted value and the final second residual value.
[0016] According to another example, a computer program product includes program instructions that, when executed by one or more processors, cause the one or more processors to: determine, for a point of a point cloud, a first attribute value for a first color component; encode the first attribute value for the first color component as a first predicted value and a first residual value; determine, for the point cloud point, a second attribute value for a second color component; determine a second predicted value for the second attribute value for the second color component; determine a second residual value for the second attribute value for the second color component; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; and generate a syntax element representing a difference between the second residual value and the predicted second residual value for inclusion in the point cloud data.
[0017] According to another example, a device for decoding encoded point cloud data comprises: means for determining, for a point of the point cloud, a first attribute value for a first color component based on a first predicted value and a first residual value; means for applying a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; means for receiving, for the point cloud point, a second residual value in the encoded point cloud data; means for determining a final second residual value based on the predicted second residual value and the received second residual value; and means for determining a second attribute value for a second color component of the point cloud point based on the second predicted value and the final second residual value.
[0018] According to another example, a device for encoding point cloud data comprises: means for determining a first attribute value for a first color component of a point of the point cloud; means for encoding the first attribute value for the first color component as a first predicted value and a first residual value; means for determining a second attribute value for a second color component of the point of the point cloud; means for determining a second predicted value for the second attribute value for the second color component; means for determining a second residual value for the second attribute value for the second color component; means for applying a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; and means for generating a syntax element representing a difference between the second residual value and the predicted second residual value for inclusion in the encoded point cloud data.
[0019] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will become apparent from the description, drawings, and claims. [Brief explanation of the drawings]
[0020] [Figure 1]FIG. 1 is a block diagram illustrating an example encoding and decoding system that may implement the techniques of this disclosure. [Figure 2] FIG. 1 is a block diagram illustrating an example geometry point cloud compression (G-PCC) encoder. [Figure 3] FIG. 2 is a block diagram illustrating an exemplary G-PCC decoder. [Figure 4] 10 is a flowchart illustrating an example operation of a G-PCC encoder, in accordance with one or more techniques of this disclosure. [Figure 5] 10 is a flowchart illustrating an example operation of a G-PCC decoder, in accordance with one or more techniques of this disclosure. [Figure 6] FIG. 1 is a conceptual diagram illustrating an example distance measurement system that may be used with one or more techniques of the present disclosure. [Figure 7] FIG. 1 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of this disclosure may be used. [Figure 8] FIG. 1 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of this disclosure may be used. [Figure 9] FIG. 1 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of the present disclosure may be used. DETAILED DESCRIPTION OF THE INVENTION
[0021] "Geometry-based point cloud compression" (G-PCC) directly compresses 3D geometry, i.e., the positions of a set of points in 3D space. G-PCC also compresses associated attribute values, such as color or luminance / chrominance values, for each point associated with the 3D geometry.
[0022] A point cloud includes a set of points in 3D space and may have attributes associated with the points. The attributes may be, for example, color information such as R / G / B, Y / Cb / Cr, reflectance information, or other attributes such as temperature values, humidity values, latitude coordinates, longitude coordinates, etc. Point clouds may be captured by various cameras or sensors, such as light detection and ranging (LIDAR) scanners or 3D scanners, or may be computer-generated. Point cloud data may be used in a variety of applications, including, but not limited to, construction (e.g., modeling), graphics (e.g., 3D models for visualization and animation), and the automotive industry (e.g., LIDAR sensors used to aid navigation).
[0023] The 3D space occupied by the point cloud data may be enclosed by a virtual bounding box. The positions of points within the bounding box may be represented with a certain precision. Thus, the positions of one or more points may be quantized based on that precision. At the smallest level, the bounding box is divided into voxels, which are the smallest units of space represented by a unit cube. A voxel within the bounding box may be associated with zero, one, or more points. The bounding box may be divided into multiple cubic / rectangular regions, sometimes called tiles, and each tile may be coded into one or more slices. The division of the bounding box into slices and tiles may be based on the number of points in each division or other considerations (e.g., a particular region may be coded as a tile). The slice regions may be further divided using partitioning decisions similar to those in video codecs.
[0024] To improve coding efficiency for compressing color attribute information, G-PCC encoders and decoders can be configured to perform color space conversion as a pre- or post-processing step, for example, by converting RGB values to YCbCr values. Even after such conversion, there is often still significant correlation between channels in the converted color space. This correlation between color channels can be exploited to improve attribute coding efficiency.
[0025] According to some techniques, to improve coding efficiency, a G-PCC encoder and decoder may be configured to predict an attribute value (e.g., YCbCr) of a point from attribute values of neighboring points that have already been coded, and signal a difference value between the predicted attribute value and the actual attribute value from the encoder to the decoder. For some color components (e.g., Cr), the encoder and decoder may be configured to determine an initial prediction value based on neighboring points that have already been coded, and additionally predict a residual value based on a previously coded residual value of another component (e.g., Cb). Thus, instead of signaling the entire difference between the initial prediction of an attribute value and the actual attribute value, the G-PCC encoder only needs to signal the remaining difference between the actual attribute value and the initial prediction value plus the predicted residual value to the G-PCC decoder. This remaining residual value may typically be a smaller number than the entire residual value, so the remaining residual value may be signaled with fewer bits than the entire residual value. This use of predicted and residual values may reduce the bits required to signal the attribute values compared to signaling the attribute values directly.
[0026] Next, an exemplary technique for signaling residual values will be described. In this example, res_Cb and res_Cr represent the residual values of the Cb and Cr color components, respectively. It may be noted that the Cb and Cr residual values may be approximated by the following relationships:
[0027]
number
[0028] Here, s is a scalar value, which can have one of three values: +1, −1, or 0, indicating positive correlation, negative correlation, and no correlation, respectively. To signal s, for example, the encoder may include a flag in the point cloud data indicating whether s is non-zero, and the decoder may parse the flag from the point cloud data. If s is non-zero, the encoder may include a second flag in the point cloud data indicating the sign, and the decoder may parse the second flag from the point cloud data. For coding of Res_Cr, the encoder and decoder may perform further prediction from Res_Cb with a scaling factor of s, so that only the remaining residual value needs to be included in the point cloud data. From the decoder's perspective, if ResCr and ResCb are residual samples reconstructed from the Cb and Cr bitstreams, respectively, the final Cr residual may be determined as Res′Cr=ResCr+s*ResCb.
[0029] Although the techniques described above exploit the correlation (positive or negative) between two color components, i.e., two channels, the present techniques do not exploit the fact that in addition to having a positive or negative correlation, the residual energy of the two color components may be different. Thus, s may not necessarily be well represented by only +1, 0, or −1.
[0030] This disclosure describes techniques for utilizing more diversified values of s, where s can be any value with fractional precision of p. This disclosure also describes techniques for signaling these values of s. For example, if p=1 / 4, then the possible values of s are k*p=k / 4, where k is an integer. The value of p may be fixed, predetermined, or signaled. In some examples, the s value may have a range of [-a, +a] with precision of p. For example, if a=2 and p=1 / 4, then the scaling factor values are s: {-2, -7 / 4, -6 / 4, -5 / 4, -1, -3 / 4, -2 / 4, -1 / 4, 0, 1 / 4, 2 / 4, 3 / 4, 1, 5 / 4, 6 / 4, 7 / 4, 2}. In other examples, a and p may have different values, such as 1 and 1 / 8, respectively, or some other combination of values. The values of a and p may be fixed, predetermined, signaled, or any combination thereof. As described in more detail below, the scaling factor value of s may also be implemented as a combination of multiplication and bit-shifting operations to potentially avoid floating-point operations and thus reduce computational complexity.
[0031] As an example, assume a point in a point cloud has attribute values of (Y, Cb, Cr) = (100, 80, 82). A G-PCC decoder may predict a predicted attribute value of (predY, predCb, predCr) = (90, 76, 75) from a previously coded point. Thus, the residual value, which represents the difference between the point's actual attribute value and the point's predicted attribute value, is (resY, resCb, resCr) = (10, 4, 7). Thus, the G-PCC encoder may include values of 10 and 4 for resY and resCb in the point cloud. However, for resCr, the G-PCC encoder may include a value equal to 7 - s * resCb in the point cloud. If s can only be equal to -1, 0, or 1, the G-PCC encoder includes a value of 3 (3 = 7 - s * 4, where s is equal to 1) in the point cloud data. However, utilizing the techniques of this disclosure, a G-PCC encoder may be able to include, for example, a value of 0 (0=7-s*4, where s equals 7 / 4) in the point cloud data instead of 3. Because 0 is smaller than 3, the G-PCC encoder may be able to code the value of 0 using fewer bits than a value of 3.
[0032] Thus, by determining scaling factors having one or both of non-integer values or absolute values greater than 1, the G-PCC encoder and decoder may be able to generate more accurate predicted residual values and smaller residual residual values compared to residual residual values determined using scaling factors of only −1, 0, and 1. Because smaller values can typically be coded using fewer bits by making the residual residual values smaller, the techniques of this disclosure may reduce the overall number of bits required to signal attribute values.
[0033] 1 is a block diagram illustrating an example encoding and decoding system 100 that may perform the techniques of this disclosure. The techniques of this disclosure are generally directed to coding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. In general, point cloud data includes any data for processing a point cloud. Coding may be effective to compress and / or decompress the point cloud data.
[0034] As shown in Figure 1, system 100 includes a source device 102 and a destination device 116. Source device 102 provides encoded point cloud data to be decoded by destination device 116. Specifically, in the example of Figure 1, source device 102 provides the point cloud data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 may comprise any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, terrestrial or marine vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, etc. In some cases, source device 102 and destination device 116 may be equipped for wireless communication.
[0035] In the example of FIG. 1 , source device 102 includes a data source 104, memory 106, a G-PCC encoder 200, and an output interface 108. Destination device 116 includes an input interface 122, a G-PCC decoder 300, memory 120, and a data consumer 118. According to this disclosure, G-PCC encoder 200 of source device 102 and G-PCC decoder 300 of destination device 116 may be configured to apply techniques of this disclosure related to coding components of color attributes in G-PCC. Thus, source device 102 represents an example of an encoding device, and destination device 116 represents an example of a decoding device. In other examples, source device 102 and destination device 116 may include other components or configurations. For example, source device 102 may receive data (e.g., point cloud data) from an internal or external source. Similarly, destination device 116 may interface with an external data consumer rather than including the data consumer within the same device.
[0036] The system 100 as shown in FIG. 1 is merely an example. In general, other digital encoding and / or decoding devices may perform the techniques of this disclosure related to coding of final components of color attributes in G-PCC. The source device 102 and the destination device 116 are merely examples of devices that generate coded data for the source device 102 to transmit to the destination device 116. This disclosure refers to devices that perform coding (encoding and / or decoding) of data as “coding” devices. Thus, the G-PCC encoder 200 and the G-PCC decoder 300 represent examples of coding devices, specifically, encoders and decoders, respectively. In some examples, the source device 102 and the destination device 116 may operate substantially symmetrically, such that each of the source device 102 and the destination device 116 includes encoding and decoding components. Thus, the system 100 may support unidirectional or bidirectional transmission between the source device 102 and the destination device 116, for example, for streaming, playback, broadcast, telephony, navigation, and other applications.
[0037] Generally, the data source 104 represents a source of data (i.e., raw, unencoded point cloud data) and may provide a continuous series of “frames” of data to the G-PCC encoder 200, which encodes the data for the frames. The data source 104 of the source device 102 may include point cloud capture devices, such as various cameras or sensors, e.g., 3D scanners or LIDAR devices, one or more video cameras, archives containing previously captured data, and / or data feed interfaces for receiving data from data content providers. Alternatively or additionally, the point cloud data may be computer-generated from scanners, cameras, sensors, or other data. For example, the data source 104 may generate computer-graphics-based data as source data or produce a combination of live, archived, and computer-generated data. In each case, the G-PCC encoder 200 encodes the captured, pre-captured, or computer-generated data. The G-PCC encoder 200 may reorder the frames from the order in which they were received (sometimes referred to as "display order") into a coding order for coding. The G-PCC encoder 200 may generate one or more bitstreams including the encoded data. The source device 102 may then output the encoded data onto the computer-readable medium 110 via the output interface 108, for receipt and / or retrieval by, for example, the input interface 122 of the destination device 116.
[0038] The memory 106 of the source device 102 and the memory 120 of the destination device 116 may represent general-purpose memory. In some examples, the memory 106 and the memory 120 may store raw data, e.g., raw data from the data source 104 and raw decoded data from the G-PCC decoder 300. Additionally or alternatively, the memory 106 and the memory 120 may store software instructions executable by the G-PCC encoder 200 and the G-PCC decoder 300, respectively. While the memory 106 and the memory 120 are shown separate from the G-PCC encoder 200 and the G-PCC decoder 300 in this example, it should be understood that the G-PCC encoder 200 and the G-PCC decoder 300 may also include internal memory for functionally similar or equivalent purposes. Additionally, the memory 106 and the memory 120 may store encoded data, e.g., output from the G-PCC encoder 200 and input to the G-PCC decoder 300. In some examples, portions of memory 106 and memory 120 may be allocated as one or more buffers, e.g., to store raw decoded and / or encoded data. For example, memory 106 and memory 120 may store data representing a point cloud.
[0039] The computer-readable medium 110 may represent any type of medium or device capable of transporting encoded data from the source device 102 to the destination device 116. In one example, the computer-readable medium 110 represents a communication medium that enables the source device 102 to transmit encoded data directly to the destination device 116 in real time, for example, via a radio frequency network or a computer-based network. The output interface 108 may modulate a transmission signal containing the encoded data, and the input interface 122 may demodulate a received transmission signal, in accordance with a communication standard such as a wireless communication protocol. The communication medium may comprise any wireless or wired communication medium, such as the radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful for facilitating communication from the source device 102 to the destination device 116.
[0040] 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.
[0041] In some examples, source device 102 may output the encoded data to a 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 download. File server 114 may be any type of server device capable of storing encoded data and transmitting the encoded data to destination device 116. File server 114 may represent a web server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network-attached storage (NAS) device. Destination device 116 may access the encoded data from file server 114 through any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of both suitable for accessing encoded data stored on file server 114. The file server 114 and the input interface 122 may be configured to operate according to a streaming transmission protocol, a download transmission protocol, or a combination thereof.
[0042] Output interface 108 and input interface 122 may represent a wireless transmitter / receiver, a modem, a wired networking component (e.g., an Ethernet card), a wireless communication component operating according to any of the various IEEE 802.11 standards, or other physical components. In examples in which output interface 108 and input interface 122 comprise wireless components, output interface 108 and input interface 122 may be configured to transfer data, such as encoded data, according to a cellular communication standard such as 4G, 4G-LTE (Long Term Evolution), LTE-Advanced, 5G, etc. In some examples in which output interface 108 comprises a wireless transmitter, output interface 108 and input interface 122 may be configured to transfer data, such as encoded data, according to other wireless standards such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee™), the Bluetooth™ standard, etc. In some examples, source device 102 and / or destination device 116 may include respective system-on-chip (SoC) devices. For example, the source device 102 may include an SoC device for performing functions attributed to the G-PCC encoder 200 and / or the output interface 108, and the destination device 116 may include an SoC device for performing functions attributed to the G-PCC decoder 300 and / or the input interface 122.
[0043] The techniques of this disclosure may be applied to encoding and decoding in support of any of a variety of applications, such as communication between autonomous vehicles, communication between processing devices such as scanners, cameras, sensors, and local or remote servers, geographic mapping, or other applications.
[0044] The input interface 122 of the destination device 116 receives the encoded bitstream from the computer-readable medium 110 (e.g., a communication medium, a storage device 112, a file server 114, etc.). The encoded bitstream may include signaling information defined by the G-PCC encoder 200, such as syntax elements having values that describe the characteristics and / or processing of a coded unit (e.g., a slice, a picture, a group of pictures, a sequence, etc.), which is also used by the G-PCC decoder 300. The data consumer 118 uses the decoded data. For example, the data consumer 118 may use the decoded data to determine the location of a physical object. In some examples, the data consumer 118 may include a display for presenting imagery based on the point cloud.
[0045] The G-PCC encoder 200 and the G-PCC decoder 300 may each be implemented as any of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the techniques are implemented partially in software, a device may store instructions for the software on a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. The G-PCC encoder 200 and the G-PCC decoder 300 may each be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (codec) within the respective device. A device including the G-PCC encoder 200 and / or the G-PCC decoder 300 may comprise one or more integrated circuits, microprocessors, and / or other types of devices.
[0046] The G-PCC encoder 200 and the G-PCC decoder 300 may operate according to a coding standard such as the Video Point Cloud Compression (V-PCC) standard or the Geometry Point Cloud Compression (G-PCC) standard. This disclosure may generally refer to coding (e.g., encoding and decoding) of point clouds to include the process of encoding or decoding data. The encoded bitstream generally includes a series of values of syntax elements that represent coding decisions (e.g., coding modes).
[0047] This disclosure may generally refer to “signaling” certain information, such as syntax elements. The term “signaling” may generally refer to communication of syntax element values and / or other data used to decode encoded data. That is, G-PCC encoder 200 may signal syntax element values in the bitstream. Generally, signaling refers to generating values in the bitstream. As mentioned above, source device 102 may transport the bitstream to destination device 116 substantially in real time or not in real time, such as may occur when storing syntax elements to storage device 112 for later retrieval by destination device 116.
[0048] ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) is studying the potential need for standardization of point cloud coding techniques with compression capabilities significantly exceeding those of current methods, with the goal of developing a standard. The group is working together on this exploration in a collaborative effort known as the 3-Dimensional Graphics Team (3DG), which is evaluating compression technology designs proposed by experts in the field.
[0049] Point cloud compression activities are categorized into two different approaches. The first approach is "video point cloud compression" (V-PCC), which segments a 3D object and projects the segments in multiple 2D planes (represented as "patches" in a 2D frame), which are further coded by a legacy 2D video codec such as the High Efficiency Video Coding (HEVC) (ITU-T H.265) codec. The second approach is "geometry-based point cloud compression" (G-PCC), which directly compresses the 3D geometry, i.e., the 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 both category 1 (static point clouds) and category 3 (dynamically acquired point clouds). A recent draft of the G-PCC standard is available at G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19088, Brussels, Belgium, January 2020, and the codec description is available at G-PCC Codec Description v6, ISO / IEC JTC1 / SC29 / WG11 w19091, Brussels, Belgium, January 2020.
[0050] A point cloud includes a set of points in 3D space and may have attributes associated with the points. The attributes may be color information, such as R, G, B or Y, Cb, Cr, or reflectance information, or other attributes. Point clouds may be captured by various cameras or sensors, such as LIDAR sensors and 3D scanners, or may be computer-generated. Point cloud data is used in a variety of applications, including, but not limited to, construction (modeling), graphics (3D models for visualization and animation), and the automotive industry (LIDAR sensors used to aid navigation).
[0051] The 3D space occupied by the point cloud data may be enclosed by a virtual bounding box. The positions of points within the bounding box may be represented with a certain precision, and therefore, the positions of one or more points may be quantized based on that precision. At the smallest level, the bounding box is divided into voxels, which are the smallest units of space represented by a unit cube. A voxel within the bounding box may be associated with zero, one, or more points. The bounding box may be divided into multiple cubic / rectangular regions, sometimes called tiles. Each tile may be coded into one or more slices. The partitioning of the bounding box into slices and tiles may be based on the number of points in each partition or other considerations (e.g., a particular region may be coded as a tile). The slice regions may be further partitioned using partitioning decisions similar to those in video codecs.
[0052] Figure 2 provides an overview of a G-PCC encoder 200. Figure 3 provides an overview of a G-PCC decoder 300. The modules shown are logical and do not necessarily correspond one-to-one to the code implemented in the reference implementation of the G-PCC codec, i.e., the TMC13 test model software studied by ISO / IEC MPEG (JTC 1 / SC 29 / WG 11).
[0053] In both the G-PCC encoder 200 and the G-PCC decoder 300, the point cloud position is coded first. Attribute coding depends on the decoded geometry. In Figures 2 and 3, the surface approximation analysis units 212 and 310 and the RAHT units 218 and 314 represent options typically used for Category 1 data, while the LOD generation units 220 and 316, the lifting unit 222, and the inverse lifting unit 318 represent options typically used for Category 3 data. All other units may be common between Category 1 and Category 3.
[0054] For Category 3 data, the compressed geometry is typically represented as an octree from the root to the leaf level of individual voxels. For Category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree from the root to the leaf level of blocks larger than a voxel) plus a model that approximates the surface within each leaf of the pruned octree. In this way, both Category 1 and Category 3 data share the octree coding mechanism, but Category 1 data may additionally approximate voxels within each leaf with a surface model (known as Trisoup coding). The surface model used is a triangulation involving 1 to 10 triangles per block, resulting in a triangle soup. Therefore, Category 1 geometry codecs are known as Trisoup geometry codecs, while Category 3 geometry codecs are known as octree geometry codecs.
[0055] At each node in the octree, occupancy is signaled (when not inferred) for one or more of its child nodes (up to eight nodes). Multiple neighborhoods are specified, including (a) nodes that share a face with the current octree node, (b) nodes that share a face, edge, or vertex with the current octree node, etc. Within each neighborhood, the occupancy of the node and / or its children can be used to predict the occupancy of the current node or its children. For sparsely populated points in some nodes of the octree, the codec also supports a direct coding mode in which the 3D position of the point is directly coded. A flag can be signaled to indicate that direct mode is signaled. At the lowest level, the number of points associated with an octree node / leaf node can also be coded.
[0056] When geometry is coded, attributes corresponding to geometry points are coded. When there are multiple attribute points corresponding to one reconstructed / decoded geometry point, an attribute value representing the reconstructed point can be derived.
[0057] G-PCC has three attribute coding processes: region-adaptive hierarchical transform (RAHT) coding, interpolation-based hierarchical nearest neighbor prediction (prediction transform), and interpolation-based hierarchical nearest neighbor prediction with update / lifting steps (lifting transform). RAHT and lifting are typically used for Category 1 data, while prediction is typically used for Category 3 data. However, either process may be used for any data, and the attribute coding process used to code point clouds may be specified in the bitstream, as is the case with geometry codecs in G-PCC.
[0058] Attribute coding may be performed at a level-of-detail (LOD), with each level of detail being used to obtain a finer representation of the point cloud attributes. Each level of detail may be specified based on a distance metric from neighboring nodes or based on a sampling distance. Level-of-detail generation partitions the set of input points into a series of levels of detail and associated refinement layers. A level of detail is a set of points that represents a subsampled version of the slice geometry. The 0th level of detail is the full-resolution slice geometry.
[0059] In the G-PCC encoder 200, the residual obtained as the output of the coding process for the attribute is quantized. The quantized residual may be coded using context-adaptive arithmetic coding.
[0060] In the example of FIG. 2, the G-PCC encoder 200 may include a coordinate transformation unit 202, a color transformation unit 204, a voxelization unit 206, an attribute transfer unit 208, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic coding unit 214, a geometry reconstruction unit 216, a RAHT unit 218, an LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, and an arithmetic coding unit 226.
[0061] 2, the G-PCC encoder 200 may receive a set of locations and a set of attributes. The locations may include coordinates of points in the point cloud. The attributes may include information about the points in the point cloud, such as a color associated with the points in the point cloud.
[0062] The coordinate transformation unit 202 may apply a transform to the coordinates of the points to convert the coordinates from an initial domain to a transformed domain. This disclosure may refer to the transformed coordinates as transformed coordinates. The color transformation unit 204 may apply a transform to convert color information of the attributes to a different domain. For example, the color transformation unit 204 may convert color information from an RGB color space to a YCbCr color space.
[0063] Further, in the example of FIG. 2, the voxelization unit 206 may voxelize the transformed coordinates. Voxelizing the transformed coordinates may include quantization and removing some points of the point cloud. In other words, multiple points of the point cloud may be contained within a single "voxel," which may then be treated as one point in some respects. Further, the octree analysis unit 210 may generate an octree based on the voxelized transformed coordinates. Additionally, in the example of FIG. 2, the surface approximation analysis unit 212 may analyze the points to potentially determine a surface representation of the set of points. The arithmetic coding unit 214 may entropy code syntax elements representing the octree and / or surface information determined by the surface approximation analysis unit 212. The G-PCC encoder 200 may output these syntax elements in a geometry bitstream.
[0064] The geometry reconstruction unit 216 may reconstruct transformation coordinates of points in the point cloud based on the octree, data indicating the surface determined by the surface approximation analysis unit 212, and / or other information. The number of transformation coordinates reconstructed by the geometry reconstruction unit 216 may differ from the original number of points in the point cloud due to voxelization and surface approximation. This disclosure may refer to the obtained points as reconstructed points. The attribute transfer unit 208 may transfer attributes of the original points of the point cloud to the reconstructed points of the point cloud.
[0065] Further, the RAHT unit 218 may apply RAHT coding to the attributes of the reconstructed points. Alternatively or additionally, the LOD generation unit 220 and the lifting unit 222 may apply LOD processing and lifting, respectively, to the attributes of the reconstructed points. The RAHT unit 218 and the lifting unit 222 may generate coefficients based on the attributes. The coefficient quantization unit 224 may quantize the coefficients generated by the RAHT unit 218 or the lifting unit 222. The arithmetic coding unit 226 may apply arithmetic coding to syntax elements representing the quantized coefficients. The G-PCC encoder 200 may output these syntax elements in an attribute bitstream.
[0066] In the example of FIG. 3, the G-PCC decoder 300 may include a geometry arithmetic decoding unit 302, an attribute arithmetic decoding unit 304, an octree synthesis unit 306, an inverse quantization unit 308, a surface approximation synthesis unit 310, a geometry reconstruction unit 312, a RAHT unit 314, an LOD generation unit 316, an inverse lifting unit 318, an inverse transform coordinate unit 320, and an inverse transform color unit 322.
[0067] The G-PCC decoder 300 may obtain a geometry bitstream and an attribute bitstream. The geometry arithmetic decoding unit 302 of the G-PCC decoder 300 may apply arithmetic decoding (e.g., context-adaptive binary arithmetic coding (CABAC) or other types of arithmetic decoding) to syntax elements in the geometry bitstream. Similarly, the attribute arithmetic decoding unit 304 may apply arithmetic decoding to syntax elements in the attribute bitstream.
[0068] The octree synthesis unit 306 may synthesize an octree based on syntax elements parsed from the geometry bitstream. In cases where surface approximation is used in the geometry bitstream, the surface approximation synthesis unit 310 may determine a surface model based on the syntax elements parsed from the geometry bitstream and based on the octree.
[0069] Further, the geometry reconstruction unit 312 may perform the reconstruction to determine the coordinates of the points in the point cloud. The inverse transform coordinate unit 320 may apply an inverse transform to the reconstructed coordinates to convert the reconstructed coordinates (positions) of the points in the point cloud from the transformed domain back to the original domain.
[0070] Additionally, in the example of Figure 3, the inverse quantization unit 308 may inverse quantize the attribute values, which may be based on syntax elements obtained from the attribute bitstream (e.g., including syntax elements decoded by the attribute arithmetic decoding unit 304).
[0071] Depending on how the attribute values are encoded, the RAHT unit 314 may perform RAHT coding to determine color values for the points of the point cloud based on the dequantized attribute values. In some examples, the LOD generation unit 316 and the inverse lifting unit 318 may use a level-of-detail-based technique to determine color values for the points of the point cloud.
[0072] 3, the inverse transform color unit 322 may apply an inverse color transform to the color values. The inverse color transform may be the inverse of the color transform applied by the color transform unit 204 of the G-PCC encoder 200. For example, the color transform unit 204 may convert the color information from the RGB color space to the YCbCr color space. Thus, the inverse transform color unit 322 may convert the color information from the YCbCr color space to the RGB color space.
[0073] The various units in FIGS. 2 and 3 are shown to aid in understanding the operations performed by G-PCC encoder 200 and 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 function and is preset for the operations that may be performed. A programmable circuit refers to a circuit that can be programmed to perform various tasks and provides flexibility in the operations that may be performed. For example, a programmable circuit may execute software or firmware that causes the programmable circuit to operate in a manner defined by the software or firmware instructions. A fixed-function circuit may execute software instructions (e.g., to receive or output parameters), but the types of operations that the fixed-function circuit performs are generally invariant. In some examples, one or more of the units may be different circuit blocks (fixed function or programmable), and in some examples, one or more of the units may be an integrated circuit.
[0074] In one or more examples, to improve coding efficiency for color attribute compression, the G-PCC encoder 200 and the G-PCC decoder 300 may be configured to perform color space conversion as a pre-processing / post-processing step. Color space conversion may, for example, convert color data from RGB to YCbCr or from YCbCr to RGB, as described above. Even after such conversion, there is still significant correlation between color components, also called channels, in the converted color space. The correlation between color channels may be exploited to improve attribute coding efficiency.
[0075] The following provides details for exploiting only the inter-channel correlation between chrominance signals for lifting transform. Cb and res Cr Let σ denote the lifting coefficients of the Cb and Cr channels, respectively. In many coding scenarios, the Cb and Cr chroma coefficients from lifting can be well approximated by the following relations:
[0076]
number
[0077] Here, s is a scalar value that can have one of three values: +1, −1, or 0, which indicate positive correlation, negative correlation, and no correlation, respectively. In some examples, the G-PCC encoder 200 signals the s value for each LOD. For the “s” signaling, the G-PCC encoder 200 may first encode a flag indicating whether “s” is non-zero, and if “s” is non-zero, the G-PCC encoder 200 may encode a second flag indicating the sign of “s.” This signaling may be part of the attribute data payload and may be CABAC coded.
[0078] Res CrFor coding of , the G-PCC encoder 200 performs further prediction on Res with a scaling factor of s. Cb and then signal the residual residual value. From the decoder's perspective (e.g., the G-PCC decoder 300's perspective), if ResCr and ResCb are residual samples reconstructed from the Cb and Cr bitstreams, respectively, then the final Cr residual is Res'Cr=ResCr+s*ResCb. An additional flag in the APS, aps.inter_chroma_prediction_enabled_flag, may enable and disable this feature at a high level.
[0079] There can be a potential problem if the scaling factor s is limited to −1, 0, or +1: while the correlation (positive or negative) between two channels (e.g., two color components such as Cb and Cr) can be exploited by using a scaling factor s limited to −1, 0, or +1, in addition to having a positive or negative correlation, there is the fact that the residual energy of the two components can be different, which may not be well represented by just +1, 0, or −1.
[0080] This disclosure describes several exemplary techniques that may be utilized together or separately. The exemplary techniques may address the problems described above. However, the techniques described in this disclosure should not be considered as requiring that the above problems be addressed in the examples described in this disclosure. The exemplary techniques may address problems different from or in addition to the problems described above.
[0081] According to the techniques of the present disclosure, the G-PCC encoder 200 and the G-PCC decoder 300 can be configured to utilize more diverse values of s. These values of s may be signaled for each LOD, where s can be any value with (fractional) precision of p. For example, when p = 1 / 4, the possible values of s are k*p = k / 4, where k is an integer. The value of the p value may be fixed, predetermined (e.g., inferred), or signaled.
[0082] In some examples, the s value may have a range of [-a, +a] with the precision of p. For example, when a = 2 and p = 1 / 4, the scaling coefficient values are s: {-2, -7 / 4, -6 / 4, -5 / 4, -1, -3 / 4, -2 / 4, -1 / 4, 0, 1 / 4, 2 / 4, 3 / 4, 1, 5 / 4, 6 / 4, 7 / 4, 2}. The a value and the p value may be fixed, predetermined, or signaled.
[0083] In some examples, the precision p can be represented as a power of 2, i.e., p = 1 / 2 b and can be represented as. The division associated with s is a right shift, i.e., Res'Cr = ResCr + (k*ResCb >> b) where k is the scaled version of s, i.e., k = s << b (corresponding to s' = s*p).
[0084] In some examples, a rounding term may be incorporated for prediction. Thus, the G-PCC decoder 300 may determine the final residual as Res'Cr = ResCr + ((k*ResCb + 1 << (b - 1)) >> b).
[0085] The G-PCC encoder 200 may be configured to signal the k for each LOD level (k[lod]) with direct coding, for example, by signaling the absolute value of k[lod] followed by a code, if applicable (if k[lod] is not equal to 0). In the case of magnitude coding, the G-PCC encoder 200 may be configured to use either fixed-length coding (where the length may be predetermined, fixed, or signaled) or variable-length coding. The resulting codes are often correlated at neighboring LODs. Therefore, the codes may also be coded using a dedicated context.
[0086] In some examples, the k values for different LODs may be highly correlated with each other. Therefore, if applicable, k[lod] may be predicted from k[lod-1], and the G-PCC encoder 200 may signal the difference (k[lod]-k[lod-1]). The magnitude and sign may be coded separately.
[0087] The signaling may be placed in an attribute data unit header, also called an attribute slice header (ASH). In this case, the k value (either direct-coded or differentially-coded) may be coded as se(v), which means that the value may be coded as a signed integer zero-order exponential-Golomb-coded syntax element, with the left bit first. To parse the k value, the G-PCC decoder 300 may need information identifying the number of LODs. In G-PCC, the number of LODs (LOD1) may be signaled in the attribute parameter set (APS). However, the actual number of LODs (LOD2) may, in some cases, be derived only after LOD reconstruction and may be smaller than LOD1. For example, LOD1 may be equal to 12, while LOD2 may be equal to 10. That is, some slices may have very sparsely spaced points or so few points that not all LODs can be generated. For example, in an example coding scenario, LOD1 may be equal to 12 and LOD2 may be equal to 10. To avoid parse dependency (of LOD reconstruction), the G-PCC encoder 200 may be configured to signal, e.g., always signal, the LOD1 scale value instead of the LOD2 value, but since the last (LOD1-LOD2) value may not be used in the decoding process (attribute reconstruction), such value may be signaled as 0.
[0088] The G-PCC encoder 200 may signal k at the slice level rather than at the LOD level. Such signaling at the slice level can simplify the decoding process and also reduce signaling overhead.
[0089] An exemplary technique (e.g., a coding tool utilized for lifting transformation or inverse transformation) is Res CrThis may yield significant gains when coding the last component, e.g., the Cr component, because predicting σ may reduce the residual energy of the Cr component. To balance the improvement across all of the components, a quantization parameter (QP) offset may be applied to the secondary components (e.g., a subset of the secondary components). Exemplary techniques may also be applied to general multidimensional attributes, where the components, i.e., the components being predicted and the components acting as predictors, may be explicitly signaled in the slice header or attribute / sequence parameter set.
[0090] According to the techniques described above, the G-PCC encoder 200 may be configured to determine, for a point of the point cloud, a first attribute value for a first color component, such as a Cb component, and encode the first attribute value for the first color component as a first predicted value and a first residual value. The G-PCC encoder 200 may determine, for the point of the point cloud, a second attribute value for a second color component, such as a Cr component. The G-PCC encoder 200 may determine a second predicted value for the second attribute value for the second color component. The G-PCC encoder 200 may determine a second residual value, such as Res'Cr, described above, for the second attribute value for the second color component. The G-PCC encoder 200 may apply a scaling factor having one or both of a non-integer value and an absolute value greater than 1 to the first residual value to determine a predicted second residual value. The scaling factor may be applied, for example, by multiplication with a scalar value, such as k, described above, and by a bit-shift operation, such as >>b, described above. The G-PCC encoder 200 may generate a syntax element representing the difference between the second residual value and the predicted second residual value for inclusion in the point cloud data, which may correspond, for example, to the ResCr described above.
[0091] According to the techniques described above, the G-PCC decoder 300 may be configured to determine, for a point of the point cloud, a first attribute value for a first color component based on a first predicted value and a first residual value. The first color component may be, for example, a Cb component, and the first residual value may correspond to ResCb described above. The G-PCC decoder 300 may apply a scaling factor having one or both of a non-integer value and an absolute value greater than 1 to the first residual value to determine a predicted second residual value. The scaling factor may be applied, for example, by multiplication with a scalar value such as k described above and by a bit shift operation such as >>b described above. For a point of the point cloud, the G-PCC decoder 300 may receive a second residual value such as ResCr described above in the encoded point cloud data and determine a final second residual value (e.g., Res'Cr described above) based on the predicted second residual value and the received second residual value. Based on the second predicted value and the final second residual value, the G-PCC decoder 300 may determine a second attribute value for a second color component, such as a Cr component.
[0092] 4 is a flowchart illustrating an example operation of a G-PCC encoder 200 in accordance with one or more techniques of this disclosure. The G-PCC encoder 200 determines a first attribute value for a first color component for a point of a point cloud (402). The G-PCC encoder 200 encodes the first attribute value for the first color component as a first predicted value and a first residual value (404). The first color component may be, for example, a first chroma color component, such as a Cb component.
[0093] The G-PCC encoder 200 determines, for the points of the point cloud, a second attribute value for a second color component (406). The second color component may be, for example, a second chroma color component, such as a Cr component.
[0094] The G-PCC encoder 200 determines a second predicted value for the second attribute value for the second color component (408). The G-PCC encoder 200 may determine the second predicted value for the point of the point cloud based on values of one or more different points of the point cloud, such as neighboring points. The G-PCC encoder 200 may, for example, determine the second predicted value as a weighted average of attribute values of previously decoded points. The G-PCC encoder 200 determines a second residual value for the second attribute value for the second color component (410). The second residual value may, for example, be the difference between the second attribute value and the second predicted value.
[0095] In this example, the G-PCC encoder 200 applies a scaling factor to the first residual value to determine a predicted second residual value, where the scaling factor has one or both of a non-integer value and an absolute value greater than 1 (412). The G-PCC encoder 200 may, for example, determine and generate a syntax element for determining a scalar value, which is an integer value, for inclusion in the point cloud data. To generate the scalar value, the G-PCC encoder 200 may generate a difference value corresponding to the difference between the scalar value and a previously determined scalar value and include a variable-length syntax element indicating the difference value in the point cloud data. The previously determined scalar value may, for example, be a scalar value for a level of detail different from the level of detail of the point cloud. The G-PCC encoder 200 may include the scalar value in a syntax structure such as an attribute slice header. To apply the scaling factor, the G-PCC encoder 200 may perform a multiplication on the scalar value and a bit-shift operation. The bit-shift operation may, for example, be a right shift by a value determined based on the precision of the scaling factor, such as 2.
[0096] G-PCC encoder 200 generates 414 a syntax element representing the difference between the second residual value and the predicted second residual value for inclusion in the point cloud data.
[0097] 5 is a flowchart illustrating an example operation of the G-PCC decoder 300 in accordance with one or more techniques of this disclosure. In the example of FIG. 5, the G-PCC decoder 300 determines, for a point of the point cloud, a first attribute value for a first color component based on a first predicted value and a first residual value (502). The first color component may be, for example, a first chroma color component, such as a Cb component.
[0098] The G-PCC decoder 300 applies a scaling factor to the first residual value to determine a predicted second residual value, the scaling factor having either a non-integer value or an absolute value greater than 1, or both. (504) That is, in addition to scaling factors of −1, 0, and 1, the scaling factor may have fractional values between −1 and 1, or may have both integer and fractional values with magnitudes greater than 1. The G-PCC decoder 300 may receive, for example, in the point cloud data, as part of a syntax structure such as an attribute slice header, a syntax element for determining a scalar value that is an integer value, and apply the scaling factor by performing a multiplication with the scalar value and a bit shift operation. The bit shift operation may be, for example, a right shift by a value determined based on the precision of the scaling factor, such as 2. The G-PCC decoder 300 may receive, for example, a variable-length syntax element indicating a difference value corresponding to the difference between the scalar value and a previously determined scalar value from a level of detail different from the level of detail including the point cloud.
[0099] In this example, the G-PCC decoder 300 receives second residual values for the point cloud points in the encoded point cloud data (506) and determines final second residual values based on the predicted second residual values and the received second residual values (508). The final second residual value may be, for example, the sum of the received second residual value and the predicted second residual value.
[0100] The G-PCC decoder 300 determines, for a point of the point cloud, a second attribute value for a second color component based on the second predicted value and the final second residual value (510). The G-PCC decoder 300 may determine the second predicted value for a point of the point cloud, for example, based on values of one or more different points of the point cloud. The G-PCC decoder 300 may determine, for example, the second predicted value as a weighted average of attribute values of previously decoded points. The second color component may be, for example, a second chroma color component, such as a Cr component. The G-PCC decoder 300 may also determine, for the point of the point cloud, a third attribute value for a third color component, such as a luma color component. Based on the first attribute value for the first color component, the second attribute value for the second color component, and the third attribute value for the third color component, the G-PCC decoder 300 may reconstruct a point cloud.
[0101] FIG. 6 is a conceptual diagram illustrating an example distance measurement system 600 that may be used with one or more techniques of the present disclosure. In the example of FIG. 6, the distance measurement system 600 includes an illuminator 602 and a sensor 604. The illuminator 602 may emit light 606. In some examples, the illuminator 602 may emit the light 606 as one or more laser beams. The light 606 may be within one or more wavelengths, such as infrared wavelengths or visible light wavelengths. In other examples, the light 606 is not coherent laser light. When the light 606 encounters an object, such as an object 608, the light 606 produces return light 610. The return light 610 may include backscattered light and / or reflected light. The return light 610 may pass through a lens 611, which directs the return light 610 to create an image 612 of the object 608 on a sensor 604. The sensor 604 generates a signal 618 based on the image 612. Image 612 may include a set of points (eg, as represented by the dots in image 612 of FIG. 6).
[0102] In some examples, the illuminator 602 and the sensor 604 may be mounted on a rotating structure such that the illuminator 602 and the sensor 604 capture a 360-degree view of the environment. In other examples, the distance measurement system 600 may include one or more optical components (e.g., mirrors, collimators, diffraction gratings, etc.) that enable the illuminator 602 and the sensor 604 to detect objects within a certain range (e.g., up to 360 degrees). Although the example of FIG. 6 shows only a single illuminator 602 and sensor 604, the distance measurement system 600 may include multiple sets of illuminators and sensors.
[0103] In some examples, the illuminator 602 generates a structured light pattern. In such examples, the distance measurement system 600 may include multiple sensors 604 on which respective images of the structured light pattern are formed. The distance measurement system 600 may use the parallax between the images of the structured light pattern to determine the distance to an object 608 from which the structured light pattern is backscattered. The structured light-based distance measurement system may have a high level of accuracy (e.g., accuracy in the sub-millimeter range) when the object 608 is relatively close (e.g., 0.2 meters to 2 meters) to the sensor 604. This high level of accuracy may be useful in facial recognition applications, such as unlocking mobile devices (e.g., mobile phones, tablet computers, etc.), and for security applications.
[0104] In some examples, the distance measurement system 600 is a time-of-flight (ToF)-based system. In some examples where the distance measurement system 600 is a ToF-based system, the illuminator 602 generates pulses of light. In other words, the illuminator 602 may modulate the amplitude of the emitted light 606. In such examples, the sensor 604 detects returning light 610 from the pulses of light 606 generated by the illuminator 602. The distance measurement system 600 can then determine the distance to the object 608 from which the light 606 backscatters based on the delay between when the light 606 is emitted and detected and the known speed of light in air. In some examples, rather than (or in addition to) modulating the amplitude of the emitted light 606, the illuminator 602 may modulate the phase of the emitted light 606. In such an example, the sensor 604 may detect the phase of the returning light 610 from the object 608 and determine the distance to a point on the object 608 using the speed of light and based on the time difference between when the illuminator 602 generated the light 606 at a particular phase and when the sensor 604 detected the returning light 610 at that particular phase.
[0105] In other examples, the point cloud may be generated without the use of the illuminator 602. For example, in some examples, the sensor 604 of the distance measurement system 600 may include two or more optical cameras. In such examples, the distance measurement system 600 may use the optical cameras to capture a stereo image of an environment including the object 608. The distance measurement system 600 (e.g., the point cloud generator 620) may then calculate the disparity between locations in the stereo image. The distance measurement system 600 may then use the disparity to determine distances to locations shown in the stereo image. From these distances, the point cloud generator 620 may generate a point cloud.
[0106] The sensor 604 may also detect other attributes of the object 608, such as color and reflectance information. In the example of Figure 6, the point cloud generator 620 may generate a point cloud based on the signal 618 generated by the sensor 604. The distance measurement system 600 and / or the point cloud generator 620 may form part of the data source 104 (Figure 1).
[0107] FIG. 7 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of the present disclosure may be used. In the example of FIG. 7, a vehicle 700 includes a laser package 702, such as a LIDAR system. Although not shown in the example of FIG. 7, the vehicle 700 may also include a data source and a G-PCC encoder, such as G-PCC encoder 200 (FIG. 1). In the example of FIG. 7, the laser package 702 emits a laser beam 704 that reflects off a pedestrian 706 or other object on the road. The data source of the vehicle 700 may generate a point cloud based on a signal generated by the laser package 702. The G-PCC encoder of the vehicle 700 may encode the point cloud to generate a bit stream 708. The bit stream 708 may include significantly fewer bits than the unencoded point cloud obtained by the G-PCC encoder. An output interface of the vehicle 700 (e.g., output interface 108 (FIG. 1)) may transmit the bit stream 708 to one or more other devices. Therefore, the vehicle 700 may be able to transmit the bitstream 708 to other devices more quickly than unencoded point cloud data. Additionally, the bitstream 708 may require less data storage capacity.
[0108] In the example of FIG. 7, vehicle 700 may transmit bitstream 708 to another vehicle 710. Vehicle 710 may include a G-PCC decoder, such as G-PCC decoder 300 (FIG. 1). The G-PCC decoder of vehicle 710 may decode bitstream 708 to reconstruct a point cloud. Vehicle 710 may use the reconstructed point cloud for various purposes. For example, vehicle 710 may determine that pedestrian 706 is in the road ahead of vehicle 700 based on the reconstructed point cloud and thus begin to slow down, for example, even before the driver of vehicle 710 recognizes that pedestrian 706 is in the road. Thus, in some examples, vehicle 710 may perform autonomous navigation operations, generate notifications or warnings, or take another action based on the reconstructed point cloud.
[0109] Additionally or alternatively, vehicle 700 may transmit bitstream 708 to server system 712. Server system 712 may use bitstream 708 for various purposes. For example, server system 712 may store bitstream 708 for subsequent reconstruction of a point cloud. In this example, server system 712 may use the point cloud along with other data (e.g., vehicle telemetry data generated by vehicle 700) to train an autonomous driving system. In other examples, server system 712 may store bitstream 708 for subsequent reconstruction for forensic crash investigation (e.g., if vehicle 700 collides with pedestrian 706) or transmit notifications or instructions to vehicle 700 or vehicle 710 for navigation.
[0110] FIG. 8 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of this disclosure may be used. Extended reality (XR) is a term used to cover a variety of technologies, including augmented reality (AR), mixed reality (MR), and virtual reality (VR). In the example of FIG. 8, a first user 800 is located at a first location 802. The user 800 is wearing an XR headset 804. As an alternative to the XR headset 804, the user 800 may use a mobile device (e.g., a mobile phone, a tablet computer, etc.). The XR headset 804 includes a depth-detection sensor, such as a LIDAR system, that detects the position of points on an object 806 at the first location 802. A data source in the XR headset 804 may use signals generated by the depth-detection sensor to generate a point cloud representation of the object 806 at the location 802. The XR headset 804 may include a G-PCC encoder (e.g., the G-PCC encoder 200 of FIG. 1) configured to encode the point cloud to generate a bitstream 808.
[0111] The XR headset 804 may transmit the bitstream 808 (e.g., via a network such as the Internet) to an XR headset 810 worn by a user 812 at a second location 814. The XR headset 810 may decode the bitstream 808 and reconstruct a point cloud. The XR headset 810 may use the point cloud to generate an XR visualization (e.g., an AR, MR, or VR visualization) representing the object 806 at the location 802. Thus, in some examples, such as when the XR headset 810 generates a VR visualization, the user 812 at the location 814 may have a 3D immersive experience of the location 802. In some examples, the XR headset 810 may determine the position of a virtual object based on the reconstructed point cloud. For example, the XR headset 810 may determine, based on the reconstructed point cloud, that the environment (e.g., location 802) includes a flat surface and then determine that a virtual object (e.g., a cartoon character) should be placed on the flat surface. The XR headset 810 may generate an XR visualization of the virtual object in the determined position. For example, the XR headset 810 may show a cartoon character sitting on a flat surface.
[0112] FIG. 9 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of this disclosure may be used. In the example of FIG. 9, a mobile device 900, such as a mobile phone or tablet computer, includes a depth-detection sensor, such as a LIDAR system, that detects the positions of points on an object 902 in the environment of the mobile device 900. A data source of the mobile device 900 may use signals generated by the depth-detection sensor to generate a point cloud representation of the object 902. The mobile device 900 may include a G-PCC encoder (e.g., G-PCC encoder 200 of FIG. 1) configured to encode the point cloud to generate a bitstream 904. In the example of FIG. 9, the mobile device 900 may transmit the bitstream to a remote device 906, such as a server system or another mobile device. The remote device 906 may decode the bitstream 904 to reconstruct the point cloud. The remote device 906 may use the point cloud for various purposes. For example, the remote device 906 may use the point cloud to generate a map of the environment of the mobile device 900. For example, the remote device 906 may generate a map of the interior of a building based on the reconstructed point cloud. In another example, the remote device 906 may generate imagery (e.g., computer graphics) based on the point cloud. For example, the remote device 906 may use the points of the point cloud as vertices of a polygon and use the color attributes of the points as a basis for shading the polygon. In some examples, the remote device 906 may perform facial recognition using the point cloud.
[0113] The examples in the various aspects of the present disclosure may be used individually or in any combination.
[0114] The following numbered clauses describe one or more aspects of the devices and techniques described in this disclosure.
[0115] Clause 1A. A method for decoding point cloud data, the method comprising: determining one or more values indicating a relationship between a first coefficient of a first color component and a second coefficient of a second color component of the point cloud data, wherein the one or more values include one or more values from a range of values including values in addition to or instead of −1, 0, and 1; determining at least one of the first coefficients or the second coefficients based on the one or more values; and reconstructing the point cloud data based on at least one of the determined first coefficients or the determined second coefficients.
[0116] Clause 2A. The method of clause 1A, wherein the first coefficient and the second coefficient are lifting coefficients for a lifting inverse transform that generates values for the first color component and the second color component, respectively.
[0117] Clause 3A. The method of any of clauses 1A and 2A, wherein the first color component is one of a Cb component or a Cr component, and the second color component is the other of the Cb component or the Cr component.
[0118] Clause 4A. The method of any of clauses 1A-3A, wherein the range of values includes any value with fractional precision of p, where p is at least one of a fixed value, an inferred value, or a received value.
[0119] Clause 5A. The method of any of clauses 1A-3A, wherein the range of values includes any value in the range [-a, +a] with a precision of p, and a and p are at least one of fixed values, inferred values, or received values.
[0120] Article 6A. The value of p is 1 / 2 b and b is an integer.
[0121] Clause 7A. The method of any of clauses 1A-6A, wherein determining one or more values includes receiving one or more values.
[0122] Clause 8A. The method of any of clauses 1A-7A, further comprising the step of presenting an image based on the point cloud.
[0123] Clause 9A. A method of encoding point cloud data, the method comprising: determining at least one of a first coefficient of a first color component and a second coefficient of a second color component of the point cloud data; determining one or more values indicative of a relationship between the first coefficient of the first color component and the second coefficient of the second color component, wherein the one or more values comprise one or more values from a range of values including values in addition to or instead of −1, 0, and 1; and signaling the determined one or more values.
[0124] Clause 10A. The method of clause 9A, wherein the first coefficient and the second coefficient are lifting coefficients for a lifting transform that transforms values of the first color component and the second color component, respectively.
[0125] Clause 11A. The method of any of clauses 9A and 10A, wherein the first color component is one of a Cb component or a Cr component, and the second color component is the other of a Cb component or a Cr component.
[0126] Clause 12A. The method of any of clauses 9A-11A, wherein the range of values includes any value with fractional precision of p, where p is at least one of a fixed value, an inferred value, or a signaled value.
[0127] Clause 13A. The method of any of clauses 9A-11A, wherein the range of values includes any value in the range [-a, +a] with a precision of p, and a and p are at least one of fixed values, inferred values, or signaled values.
[0128] Article 14A. The value of p is 1 / 2 b and b is an integer.
[0129] Clause 15A. The method of any of clauses 9A to 14A, further comprising generating a point cloud.
[0130] Clause 16A. A device for decoding point cloud data, comprising: a memory configured to store the point cloud data; and a processor coupled to the memory, the processor comprising at least one of fixed function or programmable circuitry, the processor configured to perform the method of any of clauses 1A to 8A.
[0131] Clause 17A. A device according to clause 16A, wherein the device comprises a decoder.
[0132] Clause 18A. The device of any of clauses 16A and 17A, further comprising a display for presenting an image based on the point cloud.
[0133] Clause 19A. A device for encoding point cloud data, comprising: a memory configured to store the point cloud data; and a processor coupled to the memory, the processor comprising at least one of fixed function or programmable circuitry, the processor configured to perform the method of any of clauses 9A to 15A.
[0134] Clause 20A. The device of clause 19A, wherein the device comprises an encoder.
[0135] Clause 21A. A device for decoding point cloud data, the device comprising means for performing the method of any of clauses 1A to 8A.
[0136] Clause 22A. A device for encoding point cloud data, the device comprising means for performing the method of any of clauses 9A to 15A.
[0137] Clause 23A. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to perform the method of any of clauses 1-8.
[0138] Clause 24A. 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 9A-15A.
[0139] 25A. A device for decoding encoded point cloud data, comprising: a memory configured to store the encoded point cloud data; and one or more processors implemented in circuitry, coupled to the memory, wherein the one or more processors are configured to: determine, for a point of the point cloud, a first attribute value for a first color component based on a first predicted value and a first residual value; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; receive, for the point of the point cloud, a second residual value in the encoded point cloud data; determine a final second residual value based on the predicted second residual value and the received second residual value; and determine, for the point cloud point, a second attribute value for a second color component based on the second predicted value and the final second residual value.
[0140] Clause 26A. The device of clause 25A, wherein the one or more processors are further configured to receive, in the point cloud data, a syntax element for determining a scalar value, wherein the scalar value is an integer value, and wherein the one or more processors are further configured to perform multiplication on the scalar value and perform a bit shift operation to apply a scaling factor.
[0141] Clause 27A. The device of clause 26A, wherein to perform the bit shift operation, the one or more processors are further configured to perform a right shift by two.
[0142] Clause 28A. The device of clause 26A, wherein the syntax element for determining the scalar value indicates a difference value corresponding to a difference between the scalar value and a previously determined scalar value.
[0143] Clause 29A. The device of clause 28A, wherein the syntax element for determining the scalar value includes a variable length syntax element that indicates a difference value.
[0144] Clause 30A. The device of clause 28A, wherein the point cloud includes a point cloud for a first level of detail and the previously determined scalar value is for a second level of detail different from the first level of detail.
[0145] Clause 31A. The device of clause 26A, wherein to receive the syntax element for determining the scalar value, the one or more processors are further configured to receive the syntax element for determining the scalar value in an attribute slice header syntax structure.
[0146] Clause 32A. The device of clause 25A, wherein the one or more processors are further configured to determine a second predicted value for the point of the point cloud based on values of one or more different points of the point cloud.
[0147] Clause 33A. The device of clause 25A, wherein to determine the scaling factor, the one or more processors are further configured to determine the scaling factor based on a scaling factor for the second level of detail.
[0148] Clause 34A. The device of clause 25A, wherein the first color component comprises a first chroma color component and the second color component comprises a second chroma color component.
[0149] Clause 35A. The device of clause 34A, wherein the one or more processors are further configured to determine, for points of the point cloud, third attribute values for a third color component, the third color component comprising a luma color component.
[0150] Clause 36A. The device of clause 25A, wherein the one or more processors are further configured to reconstruct the point cloud.
[0151] Clause 37A. The device of clause 36A, wherein the one or more processors are further configured to generate a map of the interior of the building based on the reconstructed point cloud.
[0152] Clause 38A. The device of clause 36A, wherein the one or more processors are further configured to perform autonomous navigation operations based on the reconstructed point cloud.
[0153] Clause 39A. The device of clause 36A, wherein the one or more processors are further configured to generate computer graphics based on the reconstructed point cloud.
[0154] Clause 40A. The device of clause 36, wherein the one or more processors are configured to determine a position of a virtual object based on the reconstructed point cloud and generate an extended reality (XR) visualization in which the virtual object is in the determined position.
[0155] Clause 41A. The device of clause 36A, further comprising a display for presenting an image based on the reconstructed point cloud.
[0156] Clause 42A. A device of clause 25A, where the device is one of a mobile phone or a tablet computer.
[0157] Clause 43A. A device in clause 25A where the device is a vehicle.
[0158] Clause 44A. A device under clause 25A where the device is an extended reality device.
[0159] Clause 45A. A method of decoding encoded point cloud data, comprising: determining, for a point of the point cloud, a first attribute value for a first color component based on a first predicted value and a first residual value; applying a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; receiving, for the point of the point cloud, a second residual value in the encoded point cloud data; determining a final second residual value based on the predicted second residual value and the received second residual value; and determining, for the point cloud point, a second attribute value for a second color component based on the second predicted value and the final second residual value.
[0160] Clause 46A. The method of clause 45A, further comprising receiving, in the point cloud data, a syntax element for determining a scalar value, wherein the scalar value is an integer value, and wherein applying the scaling factor comprises performing a multiplication on the scalar value and performing a bit shift operation.
[0161] Clause 47A. The method of clause 46A, wherein performing a bit shift operation includes performing a right shift by two.
[0162] Clause 48A. The method of clause 46A, wherein the syntax element for determining the scalar value indicates a difference value corresponding to a difference between the scalar value and a previously determined scalar value.
[0163] Clause 49A. The method of clause 48A, wherein the syntax element for determining the scalar value includes a variable length syntax element that indicates a difference value.
[0164] Clause 50A. The method of clause 48A, wherein the point cloud includes a point cloud for a first level of detail, and the previously determined scalar value is for a second level of detail different from the first level of detail.
[0165] Clause 51A. The method of clause 46A, wherein receiving a syntax element for determining a scalar value includes receiving the syntax element for determining the scalar value in an attribute slice header syntax structure.
[0166] Clause 52A. The method of clause 45A, further comprising determining a second predicted value for the point of the point cloud based on values of one or more different points of the point cloud.
[0167] Clause 53A. The method of clause 45A, wherein determining the scaling factor includes determining the scaling factor based on a scaling factor for the second level of detail.
[0168] Clause 54A. The method of clause 45A, wherein the first color component comprises a first chroma color component and the second color component comprises a second chroma color component.
[0169] Clause 55A. The method of clause 54A, further comprising determining, for points of the point cloud, a third attribute value for a third color component, the third color component comprising a luma color component.
[0170] Clause 56A. A device for encoding point cloud data, comprising: a memory configured to store the encoded point cloud data; and one or more processors implemented in circuitry coupled to the memory, the one or more processors configured to: determine, for a point of the point cloud, a first attribute value for a first color component; encode the first attribute value for the first color component as a first predicted value and a first residual value; determine, for the point cloud point, a second attribute value for a second color component; determine a second predicted value for the second attribute value for the second color component; determine a second residual value for the second attribute value for the second color component; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; and generate a syntax element representing a difference between the second residual value and the predicted second residual value for inclusion in the point cloud data.
[0171] Clause 57A. The device of clause 56A, wherein the one or more processors are further configured to generate a syntax element for determining a scalar value for inclusion in the point cloud data, the scalar value being an integer value, and applying the scaling factor includes performing a multiplication on the scalar value and performing a bit shift operation.
[0172] Clause 58A. The device of clause 57A, wherein to perform the bit shift operation, the one or more processors are further configured to perform a right shift by two.
[0173] Clause 59A. The device of clause 57A, wherein the syntax element for determining the scalar value indicates a difference value corresponding to a difference between the scalar value and a previously determined scalar value.
[0174] Clause 60A. The device of clause 59A, wherein the syntax element for determining the scalar value includes a variable length syntax element that indicates a difference value.
[0175] Clause 61A. The device of clause 57A, wherein the point cloud includes a point cloud for a first level of detail and the previously determined scalar value is for a second level of detail different from the first level of detail.
[0176] Clause 62A. The device of clause 57A, wherein the one or more processors are further configured to include a syntax element for determining a scalar value in an attribute slice header syntax structure to generate a syntax element for determining a scalar value.
[0177] Clause 63A. The device of clause 56A, wherein the one or more processors are further configured to determine a second predicted value for the point of the point cloud based on values of one or more different points of the point cloud.
[0178] Clause 64A. The device of clause 56A, wherein to determine the scaling factor, the one or more processors are further configured to determine the scaling factor based on a scaling factor for the second level of detail.
[0179] Clause 65A. The device of clause 56A, wherein the first color component comprises a first chroma color component and the second color component comprises a second chroma color component.
[0180] Clause 66A. The device of clause 65A, wherein the one or more processors are further configured to determine, for points of the point cloud, third attribute values for a third color component, the third color component comprising a luma color component.
[0181] Clause 67A. The device of clause 56A, further comprising a sensor for generating point cloud data.
[0182] Clause 68A. A method of encoding point cloud data, the method comprising: determining, for a point of the point cloud, a first attribute value for a first color component; encoding the first attribute value for the first color component as a first predicted value and a first residual value; determining, for the point cloud point, a second attribute value for a second color component; determining a second predicted value for the second attribute value for the second color component; determining a second residual value for the second attribute value for the second color component; applying a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; and generating a syntax element representing a difference between the second residual value and the predicted second residual value for inclusion in the point cloud data.
[0183] Clause 69A. The method of clause 44A, further comprising generating a syntax element for determining a scalar value for inclusion in the point cloud data, wherein the scalar value is an integer value, and wherein applying the scaling factor comprises performing a multiplication on the scalar value and performing a bit shift operation.
[0184] Clause 70A. The method of clause 45A, wherein performing a bit shift operation includes performing a right shift by two.
[0185] Clause 71A. The method of clause 45A, wherein the syntax element for determining the scalar value indicates a difference value corresponding to a difference between the scalar value and a previously determined scalar value.
[0186] Clause 72A. The method of clause 47A, wherein the syntax element for determining the scalar value includes a variable length syntax element that indicates a difference value.
[0187] Clause 73A. The method of clause 45A, wherein the point cloud includes a point cloud for a first level of detail, and the previously determined scalar value is for a second level of detail different from the first level of detail.
[0188] Clause 74A. The method of clause 45A, wherein generating a syntax element for determining a scalar value includes including the syntax element for determining a scalar value in an attribute slice header syntax structure.
[0189] Clause 75A. The method of clause 44A, further comprising determining a second predicted value for the point of the point cloud based on values of one or more different points of the point cloud.
[0190] Clause 76A. The method of clause 44A, wherein determining the scaling factor includes determining the scaling factor based on a scaling factor for the second level of detail.
[0191] Clause 77A. The method of clause 44A, wherein the first color component comprises a first chroma color component and the second color component comprises a second chroma color component.
[0192] Clause 78A. The method of clause 53A, further comprising determining, for a point of the point cloud, a third attribute value for a third color component, the third color component comprising a luma color component.
[0193] Clause 79A. A computer-readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to: determine, for a point of the point cloud, a first attribute value for a first color component based on the first predicted value and the first residual value; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; receive, for the point of the point cloud, a second residual value in the encoded point cloud data; determine a final second residual value based on the predicted second residual value and the received second residual value; and determine, for the point of the point cloud, a second attribute value for a second color component based on the second predicted value and the final second residual value.
[0194] Clause 80A. A computer-readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to: determine, for a point of the point cloud, a first attribute value for a first color component; encode the first attribute value for the first color component as a first predicted value and a first residual value; determine, for the point of the point cloud, a second attribute value for a second color component; determine a second predicted value for the second attribute value for the second color component; determine a second residual value for the second attribute value for the second color component; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; and generate a syntax element representing a difference between the second residual value and the predicted second residual value for inclusion in the point cloud data.
[0195] Clause 1B. A device for decoding encoded point cloud data, comprising: a memory configured to store the encoded point cloud data; and one or more processors implemented in a circuit, wherein the one or more processors are configured to: determine, for a point of the point cloud, a first attribute value for a first color component based on a first predicted value and a first residual value; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; receive, for the point of the point cloud, a second residual value in the encoded point cloud data; determine a final second residual value based on the predicted second residual value and the received second residual value; and determine, for the point cloud point, a second attribute value for a second color component based on the second predicted value and the final second residual value.
[0196] Clause 2B. The device of Clause 1B, wherein the one or more processors are further configured to receive, in the point cloud data, a syntax element for determining a scalar value, the scalar value being an integer value, and wherein the one or more processors are further configured to perform multiplication and bit shift operations on the scalar value to apply a scaling factor.
[0197] Clause 3B. The device of clause 2B, wherein the one or more processors are further configured to perform a right shift by two to perform the bit shift operation.
[0198] Clause 4B. The device of clause 2B or 3B, wherein the syntax element for determining the scalar value indicates a difference value corresponding to a difference between the scalar value and a previously determined scalar value.
[0199] Clause 5B. The device of clause 4B, wherein the syntax element for determining the scalar value includes a variable length syntax element that indicates a difference value.
[0200] Clause 6B. The device of clause 4B or 5B, wherein the point cloud includes a point cloud for a first level of detail and the previously determined scalar value is for a second level of detail different from the first level of detail.
[0201] Clause 7B. The device of any of clauses 2B to 6B, wherein to receive the syntax element for determining the scalar value, the one or more processors are further configured to receive the syntax element for determining the scalar value in an attribute slice header syntax structure.
[0202] Clause 8B. The device of any of clauses 1B-7B, wherein the one or more processors are further configured to determine a second predicted value for the point of the point cloud based on values of one or more different points of the point cloud.
[0203] Clause 9B. The device of any of clauses 1B to 8B, wherein the point cloud includes a point cloud for a first level of detail, and wherein, to determine the scaling factor, the one or more processors are further configured to determine the scaling factor based on a scaling factor for a second level of detail different from the first level of detail.
[0204] Clause 10B. The device of any of clauses 1B-9B, wherein the first color component comprises a first chroma color component and the second color component comprises a second chroma color component.
[0205] Clause 11B. The device of clause 10B, wherein the one or more processors are further configured to determine, for points of the point cloud, a third attribute value for a third color component, the third color component comprising a luma color component.
[0206] Clause 12B. The device of any of clauses 1B-11B, wherein the one or more processors are further configured to reconstruct a point cloud.
[0207] Clause 13B. The device of clause 12B, wherein the one or more processors are further configured to generate a map of the interior of the building based on the reconstructed point cloud.
[0208] Clause 14B. The device of clause 12B, wherein the one or more processors are further configured to perform autonomous navigation operations based on the reconstructed point cloud.
[0209] Clause 15B. The device of clause 12B, wherein the one or more processors are further configured to generate computer graphics based on the reconstructed point cloud.
[0210] Clause 16B. The device of clause 12B, wherein the one or more processors are configured to determine a position of a virtual object based on the reconstructed point cloud and generate an extended reality (XR) visualization in which the virtual object is at the determined position.
[0211] Clause 17B. The device of any of clauses 12B to 16B, further comprising a display for presenting an image based on the reconstructed point cloud.
[0212] Clause 18B. Any device of clauses 1B to 17B, where the device is one of a mobile phone or a tablet computer.
[0213] Clause 19B. A device of any of clauses 1B-14B or 17B where the device is a vehicle.
[0214] Clause 20B. Any device of clauses 1B through 19B, where the device is an extended reality device.
[0215] Clause 21B. A method of decoding encoded point cloud data, comprising: determining, for a point of the point cloud, a first attribute value for a first color component based on a first predicted value and a first residual value; applying a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; receiving, for the point cloud point, a second residual value in the encoded point cloud data; determining a final second residual value based on the predicted second residual value and the received second residual value; and determining, for the point cloud point, a second attribute value for a second color component based on the second predicted value and the final second residual value.
[0216] Clause 22B. The method of clause 21B, further comprising receiving a syntax element for determining a scalar value in the point cloud data, wherein the scalar value is an integer value, and wherein applying the scaling factor comprises performing a multiplication on the scalar value and performing a bit shift operation.
[0217] Clause 23B. The method of clause 22B, wherein performing a bit shift operation includes performing a right shift by two.
[0218] Clause 24B. The method of clause 22B or 23B, wherein the syntax element for determining the scalar value indicates a difference value corresponding to a difference between the scalar value and a previously determined scalar value.
[0219] Clause 25B. The method of clause 24B, wherein the syntax element for determining the scalar value includes a variable length syntax element that indicates a difference value.
[0220] Clause 26B. The method of clause 24B or 25B, wherein the point cloud includes a point cloud for a first level of detail and the previously determined scalar value is for a second level of detail different from the first level of detail.
[0221] Clause 27B. The method of any of clauses 22B-26B, wherein receiving a syntax element for determining a scalar value includes receiving the syntax element for determining the scalar value in an attribute slice header syntax structure.
[0222] Clause 28B. The method of any of clauses 21B-27B, further comprising determining a second predicted value for the point of the point cloud based on values of one or more different points of the point cloud.
[0223] Clause 29B. The method of any of clauses 21B-28B, wherein determining the scaling factor includes determining the scaling factor based on a scaling factor for the second level of detail.
[0224] Clause 30B. The method of any of clauses 21B-29B, wherein the first color component includes a first chroma color component and the second color component includes a second chroma color component.
[0225] Clause 31B. The method of clause 30B, further comprising determining, for points of the point cloud, a third attribute value for a third color component, the third color component comprising a luma color component.
[0226] Clause 32B. A device for encoding point cloud data, comprising: a memory configured to store the encoded point cloud data; and one or more processors implemented in circuitry, the one or more processors configured to: determine, for a point of the point cloud, a first attribute value for a first color component; encode the first attribute value for the first color component as a first predicted value and a first residual value; determine, for the point cloud point, a second attribute value for a second color component; determine a second predicted value for the second attribute value for the second color component; determine a second residual value for the second attribute value for the second color component; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; and generate a syntax element representing a difference between the second residual value and the predicted second residual value for inclusion in the point cloud data.
[0227] Clause 33B. The device of clause 32B, wherein the one or more processors are further configured to generate a syntax element for determining a scalar value for inclusion in the point cloud data, the scalar value being an integer value, and applying the scaling factor includes performing a multiplication on the scalar value and performing a bit shift operation.
[0228] Clause 34B. The device of clause 33B, wherein to perform the bit shift operation, the one or more processors are further configured to perform a right shift by two.
[0229] Clause 35B. The device of clause 33B or 34B, wherein the syntax element for determining the scalar value indicates a difference value corresponding to a difference between the scalar value and a previously determined scalar value.
[0230] Clause 36B. The device of clause 35B, wherein the syntax element for determining the scalar value includes a variable length syntax element that indicates a difference value.
[0231] Clause 37B. The device of any of clauses 33B to 36B, wherein the point cloud includes a point cloud for a first level of detail and the previously determined scalar value is for a second level of detail different from the first level of detail.
[0232] Clause 38B. The device of any of clauses 33B to 38B, wherein the one or more processors are further configured to include the syntax element for determining the scalar value in an attribute slice header syntax structure to generate the syntax element for determining the scalar value.
[0233] Clause 39B. The device of any of clauses 32B-38B, wherein the one or more processors are further configured to determine a second predicted value for the point of the point cloud based on values of one or more different points of the point cloud.
[0234] Clause 40B. The device of any of clauses 32B to 39B, wherein the point cloud includes a point cloud for a first level of detail, and wherein, to determine the scaling factor, the one or more processors are further configured to determine the scaling factor based on a scaling factor for a second level of detail different from the first level of detail.
[0235] Clause 41B. The device of any of clauses 32B-40B, wherein the first color component comprises a first chroma color component and the second color component comprises a second chroma color component.
[0236] Clause 42B. The device of clause 41B, wherein the one or more processors are further configured to determine, for points of the point cloud, third attribute values for a third color component, the third color component including a luma color component.
[0237] Clause 43B. The device of any of clauses 32B to 42B, further comprising a sensor for generating point cloud data.
[0238] Clause 44B. A method of encoding point cloud data, the method comprising: determining, for a point of the point cloud, a first attribute value for a first color component; encoding the first attribute value for the first color component as a first predicted value and a first residual value; determining, for the point cloud point, a second attribute value for a second color component; determining a second predicted value for the second attribute value for the second color component; determining a second residual value for the second attribute value for the second color component; applying a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; and generating a syntax element representing a difference between the second residual value and the predicted second residual value for inclusion in the point cloud data.
[0239] Clause 45B. The method of clause 44B, further comprising generating a syntax element for determining a scalar value for inclusion in the point cloud data, wherein the scalar value is an integer value, and wherein applying the scaling factor comprises performing a multiplication on the scalar value and performing a bit shift operation.
[0240] Clause 46B. The method of clause 45B, wherein performing a bit shift operation includes performing a right shift by two.
[0241] Clause 47B. The method of clause 45B or 46B, wherein the syntax element for determining the scalar value indicates a difference between the scalar value and a previously determined scalar value.
[0242] Clause 48B. The method of clause 47B, wherein the syntax element for determining the scalar value includes a variable length syntax element that indicates a difference value.
[0243] Clause 49B. The method of any of clauses 45B-48B, wherein the point cloud includes a point cloud for a first level of detail and the previously determined scalar value is for a second level of detail different from the first level of detail.
[0244] Clause 50B. The method of any of clauses 45B-49B, wherein generating a syntax element for determining a scalar value includes including the syntax element for determining a scalar value in an attribute slice header syntax structure.
[0245] Clause 51B. The method of any of clauses 44B-50B, further comprising determining a second predicted value for the point of the point cloud based on values of one or more different points of the point cloud.
[0246] Clause 52B. The method of any of clauses 44B-51B, wherein determining the scaling factor includes determining the scaling factor based on a scaling factor for the second level of detail.
[0247] Clause 53B. The method of any of clauses 44B-52B, wherein the first color component includes a first chroma color component and the second color component includes a second chroma color component.
[0248] Clause 54B. The method of clause 53B, further comprising determining, for points of the point cloud, a third attribute value for a third color component, the third color component comprising a luma color component.
[0249] Clause 55B. A computer-readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to: determine, for a point of the point cloud, a first attribute value for a first color component based on the first predicted value and the first residual value; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; receive, for the point of the point cloud, a second residual value in the encoded point cloud data; determine a final second residual value based on the predicted second residual value and the received second residual value; and determine, for the point of the point cloud, a second attribute value for a second color component based on the second predicted value and the final second residual value.
[0250] Clause 56B. A computer-readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to: determine, for a point of the point cloud, a first attribute value for a first color component; encode the first attribute value for the first color component as a first predicted value and a first residual value; determine, for the point of the point cloud, a second attribute value for a second color component; determine a second predicted value for the second attribute value for the second color component; determine a second residual value for the second attribute value for the second color component; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has one or both of a non-integer value or an absolute value greater than 1; and generate a syntax element representing a difference between the second residual value and the predicted second residual value for inclusion in the point cloud data.
[0251] Clause 57B. A computer program product comprising computer-executable instructions which, when executed by one or more processors, cause the one or more processors to perform the method of any of clauses 21B to 31B.
[0252] Clause 58B. A computer program product comprising computer-executable instructions that, when executed by one or more processors, cause the one or more processors to perform the method of any of clauses 44B to 54B.
[0253] The examples in the various aspects of the present disclosure may be used individually or in any combination.
[0254] It should be appreciated that, depending on the example, some acts or events of any of the techniques described herein may be performed in a different sequence, or may be added, combined, or omitted entirely (e.g., not all acts or events described may be necessary to practice the techniques). Furthermore, in some examples, acts or events may be performed simultaneously rather than sequentially, for example, through multithreaded processing, interrupt processing, or multiple processors.
[0255] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted via a computer-readable medium as one or more instructions or code and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which correspond to tangible media such as data storage media, or communication media, including any medium that facilitates transfer of a computer program from one place to another, for example, according to a communication protocol. As such, computer-readable media may generally correspond to (1) tangible computer-readable storage media that are non-transitory, or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[0256] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included within the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but instead cover non-transitory tangible storage media. As used herein, disk and disc include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where disks typically reproduce data magnetically and discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0257] The instructions may be executed by one or more processors, such as one or more DSPs, general-purpose microprocessors, ASICs, FPGAs, or other equivalent integrated or discrete logic circuitry. Accordingly, the terms "processor" and "processing circuitry" as used herein may refer to any of the above structures or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or may be incorporated into a combined codec. Also, the techniques may be implemented entirely in one or more circuits or logic elements.
[0258] The techniques of this 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 have been described in this disclosure to highlight functional aspects of devices configured to perform the disclosed techniques, but they do not necessarily require realization by different hardware units. Rather, as described above, the various units may be combined in a codec hardware unit or may be provided by a collection of interoperable hardware units, including one or more processors as described above, along with suitable software and / or firmware.
[0259] Various examples have been described. These and other examples are within the scope of the following claims. [Explanation of symbols]
[0260] 100 Encoding and Decoding System, System 102 Source Devices 104 Data Sources 106 memory 108 Output Interface 110 Computer-Readable Medium 112 Storage Devices 114 File Server 116 Destination Device 118 Data Consumers 120 memory 122 input interface 200 G-PCC Encoder 202 Coordinate Transformation Unit 204 Color Conversion Unit 206 Voxelization Unit 208 Attribute Transfer Unit 210 Octree Analysis Unit 212 Surface Approximation Analysis Unit 214 Arithmetic Coding Unit 216 Geometry Reconstruction Unit 218 RAHT Unit 220 LOD generation units 222 Lifting Unit 224 Coefficient Quantization Unit 226 Arithmetic Coding Unit 300 G-PCC decoder 302 Geometry Arithmetic Decoding Unit 304 Attribute Arithmetic Decoding Unit 306 octree synthesis unit 308 Inverse Quantization Unit 310 Surface Approximation Synthesis Unit 312 Geometry Reconstruction Unit 314 RAHT unit 316 LOD generation units 318 Reverse Lifting Unit 320 Inverse Transform Coordinate Units 322 Inverse Transform Color Unit 600 Distance Measurement System 602 Lighting equipment 604 Sensors 606 light 608 Objects 610 Return light 611 Lens 612 images 618 signal 620 point cloud generator 700 vehicles 702 Laser Package 704 Laser Beam 706 Pedestrians 708 bitstream 710 vehicles 712 Server System 800 First User, User 802 First Location, Location 804 XR Headset 806 objects 808 bitstream 810 XR Headset 812 users 814 Second Location, Location 900 mobile devices 902 Objects 904 Bitstream 906 Remote Device
Claims
1. A device for decoding encoded point cloud data to reconstruct a point cloud, comprising: a memory configured to store the encoded point cloud data; one or more processors implemented in circuitry; wherein the one or more processors: determining, for a point of the point cloud, a first attribute value for a first color component based on the first predicted value and a first residual value; receiving a syntax element for determining a scalar value in the encoded point cloud data, the scalar value being an integer value; applying a scaling factor to the first residual value to determine a predicted second residual value, the scaling factor having a non-integer value, and to apply the scaling factor to the first residual value, the one or more processors: performing a multiplication by said scalar value; and performing a right-shift operation based on the precision of the scaling factor, wherein a result of the combination of the multiplication by the scalar value and the right-shift operation is equal to the scaling factor. and determining, receiving a second residual value in the encoded point cloud data for the point of the point cloud; determining a final second residual value based on the predicted second residual value and the received second residual value; determining, for the point of the point cloud, a second attribute value for a second color component based on the second predicted value and the final second residual value; A device configured to:
2. The device of claim 1, wherein the right shift operation is a right shift of two.
3. The device of claim 1 , wherein the syntax element for determining the scalar value indicates a difference value corresponding to a difference between the scalar value and a previously determined scalar value.
4. The device of claim 3 , wherein the syntax element for determining the scalar value includes a variable-length syntax element that indicates the difference value.
5. 4. The device of claim 3, wherein the point cloud includes a point cloud for a first level of detail, and the previously determined scalar value is for a second level of detail different from the first level of detail.
6. 10. The device of claim 1, wherein to receive the syntax element for determining the scalar value, the one or more processors are further configured to receive the syntax element for determining the scalar value in an attribute slice header syntax structure.
7. 10. The device of claim 1, wherein the one or more processors are further configured to determine the second predicted value for the point of the point cloud based on values of one or more different points of the point cloud.
8. 2. The device of claim 1, wherein the point cloud includes a point cloud for a first level of detail, and to determine the scaling factor, the one or more processors are further configured to determine the scaling factor based on a scaling factor for a second level of detail different from the first level of detail.
9. 10. The device of claim 1, wherein the first color component comprises a first chroma color component, the second color component comprises a second chroma color component, and the one or more processors are further configured to determine, for the point of the point cloud, a third attribute value for a third color component, the third color component comprising a luma color component.
10. 10. The device of claim 1, wherein the one or more processors are further configured to reconstruct the point cloud, and wherein the device further comprises a display for presenting an image based on the reconstructed point cloud.
11. the one or more processors reconstructing the point cloud; and generating a map of the interior of the building based on the reconstructed point cloud; performing an autonomous navigation operation based on the reconstructed point cloud; generating computer graphics based on the reconstructed point cloud; or determining a position of a virtual object based on the reconstructed point cloud, and generating an extended reality (XR) visualization in which the virtual object is at the determined position. The device of claim 1 further configured to:
12. The device of claim 1 , wherein the device is one of a mobile phone, a tablet computer, a vehicle, or an extended reality device.
13. 1. A method for decoding encoded point cloud data, comprising: determining, for a point of the point cloud, a first attribute value for a first color component based on the first predicted value and the first residual value; receiving a syntax element for determining a scalar value in the encoded point cloud data, the scalar value being an integer value; applying a scaling factor to the first residual value to determine a predicted second residual value, the scaling factor having a non-integer value, and applying the scaling factor to the first residual value includes performing a multiplication by the scalar value and performing a right bit-shift operation based on a precision of the scaling factor, wherein a result of the combination of the multiplication by the scalar value and the right bit-shift operation is equal to the scaling factor; receiving a second residual value in the encoded point cloud data for the point of the point cloud; determining a final second residual value based on the predicted second residual value and the received second residual value; determining, for the point of the point cloud, a second attribute value for a second color component based on the second predicted value and the final second residual value; A method comprising:
14. 1. A device for encoding point cloud data, comprising: a memory configured to store the encoded point cloud data; one or more processors implemented in circuitry; wherein the one or more processors: determining a first attribute value for a first color component for a point of the point cloud; encoding the first attribute value for the first color component as a first predicted value and a first residual value; determining a second attribute value for a second color component for the point of the point cloud; determining a second predicted value for the second attribute value for the second color component; determining a second residual value for the second attribute value for the second color component; applying a scaling factor to the first residual value to determine a predicted second residual value, the scaling factor having a non-integer value equal to a result of a combination of multiplication by an integer scalar value and a right shift operation based on a precision of the scaling factor; generating a syntax element representing a difference between the second residual value and the predicted second residual value and a syntax element for determining the integer scalar value for inclusion in the encoded point cloud data; A device configured to:
15. A computer-readable storage medium storing instructions that, when executed by one or more processors of a device for decoding encoded point cloud data as described in claim 1, cause the one or more processors to perform the method described in claim 13.
Citation Information
Patent Citations
Point Cloud Compression
US20190080483A1
Adaptive subband coding for lifting transform
US20200090373A1
Methods and devices for entropy coding point clouds
WO2019140510A1
Methods and devices for binary entropy coding of point clouds
WO2020070191A1
Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
WO2021066615A1