Geometric-based point cloud compression (g-pcc) coding of color attribute components
By utilizing color channel correlation and predicting residual values using a non-integer scaling factor through the G-PCC encoder and decoder, the problem of low decoding efficiency in point cloud compression is solved, achieving more efficient data transmission and storage.
Patent Information
- Application Number
- CN202180067165.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-09-24
- Filing Date
- 2021-09-27
- Publication Date
- 2026-01-09
- Estimated Expiration
- 2041-09-27
AI Technical Summary
Existing point cloud compression technologies are inefficient when decoding color attributes, requiring a large number of bits to represent differences in attribute values, resulting in high data transmission and storage costs.
By employing a G-PCC encoder and decoder, the residual value is determined by predicting the attribute values of neighboring points, utilizing the correlation between color channels, and using a scaling factor greater than one or a non-integer value. Only the difference between the residual value and the predicted value is signaled, reducing bit usage.
It improves the efficiency of point cloud data decoding, reduces the number of bits required for signal notification of color attribute values, and lowers data transmission and storage costs.
Smart Images

Figure CN116325747B_ABST
Abstract
Description
[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 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. TECHNICAL FIELD
[0002] The present disclosure relates to point cloud encoding and decoding. BACKGROUND
[0003] A point cloud is a collection of points in a three-dimensional space. The points can correspond to points on objects within the three-dimensional space. Thus, a point cloud can be used to represent the physical content of a three-dimensional space. Point clouds can be useful in a wide variety of situations. For example, a point cloud can be used to represent the locations of objects on a road in the context of an autonomous vehicle. In another example, a point cloud can be used in the context of representing the physical content of an environment in order to position virtual objects in an augmented reality (AR) or mixed reality (MR) application. Point cloud compression is the process of encoding and decoding a point cloud. Encoding a point cloud can reduce the amount of data needed to store and transmit the point cloud. SUMMARY
[0004] According to some techniques, to improve coding efficiency, a G-PCC encoder and decoder can be configured to predict attribute values (e.g., YCbCr) of a point from attribute values of already coded neighboring points, signal the difference between the predicted attribute values and the actual attribute values from the encoder to the decoder. For some color components (e.g., Cr), the encoder and decoder can be configured to determine an initial prediction based on already coded neighboring points and additionally predict a residual value based on already coded residual values of another component (e.g., Cb). Thus, the G-PCC encoder does not need to signal the full difference between the initial prediction of the attribute value and the actual attribute value, but 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. Since this remaining residual value can typically be a smaller number than the full residual value, the remaining residual value can be signaled using fewer bits than the full residual value. This use of a prediction value and a residual value can reduce the bits needed to signal the attribute value compared to directly signaling the attribute value.
[0005] This disclosure describes techniques for determining predicted residual values. G-PCC encoders and G-PCC decoders implementing the techniques of this disclosure are able to generate more accurate predicted residual values, resulting in smaller residual values than residual values determined by existing residual prediction techniques. Since smaller values can typically be encoded using fewer bits, by making the residual values smaller, the techniques of this disclosure can reduce the total number of bits needed to signal attribute values.
[0006] 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 circuitry, and the one or more processors are configured to: determine, for a point in the point cloud, a first attribute value of 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 one; receive, for the point in 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 in the point cloud, a second attribute value of a second color component based on a second predicted value and the final second residual value.
[0007] According to another example, a method of decoding encoded point cloud data includes: determining, for a point in the point cloud, a first attribute value of 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 one; receiving, for the point in 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 in the point cloud, a second attribute value of a second color component based on a second predicted value and the final second residual value.
[0008] 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 circuitry, and the one or more processors are configured to: determine, for a point in the point cloud, a first attribute value of a first color component; encode the first attribute value of the first color component as a first predicted value and a first residual value; determine, for the point in the point cloud, a second attribute value of a second color component; determine a second predicted value of the second attribute value of the second color component; determine a second residual value of the second attribute value of 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 one; 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.
[0009] According to another example, a method of encoding point cloud data includes, for a point in the point cloud, determining a first attribute value of a first color component; encoding the first attribute value of the first color component as a first prediction value and a first residual value; for the point in the point cloud, determining a second attribute value of a second color component; determining a second prediction value of the second attribute value of the second color component; determining a second residual value of the second attribute value of 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 one; 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.
[0010] According to another example, a computer-readable storage medium stores instructions that, when executed by one or more processors, cause the one or more processors to: for a point in the point cloud, determine a first attribute value of a first color component based on a first prediction 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 one; for the point in the point cloud, receive a second residual value in encoded point cloud data; determine a final second residual value based on the predicted second residual value and the received second residual value; and for the point in the point cloud, determine a second attribute value of a second color component based on a second prediction value and the final second residual value.
[0011] According to another example, a computer-readable storage medium stores instructions that, when executed by one or more processors, cause the one or more processors to: for a point in the point cloud, determine a first attribute value of a first color component; encode the first attribute value of the first color component as a first prediction value and a first residual value; for the point in the point cloud, determine a second attribute value of a second color component; determine a second prediction value of the second attribute value of the second color component; determine a second residual value of the second attribute value of 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 one; 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.
[0012] According to another example, an apparatus for decoding encoded point cloud data includes, for a point in a point cloud, means for determining a first attribute value of a first color component based on a first prediction 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; for a point in the point cloud, means for receiving 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 for a point in the point cloud, means for determining a second attribute value of a second color component based on a second prediction value and the final second residual value.
[0013] According to another example, an apparatus for encoding point cloud data includes, for a point in a point cloud, means for determining a first attribute value of a first color component; means for encoding the first attribute value of the first color component as a first prediction value and a first residual value; for a point in the point cloud, means for determining a second attribute value of a second color component; means for determining a second prediction value for the second attribute value of the second color component; means for determining a second residual value for the second attribute value of 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 one; 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.
[0014] 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: for a point in a point cloud, determine a first attribute value of a first color component based on a first prediction 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 one; for a point in the point cloud, receive a second residual value in encoded point cloud data; determine a final second residual value based on the predicted second residual value and the received second residual value; and for a point in the point cloud, determine a second attribute value of a second color component based on a second prediction value and the final second residual value.
[0015] According to another example, a computer program product comprises a program product that, when executed by one or more processors, causes the one or more processors to: determine, for a point in a point cloud, a first attribute value of a first color component; encode the first attribute value of the first color component as a first prediction value and a first residual value; determine, for the point in the point cloud, a second attribute value of a second color component; determine a second prediction value of the second attribute value of the second color component; determine a second residual value of the second attribute value of 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 one; 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.
[0016] According to another example, an apparatus for decoding point cloud data, the apparatus comprising, for a point in a point cloud, means for determining a first attribute value of a first color component based on a first prediction 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 in the point cloud, a second residual value in 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 of a second color component for the point in the point cloud based on a second prediction value and the final second residual value.
[0017] According to another example, an apparatus for encoding point cloud data, the apparatus comprising means for determining a first attribute value of a first color component for a point in a point cloud; means for encoding the first attribute value of the first color component as a first prediction value and a first residual value; means for determining a second attribute value of a second color component for the point in the point cloud; means for determining a second prediction value of the second attribute value of the second color component; means for determining a second residual value of the second attribute value of 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 one; and means for generating a syntax element representing a difference between the second residual value and the predicted second residual value for inclusion in encoded point cloud data.
[0018] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF DRAWINGS
[0019] Figure 1 is a block diagram illustrating an example encoding and decoding system that can perform the techniques of this disclosure.
[0020] Figure 2 is a block diagram illustrating an example geometry point cloud compression (G-PCC) encoder.
[0021] Figure 3 is a block diagram illustrating an example G-PCC decoder.
[0022] Figure 4 is a flowchart illustrating example operations of a G-PCC encoder in accordance with one or more techniques of this disclosure.
[0023] Figure 5 is a flowchart illustrating example operations of a G-PCC decoder in accordance with one or more techniques of this disclosure.
[0024] Figure 6 is a conceptual diagram illustrating an example ranging system that can be used with one or more techniques of this disclosure.
[0025] Figure 7 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of this disclosure can be used.
[0026] Figure 8 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of this disclosure can be used.
[0027] Figure 9 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of this disclosure can be used. DETAILED DESCRIPTION
[0028] “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 values or luma / chroma values, for each point associated with the 3D geometry.
[0029] A point cloud contains a set of points in 3D space and can have attributes associated with the points. For example, the attributes can be 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 can be captured by various cameras or sensors, such as light detection and ranging (LIDAR) scanners or 3D scanners, or can be computer-generated. Point cloud data can be used for a variety of applications, including but not limited to architecture (e.g., modeling), graphics (e.g., 3D models for visualization and animation), and the automotive industry (e.g., LIDAR sensors to help with navigation).
[0030] The 3D space occupied by the point cloud data can be enclosed by a virtual bounding box. The positions of the points in the bounding box can be represented with a certain precision. Thus, the positions of one or more points can be quantized based on the precision. At a minimum level, the bounding box is divided into voxels, which are the smallest unit of space represented by a unit cube. Voxels in the bounding box can be associated with zero, one, or more than one point. The bounding box can be divided into multiple cuboid regions, which can be referred to as tiles, and each tile can be coded into one or more slices. The division of the bounding box into slices and tiles can be based on the number of points in each partition, or based on other considerations (e.g., certain regions can be coded as tiles). Slice regions can be further divided using splitting decisions similar to those in video codecs.
[0031] To improve coding efficiency of color attribute information compression, the G-PCC encoder and decoder can be configured to perform color space conversion as a pre-processing or post-processing step, e.g., by converting RGB values to YCbCr values. Even after such conversion, there is often still significant correlation between the channels in the converted color space. This correlation between color channels can be exploited to improve attribute coding efficiency.
[0032] According to some techniques, to improve coding efficiency, the G-PCC encoder and decoder can be configured to predict attribute values (e.g., YCbCr) of a point from attribute values of already coded neighboring points, signal from the encoder to the decoder the difference between the predicted attribute values and the actual attribute values. For some color components (e.g., Cr), the encoder and decoder can be configured to determine an initial prediction based on already coded neighboring points and additionally predict a residual value based on already coded residual values of another component (e.g., Cb). Thus, the G-PCC encoder does not need to signal the full difference between the initial prediction of the attribute value and the actual attribute value, but 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. Since this remaining residual value can typically be a smaller number than the full residual value, it can be signaled using fewer bits than the full residual value. This use of a prediction value and a residual value can reduce the bits needed to signal the attribute value compared to directly signaling the attribute value.
[0033] Example techniques for signaling residual values will now be described. In this example, res_Cb and res_Cr represent residual values for the Cb and Cr color components, respectively. It can be seen that the Cb and Cr residual values can be approximated by the following relationships:
[0034]
[0035] where s is a scalar value that can be one of three values: +1, -1, or 0, representing positive correlation, negative correlation, and no correlation, respectively. For example, to signal s, the encoder can include in the point cloud data a flag indicating whether s is non-zero, and the decoder can parse from the point cloud data. If s is non-zero, the encoder can include in the point cloud data a second flag to indicate the sign, and the decoder can parse the second flag from the point cloud data. For the coding of Res_Cr, the encoder and decoder can make a further prediction from Res_Cb with a scaling factor s, so only the residual value left needs to be included in the point cloud data. From the decoder’s perspective, if ResCr and ResCb are the residual samples reconstructed for Cb and Cr from the bitstream, respectively, the final Cr residual can be determined as Res’Cr = ResCr + s * ResCb.
[0036] While the above technique exploits the correlation (positive or negative) between two color components, i.e., two channels, the technique does not exploit the fact that the remaining energy of two color components can be different other than having positive or negative correlation. Thus, s can not always be well represented by only +1, 0, or -1.
[0037] This disclosure describes techniques for exploiting more diverse s values, where s can be any value with a fractional precision p. This disclosure also describes techniques for signaling these s values. For example, for p = ¼, the possible values of s are k*p = k / 4, where k is an integer. The value of p can be fixed, predetermined, or signaled. In certain examples, the range of s values can be [-a, +a] with a precision of p. For example, for a = 2 and p = ¼, the scaling factor values for s are: {-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 can have different values, such as 1 and 1 / 8, respectively, or some other combination of values. The values of a and p can be fixed, predetermined, signaled, or any combination thereof. As will be explained in more detail below, the scaling factor values for s can also be implemented as a combination of multiplication operations and bit shift operations to potentially avoid floating point operations, and thus reduce computational complexity.
[0038] As an example, suppose a point in a point cloud has the attribute value (Y, Cb, Cr) = (100, 80, 82). The G-PCC decoder can predict the attribute value (predY, predCb, predCr) = (90, 76, 75) from a previously decoded point. Therefore, the residual value (i.e., the difference between the actual attribute value and the predicted attribute value of the point) is (resY, resCb, resCr) = (10, 4, 7). Thus, for resY and resCb, the G-PCC encoder can include values of 10 and 4 in the point cloud. However, for resCr, the G-PCC encoder can include a value equal to 7 - s * resCb in the point cloud. If s can only be equal to -1, 0, or 1, then the G-PCC encoder includes the value 3 in the point cloud data (3 = 7 - s * 4, where s equals 1). However, using the techniques disclosed herein, the G-PCC encoder can, for example, include the value 0 instead of 3 (0 = 7 - s * 4, where s equals 7 / 4) in the point cloud data. Since 0 is less than 3, the G-PCC encoder may be able to encode the value 0 using fewer bits than the value 3.
[0039] Therefore, by determining one or both scaling factors that have non-integer values or absolute values greater than one, the G-PCC encoder and G-PCC decoder may be able to generate more accurate predicted residual values, making the remaining residual values smaller compared to those determined using scaling factors that are only -1, 0, and 1. Since smaller values can typically be decoded with fewer bits, the techniques disclosed herein can reduce the total number of bits required to signal attribute values by making the remaining residual values smaller.
[0040] Figure 1 This is a block diagram illustrating an example encoding and decoding system 100 capable of implementing the techniques of this disclosure. The techniques of this disclosure are generally aimed at decoding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. Typically, point cloud data includes any data used for processing point clouds. Decoding can efficiently compress and / or decompress point cloud data.
[0041] like Figure 1 As shown, system 100 includes a source device 102 and a destination device 116. The source device 102 provides encoded point cloud data for decoding by the destination device 116. Specifically, in Figure 1In the example of FIG. 1, source device 102 provides point cloud data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 can 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, land or sea vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, and the like. In some cases, source device 102 and destination device 116 can be equipped for wireless communication.
[0042] In Figure 1 the example of FIG. 1, source device 102 includes data source 104, memory 106, G-PCC encoder 200, and output interface 108. Destination device 116 includes input interface 122, G-PCC decoder 300, memory 120, and data consumer 118. In accordance with this disclosure, G-PCC encoder 200 of source device 102 and G-PCC decoder 300 of destination device 116 can be configured to apply the techniques of this disclosure related to coding of last components of color attributes in G-PCC. Thus, source device 102 represents an example of an encoding device, while destination device 116 represents an example of a decoding device. In other examples, source device 102 and destination device 116 can include other components or arrangements. For example, source device 102 can receive data (e.g., point cloud data) from an internal or external source. Likewise, destination device 116 can interface with an external data consumer, rather than include a data consumer in the same device.
[0043] As Figure 1 shown in FIG. 1, system 100 is merely one example. In general, other digital encoding and / or decoding devices can perform the techniques of this disclosure related to coding of last components of color attributes in G-PCC. Source device 102 and destination device 116 are merely examples of such devices in which source device 102 generates coded data for transmission to destination device 116. This disclosure refers to a“coding” device as a device that performs coding (encoding and / or decoding) of data. Thus, G-PCC encoder 200 and G-PCC decoder 300 represent examples of coding devices, in particular, encoders and decoders, respectively. In some examples, source device 102 and destination device 116 can operate in a substantially symmetrical manner, such that each of source device 102 and destination device 116 includes encoding and decoding components. Hence, system 100 can support one-way or two-way transmission between source device 102 and destination device 116, e.g., for streaming, playback, broadcast, telephony, navigation, and other applications.
[0044] In general, data source 104 represents a source of data (i.e., raw, uncoded point cloud data) and can provide a succession of "frames" of data to G-PCC encoder 200, which encodes the data of the frames. Data source 104 of source device 102 can include a point cloud capture device such as any of a variety of cameras or sensors, e.g., a 3D scanner or LIDAR device, one or more video cameras, an archive including previously captured data, and / or a data feed interface to receive data from a data content provider. Alternatively or additionally, the point cloud data can be computer-generated from a scanner, camera, sensor, or other data. For example, data source 104 can generate computer graphics-based data as source data, or produce a combination of live data, archived data, and computer-generated data. In each case, G-PCC encoder 200 encodes the captured, pre-captured, or computer-generated data. G-PCC encoder 200 can rearrange the frames from the received order (sometimes referred to as "display order") into coding order for coding. G-PCC encoder 200 can generate one or more bitstreams including encoded data. Source device 102 can then output the encoded data via output interface 108 onto computer- readable medium 110 for reception and / or retrieval by, for example, input interface 122 of destination device 116.
[0045] Memory 106 of source device 102 and memory 120 of destination device 116 can represent general purpose memories. In some examples, memory 106 and memory 120 can store raw data, e.g., raw data from data source 104 and raw decoded data from G-PCC decoder 300. Additionally or alternatively, memory 106 and memory 120 can store software instructions that are executable by, e.g., G-PCC encoder 200 and G-PCC decoder 300, respectively. Although memory 106 and memory 120 are shown separately from G-PCC encoder 200 and G-PCC decoder 300 in this example, it should be understood that G-PCC encoder 200 and G-PCC decoder 300 can also include internal memories for similar or equivalent purposes. Moreover, memory 106 and memory 120 can store encoded data, e.g., from the output of G-PCC encoder 200 and to the input of G-PCC decoder 300. In some examples, portions of memory 106 and memory 120 can be allocated as one or more buffers, e.g., to store raw data, decoded data, and / or encoded data. For example, memory 106 and memory 120 can store data representing a point cloud.
[0046] Computer-readable medium 110 can represent any type of medium or device capable of storing encoding data. In one example, computer-readable medium 110 represents a communication medium to enable source device 102 to transmit encoded data directly to destination device 116 in real-time, e.g., via a radio frequency network or computer-based network. Output interface 108 can modulate a transmission signal including the encoded data, and input interface 122 can demodulate received transmission signals, according to a communication standard, such as a wireless communication protocol. The communication medium can comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can form part of a packet-based network, such as a local area network, a wide-area network, or a global network such as the Internet. The communication medium can include routers, switches, base stations, or any other equipment that can be useful to facilitate communication from source device 102 to destination device 116.
[0047] In some examples, source device 102 can output encoded data from output interface 108 to storage device 112. Similarly, destination device 116 can access encoded data from storage device 112 via input interface 122. Storage device 112 can include any of a variety of distributed or locally accessed data storage media such as a hard drive, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other suitable digital storage media for storing encoded data.
[0048] In some examples, source device 102 can output encoded data to file server 114, which can store the encoded data generated by source device 102. Destination device 116 can access stored data from file server 114 via streaming or download. File server 114 can be any type of server device that is capable of storing encoded data and transmitting that encoded data to destination device 116. File server 114 can 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 can access encoded data from file server 114 by
[0049] Output interface 108 and input interface 122 can represent wireless transmitters / receivers, modems, wired networking components (e.g., Ethernet cards), wireless communication components operating according to any of a variety of IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 comprise wireless components, output interface 108 and input interface 122 can be configured to transmit data, such as encoded data, according to a cellular communication standard, such as 4G, 4G-LTE (Long-Term Evolution), LTE Advanced, 5G, or the like. In some examples where output interface 108 includes a wireless transmitter, output interface 108 and input interface 122 can be configured to transmit data, such as encoded data, according to a wireless standard, such as an IEEE 802.11 specification, an IEEE 802.15 specification (e.g., ZigBee TM ), a Bluetooth TM standard, or the like. In some examples, source device 102 and / or destination device 116 can include respective system on a chip (SoC) devices. For example, source device 102 can include a SoC device to perform functions attributed to G-PCC encoder 200 and / or output interface 108, and destination device 116 can include a SoC device to perform functions attributed to G-PCC decoder 300 and / or input interface 122.
[0050] The techniques of this disclosure can be applied to encoding and decoding to support any of a variety of applications, such as communication between autonomous vehicles, communication between scanners, cameras, sensors, and processing devices (such as local or remote servers), geographic mapping, or other applications.
[0051] Input interface 122 of destination device 116 receives the encoded bitstream from computer-readable medium 110 (e.g., a communication medium, storage device 112, file server 114, or the like). The encoded bitstream can include signaling information defined by G-PCC encoder 200 that is used by G-PCC decoder 300, such as syntax elements having values that describe characteristics and / or processing of coded units (e.g., slices, pictures, groups of pictures, sequences, or the like). Data consumer 118 uses the decoded data. For example, data consumer 118 can use the decoded data to determine a location of a physical object. In some examples, data consumer 118 can include a display to present a point cloud-based image.
[0052] The G-PCC encoder 200 and the G-PCC decoder 300 each can be implemented as any of a variety of suitable encoder and / or decoder circuitry, 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 combinations thereof. When the techniques are implemented partially in software, a device can store instructions for the software in a suitable, non- transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Each of the G-PCC encoder 200 and the G-PCC decoder 300 can be included in one or more encoders or decoders, any of which can be integrated as part of a combined encoder / decoder (CODEC) in a respective device. A device including the G-PCC encoder 200 and / or the G-PCC decoder 300 can comprise one or more integrated circuits (ICs), microprocessors, and / or other types of devices.
[0053] The G-PCC encoder 200 and the G-PCC decoder 300 can operate according to a coding standard, such as the Video Point Cloud Compression (V-PCC) standard or the Geometric Point Cloud Compression (G-PCC) standard. This disclosure can generally refer to the coding (e.g., encoding and decoding) of point clouds to include the process of encoding or decoding data. An encoded bitstream generally includes a series of values for syntax elements that represent coding decisions (e.g., coding modes).
[0054] This disclosure can generally refer to “signaling” certain information, such as syntax elements. The term “signaling” can generally refer to the communication of values for syntax elements and / or other data used to decode encoded data. That is, the G-PCC encoder 200 can signal values for syntax elements in a bitstream. Generally, signaling refers to generating a value in a bitstream. As described above, the source device 102 can transmit the bitstream to the destination device 116 in substantially real-time or non-real time, such as can occur when storing syntax elements to the storage device 112 for later retrieval by the destination device 116.
[0055] The ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) is investigating the potential need for standardization of point cloud coding technology that compresses significantly beyond current methods, and will work to create that standard. This exploratory activity is being undertaken in conjunction with a collaborative effort known as the 3-Dimensional Graphics Group (3DG) to evaluate compression technology designs proposed by their experts in this area.
[0056] Point cloud compression activities are divided into two different approaches. The first approach is “Video-based Point Cloud Compression” (V-PCC), which segments 3D objects and projects these segments to multiple 2D planes (represented as “patches” in 2D frames), which are then further coded by traditional 2D video codecs, such as High Efficiency Video Coding (HEVC) (ITU-T H.265) codec. The second approach is “Geometry-based Point Cloud Compression” (G-PCC), which directly compresses 3D geometry, i.e., the positions of the point set in 3D space, and associated attribute values (for each point associated with the 3D geometry). G-PCC addresses the compression of point clouds in Category 1 (static point clouds) and Category 3 (dynamically acquired point clouds). The latest draft of the G-PCC standard is available in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19088, Brussels, Belgium, January 2020, and the description of the codec can be found in G-PCC Codec Description v6, ISO / IEC JTC1 / SC29 / WG11 w19091, Brussels, Belgium, January 2020.
[0057] A point cloud contains a set of points in 3D space and can have attributes associated with the points. The attributes can be color information, such as R, G, B, or Y, Cb, Cr, or reflectance information, or other attributes. Point clouds can be captured by various cameras or sensors, such as LIDAR sensors and 3D scanners, or generated by computers. Point cloud data is used in various applications, including but not limited to, architecture (modeling), graphics (3D models for visualization and animation), and automotive industry (LIDAR sensors to help with navigation).
[0058] The 3D space occupied by the point cloud data can be enclosed by a virtual bounding box. The positions of the points in the bounding box can be represented with a certain precision; thus, the positions of one or more points can be quantized based on the precision. At the minimum level, the bounding box is divided into voxels, which are the smallest unit of space represented by a unit cube. Voxels in the bounding box can be associated with zero, one, or more than one point. The bounding box can be divided into multiple cuboid regions, which can be referred to as tiles. Each tile can be coded into one or more slices. The division of the bounding box into slices and tiles can be based on the number of points in each partition, or based on other considerations (e.g., certain regions can be coded as tiles). Slice regions can be further divided using splitting decisions similar to those in video codecs.
[0059] Figure 2 An overview of the G-PCC encoder 200 is provided. Figure 3An overview of the G-PCC decoder 300 is provided. The illustrated modules are logical and do not necessarily correspond one-to-one with code implemented in a reference implementation of the G-PCC codec, i.e., the TMC13 test model software under study by ISO / IEC MPEG (JTC 1 / SC29 / WG 11).
[0060] In the G-PCC encoder 200 and the G-PCC decoder 300, the point cloud positions are first coded. The attribute coding depends on the decoded geometry. In Figure 2 and Figure 3 In the surface approximation analysis units 212 and 310 and the RAHT units 218 and 314, options are represented that are typically used for Category 1 data, while the LOD generation units 220 and 316, the lifting units 222 and the inverse lifting units 318 represent options that are typically used for Category 3 data. All other units can be generic between Category 1 and Category 3.
[0061] For Category 3 data, the compressed geometry is typically represented as an octree from the root all the way down 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 down to the leaf level of blocks larger than voxels) plus a model of the surface approximating each leaf of the pruned octree. In this way, both Category 1 and Category 3 data share the octree coding mechanism, while Category 1 data can also approximate the voxels inside each leaf using a surface model (referred to as Trisoup coding). The surface model used is a triangulation, each block comprising 1-10 triangles, forming a triangle soup. Thus, the Category 1 geometry codec is referred to as the Trisoup geometry codec, while the Category 3 geometry codec is referred to as the Octree geometry codec.
[0062] At each node of the octree, the occupancy of its one or more child nodes (up to eight nodes) is signaled (when not inferred). 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 child nodes can be used to predict the occupancy of the current node or its child nodes. For sparsely populated points in certain nodes of the octree, the codec also supports a direct coding mode, i.e., directly coding the 3D position of the point. A flag can be signaled to indicate that the direct mode is signaled. At the lowest level, the number of points associated with the octree node / leaf node can also be coded.
[0063] Once the geometry is coded, the attributes corresponding to the geometry points are coded. When there are multiple attribute points corresponding to one reconstructed / decoded geometry point, the attribute value representative of the reconstructed point can be inferred.
[0064] There are three attribute coding processes in G-PCC: Region Adaptive Hierarchical Transform (RAHT) coding, Interpolation-based Hierarchical Nearest Neighbor Prediction (Predicting 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, any of the processes can be used for any data, and as with the geometry codecs in G-PCC, the attribute coding process used to code a point cloud can be specified in the bitstream.
[0065] Coding of attributes can be done in levels of detail (LOD), where each level of detail can obtain a finer representation of the point cloud attributes. Each level of detail can be specified based on a distance metric to neighboring nodes or based on sampling distance. The level of detail generation divides the input point set into a series of levels of detail and related refinement layers. A level of detail is a point set representing a subsampled version of the slice geometry. The zeroth level of detail is the full resolution slice geometry.
[0066] At the G-PCC encoder 200, residuals obtained as output of the coding process of the attributes are quantized. The quantized residuals can be coded using context adaptive arithmetic coding.
[0067] In an example as shown in FIG. 2A, the G-PCC encoder 200 can include a coordinate transform unit 202, a color transform unit 204, a voxelization unit 206, an attribute transfer unit 208, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic encoding unit 214, a geometry reconstruction unit 216, a RAHT unit 218, a LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, and an arithmetic encoding unit 226. Figure 2 As shown in an example of FIG. 2B, the G-PCC encoder 200 can receive a set of positions and a set of attributes. The positions can include coordinates of points in a point cloud. The attributes can include information about points in the point cloud, such as colors associated with points in the point cloud.
[0068] Figure 2 The coordinate transform unit 202 can apply a transform to the coordinates of the points to transform the coordinates from an original domain to a transformed domain. The disclosure can refer to the transformed coordinates as transformed coordinates. The color transform unit 204 can apply a transform to color information of the attributes to transform the color information to a different domain. For example, the color transform unit 204 can transform the color information from an RGB color space to a YCbCr color space.
[0069] Further, as shown in an example of FIG. 2C, the G-PCC encoder 200 can include a coordinate transform unit 202, a color transform unit 204, a voxelization unit 206, an attribute transfer unit 208, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic encoding unit 214, a geometry reconstruction unit 216, a RAHT unit 218, a LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, and an arithmetic encoding unit 226.
[0070] Further, as shown in an example of FIG. 2C, the G-PCC encoder 200 can include a coordinate transform unit 202, a color transform unit 204, a voxelization unit 206, an attribute transfer unit 208, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic encoding unit 214, a geometry reconstruction unit 216, a RAHT unit 218, a LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, and an arithmetic encoding unit 226. Figure 2 In examples of the G-PCC encoder 200, the voxelization unit 206 can voxelize the transformed coordinates. The voxelization of the transformed coordinates can include quantization and removal of some points of the point cloud. In other words, multiple points of the point cloud can be grouped into a single "voxel," which can thereafter be treated as a single point in some respects. In addition, the octree analysis unit 210 can generate an octree based on the voxelized transformed coordinates. Further, in examples of the G-PCC encoder 200, the surface approximation analysis unit 212 can analyze the points to potentially determine a surface representation of the point set. The arithmetic encoding unit 214 can entropy encode syntax elements representing information of the octree and / or the surface determined by the surface approximation analysis unit 212. The G-PCC encoder 200 can output these syntax elements in a geometry bitstream. Figure 2 In examples of the G-PCC encoder 200, the surface approximation analysis unit 212 can analyze the points to potentially determine a surface representation of the point set. The arithmetic encoding unit 214 can entropy encode syntax elements representing information of the octree and / or the surface determined by the surface approximation analysis unit 212. The G-PCC encoder 200 can output these syntax elements in a geometry bitstream.
[0071] The geometry reconstruction unit 216 can reconstruct the transformed coordinates of the 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. Due to the voxelization and the surface approximation, the number of transformed coordinates reconstructed by the geometry reconstruction unit 216 can be different from the original number of points in the point cloud. The disclosure can refer to the resulting points as reconstructed points. The attribute transfer unit 208 can transfer attributes of the original points in the point cloud to the reconstructed points in the point cloud.
[0072] Further, the RAHT unit 218 can apply RAHT coding to the attributes of the reconstructed points. Alternatively or additionally, the LOD generation unit 220 and the lifting unit 222 can apply LOD processing and lifting, respectively, to the attributes of the reconstructed points. The RAHT unit 218 and the lifting unit 222 can generate coefficients based on the attributes. The coefficient quantization unit 224 can quantize the coefficients generated by the RAHT unit 218 or the lifting unit 222. The arithmetic encoding unit 226 can apply arithmetic coding to syntax elements representing the quantized coefficients. The G-PCC encoder 200 can output these syntax elements in an attribute bitstream.
[0073] In examples of the G-PCC encoder 200, the surface approximation analysis unit 212 can analyze the points to potentially determine a surface representation of the point set. The arithmetic encoding unit 214 can entropy encode syntax elements representing information of the octree and / or the surface determined by the surface approximation analysis unit 212. The G-PCC encoder 200 can output these syntax elements in a geometry bitstream. Figure 3 In examples of the G-PCC decoder 300, the geometry arithmetic decoding unit 302 can entropy decode syntax elements representing information of an octree and / or a surface determined by a surface approximation analysis unit. The octree synthesis unit 306 can synthesize the octree based on the entropy decoded syntax elements. The inverse quantization unit 308 can inverse quantize coefficients of the surface determined by the surface approximation analysis unit. The surface approximation synthesis unit 310 can synthesize the surface based on the inverse quantized coefficients. The geometry reconstruction unit 312 can reconstruct transformed coordinates of points in a point cloud based on the synthesized octree, data indicating the synthesized surface, and / or other information. The RAHT unit 314 can apply RAHT coding to attributes of the reconstructed points. The LOD generation unit 316 and the inverse lifting unit 318 can apply LOD processing and lifting, respectively, to the attributes of the reconstructed points. The inverse transformed coordinate unit 320 and the inverse transformed color unit 322 can generate inverse transformed coordinates and inverse transformed colors, respectively, based on the attributes of the reconstructed points.
[0074] The G-PCC decoder 300 can obtain a geometric bitstream and an attribute bitstream. The geometric arithmetic decoding unit 302 of the G-PCC decoder 300 can apply arithmetic decoding (e.g., context-adaptive binary arithmetic decoding (CABAC) or other types of arithmetic decoding) to the syntax elements in the geometric bitstream. Similarly, the attribute arithmetic decoding unit 304 can apply arithmetic decoding to the syntax elements in the attribute bitstream.
[0075] Octree synthesis unit 306 can synthesize octrees based on syntax elements parsed from the geometric bitstream. In the case of using surface approximation in the geometric bitstream, surface approximation synthesis unit 310 can determine the surface model based on syntax elements parsed from the geometric bitstream and based on the octree.
[0076] Furthermore, the geometric reconstruction unit 312 can perform reconstruction to determine the coordinates of points in the point cloud. The inverse coordinate transformation unit 320 can apply an inverse transformation to the reconstructed coordinates to transform the reconstructed coordinates (positions) of points in the point cloud from the transformation domain back to the initial domain.
[0077] In addition, Figure 3 In the example, the inverse quantization unit 308 can inverse quantize the attribute value. The attribute value can be based on syntax elements obtained from the attribute bitstream (e.g., including syntax elements decoded by the attribute arithmetic decoding unit 304).
[0078] Depending on how the attribute values are encoded, RAHT unit 314 can perform RAHT decoding to determine the color values of points in the point cloud based on the inversely quantized attribute values. In some examples, LOD generation unit 316 and inverse lifting unit 318 can use level-of-detail techniques to determine the color values of points in the point cloud.
[0079] In addition, Figure 3 In the example, the inverse color transformation unit 322 can apply an inverse color transformation to the color value. The inverse color transformation can be the inverse of the color transformation applied by the color transformation unit 204 of the G-PCC encoder 200. For example, the color transformation unit 204 can transform color information from the RGB color space to the YCbCr color space. Therefore, the inverse color transformation unit 322 can transform color information from the YCbCr color space to the RGB color space.
[0080] Figure 2 and Figure 3The various units of G-PCC encoder 200 and G-PCC decoder 300 are shown to assist with understanding the operations performed by G-PCC encoder 200 and G-PCC decoder 300. These units can be implemented as fixed function circuitry, programmable circuitry, or a combination thereof. Fixed function circuitry refers to circuitry that provides specific functionality, and for which the operations that can be performed are predetermined. Programmable circuitry refers to circuitry that can be programmed to perform various tasks, and provides flexible functionality among the operations that can be performed. For example, programmable circuitry can execute software or firmware that causes the programmable circuitry to operate in ways defined by instructions of the software or firmware. Fixed function circuitry can execute software instructions (e.g., receive parameters or output parameters), but the types of operations that the fixed function circuitry performs are typically immutable. In some examples, one or more of the units can be distinct circuit blocks (fixed function or programmable), and in some examples, one or more of the units can be integrated circuitry.
[0081] In one or more examples, for compression of color attributes, to improve coding efficiency, G-PCC encoder 200 and G-PCC decoder 300 can be configured to perform color space conversion as a pre-processing / post-processing step. The 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 the color components (also referred to as channels) in the converted color space. The correlation between the color channels can be exploited to improve attribute coding efficiency.
[0082] Details of exploiting inter-channel correlation only between the lifted chroma signals for the lifting transform are provided below. For the purpose of example, let res Cb and res Cr denote the lifting coefficients for the Cb and Cr channels, respectively. In many coding scenarios, the lifted Cb and Cr chroma coefficients can be well approximated by the following relationship:
[0083]
[0084] where s is a scalar value that can have three values: +1, -1, and 0, representing positive correlation, negative correlation, and no correlation, respectively. In some examples, G-PCC encoder 200 signals the s value for each LOD. For the “s” signaling, G-PCC encoder 200 can first encode a flag indicating whether “s” is non-zero, and if “s” is non-zero, G-PCC encoder 200 can encode a second flag indicating the sign of “s”. This signaling can be part of the attribute data payload and is CABAC coded.
[0085] For Res CrFor the coding of Cr, the G-PCC encoder 200 can perform further prediction using a scaling factor s and then signal the remaining residual values. From a decoder's perspective (e.g., the perspective of the G-PCC decoder 300), if ResCr and ResCb are the residual samples reconstructed from the bitstream for Cb and Cr, respectively, then the final Cr residual is: Res'Cr = ResCr + s * ResCb. An additional flag in the APS, aps.inter_chroma_prediction_enabled_flag, can enable and disable this functionality at a high level.
[0086] If the scaling factor s is restricted to -1, 0, or +1, there can be potential problems. Although the correlation (positive or negative) between two channels (e.g., two color components like Cb and Cr) can be exploited using a scaling factor s that is restricted to -1, 0, or +1, the fact that the remaining energy of the two components can be different other than having a positive or negative correlation can not be well represented with just +1, 0, or -1.
[0087] The present disclosure describes some example techniques that can be used together or separately. The example techniques can address the problems described above. However, the techniques described in the present disclosure should not be considered as requiring the example described in the present disclosure to address the problems described above. The example techniques can address different or additional problems than those described above.
[0088] According to the techniques of the present disclosure, the G-PCC encoder 200 and the G-PCC decoder 300 can be configured to exploit more diverse values of s. These values of s can be signaled per LOD, where s can be any value with precision p (fractional). For example, for p = 1 / 4, the possible values of s are k * p = k / 4, where k is an integer. The value of p can be fixed, predetermined (e.g., inferred), or signaled.
[0089] In certain examples, the range of s values can be [-a, +a] with precision p. For example, for a = 2 and p = 1 / 4, the scaling factor values 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 values of a and p can be fixed, predetermined, or signaled.
[0090] In some examples, the precision p can be expressed as a power of 2, i.e., p = 1 / 2 b The division associated with s can be represented with a right shift:
[0091] Res'Cr = ResCr + (k * ResCb » b).
[0092] where k is a scaled version of s, i.e., k = s « b (equivalent to s' = s * p).
[0093] In some examples, the prediction merge rounding term can be (k * ResCr + 1 « (b - 1)) » b. Thus, G-PCC decoder 300 can determine the final residual as: Res'Cr = ResCr + ((k * ResCb + 1 « (b - 1)) » b).
[0094] G-PCC encoder 200 can be configured to signal k for each LOD level (k[lod]) directly, e.g., by signaling the absolute value of k[lod] followed by the sign (if applicable) (if k[lod] is not equal to zero). For the amplitude coding, G-PCC encoder 200 can be configured to use fixed length coding, where the length can be predetermined, fixed, or signaled, or variable length coding. The generated sign is typically correlated in adjacent LODs. Thus, the sign can also be coded with a dedicated context.
[0095] In some examples, the k values of different LODs can be highly correlated to each other. Thus, k[lod] can be predicted from k[lod-1] (if applicable) and G-PCC encoder 200 can signal the difference (k[lod] - k[lod-1]). The amplitude and the sign can be coded separately.
[0096] The signaling can be placed in the attribute data unit header, also referred to as attribute slice header (ASH). In this case, the k values (coded directly or differentially) can be coded using se(v), which means that these values can be coded as signed integer 0th order exponential Golomb coded syntax elements with the left bit first. In order to parse the k values, G-PCC decoder 300 can need information to identify the number of LODs. In G-PCC, the number of LODs (LOD1) can be signaled in the attribute parameter set (APS). However, in some cases, the actual number of LODs (LOD2) can only be derived after the LOD reconstruction and can be smaller compared to #LOD1. For example, LOD1 is equal to 12, while LOD2 is equal to 10. That is, the point arrangement of some slices can be very sparse or the number of points is too small to generate all LODs. For example, in an example coding scenario, LOD1 can be equal to 12 and LOD2 can be equal to 10. To avoid parsing dependencies (at the time of LOD reconstruction), G-PCC encoder 200 can be configured to signal, e.g., always signal the LOD1 scalar values instead of the LOD2 values, while the last (LOD1 - LOD2) values can be signaled as zero, as such values can not be used in the decoding process (attribute reconstruction).
[0097] The G-PCC encoder 200 can signal k at slice level instead of at LOD level. Such slice level signaling can simplify the decoding process and can also reduce the signaling overhead.
[0098] The example techniques (e.g., coding tools for lifting transform or inverse transform) can produce significant gains when coding the last component (e.g., Cr component) as the predicted Res Cr The residual energy of the Cr component can be reduced. A quantization parameter (QP) offset can be applied to the secondary component (e.g., subset) to balance the improvement to all components. The example techniques can also be applied to general multi-dimensional attributes, where the components, i.e., the component being predicted and the component acting as the predictor, can be explicitly signaled in the slice header or attribute / sequence parameter set.
[0099] According to the above techniques, the G-PCC encoder 200 can be configured to determine, for a point in the point cloud, a first attribute value of a first color component (such as the Cb component), and encode the first attribute value of the first color component as a first predicted value and a first residual value. The G-PCC encoder 200 can determine, for the point in the point cloud, a second attribute value of a second color component (such as the Cr component). The G-PCC encoder 200 can determine a second predicted value of the second attribute value of the second color component. The G-PCC encoder 200 can determine a second residual value for the second attribute value of the second color component, such as Res'Cr above. The G-PCC encoder 200 can apply a scaling factor to the first residual value that has one or both of a non-integer value or an absolute value greater than one to determine a predicted second residual value. The scaling factor can be applied, for example, by a multiplication with a scalar value (such as k above) and a bit shift operation (such as >>b described above). The G-PCC encoder 200 can generate a syntax element representing a difference between the second residual value and the predicted second residual value to include in the point cloud data. For example, this difference can correspond to ResCr described above.
[0100] According to the techniques described above, the G-PCC decoder 300 can be configured to determine, for a point in the point cloud, a first attribute value of a first color component based on a first prediction value and a first residual value. For example, the first color component can be the Cb component and the first residual value can correspond to ResCb described above. The G-PCC decoder 300 can apply a scaling factor to the first residual value that has one or both of a non-integer value or an absolute value greater than one to determine a predicted second residual value. The scaling factor can be applied, for example, by multiplication with a scalar value such as k above and a bit shift operation such as >>b described above. For a point in the point cloud, the G-PCC decoder 300 can receive a second residual value in the encoded point cloud data, such as ResCr described above, 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 a second prediction value and the final second residual value, the G-PCC decoder 300 can determine a second attribute value of a second color component, such as the Cr component.
[0101] Figure 4 is a flowchart illustrating example operations of the G-PCC encoder 200 according to one or more techniques of this disclosure. The G-PCC encoder 200 determines, for a point in a point cloud, a first attribute value of a first color component (402). The G-PCC encoder 200 encodes the first attribute value of the first color component as a first prediction value and a first residual value (404). For example, the first color component can be a first chroma color component, such as the Cb component.
[0102] The G-PCC encoder 200 determines, for a point in the point cloud, a second attribute value of a second color component (406). The second color component can be, for example, a second chroma color component, such as the Cr component.
[0103] The G-PCC encoder 200 determines a second prediction value for the second attribute value of the second color component (408). For example, the G-PCC encoder 200 can determine the second prediction value for the point in 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 can determine the second prediction value, for example, 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 of the second color component (410). The second residual value can be, for example, a difference between the second attribute value and the second prediction value.
[0104] In this example, the G-PCC encoder 200 applies a scaling factor to the first residual value to determine a predicted second residual value, the scaling factor having one or both of a non-integer value or an absolute value greater than one (412). The G-PCC encoder 200 may, for example, determine and generate a syntax element for determining a scalar value that is an integer value to include in the point cloud data. To generate the scalar value, the G-PCC encoder 200 can generate a difference value corresponding to a 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 different level of detail than the level of detail for the point cloud. The G-PCC encoder 200 can include the scalar value in a syntax structure such as an attribute slice header. To apply the scaling factor, the G-PCC encoder 200 can perform a multiplication by the scalar value and perform a bit shift operation. The bit shift operation may, for example, be a value determined based on a precision of the scaling factor, such as a right shift of 2.
[0105] The G-PCC encoder 200 generates a syntax element representing a difference between the second residual value and the predicted second residual value to include in the point cloud data (414).
[0106] Figure 5 is a flowchart illustrating example operations of the G-PCC decoder 300 according to one or more techniques of this disclosure. In Figure 5 In the example of FIG. 5, the G-PCC decoder 300 determines a first attribute value for a point in a point cloud for a first color component based on a first predicted value and a first residual value (502). The first color component may, for example, be a first chroma color component, such as a Cb component.
[0107] 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 one or both of a non-integer value or an absolute value greater than one (504). That is, in addition to scaling factors of -1, 0, 1, the scaling factor can also have a fractional value between -1 and 1, and can also have both an integer and a fractional value, with a magnitude greater than 1. The G-PCC decoder 300 may, for example, receive a syntax element for determining a scalar value that is an integer value in the point cloud data as part of a syntax structure such as an attribute slice header and apply the scaling factor by performing a multiplication by the scalar value and performing a bit shift operation. The bit shift operation may, for example, be a value determined based on a precision of the scaling factor, such as a right shift of 2. The G-PCC decoder 300 may, for example, receive a variable length syntax element indicating a difference value corresponding to a difference between the scalar value for a different level of detail than the level of detail for the point cloud and a previously determined scalar value.
[0108] In this example, the G-PCC decoder 300 receives a second residual value for a point in the point cloud in the encoded point cloud data (506), and determines a final second residual value based on the predicted second residual value and the received second residual value (508). The final second residual value may, for example, be a sum of the received second residual value and the predicted second residual value.
[0109] The G-PCC decoder 300 determines a second attribute value for a second color component for the point in the point cloud based on the second predicted value and the final second residual value (510). The G-PCC decoder 300 may, for example, determine the second predicted value for the point in the point cloud based on values for one or more different points of the point cloud. The G-PCC decoder 300 may, for example, determine the second predicted value as a weighted average of attribute values for previously decoded points. The second color component may, for example, be a second chroma color component, such as a Cr component. The G-PCC decoder 300 can also determine a third attribute value for a third color component (such as a luma color component) for the point in the point cloud. 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 can reconstruct the point cloud.
[0110] Figure 6 is a conceptual diagram illustrating an example ranging system 600 that can be used with one or more techniques of this disclosure. In Figure 6 In examples of the ranging system 600, the ranging system 600 includes an illuminator 602 and a sensor 604. The illuminator 602 can emit light 606. In some examples, the illuminator 602 can emit the light 606 as one or more laser beams. The light 606 can be at one or more wavelengths, such as infrared wavelengths or visible 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 a return light 610. The return light 610 can include backscattered light and / or reflected light. The return light 610 can pass through a lens 611 that directs the return light 610 to create an image 612 of the object 608 on the sensor 604. The sensor 604 generates a signal 618 based on the image 612. The image 612 can include a set of points (e.g., as represented by the dots in the image 612). Figure 6
[0111] In some examples, the illuminator 602 and the sensor 604 can 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 ranging system 600 can 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 particular range (e.g., up to 360-degrees). While the ranging system 600 is described as including an illuminator 602 and a sensor 604, in other examples, the ranging system 600 can include more than one illuminator 602 and / or more than one sensor 604. Figure 6 The examples of FIG. 6 show only a single illuminator 602 and sensor 604, but the ranging system 600 can include multiple sets of illuminators and sensors.
[0112] In some examples, the illuminator 602 generates a structured light pattern. In such examples, the ranging system 600 can include multiple sensors 604 on which respective images of the structured light pattern are formed. The ranging system 600 can use differences between the images of the structured light pattern to determine distances to objects 608 from which the structured light pattern is backscattered. Structured light-based ranging systems can have a high level of precision (e.g., precision in the sub-millimeter range) when the objects 608 are relatively close to the sensors 604 (e.g., 0.2 meters to 2 meters). Such a high level of precision can be useful for facial recognition applications, such as unlocking mobile devices (e.g., mobile phones, tablets, etc.) and for security applications.
[0113] In some examples, the ranging system 600 is a time-of-flight (ToF)-based system. In some examples in which the ranging system 600 is a ToF-based system, the illuminator 602 generates pulses of light. In other words, the illuminator 602 can modulate the amplitude of the emitted light 606. In such examples, the sensor 604 detects the returning light 610 from the pulses of light 606 produced by the illuminator 602. The ranging system 600 can then determine distances to the objects 608 from which the light 606 is backscattered based on the delay between the times at which the light 606 is emitted and detected and the known speed of light in air. In some examples, the illuminator 602 can modulate the phase of the emitted light 606 instead of (or in addition to) modulating the amplitude of the emitted light 606. In such examples, the sensor 604 can detect the phase of the light 610 returned from the objects 608 and determine distances to points on the objects 608 using the speed of light and the time difference between when the illuminator 602 produces the light 606 at a particular phase and when the sensor 604 detects the returning light 610 at the particular phase.
[0114] In other examples, a point cloud can be generated without using the illuminator 602. For example, in some examples, the sensor 604 of the ranging system 600 can include two or more optical cameras. In such examples, the ranging system 600 can use the optical cameras to capture stereoscopic images of an environment, including the objects 608. The ranging system 600 (e.g., the point cloud generator 620) can then calculate differences between locations in the stereoscopic images. The ranging system 600 can then use the differences to determine distances to the locations shown in the stereoscopic images. From these distances, the point cloud generator 620 can generate a point cloud.
[0115] The sensor 604 can also detect other properties of the objects 608, such as color and reflectivity information. In some examples, the ranging system 600 can use the color and reflectivity information to determine distances to the objects 608. For example, the ranging system 600 can use the color and reflectivity information to determine distances to the objects 608 based on the assumption that the color and reflectivity of the objects 608 are related to the distances to the objects 608. In some examples, the ranging system 600 can use the color and reflectivity information to determine distances to the objects 608 based on the assumption that the color and reflectivity of the objects 608 are related to the distances to the objects 608. Figure 6In the example, point cloud generator 620 can generate a point cloud based on signal 618 generated by sensor 604. Ranging system 600 and / or point cloud generator 620 can form data source 104 ( Figure 1 Part of ).
[0116] Figure 7 This is a conceptual diagram illustrating an example vehicle-based scenario in which one or more technologies of this disclosure can be used. Figure 7 In the example, vehicle 700 includes laser-encapsulated components 702, such as a LiDAR system. Although in Figure 7 Not shown in the example, but vehicle 700 may also include a data source and a G-PCC encoder, such as G-PCC encoder 200 ( Figure 1 ).exist Figure 7 In the example, laser package 702 emits a laser beam 704, which reflects off a pedestrian 706 or other object in the road. The data source of vehicle 700 can generate a point cloud based on the signal generated by laser package 702. A G-PCC encoder of vehicle 700 can encode the point cloud to generate a bitstream 708. Bitstream 708 can include significantly fewer bits than the unencoded point cloud obtained by the G-PCC encoder. The output interface of vehicle 700 (e.g., output interface 108) Figure 1 The bitstream 708 can be sent to one or more other devices. Therefore, the vehicle 700 may be able to send the bitstream 708 to other devices faster than uncoded point cloud data. Furthermore, the bitstream 708 may require less data storage capacity.
[0117] exist Figure 7 In the example, vehicle 700 can send bitstream 708 to another vehicle 710. Vehicle 710 may include a G-PCC decoder, such as G-PCC decoder 300. Figure 1 The G-PCC decoder of vehicle 710 can decode bitstream 708 to reconstruct a point cloud. Vehicle 710 can use the reconstructed point cloud for various purposes. For example, vehicle 710 can determine, based on the reconstructed point cloud, that pedestrian 706 is in the road ahead of vehicle 700 and therefore begin to decelerate, even before the driver of vehicle 710 becomes aware that pedestrian 706 is in the road. Thus, in some examples, vehicle 710 can perform autonomous navigation operations, generate notifications or warnings, or perform other actions based on the reconstructed point cloud.
[0118] Additionally or alternatively, vehicle 700 can transmit bitstream 708 to server system 712. Server system 712 can use bitstream 708 for various purposes. For example, server system 712 can store bitstream 708 for subsequent reconstruction of the point cloud. In this example, server system 712 can 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 can store bitstream 708 for subsequent reconstruction for a judicial car crash investigation (e.g., if vehicle 700 collides with pedestrian 706) or can send notifications or instructions to vehicle 700 or vehicle 710 for navigation.
[0119] Figure 8 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of this disclosure can be used. Extended reality (XR) is a term used to encompass a range of technologies including augmented reality (AR), mixed reality (MR), and virtual reality (VR). In Figure 8 In the example of FIG. 8, a first user 800 is at a first location 802. User 800 wears an XR headset 804. As an alternative to XR headset 804, user 800 can use a mobile device (e.g., a mobile phone, a tablet, etc.). XR headset 804 includes a depth detection sensor, such as a LIDAR system, that detects the positions of points on objects 806 at first location 802. A data source of XR headset 804 can generate a point cloud representation of objects 806 at location 802 using signals generated by the depth detection sensor. XR headset 804 can include a G-PCC encoder (e.g., G-PCC encoder 200 of Figure 1 FIG. 8), which is configured to encode the point cloud to generate bitstream 808.
[0120] The XR headset 804 can send 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 can decode the bitstream 808 to reconstruct the point cloud. The XR headset 810 can use the point cloud to generate an XR visualization (e.g., an AR, MR, 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 can have a 3D immersive experience of the location 802. In some examples, the XR headset 810 can determine a location of a virtual object based on the reconstructed point cloud. For example, the XR headset 810 can determine, based on the reconstructed point cloud, that the environment (e.g., the location 802) includes a flat surface, and then determine that a virtual object (e.g., a cartoon character) is to be placed on the flat surface. The XR headset 810 can generate an XR visualization with the virtual object at the determined location. For example, the XR headset 810 can display the cartoon character sitting on the flat surface.
[0121] Figure 9 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of the disclosure can be used. In Figure 9 In an example, a mobile device 900, such as a mobile phone or tablet, includes a depth detection sensor, such as a LIDAR system, that detects locations of points on an object 902 in an environment of the mobile device 900. A data source of the mobile device 900 can generate a point cloud representation of the object 902 using signals generated by the depth detection sensor. The mobile device 900 can include a G-PCC encoder (e.g., the G-PCC encoder 200 in Figure 1 ) configured to encode the point cloud to generate a bitstream 904. In Figure 9 In an example, the mobile device 900 can send the bitstream to a remote device 906, such as a server system or other mobile device. The remote device 906 can decode the bitstream 904 to reconstruct the point cloud. The remote device 906 can use the point cloud for various purposes. For example, the remote device 906 can generate an environment map of the mobile device 900 using the point cloud. For example, the remote device 906 can generate a map of an interior of a building based on the reconstructed point cloud. In another example, the remote device 906 can generate an image (e.g., computer graphics) based on the point cloud. For example, the remote device 906 can use points in the point cloud as vertices of polygons and use color attributes of the points as a basis for shading the polygons. In some examples, the remote device 906 can perform facial recognition using the point cloud.
[0122] Examples of various aspects of the disclosure can be used alone or in any combination.
[0123] The numbered clauses below recite one or more aspects of the devices and techniques described in this disclosure.
[0124] Clause 1A. A method of decoding point cloud data, the method comprising: determining one or more values indicative of a relationship between a first coefficient of a first color component of the point cloud data and a second coefficient of a second color component, wherein the one or more values comprise one or more values from a range of values that includes values other than -1, 0, and 1 or values in place of -1, 0, and 1; determining at least one of the first coefficient or the second coefficient based on the one or more values; reconstructing the point cloud data based on the determined at least one of the first coefficient or the second coefficient.
[0125] Clause 2A. The method of clause 1A, wherein the first coefficient and the second coefficient are lifting coefficients for a lifting inverse transform to generate values of the first color component and the second color component, respectively.
[0126] 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.
[0127] Clause 4A. The method of any of clauses 1A-3A, wherein the range of values includes any value having a fractional precision p, wherein p is at least one of a fixed value, an inferred value, or a received value.
[0128] Clause 5A. The method of any of clauses 1A-3A, wherein the range of values includes any value in the range [-a, +a] having a precision of p, wherein a and p are at least one of a fixed value, an inferred value, or a received value.
[0129] Clause 6A. The method of any of clauses 4A and 5A, wherein the value of p is equal to 1 / 2 b , b is an integer.
[0130] Clause 7A. The method of any of clauses 1A-6A, wherein determining the one or more values comprises receiving the one or more values.
[0131] Clause 8A. The method of any of clauses 1A-7A, further comprising rendering an image based on the point cloud.
[0132] Clause 9A. A method of encoding point cloud data, the method comprising: determining at least one of first coefficients of a first color component and second coefficients of a second color component of the point cloud data; determining one or more values indicative of a relationship between the first coefficients of the first color component and the second coefficients of the second color component, wherein the one or more values comprise one or more values from a range of values that includes values other than -1, 0, and 1 or instead of -1, 0, and 1; signaling the determined one or more values.
[0133] Clause 10A. The method of clause 9A, wherein the first coefficients and the second coefficients are lifting coefficients for a lifting transform to transform values of the first color component and the second color component, respectively.
[0134] 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 the Cb component or the Cr component.
[0135] Clause 12A. The method of any of clauses 9A-11A, wherein the range of values includes any value with a fractional precision p, wherein p is at least one of a fixed value, an inferred value, or a signaled value.
[0136] 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, wherein a and p are at least one of a fixed value, an inferred value, or a signaled value.
[0137] Clause 14A. The method of any of clauses 12A and 13A, wherein the value of p is equal to 1 / 2 b , b is an integer.
[0138] Clause 15A. The method of any of clauses 9A-14A, further comprising generating the point cloud.
[0139] Clause 16A. An apparatus for decoding point cloud data, the apparatus comprising: a memory for storing the point cloud data; and a processor coupled to the memory and comprising at least one of a fixed function or programmable circuitry, wherein the processor is configured to perform the method of any of clauses 1A-8A.
[0140] Clause 17A. The apparatus of clause 16A, wherein the apparatus comprises a decoder.
[0141] Clause 18A. The apparatus of any of clauses 16A and 17A, further comprising a display to present an image based on the point cloud.
[0142] Clause 19A. A device for decoding point cloud data, the device comprising: a memory to store the point cloud data; and a processor coupled to the memory and comprising at least one of fixed-function or programmable circuitry, wherein the processor is configured to perform the method of any of clauses 9A-15A.
[0143] Clause 20A. The device of clause 19A, wherein the device comprises an encoder.
[0144] Clause 21A. A device for decoding point cloud data, the device comprising means for performing the method of any of clauses 1A-8A.
[0145] Clause 22A. A device for encoding point cloud data, the device comprising means for performing the method of any of clauses 9A-15A.
[0146] Clause 23A. A computer-readable storage medium having instructions stored thereon that, when executed, cause one or more processors to perform the method of any of clauses 1-8.
[0147] Clause 24A. A computer-readable storage medium having instructions stored thereon that, when executed, cause one or more processors to perform the method of any of clauses 9A-15A.
[0148] Clause 25A. A device for decoding encoded point cloud data, the device comprising: a memory to store the encoded point cloud data; and one or more processors coupled to the memory and implemented in circuitry, and the one or more processors are configured to: determine, for a point in the point cloud, a first attribute value of a first color component based on a first prediction 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 one; receive, for the point in 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 in the point cloud, a second attribute value of a second color component based on a second prediction value and the final second residual value.
[0149] 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 to apply the scaling factor, the one or more processors are further configured to perform a multiplication by the scalar value and to perform a bit shift operation.
[0150] 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 2.
[0151] 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.
[0152] Clause 29A. The device of clause 28A, wherein the syntax element for determining the scalar value comprises a variable length syntax element indicating the difference value.
[0153] Clause 30A. The device of clause 28A, wherein the point cloud comprises 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.
[0154] 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.
[0155] Clause 32A. The device of clause 25A, wherein the one or more processors are further configured to determine a second predicted value for a point in the point cloud based on values of one or more different points of the point cloud.
[0156] 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 of the second level of detail.
[0157] 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.
[0158] Clause 35A. The device of clause 34A, wherein the one or more processors are further configured to determine, for a point in the point cloud, a third attribute value for a third color component, wherein the third color component comprises a luma color component.
[0159] Clause 36A. The device of clause 25A, wherein the one or more processors are further configured to reconstruct the point cloud.
[0160] Clause 37A. The device of clause 36A, wherein the one or more processors are further configured to generate a map of an interior of a building based on the reconstructed point cloud.
[0161] Clause 38A. The device of clause 36A, wherein the one or more processors are further configured to perform an autonomous navigation operation based on the reconstructed point cloud.
[0162] 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.
[0163] Clause 40A. The device of clause 36, wherein the one or more processors are configured to: determine a location of the virtual object based on the reconstructed point cloud; and generate an extended reality (XR) visualization in which the virtual object is located at the determined location.
[0164] Clause 41A. The device of clause 36A, further comprising a display to present an image based on the reconstructed point cloud.
[0165] Clause 42A. The device of clause 25A, wherein the device is one of a mobile phone or a tablet computer.
[0166] Clause 43A. The device of clause 25A, wherein the device is a vehicle.
[0167] Clause 44A. The device of clause 25A, wherein the device is an extended reality device.
[0168] Clause 45A. A method of decoding encoded point cloud data, the method comprising: determining, for a point in a point cloud, a first attribute value of a first color component based on a first prediction 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 one; receiving, for a point in 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 a point in the point cloud, a second attribute value of a second color component based on a second prediction value and the final second residual value.
[0169] 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 with the scalar value and performing a bit shift operation.
[0170] Clause 47A. The method of clause 46A, wherein performing the bit shift operation comprises performing a right shift by 2.
[0171] Clause 48A. The method of clause 46A, wherein receiving 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.
[0172] Clause 49A. The method of clause 48A, wherein the syntax element for determining the scalar value comprises a variable length syntax element indicating the difference value.
[0173] Clause 50A. The method of clause 48A, wherein the point cloud comprises 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.
[0174] Clause 51A. The method of clause 46A, wherein receiving the syntax element for determining the scalar value comprises receiving the syntax element for determining the scalar value in an attribute slice header syntax structure.
[0175] Clause 52A. The method of clause 45A, further comprising determining a second predicted value for the point in the point cloud based on values of one or more different points of the point cloud.
[0176] Clause 53A. The method of clause 45A, wherein determining the scaling factor comprises determining the scaling factor based on a scaling factor for the second level of detail.
[0177] 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.
[0178] Clause 55A. The method of clause 54A, further comprising determining, for the point in the point cloud, a third attribute value for a third color component, wherein the third color component comprises a luma color component.
[0179] Clause 56A. A device for encoding point cloud data, the device comprising a memory to store encoded point cloud data; and one or more processors coupled to the memory and implemented in circuitry, and the one or more processors are configured to: determine, for a point in 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 in 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 one; 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.
[0180] Clause 57A. The device of clause 56A, wherein the one or more processors are further configured to: generate, for inclusion 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 with the scalar value and performing a bit shift operation.
[0181] 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 2.
[0182] 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.
[0183] Clause 60A. The device of clause 59A, wherein the syntax element for determining the scalar value comprises a variable length syntax element indicating the difference value.
[0184] Clause 61A. The device of clause 57A, wherein the point cloud comprises 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.
[0185] Clause 62A. The device of clause 57A, wherein to generate the syntax element for determining the scalar value, 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.
[0186] Clause 63A. The device of clause 56A, wherein the one or more processors are further configured to determine a second predicted value for a point in the point cloud based on values of one or more different points of the point cloud.
[0187] 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 a second level of detail.
[0188] 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.
[0189] Clause 66A. The device of clause 65A, wherein the one or more processors are further configured to determine, for a point in the point cloud, a third attribute value for a third color component, wherein the third color component comprises a luma color component.
[0190] Clause 67A. The device of clause 56A, further comprising a sensor that generates the point cloud data.
[0191] Clause 68A. A method of encoding point cloud data, the method comprising: determining, for a point in the point cloud, a first attribute value of a first color component; encoding the first attribute value of the first color component as a first prediction value and a first residual value; determining, for the point in the point cloud, a second attribute value of a second color component; determining a second prediction value of the second attribute value of the second color component; determining a second residual value of the second attribute value of 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 one; 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.
[0192] Clause 69A. The method of clause 44A, further comprising: generating a syntax element for inclusion in the point cloud data for determining a scalar value, wherein the scalar value is an integer value, and wherein applying the scaling factor comprises performing a multiplication with the scalar value and performing a bit shift operation.
[0193] Clause 70A. The method of clause 45A, wherein performing the bit shift operation comprises performing a right shift by 2.
[0194] 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.
[0195] Clause 72A. The method of clause 47A, wherein the syntax element for determining the scalar value comprises a variable length syntax element indicating the difference value.
[0196] Clause 73A. The method of clause 45A, wherein the point cloud comprises 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.
[0197] Clause 74A. The method of clause 45A, wherein generating the syntax element for determining the scalar value comprises including the syntax element for determining the scalar value in an attribute slice header syntax structure.
[0198] Clause 75A. The method of clause 44A, further comprising: determining the second prediction value for the point in the point cloud based on values of one or more different points of the point cloud.
[0199] Clause 76A. The method of clause 44A, wherein determining the scaling factor comprises determining the scaling factor based on a scaling factor for the second level of detail.
[0200] 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.
[0201] Clause 78A. The method of clause 53A, further comprising: determining, for a point in the point cloud, a third attribute value of a third color component, wherein the third color component comprises a luma color component.
[0202] 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 in the point cloud, a first attribute value of a first color component based on a first prediction 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 one; receive, for the point in 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 in the point cloud, a second attribute value of a second color component based on a second prediction value and the final second residual value.
[0203] 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 in the point cloud, a first attribute value of a first color component; encode the first attribute value of the first color component as a first prediction value and a first residual value; determine, for the point in the point cloud, a second attribute value of a second color component; determine a second prediction value of the second attribute value of the second color component; determine a second residual value of the second attribute value of 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 one; 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.
[0204] Clause 1B. A device for decoding encoded point cloud data, the device comprising: a memory configured to store the encoded point cloud data; one or more processors implemented in circuitry and configured to: determine, for a point in the point cloud, a first attribute value of a first color component based on a first prediction 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 one; receive, for the point in 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 in the point cloud, a second attribute value of a second color component based on a second prediction value and the final second residual value.
[0205] 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, wherein the scalar value is an integer value, and wherein to apply the scaling factor, the one or more processors are further configured to perform a multiplication with the scalar value and perform a bit shift operation.
[0206] Clause 3B. The device of clause 2B, wherein to perform the bit shift operation, the one or more processors are further configured to perform a right shift by 2.
[0207] 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.
[0208] Clause 5B. The device of clause 4B, wherein the syntax element for determining the scalar value comprises a variable length syntax element indicating the difference value.
[0209] Clause 6B. The device of clause 4B or 5B, wherein the point cloud comprises 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.
[0210] Clause 7B. The device of any of clauses 2B-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.
[0211] 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 a point in the point cloud based on values of one or more different points of the point cloud.
[0212] Clause 9B. The device of any of clauses 1B-8B, wherein the point cloud comprises 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.
[0213] 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.
[0214] Clause 11B. The device of clause 10B, wherein the one or more processors are further configured to determine, for the point in the point cloud, a third attribute value for a third color component, wherein the third color component comprises a luma color component.
[0215] Clause 12B. The device of any of clauses 1B-11B, wherein the one or more processors are further configured to reconstruct the point cloud.
[0216] 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.
[0217] Clause 14B. The device of clause 12B, wherein the one or more processors are further configured to perform an autonomous navigation operation based on the reconstructed point cloud.
[0218] 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.
[0219] Clause 16B. The device of clause 12B, wherein the one or more processors are configured to: determine a location of a virtual object based on the reconstructed point cloud; and generate an extended reality (XR) visualization with the virtual object located at the determined location.
[0220] Clause 17B. The device of any of clauses 12B-16B, further comprising a display to present an image based on the reconstructed point cloud.
[0221] Clause 18B. The device of any of clauses 1B-17B, wherein the device is one of a mobile phone or a tablet computer.
[0222] Clause 19B. The device of any of clauses 1B-14B or 17B, wherein the device is a vehicle.
[0223] Clause 20B. The device of any of clauses 1B-19B, wherein the device is an extended reality device.
[0224] Clause 21B. A method of decoding encoded point cloud data, the method comprising: determining, for a point in a point cloud, a first attribute value of a first color component based on a first prediction 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 one; receiving, for the point in 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 in the point cloud, a second attribute value of a second color component based on a second prediction value and the final second residual value.
[0225] Clause 22B. The method of clause 21B, 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 with the scalar value and performing a bit shift operation.
[0226] Clause 23B. The method of clause 22B, wherein performing a bit shift operation includes performing a right shift by 2.
[0227] 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.
[0228] Clause 25B. The method of clause 24B, wherein the syntax element for determining the scalar value includes a variable length syntax element indicating the difference value.
[0229] 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.
[0230] Clause 27B. The method of any of clauses 22B-26B, wherein receiving the syntax element for determining the scalar value includes receiving the syntax element for determining the scalar value in an attribute slice header syntax structure.
[0231] Clause 28B. The method of any of clauses 21B-27B, further comprising determining a second predicted value for a point in the point cloud based on values of one or more different points of the point cloud.
[0232] 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.
[0233] 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.
[0234] Clause 31B. The method of clause 30B, further comprising determining, for the point in the point cloud, a third attribute value for a third color component, wherein the third color component includes a luma color component.
[0235] Clause 32B. A device for encoding point cloud data, the device comprising: a memory configured to store encoded point cloud data; one or more processors implemented in circuitry and configured to: determine, for a point in a point cloud, a first attribute value of a first color component; encode the first attribute value of the first color component as a first prediction value and a first residual value; determine, for the point in the point cloud, a second attribute value of a second color component; determine a second prediction value for the second attribute value of the second color component; determine a second residual value for the second attribute value of 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 one; 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.
[0236] Clause 33B. The device of clause 32B, wherein the one or more processors are further configured to: generate a syntax element for inclusion in the point cloud data for determining a scalar value, wherein the scalar value is an integer value, and wherein applying the scaling factor comprises performing a multiplication with the scalar value and performing a bit shift operation.
[0237] 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 2.
[0238] 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.
[0239] Clause 36B. The device of clause 35B, wherein the syntax element for determining the scalar value comprises a variable length syntax element indicating the difference value.
[0240] Clause 37B. The device of any of clauses 33B-36B, wherein the point cloud comprises 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.
[0241] Clause 38B. The device of any of clauses 33B-38B, wherein to generate the syntax element for determining the scalar value, 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.
[0242] Clause 39B. The device of any of clauses 32B-38B, wherein the one or more processors are further configured to: determine the second prediction value for the point in the point cloud based on values of one or more different points of the point cloud.
[0243] Clause 40B. The device of any of clauses 32B-39B, wherein the point cloud comprises 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 that is different from the first level of detail.
[0244] 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.
[0245] Clause 42B. The device of clause 41B, wherein the one or more processors are further configured to: determine, for a point in the point cloud, a third attribute value for a third color component, wherein the third color component comprises a luma color component.
[0246] Clause 43B. The device of any of clauses 32B-42B, further comprising a sensor to generate the point cloud data.
[0247] Clause 44B. A method of encoding point cloud data, the method comprising: determining, for a point in a point cloud, a first attribute value for a first color component; encoding the first attribute value for the first color component as a first prediction value and a first residual value; determining, for the point in the point cloud, a second attribute value for a second color component; determining a second prediction 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 one; 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.
[0248] Clause 45B. The method of clause 44B, further comprising: generating a syntax element for inclusion in the point cloud data for determining a scalar value, wherein the scalar value is an integer value, and wherein applying the scaling factor comprises performing a multiplication with the scalar value and performing a bit shift operation.
[0249] Clause 46B. The method of clause 45B, wherein performing the bit shift operation comprises performing a right shift by 2.
[0250] 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.
[0251] Clause 48B. The method of clause 47B, wherein the syntax element for determining the scalar value comprises a variable length syntax element indicating the difference value.
[0252] Clause 49B. The method of any of clauses 45B-48B, wherein the point cloud comprises 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.
[0253] Clause 50B. The method of any of clauses 45B-49B, wherein generating the syntax element for determining the scalar value comprises including the syntax element for determining the scalar value in a property slice header syntax structure.
[0254] Clause 51B. The method of any of clauses 44B-50B, further comprising determining a second predicted value for a point in the point cloud based on values of one or more different points of the point cloud.
[0255] Clause 52B. The method of any of clauses 44B-51B, wherein determining the scaling factor comprises determining the scaling factor based on a scaling factor for the second level of detail.
[0256] Clause 53B. The method of any of clauses 44B-52B, wherein the first color component comprises a first chroma color component and the second color component comprises a second chroma color component.
[0257] Clause 54B. The method of clause 53B, further comprising determining, for the point in the point cloud, a third attribute value for a third color component, wherein the third color component comprises a luma color component.
[0258] 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 in a 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 one; receive, for the point in the point cloud, a second residual value in 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 in the point cloud, a second attribute value for a second color component based on a second predicted value and the final second residual value.
[0259] 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 in a point cloud, a first attribute value of a first color component; encode the first attribute value of the first color component as a first prediction value and a first residual value; determine, for the point in the point cloud, a second attribute value of a second color component; determine a second prediction value of the second attribute value of the second color component; determine a second residual value of the second attribute value of 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 one; 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.
[0260] Clause 57B. 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 21B-31B.
[0261] Clause 58B. A 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-54B.
[0262] Examples of the various aspects of the disclosure can be used alone or in any combination.
[0263] It is recognized that certain acts or events that are described herein can be performed in a different sequence, can be added, merged, or entirely omitted (e.g., not all described acts or events are required to practice a technique). Further, in some examples, acts or events can be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors, rather than sequentially.
[0264] In one or more examples, the functions described can be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions can be stored on or transmitted over as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media can include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer- readable media generally can correspond to (1) tangible computer-readable storage media which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instruction, code and / or data structures for implementation of the techniques described in this disclosure. A computer program product can include a computer-readable medium.
[0265] By way of example, and not limitation, such computer-readable storage media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other storage 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
[0266] Instructions can 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, as used herein the terms “processor” and “processing circuitry” can refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein can be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques could be fully implemented in one or more circuits or logic elements.
[0267] The techniques of this disclosure can be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require
[0268] Various examples have been described. These and other examples are within the scope of the following claims.
Claims
1. A device for decoding encoded point cloud data to reconstruct a point cloud, the device comprising: a memory configured to store the encoded point cloud data; one or more processors implemented in circuitry and configured to: determine, for a point in the point cloud, a first attribute value of a first color component based on a first prediction value and a first residual value; receive, in the encoded point cloud data, a syntax element indicative of a scalar value, wherein the scalar value is an integer value; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has a non-integer value, and wherein to apply the scaling factor to the first residual value, the one or more processors are further configured to: perform a multiplication with the scalar value; and perform a right shift operation based on a precision of the scaling factor, wherein a result of a combination of the multiplication with the scalar value and the right shift operation is equal to the scaling factor; receive, for the point in 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 in the point cloud, a second attribute value of a second color component based on a second prediction value and the final second residual value.
2. The apparatus of claim 1, wherein, the right shift operation comprises a right shift by 2.
3. The apparatus of claim 1, wherein, the syntax element is indicative of a difference value corresponding to a difference between the scalar value and a previously determined scalar value.
4. The apparatus of claim 3, wherein, the syntax element comprises a variable length syntax element indicative of the difference value.
5. The apparatus of claim 3, wherein, the point cloud comprises a point cloud of 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. The apparatus of claim 1, wherein, to receive the syntax element, the one or more processors are further configured to receive the syntax element in an attribute slice header syntax structure.
7. The apparatus of claim 1, wherein, the one or more processors are further configured to determine the second prediction value for the point in the point cloud based on values of one or more different points of the point cloud.
8. The apparatus of claim 1, wherein, the point cloud comprises 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.
9. The apparatus of claim 1, wherein, the first color component comprises a first chroma color component and the second color component comprises a second chroma color component.
10. The apparatus of claim 9, wherein, the one or more processors are further configured to determine, for the point in the point cloud, a third attribute value of a third color component, wherein the third color component comprises a luma color component.
11. The apparatus of claim 1, wherein, the one or more processors are further configured to reconstruct the point cloud.
12. The apparatus of claim 11, wherein, the one or more processors are further configured to generate a map of an interior of a building based on the reconstructed point cloud.
13. The apparatus of claim 11, wherein, the one or more processors are further configured to perform an autonomous navigation operation based on the reconstructed point cloud.
14. The apparatus of claim 11, wherein, the one or more processors are further configured to generate computer graphics based on the reconstructed point cloud.
15. The apparatus of claim 11, wherein, the one or more processors are further 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 located at the determined position.
16. The device of claim 11, further comprising a display to present an image based on the reconstructed point cloud.
17. The apparatus of claim 1, wherein, The device is one of a mobile phone or a tablet computer.
18. The apparatus of claim 1, wherein, The device is a vehicle.
19. The apparatus of claim 1, wherein, The device is an extended reality device.
20. A method of decoding encoded point cloud data to reconstruct a point cloud, the method comprising: determining, for a point in the point cloud, a first attribute value of a first color component based on a first prediction value and a first residual value; in the encoded point cloud data, receiving a syntax element indicative of a scalar value, wherein the scalar value is an integer value; applying a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has a non-integer value, wherein applying the scaling factor to the first residual value comprises: performing a multiplication with the scalar value; and performing a right shift operation based on a precision of the scaling factor, wherein a result of a combination of the multiplication with the scalar value and the right shift operation is equal to the scaling factor; receiving, for the point in 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 in the point cloud, a second attribute value of a second color component based on a second prediction value and the final second residual value.
21. The method of claim 20, wherein, The right shift operation comprises performing a right shift by 2.
22. The method of claim 20, wherein, The syntax element is indicative of a difference value corresponding to a difference between the scalar value and a previously determined scalar value.
23. The method of claim 22, wherein, The syntax element comprises a variable length syntax element indicative of the difference value.
24. The method of claim 22, wherein, The point cloud comprises 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.
25. The method of claim 20, wherein, Receiving the syntax element comprises receiving the syntax element in an attribute slice header syntax structure.
26. The method of claim 20, further comprising determining the second prediction value for the point in the point cloud based on values of one or more different points in the point cloud.
27. The method of claim 20, wherein, Determining the scaling factor comprises determining the scaling factor based on a scaling factor for a second level of detail.
28. The method of claim 20, wherein, The first color component comprises a first chroma color component and the second color component comprises a second chroma color component.
29. The method of claim 28, further comprising determining, for the points in the point cloud, a third attribute value of a third color component, wherein, The third color component comprises a luma color component.
30. A device for encoding point cloud data, the device comprising: a memory configured to store encoded point cloud data; one or more processors implemented in circuitry and configured to: determine, for a point in a point cloud, a first attribute value of a first color component; encode the first attribute value of the first color component as a first prediction value and a first residual value; determine, for the point in the point cloud, a second attribute value of a second color component; determine a second prediction value for the second attribute value of the second color component; determine a second residual value for the second attribute value of 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 a non-integer value, wherein to apply the scaling factor to the first residual value, the one or more processors are further configured to: perform a multiplication with a scalar value; and perform a right shift operation based on a precision of the scaling factor, wherein a result of a combination of the multiplication with the scalar value and the right shift operation is equal to the scaling factor; and generate a syntax element indicating the scalar value for inclusion in the encoded point cloud data.
31. The apparatus of claim 30, wherein, To perform the right shift operation, the one or more processors are further configured to perform a right shift by 2.
32. The apparatus of claim 30, wherein, The syntax element indicates a difference value corresponding to a difference between the scalar value and a previously determined scalar value.
33. The apparatus of claim 32, wherein, The syntax element comprises a variable length syntax element indicating the difference value.
34. The apparatus of claim 32, wherein, The point cloud comprises 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.
35. The apparatus of claim 30, wherein, To generate the syntax element, the one or more processors are further configured to include a syntax element for determining the scalar value in a property slice header syntax structure.
36. The apparatus of claim 30, wherein, The one or more processors are further configured to determine the second prediction value for the point in the point cloud based on values of one or more different points in the point cloud.
37. The apparatus of claim 30, wherein, The point cloud comprises 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.
38. The apparatus of claim 30, wherein, The first color component comprises a first chroma color component and the second color component comprises a second chroma color component.
39. The apparatus of claim 38, wherein, The one or more processors are further configured to determine, for the point in the point cloud, a third attribute value for a third color component, wherein the third color component comprises a luma color component.
40. The device of claim 30, further comprising a sensor for generating the encoded point cloud data.
41. A method of encoding point cloud data, the method comprising: determining, for a point in a point cloud, a first attribute value for a first color component; encoding the first attribute value for the first color component as a first prediction value and a first residual value; determining, for the point in the point cloud, a second attribute value for a second color component; determining a second prediction 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 a non-integer value, wherein applying the scaling factor to the first residual value comprises: performing a multiplication with a scalar value; and performing a right shift operation based on a precision of the scaling factor, wherein a result of a combination of the multiplication with the scalar value and the right shift operation is equal to the scaling factor; and generating a syntax element indicating the scalar value for inclusion in the encoded point cloud data.
42. The method of claim 41, wherein, The right shift operation comprises performing a right shift by 2.
43. The method of claim 41, wherein, The syntax element indicates a difference value corresponding to a difference between the scalar value and a previously determined scalar value.
44. The method of claim 43, wherein, The syntax element includes a variable length syntax element indicating the difference value.
45. The method of claim 43, wherein, The point cloud includes a first level of detail of points and the previously determined scalar value is for a second level of detail different from the first level of detail.
46. The method of claim 41, wherein, Generating the syntax element includes including the syntax element for determining the scalar value in an attribute slice header syntax structure.
47. The method of claim 41, further comprising determining the second prediction value for the point in the point cloud based on values of one or more different points of the point cloud.
48. The method of claim 41, wherein, Determining the scaling factor includes determining the scaling factor based on a scaling factor for a second level of detail.
49. The method of claim 41, wherein, The first color component includes a first chroma color component and the second color component includes a second chroma color component.
50. The method of claim 49, further comprising determining, for the points in the point cloud, a third attribute value of a third color component, wherein, The third color component includes a luma color component.
51. 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 in a point cloud in encoded point cloud data, a first attribute value for a first color component based on a first prediction value and a first residual value; receive, in the encoded point cloud data, a syntax element indicating a scalar value, wherein the scalar value is an integer value; apply a scaling factor to the first residual value to determine a predicted second residual value, wherein the scaling factor has a non-integer value, and wherein to apply the scaling factor to the first residual value, the instructions cause the one or more processors to: perform a multiplication with the scalar value; and perform a right shift operation based on a precision of the scaling factor, wherein a result of a combination of the multiplication with the scalar value and the right shift operation is equal to the scaling factor; receive, for the point in 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 in the point cloud, a second attribute value for a second color component based on a second prediction value and the final second residual value.
52. 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 in 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 prediction value and a first residual value; determine, for the point in the point cloud, a second attribute value for a second color component; determine a second prediction value for the second attribute value of the second color component; determine a second residual value for the second attribute value of 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 a non-integer value, wherein to apply the scaling factor to the first residual value, the one or more processors are further configured to: perform a multiplication with a scalar value; and perform a right shift operation based on a precision of the scaling factor, wherein a result of a combination of the multiplication with the scalar value and the right shift operation is equal to the scaling factor; performing a right shift operation based on a precision of the scale factor, wherein a result of a combination of the multiplication of the scalar value and the right shift operation is equal to the scale factor; and generating a syntax element indicative of the scalar value for inclusion in encoded point cloud data.
53. A computer program product comprising computer readable instructions, which, when executed by a processor, cause the processor to perform the method of any one of claims 20-29.
54. A computer program product comprising computer readable instructions, which, when executed by a processor, cause the processor to perform the method of any one of claims 41-50.
Citation Information
Patent Citations
Cross-component prediction in video coding
CN106664425A