Residual predictive coding for geometry point cloud compression
Patent Information
- Application Number
- JP2023559792
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-04-04
- Filing Date
- 2022-04-05
- Publication Date
- 2025-03-27
AI Technical Summary
Existing point cloud compression techniques face issues with overflow conditions during encoding and decoding due to unconstrained residual values, leading to degraded quality of reconstructed point clouds.
Implementing Last Component Residual Prediction (LCRP) and Inter-Component Residual Prediction (ICRP) with predefined bit depth constraints to limit residual values, ensuring that the reconstructed point cloud data does not exceed bit depth limits, thereby preventing overflow conditions.
The proposed method effectively prevents overflow conditions, maintaining the quality of reconstructed point clouds by constraining residual values within defined bit depths, thus ensuring accurate and efficient encoding and decoding processes.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical field]
[0001] This application claims priority to U.S. Patent Application No. 17 / 657,867, filed April 4, 2022, and U.S. Provisional Application No. 63 / 170,999, filed April 5, 2021, the entire contents of each of which are incorporated herein by reference. U.S. Patent Application No. 17 / 657,867, filed April 4, 2022, claims the benefit of U.S. Provisional Application No. 63 / 170,999, filed April 5, 2021.
[0002] This disclosure relates to point cloud encoding and decoding. [Background technology]
[0003] A point cloud is a collection of points in three-dimensional space. The points may correspond to points on an object in the three-dimensional space. Thus, a point cloud may be used to represent the physical content of a three-dimensional space. Point clouds may have utility in a wide variety of situations. For example, point clouds may be used in the context of autonomous vehicles to represent the location of objects on a road. In another example, point clouds may be used in the context of representing the physical content of an environment for the purpose of positioning virtual objects in an augmented reality (AR) or mixed reality (MR) application. Point cloud compression is the process for encoding and decoding a point cloud. Encoding a point cloud may reduce the amount of data required for storage and transmission of the point cloud. Summary of the Invention [Means for solving the problem]
[0004] In general, this disclosure describes techniques for point cloud compression. As described herein, an encoder may encode a bitstream that conforms to one or more constraints. During the encoding and decoding process, a last component residual prediction (LCRP) may be used to reduce the amount of encoded data associated with a signaling component of an attribute of a point of the point cloud data. As part of performing the LCRP, the encoder or decoder may determine a residual value of a first component of an attribute of a point of the point cloud data. Additionally, the encoder or decoder may generate a predicted value of a second component of the attribute of the point. The encoder or decoder may reconstruct the second component as a sum of a multiplication product of the predicted value of the second component and a scale factor for the second component and the residual value of the first component. The one or more constraints may include a constraint that limits at least one of the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, or the residual value of the second component of the attribute of the point to one or more predefined bit depths. Including this constraint may reduce or eliminate the possibility of overflow conditions that may degrade the quality of the reconstructed point cloud data.
[0005] In one example, the disclosure describes a method of decoding point cloud data, the method comprising: obtaining a bitstream encoded to comply with one or more constraints; and decoding the bitstream, the decoding bitstream comprising: determining a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream; generating a predicted value of a second component of the attribute of the point; and reconstructing the second component as a sum of a multiplication product of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point; the one or more constraints comprising a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0006] In another example, the disclosure describes a method of encoding point cloud data, comprising: obtaining the point cloud data; and encoding the point cloud data, where the encoding the point cloud data comprises generating a bitstream that complies with one or more constraints, where the generating bitstream comprises determining a residual value of a first component of an attribute of the point; generating a predicted value of a second component of the attribute of the point; and reconstructing the second component of the attribute of the point as a sum of a multiplication product of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, where the one or more constraints include a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0007] In another example, the disclosure describes a device comprising: a memory configured to store point cloud data; and one or more processors implemented in a circuit coupled to the memory, the one or more processors configured to obtain a bitstream encoded to comply with one or more constraints and to decode the bitstream, where as part of decoding the bitstream, the one or more processors are configured to: determine a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream; generate a predicted value of a second component of the attribute of the point; and reconstruct the second component as a sum of a multiplication product of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point;
[0008] In another example, the disclosure describes a device comprising: a memory configured to store point cloud data; and one or more processors implemented in a circuit coupled to the memory, the one or more processors configured to encode the point cloud data, wherein the one or more processors are configured to generate a bitstream that complies with one or more constraints as part of encoding the point cloud data, wherein the one or more processors are configured to: determine a residual value of a first component of an attribute of the point; generate a predicted value of a second component of the attribute of the point; and reconstruct the second component of the attribute of the point as a sum of a multiplication product of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, wherein the one or more constraints include a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0009] In another example, the present disclosure describes a device comprising: means for obtaining a bitstream encoded to comply with one or more constraints; and means for decoding the bitstream, wherein the means for decoding the bitstream comprises: means for determining a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream; means for generating a predicted value of a second component of the attribute of the point; and means for reconstructing the second component of the attribute of the point as a sum of a multiplication product of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, wherein the one or more constraints include a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0010] In another example, the disclosure provides a non-transitory computer-readable data storage medium having stored thereon instructions that, when executed, cause one or more processors to obtain a bitstream encoded to comply with one or more constraints and decode the bitstream, the instructions, when executed, causing the one or more processors to determine a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream; , generating a predicted value of a second component of the point attribute; and reconstructing the second component of the point attribute as a sum of a multiplication product of the predicted value of the second component of the point attribute and a scale factor for the second component of the point attribute and a residual value of the first component of the point attribute, wherein the one or more constraints include a constraint limiting the first component of the point attribute, the residual value of the first component of the point attribute, the second component of the attribute, and the residual value of the second component of the point attribute to one or more predefined bit depths.
[0011] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will become apparent from the description, drawings, and claims. [Brief description of the drawings]
[0012] [Figure 1] FIG. 1 is a block diagram illustrating an example encoding and decoding system that may implement the techniques of this disclosure. [Diagram 2] FIG. 1 is a block diagram illustrating an example Geometry Point Cloud Compression (G-PCC) encoder. [Diagram 3] FIG. 2 is a block diagram illustrating an exemplary G-PCC decoder. [Figure 4] FIG. 1 is a conceptual diagram showing octree division for geometry coding. [Diagram 5]5 is a flowchart illustrating example operations for encoding point cloud data in accordance with one or more techniques of this disclosure. [Figure 6] 5 is a flowchart illustrating example operations for decoding point cloud data in accordance with one or more techniques of this disclosure. [Figure 7] FIG. 1 is a conceptual diagram illustrating an example distance measurement system that may be used with one or more techniques of this disclosure. [Figure 8] FIG. 1 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of the present disclosure may be used. [Figure 9] FIG. 1 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of this disclosure may be used. [Figure 10] FIG. 1 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of the present disclosure may be used. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0013] A point in a point cloud may have one or more attributes. The attributes of a point may include one or more components. For example, the components of a color attribute of a point may include color samples, such as red, green, and blue color samples. In another example, the components of a color attribute of a point may include a luma sample and two chroma samples. One of the color samples may be designated as a primary component and the other color samples are designated as secondary components. For example, the luma sample may be the primary component and the two chroma samples may be secondary components. A point may have attributes in addition to or instead of a color attribute.
[0014] A geometry point cloud compression (G-PCC) encoder may encode attributes of points in a point cloud to generate an attribute bitstream. Encoding attributes of points in a point cloud may reduce the amount of data required to represent the attributes. A G-PCC decoder may use the attribute bitstream to reconstruct attributes of points in the point cloud.
[0015] In some examples, the G-PCC encoder may use Inter-Component Residual Prediction (ICRP) during the process of encoding the attributes of the points in the point cloud. When the G-PCC encoder uses ICRP, the G-PCC generates a predicted value of the primary component of the attribute of the point and determines a residual value for the primary component of the attribute of the point as the difference between the primary component of the attribute of the point and the predicted value of the primary component of the point. Additionally, the G-PCC encoder generates a predicted value for the secondary component of the attribute of the point and determines an ICRP scale factor to be applied to the point. The G-PCC encoder may generate a residual value of the secondary component of the attribute of the point by subtracting the predicted value of the secondary component from the value of the secondary component and then further subtracting a multiplication product of the ICRP scale factor applied to the point and the residual value for the primary component. The G-PCC encoder may include data based on the residual value of the primary component and the residual value of the secondary component in the attribute bitstream. The G-PCC decoder may reconstruct the value of the secondary component of the point's attribute by adding the secondary component's residual value, the secondary component's predicted value, and a multiplication product of the ICRP scale factor and the residual value for the primary component. The G-PCC encoder and G-PCC decoder may similarly generate a residual value for each secondary component of the point's attribute.
[0016] In some examples, the G-PCC encoder may use last component residual prediction (LCRP) during the process of encoding an attribute of a point in a point cloud. LCRP is similar in some respects to ICRP, but is applied only to the last secondary component of an attribute of a point in a point cloud. When the G-PCC encoder uses LCRP, the G-PCC encoder may generate a residual value for the last component of the attribute of the point based on multiplying the residual value of the penultimate component of the attribute by the LCRP scale value. The G-PCC encoder may include data based on the residual value of the last component in the attribute bitstream. The G-PCC decoder may reconstruct the value of the last component of the attribute of the point by adding the residual value of the last component and the predicted value for the last component.
[0017] When the G-PCC decoder uses either ICRP or LCRP, the G-PCC decoder performs an addition operation. Because ICRP and LCRP involve addition and multiplication operations, it is possible for the value resulting from the addition and multiplication operations to be greater than the maximum value (or less than the minimum value) that can be represented using the number of bits available to store the resulting value. In other words, there may be an overflow condition where there are not enough available bits to store the resulting value. For example, there may be 32 bits available to store the resulting value, but 33 bits may be required to store the resulting value. In this case, errors may occur, such as the wrong color or other attribute being associated with a point in the point cloud.
[0018] According to one or more techniques of this disclosure, a G-PCC encoder may encode an attribute bitstream such that the attribute bitstream complies with one or more constraints. For ICRP, the one or more constraints limit the value of the secondary component to a range such that reconstructing the secondary component does not result in an overflow condition. For LCRP, the one or more constraints limit the value of the penultimate component to a range such that reconstructing the last component does not result in an overflow condition.
[0019] Thus, in one example involving LCRP, a G-PCC encoder may obtain point cloud data and encode the point cloud data. Encoding the point cloud data includes generating a bitstream that conforms to one or more constraints. As part of generating the bitstream, the G-PCC encoder may determine a residual value of a first component (e.g., the penultimate component) of an attribute of the point. Additionally, the G-PCC encoder may generate a predicted value of a second component (e.g., the last component) of the attribute of the point. The G-PCC encoder may reconstruct the second component as a sum of a multiplication product of the predicted value of the second component and a scale factor for the second component and the residual value of the first component. In this example, the one or more constraints include a constraint that limits at least one of the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, or the residual value of the second component of the attribute of the point to one or more predefined bit depths. The constraint limits the first component, the residual value, to a predefined bit-depth so that the overflow condition mentioned above may be avoided.
[0020] Similarly, the G-PCC decoder may obtain a bitstream encoded to comply with one or more constraints. The G-PCC decoder may decode the bitstream. As part of decoding the bitstream, the G-PCC decoder may determine a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream. Additionally, the G-PCC decoder may generate a predicted value of a second component of an attribute of the point. The G-PCC decoder may reconstruct the second component as a sum of a multiplication product of the predicted value of the second component and a scale factor for the second component and the residual value of the first component. In this example, the one or more constraints include a constraint that limits at least one of the second component of the attribute of the point (e.g., a secondary component), the residual value of the second component of the attribute of the point, or the residual value of the first component of the attribute of the point (e.g., a primary component) to one or more predefined bit depths. The constraint limits the second component, the residual value of the second component, or the residual value of the first component to a predefined bit depth, so that the above-mentioned overflow condition may be avoided.
[0021] 1 is a block diagram illustrating an example encoding and decoding system 100 that may implement the techniques of this disclosure. The techniques of this disclosure are generally directed to coding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. In general, point cloud data includes any data for processing a point cloud. Coding may be useful for compressing and / or decompressing the point cloud data.
[0022] As shown in FIG. 1, the system 100 includes a source device 102 and a destination device 116. The source device 102 provides encoded point cloud data to be decoded by the destination device 116. Specifically, in the example of FIG. 1, the source device 102 provides the point cloud data to the destination device 116 via a computer-readable medium 110. The source device 102 and the destination device 116 may comprise any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, terrestrial or marine vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, and the like. In some cases, the source device 102 and the destination device 116 may be capable of wireless communication.
[0023] In the example of FIG. 1, the source device 102 includes a data source 104, a memory 106, a G-PCC encoder 200, and an output interface 108. The destination device 116 includes an input interface 122, a G-PCC decoder 300, a memory 120, and a data consumer 118. According to this disclosure, the G-PCC encoder 200 of the source device 102 and the G-PCC decoder 300 of the destination device 116 may be configured to apply techniques of this disclosure related to residual coding for geometry point cloud compression. Thus, the source device 102 represents an example of an encoding device, and the destination device 116 represents an example of a decoding device. In other examples, the source device 102 and the destination device 116 may include other components or arrangements. For example, the source device 102 may receive data (e.g., point cloud data) from an internal or external source. Similarly, the destination device 116 may interface with an external data consumer rather than including the data consumer within the same device.
[0024] The system 100 as shown in FIG. 1 is only an example. In general, other digital encoding and / or decoding devices may implement the techniques of this disclosure related to residual coding for geometry point cloud compression. The source device 102 and the destination device 116 are only examples of devices in which the source device 102 generates coded data for transmission to the destination device 116. This disclosure refers to devices that perform coding (encoding and / or decoding) of data as "coding" devices. Thus, the G-PCC encoder 200 and the G-PCC decoder 300 represent examples of coding devices, specifically, encoders and decoders, respectively. In some examples, the source device 102 and the destination device 116 may operate substantially symmetrically such that each of the source device 102 and the destination device 116 includes encoding and decoding components. Thus, the system 100 may support one-way or two-way transmission between the source device 102 and the destination device 116, for example, streaming, playback, broadcast, telephony, navigation, and other applications.
[0025] In general, the data source 104 represents a source of data (i.e., raw, unencoded point cloud data) and may provide a sequential series of "frames" of data to the G-PCC encoder 200, which encodes the data for the frames. The data source 104 of the source device 102 may include a point cloud capture device, such as any of a variety of cameras or sensors, e.g., a 3D scanner or light detection and ranging (LIDAR) device, one or more video cameras, an archive containing previously captured data, and / or a data feed interface for receiving data from a data content provider. Alternatively or additionally, the point cloud data may be computer-generated from a scanner, camera, sensor, or other data. For example, the data source 104 may generate computer graphics-based data as source data, or produce a combination of live, archived, and computer-generated data. In each case, the G-PCC encoder 200 encodes the captured, pre-captured, or computer-generated data. The G-PCC encoder 200 may reorder the frames from the order in which they were received (sometimes referred to as "display order") to a coding order for coding. The G-PCC encoder 200 may generate one or more bitstreams including the encoded data. The source device 102 may then output the encoded data via the output interface 108 to a computer-readable medium 110, for receipt and / or retrieval by, for example, an input interface 122 of a destination device 116.
[0026] The memory 106 of the source device 102 and the memory 120 of the destination device 116 may represent general purpose memories. In some examples, the memory 106 and the memory 120 may store raw data, e.g., raw data from the data source 104 and raw decoded data from the G-PCC decoder 300. Additionally or alternatively, the memory 106 and the memory 120 may store software instructions executable by, e.g., the G-PCC encoder 200 and the G-PCC decoder 300, respectively. Although the memory 106 and the memory 120 are shown in this example separately from the G-PCC encoder 200 and the G-PCC decoder 300, it should be understood that the G-PCC encoder 200 and the G-PCC decoder 300 may also include internal memories for functionally similar or equivalent purposes. Additionally, the memory 106 and the memory 120 may store encoded data, e.g., the output from the G-PCC encoder 200 and the input to the G-PCC decoder 300. In some examples, portions of memory 106 and memory 120 may be allocated as one or more buffers, e.g., for storing raw decoded and / or encoded data. For example, memory 106 and memory 120 may store data representing a point cloud.
[0027] The computer-readable medium 110 may represent any type of medium or device capable of transporting encoded data from the source device 102 to the destination device 116. In one example, the computer-readable medium 110 represents a communication medium that allows the source device 102 to transmit encoded data directly to the destination device 116 in real time, for example, via a radio frequency network or a computer-based network. In accordance with a communication standard, such as a wireless communication protocol, the output interface 108 may modulate a transmission signal including the encoded data, and the input interface 122 may demodulate a received transmission signal. The communication medium may comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum, or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful to facilitate communication from the source device 102 to the destination device 116.
[0028] In some examples, source device 102 may output the encoded data from output interface 108 to storage device 112. Similarly, destination device 116 may access the encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, a Blu-ray disc, a DVD, a CD-ROM, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded data.
[0029] In some examples, the source device 102 may output the encoded data to a file server 114 or another intermediate storage device that may store the encoded data generated by the source device 102. The destination device 116 may access the stored data from the file server 114 via streaming or download. The file server 114 may be any type of server device capable of storing the encoded data and transmitting the encoded data to the destination device 116. The file server 114 may represent a web server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network attached storage (NAS) device. The destination device 116 may access the encoded data from the file server 114 through any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of both suitable for accessing the encoded data stored on the file server 114. The file server 114 and the input interface 122 may be configured to operate according to a streaming transmission protocol, a download transmission protocol, or a combination thereof.
[0030] The output interface 108 and the input interface 122 may represent a wireless transmitter / receiver, a modem, a wired networking component (e.g., an Ethernet card), a wireless communication component operating according to any of the various IEEE 802.11 standards, or other physical components. In examples in which the output interface 108 and the input interface 122 comprise wireless components, the output interface 108 and the input interface 122 may be configured to transfer data, such as encoded data, according to a cellular communication standard, such as 4G, 4G-LTE (Long Term Evolution), LTE Advanced, 5G, etc. In some examples in which the output interface 108 comprises a wireless transmitter, the output interface 108 and the input interface 122 may be configured to transfer data, such as encoded data, according to other wireless standards, such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee™), the Bluetooth™ standard, etc. In some examples, the source device 102 and / or the destination device 116 may include respective system-on-chip (SoC) devices. For example, the source device 102 may include a SoC device for performing the functionality identified as being in the G-PCC encoder 200 and / or the output interface 108, and the destination device 116 may include a SoC device for performing the functionality identified as being in the G-PCC decoder 300 and / or the input interface 122.
[0031] The techniques of this disclosure may be applied to encoding and decoding in support of any of a variety of applications, such as communication between autonomous vehicles, communication between scanners, cameras, sensors, and processing devices such as local or remote servers, geographic mapping, or other applications.
[0032] The input interface 122 of the destination device 116 receives the encoded bitstream from the computer-readable medium 110 (e.g., a communication medium, a storage device 112, a file server 114, etc.). The encoded bitstream may include signaling information defined by the G-PCC encoder 200 that is also used by the G-PCC decoder 300, such as syntax elements having values that describe characteristics and / or processing of the coded units (e.g., slices, pictures, groups of pictures, sequences, etc.). The data consumer 118 uses the decoded data. For example, the data consumer 118 may use the decoded data to determine the location of a physical object. In some examples, the data consumer 118 may include a display for presenting an image based on the point cloud.
[0033] The G-PCC encoder 200 and the G-PCC decoder 300 may each be implemented as any of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the techniques are implemented partially in software, a device may store instructions for the software on a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Each of the G-PCC encoder 200 and the G-PCC decoder 300 may be included in one or more encoders or decoders, any of which may be integrated as part of a composite encoder / decoder (codec) in the respective device. A device including the G-PCC encoder 200 and / or the G-PCC decoder 300 may comprise one or more integrated circuits, microprocessors, and / or other types of devices.
[0034] The G-PCC encoder 200 and the G-PCC decoder 300 may operate according to a coding standard, such as the Video Point Cloud Compression (V-PCC) standard or the Geometry Point Cloud Compression (G-PCC) standard. This disclosure may generally refer to coding (e.g., encoding and decoding) a picture to include the process of encoding or decoding data. An encoded bitstream generally includes a set of values for syntax elements that represent coding decisions (e.g., coding modes).
[0035] This disclosure may generally refer to "signaling" some information, such as syntax elements. The term "signaling" may generally refer to communication of values for syntax elements and / or other data used to decode encoded data. That is, the G-PCC encoder 200 may signal values for syntax elements in a bitstream. In general, signaling refers to generating values in a bitstream. As mentioned above, the source device 102 may transport the bitstream to the destination device 116 in substantially real time or not in real time, such as may occur when storing syntax elements in the storage device 112 for later retrieval by the destination device 116.
[0036] ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) is studying the potential need for a standard for point cloud coding techniques with compression capabilities significantly beyond those of current methods, with the goal of producing a standard. The group is working together on this exploration in a collaborative effort known as the 3-Dimensional Graphics Team (3DG) to evaluate compression technology designs proposed by experts in the field.
[0037] Point cloud compression activities are categorized into two different approaches. The first approach is "Video Point Cloud Compression" (V-PCC), which segments a 3D object and projects the segments into multiple 2D planes (represented as "patches" in a 2D frame), which are further coded by a legacy 2D video codec, such as the High Efficiency Video Coding (HEVC) (ITU-T H.265) codec. The second approach is "Geometry-Based Point Cloud Compression" (G-PCC), which directly compresses the 3D geometry, i.e., the location of a set of points in 3D space and the associated attribute values (for each point related to the 3D geometry). G-PCC addresses the compression of point clouds in both category 1 (static point clouds) and category 3 (dynamically acquired point clouds). A recent draft of the G-PCC standard is available in "ISO / IEC FDIS 23090-9, Geometry-based Point Cloud Compression", ISO / JTC JTC1 / SC29 / WG 7 MDS19617, teleconference, October 2020, and a description of the codec is available in G-PCC Codec Description, ISO / IEC JTC 1 / SC29 / WG 7 MDS19620, Teleconference, October 2020.
[0038] Point cloud data includes a set of points in 3D space and may have attributes associated with the points. The attributes may be color information such as R, G, B, or Y, Cb, Cr, or reflectance information, or other attributes. Point cloud data may be captured by various cameras or sensors such as LIDAR sensors and 3D scanners, and may also be computer generated. Point cloud data is used in a variety of applications, including but not limited to architecture (modeling), graphics (3D models for visualization and animation), and the automotive industry (LIDAR sensors used to aid in navigation).
[0039] The 3D space occupied by the point cloud data may be covered by a virtual bounding box. The positions of points within the bounding box may be represented with some precision, and thus the positions of one or more points may be quantized based on the precision. At the smallest level, the bounding box is divided into voxels, which are the smallest units of space represented by a unit cube. A voxel within the bounding box may be associated with zero, one, or more points. The bounding box may be divided into multiple cubes / cuboidal regions, sometimes called tiles. Each tile may be coded into one or more slices. The partitioning of the bounding box into slices and tiles may be based on the number of points in each partition or other considerations (e.g., a particular region may be coded as a tile). The slice regions may be further partitioned using partitioning decisions similar to those in video codecs.
[0040] Figure 2 provides an overview of a G-PCC encoder 200. Figure 3 provides an overview of a G-PCC decoder 300. The illustrated modules are logical and do not necessarily correspond one-to-one to the code implemented in the reference implementation of the G-PCC codec, i.e., the TMC13 test model software studied by ISO / IEC MPEG (JTC 1 / SC 29 / WG 11).
[0041] In both the G-PCC Encoder 200 and the G-PCC Decoder 300, the location of the point cloud is coded first. The attribute coding depends on the decoded geometry. In Figures 2 and 3, the grey shaded module is the commonly used option for category 1 data. The diagonal crosshatched module is the commonly used option for category 3 data. All other modules are common between categories 1 and 3.
[0042] For geometry, there are two different types of coding techniques: octree and predictive tree coding. The following discussion focuses on octree coding. For category 3 data, the compressed geometry is typically represented as an octree from the root to the leaf level of the individual voxels. For category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree from the root to the leaf level of a block larger than a voxel) plus a model that approximates the surface within each leaf of the pruned octree. In this way, both category 1 and category 3 data share the octree coding mechanism, but category 1 data may additionally approximate the voxels within each leaf with a surface model (known as Trisoup coding). The surface model used is a triangulation with 1-10 triangles per block, resulting in triangle soup.
[0043] At each node of the octree, occupancy is signaled (when not inferred) for one or more of its child nodes (up to a maximum of eight nodes). Multiple neighborhoods are specified, including (a) nodes that share a face with the current octree node, (b) nodes that share a face, edge, or vertex with the current octree node, etc. Within each neighborhood, the occupancy of the node and / or its children may be used to predict the occupancy of the current node or its children. For sparsely distributed points in several nodes of the octree, the codec also supports a direct coding mode in which the 3D location of the point is directly coded. A flag may be signaled to indicate that the direct mode is signaled. At the lowest level, the number of points associated with an octree node / leaf node may also be coded. Figure 4 is a conceptual diagram illustrating octree partitioning for geometry coding.
[0044] When geometry is coded, attributes corresponding to the geometry points are coded. When there are multiple attribute points corresponding to one reconstructed / decoded geometry point, an attribute value representing the reconstructed point may be derived.
[0045] There are three attribute coding methods in G-PCC: Region Adaptive Hierarchical Transform (RAHT) coding, Interpolation-based Hierarchical Nearest Neighbor Prediction (Predictive Transform), and Interpolation-based Hierarchical Nearest Neighbor Prediction with Update / Lifting Steps (Lifting Transform). RAHT and Lifting are typically used for category 1 data, and Predicting is typically used for category 3 data. However, either method may be used for any data, and as in the geometry codec in G-PCC, the attribute coding method used to code the point cloud is specified in the bitstream.
[0046] The coding of attributes may be done at a level-of-detail (LOD), where each level of detail may be used to obtain a finer representation of the point cloud attributes, which may be specified based on a distance metric from neighboring nodes or based on a sampling distance.
[0047] In the G-PCC encoder 200, the residual obtained as the output of the coding method for the attribute is quantized. The quantized residual may be coded using context-adaptive arithmetic coding.
[0048] In the example of FIG. 2, the G-PCC encoder 200 may include a coordinate transformation unit 202, a color transformation unit 204, a voxelization unit 206, an attribute transfer unit 208, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic coding unit 214, a geometry reconstruction unit 216, a RAHT unit 218, an LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, and an arithmetic coding unit 226.
[0049] As shown in the example of FIG. 2, the G-PCC encoder 200 may obtain a set of positions and a set of attributes for points in a point cloud. The G-PCC encoder 200 may obtain the set of positions and the set of attributes for points in a point cloud from a data source 104 (FIG. 1). The positions may include coordinates of the points in the point cloud. The attributes may include information about the points in the point cloud, such as a color associated with the points in the point cloud. The G-PCC encoder 200 may generate a geometry bitstream 203 that includes an encoded representation of the positions of the points in the point cloud. The G-PCC encoder 200 may also generate an attribute bitstream 205 that includes an encoded representation of the set of attributes.
[0050] The coordinate transformation unit 202 may apply a transformation to the coordinates of the points to convert the coordinates from an initial domain to a transformation domain. In this disclosure, the transformed coordinates may be referred to as transformed coordinates. The color transformation unit 204 may apply a transformation to convert color information of the attributes to a different domain. For example, the color transformation unit 204 may convert the color information from an RGB color space to a YCbCr color space.
[0051] Further, in the example of FIG. 2, the voxelization unit 206 may voxelize the transformed coordinates. The voxelization of the transformed coordinates may include quantization and removing some points of the point cloud. In other words, multiple points of the point cloud may be contained within a single "voxel", which may then be treated as one point in some respects. Further, the octree analysis unit 210 may generate an octree based on the voxelized transformed coordinates. Additionally, in the example of FIG. 2, the surface approximation analysis unit 212 may analyze the points to potentially determine a surface representation of the set of points. The arithmetic coding unit 214 may entropy code syntax elements that represent the octree and / or surface information determined by the surface approximation analysis unit 212. The G-PCC encoder 200 may output these syntax elements in the geometry bitstream 203. The geometry bitstream 203 may also include other syntax elements, including syntax elements that are not arithmetically coded.
[0052] The geometry reconstruction unit 216 may reconstruct transformation coordinates of points in the point cloud based on the octree, the data indicative of the surface determined by the surface approximation analysis unit 212, and / or other information. The number of transformation coordinates reconstructed by the geometry reconstruction unit 216 may differ from the original number of points in the point cloud due to voxelization and surface approximation. In this disclosure, the resulting points may be referred to as reconstructed points. The attribute transfer unit 208 may transfer attributes of the original points of the point cloud to the reconstructed points of the point cloud.
[0053] Further, the RAHT unit 218 may apply RAHT coding to the attributes of the reconstructed points. In some examples, under RAHT, the attributes of a block of 2x2x2 point positions are obtained and transformed along one direction to obtain four low-frequency nodes (L) and four high-frequency nodes (H). Then, the four low-frequency nodes (L) are transformed in a second direction to obtain two low-frequency nodes (LL) and two high-frequency nodes (LH). The two low-frequency nodes (LL) are transformed along a third direction to obtain one low-frequency node (LLL) and one high-frequency node (LLH). The low-frequency node LLL corresponds to the DC coefficient, and the high-frequency nodes H, LH, and LLH correspond to the AC coefficients. The transformation in each direction may be a 1-D transformation with two coefficient weights. The low-frequency coefficients may be considered as the coefficients of the 2x2x2 block for the next higher level of the RAHT transformation, and the AC coefficients are coded without modification, and such transformation continues up to the top root node. The tree traversal for encoding is a top-to-bottom traversal used to calculate the weights used for the coefficients, and the transform order is bottom-to-top. The coefficients may then be quantized and coded.
[0054] Alternatively or additionally, the LOD generation unit 220 and the lifting unit 222 may apply LOD processing and lifting, respectively, to the attributes of the reconstructed points. The LOD generation may be used to split the attributes into different refinement levels. Each refinement level provides refinement to the attributes of the point cloud. The first refinement level provides a rough approximation and includes a small number of points. Subsequent refinement levels generally include more points, and so on. The refinement levels may be constructed using a distance-based metric or may use one or more other classification criteria (e.g., subsampling from a particular rank). Thus, a refinement level may include all reconstructed points. Each level of detail is generated by taking the union of all points up to a particular refinement level, e.g., LOD1 is obtained based on refinement levels RL1, LOD2 is obtained based on RL1 and RL2, and LODN is obtained by the union of ...RL1, RL2, ...RLN. In some cases, a prediction scheme (e.g., predictive transformation) is performed after LOD generation, where the attributes associated with each point in the LOD are predicted from a weighted average of the previous points, and the residual is quantized and entropy coded. A lifting scheme is built on the predictive transformation mechanism, where the coefficients are updated using an update operator, and adaptive quantization of the coefficients is performed.
[0055] The RAHT unit 218 and the lifting unit 222 may generate coefficients based on the attributes. The coefficient quantization unit 224 may quantize the coefficients generated by the RAHT unit 218 or the lifting unit 222. The arithmetic coding unit 226 may apply arithmetic coding to the syntax elements representing the quantized coefficients. The G-PCC encoder 200 may output these syntax elements in the attribute bitstream 205. The attribute bitstream 205 may include other syntax elements, including non-arithmetically coded syntax elements.
[0056] In the example of FIG. 3, the G-PCC decoder 300 may include a geometry arithmetic decoding unit 302, an attribute arithmetic decoding unit 304, an octree synthesis unit 306, an inverse quantization unit 308, a surface approximation synthesis unit 310, a geometry reconstruction unit 312, a RAHT unit 314, a LoD generation unit 316, an inverse lifting unit 318, an inverse coordinate transformation unit 320, and an inverse color transformation unit 322.
[0057] The G-PCC decoder 300 may obtain the geometry bitstream 203 and the attribute bitstream 205. The geometry arithmetic decoding unit 302 of the decoder 300 may apply arithmetic decoding (e.g., context-adaptive binary arithmetic coding (CABAC) or other types of arithmetic decoding) to the syntax elements in the geometry bitstream 203. Similarly, the attribute arithmetic decoding unit 304 may apply arithmetic decoding to the syntax elements in the attribute bitstream 205.
[0058] The octree synthesis unit 306 may synthesize an octree based on syntax elements parsed from the geometry bitstream 203. The occupancy of each of the eight child nodes at each octree level is signaled in the bitstream, starting from the root node of the octree. When the signaling indicates that a child node at a particular octree level is occupied, the occupancy of the children of this child node is signaled. The signaling of the nodes at each octree level is done before proceeding to a subsequent octree level. At the final level of the octree, each node corresponds to a voxel position, and when a leaf node is occupied, it may specify that one or more points are occupied at the voxel position. In some instances, some branches of the octree may terminate before the final level due to quantization. In such cases, the leaf node is considered an occupied node that does not have any child nodes. In cases where surface approximations are used in the geometry bitstream 203, the surface approximation synthesis unit 310 may determine a surface model based on syntax elements parsed from the geometry bitstream 203 and based on the octree.
[0059] Furthermore, the geometry reconstruction unit 312 may perform reconstruction to determine coordinates of points in the point cloud. For each position in a leaf node of the octree, the geometry reconstruction unit 312 may reconstruct the node position by using a binary representation of the leaf node in the octree. At each respective leaf node, the number of points at the respective leaf node is signaled, which indicates the number of overlapping points at the same voxel position. Using geometry quantization, the point positions are scaled to determine the reconstructed point position value.
[0060] The inverse coordinate transformation unit 320 may apply an inverse transform to the reconstructed coordinates (positions) of points in the point cloud to convert them from the transformed domain back to the original domain. The positions of points in the point cloud may be in the floating-point domain, whereas point positions in the G-PCC codec are coded in the integer domain. An inverse transform may be used to convert the positions back to the original domain.
[0061] Additionally, in the example of Figure 3, the inverse quantization unit 308 may inverse quantize the attribute value. The attribute value may be based on syntax elements obtained from the attribute bitstream 205 (e.g., including syntax elements decoded by the attribute arithmetic decoding unit 304).
[0062] Depending on how the attribute values are coded, the RAHT unit 314 may perform RAHT coding to determine color values for the points of the point cloud based on the dequantized attribute values. RAHT decoding is performed from the top to the bottom of the tree. At each level, a configuration value is derived using the low-frequency and high-frequency coefficients derived from the dequantization process. At the leaf nodes, the derived value corresponds to the attribute value of the coefficient. The weight derivation process for the points is similar to the process used in the G-PCC encoder 200. Alternatively, the LOD generation unit 316 and the inverse lifting unit 318 may use a level-of-detail based technique to determine color values for the points of the point cloud. The LOD generation unit 316 decodes each LOD that represents a progressively finer representation of the attributes of the points. When using predictive transformation, the LOD generation unit 316 may derive a prediction for the point from a weighted sum of points in the previous LOD or previously reconstructed in the same LOD. The LOD generation unit 316 may add the prediction to the residual (obtained after inverse quantization) to obtain a reconstructed value of the attribute. When using a lifting scheme, the LOD generation unit 316 may include an update operator for updating the coefficients used to derive the attribute value. The LOD generation unit 316 may also apply inverse adaptive quantization in this case.
[0063] 3, the inverse color transformation unit 322 may apply an inverse color transformation to the color values. The inverse color transformation may be the inverse of the color transformation applied by the color transformation unit 204 of the encoder 200. For example, the color transformation unit 204 may transform the color information from the RGB color space to the YCbCr color space. Thus, the inverse color transformation unit 322 may transform the color information from the YCbCr color space to the RGB color space.
[0064] The various units in FIG. 2 and FIG. 3 are shown to aid in understanding the operations performed by the encoder 200 and the decoder 300. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit refers to a circuit that provides a specific functionality, and the operations that may be performed are pre-defined. A programmable circuit refers to a circuit that may be programmed to perform various tasks, and provides flexible functionality in the operations that may be performed. For example, a programmable circuit may execute software or firmware that causes the programmable circuit to operate in a manner defined by the software or firmware instructions. A fixed-function circuit may execute software instructions (e.g., to receive parameters or output parameters), but the type of operations that the fixed-function circuit performs is generally invariant. In some examples, one or more of the units may be different circuit blocks (fixed function or programmable), and in some examples, one or more of the units may be an integrated circuit.
[0065] As mentioned above, there are three attribute coding methods in G-PCC: Region Adaptive Hierarchical Transform (RAHT) coding, Interpolation-based Hierarchical Nearest Neighbor Prediction (Predictive Transform), and Interpolation-based Hierarchical Nearest Neighbor Prediction with Update / Lifting Steps (Lifting Transform). RAHT and Lifting are typically used for category 1 data, and Predicting is typically used for category 3 data. However, either method may be used for any data, and as in the geometry codec in G-PCC, the attribute coding method used to code the point cloud is specified in the bitstream.
[0066] The predicted transform residual (i.e., the residual value) may be obtained after subtracting the predicted attribute value from the given attribute value. For example, the G-PCC encoder 200 may derive the residual as shown in the following equations (1) and (2). remaining P = attrP -pred P (1) remaining S = attr S -pred S (2)
[0067] In equations (1) and (2), the residual p denotes the residual value of the first component of the point attribute, and attr p indicates the value of the primary component of the point attribute, and pred p indicates the predicted value of the first component of the point attribute, and residual s denotes the residual value of the quadratic component of the point attribute, and attr s denotes the value of the quadratic component of the point attribute, and pred s indicates a predicted value of a secondary component of an attribute of a point. In some examples, the primary component of an attribute is a luma value and the secondary component of an attribute is a chroma value. The G-PCC encoder 200 and the G-PCC decoder 300 calculate a predicted value (e.g., pred p and pred s ) as either one of the attribute values of the already reconstructed neighbors or a weighted average of the attribute values of one or more neighbors. The G-PCC encoder 200 and the G-PCC decoder 300 may determine the neighbor attribute values from a list of candidates. The list of candidates may include a weighted average of the attribute values of the neighbor points and / or a set of attribute values of the neighbor points. The G-PCC encoder 200 and the G-PCC decoder 300 may obtain the neighbor points by using an algorithm that considers the distance between previously coded points, which are obtained using a nearest neighbor algorithm from a previously coded level of detail (possibly a previously coded point of the current level of detail).
[0068] For secondary components of an attribute, the residual values may be further predicted from the primary component residuals using Inter-Component Residual Prediction (ICRP). ICRP is generally used when a predictive transform is applied. Once ICRP is applied, the G-PCC encoder 200 may derive the secondary residual as shown in equation (3) below. remaining S = (attr S -pred S ) - s ICRP * remaining P (3) In equation (3), residual s indicates the residual value of the second-order component, and attr s indicates the value of the secondary component, and pred s denotes the predicted value of the quadratic component, and the factor s ICRP denotes the ICRP scale factor applied to a particular point, and residual p denotes the residual value of the primary component. The G-PCC encoder 200 may signal an ICRP scale factor for each layer or level of detail. The G-PCC encoder 200 may signal different scale factors for different components of each attribute. In some examples, the scale factors may have fractional bits, in which case the operation may include an offset and a shift to apply the correct scale value.
[0069] In the G-PCC decoder 300, the reconstructed properties of the secondary components may be derived as shown in equation (4) below. recon S = remaining S + s ICRP * remaining P + pred S (4) In equation (4), recon s denotes the reconstructed value of the second-order component, and residual s denotes the residual value of the second-order component, and s ICRP denotes the ICRP scale factor, and residual pindicates the residual value of the first component, and pred s denotes the predicted value of the second-order component.
[0070] Under the lifting transformation, the G-PCC encoder 200 and the G-PCC decoder 300 may use last component residual prediction to exploit the correlation between the residual values of the last two components of the attribute. Unlike ICRP, which is applied to all secondary components of the attribute, LCRP is applied to predict the residual of only the last component of the attribute.
[0071] Residual of the last component last is the residual of the penultimate component, as shown in the following equation (5). penul may be derived from Remaining last = s LCRP * remaining P (5) In equation (5), residual last denotes the residual value of the last component, and s LCRP denotes the LCRP scale factor, and residual p denotes the residual value of the penultimate component. Note that under LCRP, the residual value of the last component is not signaled.
[0072] In the G-PCC encoder 200 and the G-PCC decoder 300, the reconstructed properties of the secondary components may be derived as shown in equation (6) below. recon last = remaining last + pred last = s LCRP * remaining penul + pred last (6) In equation (6), recon last denotes the reconstructed value of the last component, and residual last denotes the residual value of the last component, and s LCRP denotes the LCRP scale factor, and residual penuldenotes the residual value of the penultimate component, and pred last denotes the predicted value of the last component.
[0073] In the current draft of G-PCC, the boundaries of the region for specifying attribute quantization parameter (QP) values are conditioned based on the node size of a slice. A slice is a portion of the entire coded point cloud frame and may contain a geometry data unit and zero or more corresponding attribute data units. The node size of a slice is specified for octree geometry coding. However, the node size is not specified for predictive geometry coding. Therefore, in the current draft of G-PCC, it is unclear what constraints should be applied to predictive geometry coding.
[0074] To address this issue, this disclosure proposes to apply a first constraint (e.g., a region boundary constraint) for the octree coding case and a second constraint for the predictive geometry coding case. In one example, the first and second constraints may be identical. In some examples, the constraints may be as follows: <add> ...< / add> Use tags to indicate additions, <delete> ...< / delete> A tag may be used to modify the deletion to indicate the deletion. <add>When geom_tree_type is equal to 0, i <add> <delete> I< / delete> t is the bitstream compliance requirement that the following condition is true for k=0..2: AttrRegionQpOriginStv[i][k] + AttrRegionQpSizeStv[i][k] <= (1 << NodeSizesLog2[0][k])
[0075] When geom_tree_type is not equal to 0, the bitstream constraints may be modified as follows: AttrRegionQpOriginStv[i][k] + AttrRegionQpSizeStv[i][k] <= <add> N< / add> In the above equation, N is a fixed amount that is either predetermined or signaled in the bitstream.
[0076] If geom_tree_type is equal to 0, it may be specified that the location information is coded using an octree, and if geom_tree_type is equal to 1, it may be specified that the location information is coded using a predictive tree. In some examples, the arrays AttrRegionQpOriginStv and AttrRegionQpSizeStv with values AttrRegionQpOriginStv[i][k] and AttrRegionQpSizeStv[i][k], for n = 0 .. ash_attr_region_cnt - 1 and k = 0 .. 2, may represent the region origin and size, respectively, permuted into geometry axis order coded as follows: AttrRegionQpOriginStv[i][XyzToStv[k]] = ash_attr_qp_region_origin_xyz[i][k] AttrRegionQpSizeStv[i][XyzToStv[k]] = ash_attr_qp_region_size_minus1_xyz[i][k] + 1
[0077] ash_attr_qp_region_origin_xyz[i][k] and ash_attr_qp_region_size_minus1_xyz[i][k] may specify the ith spatial region within the current slice to which ash_attr_region_qp_offset[i][k] applies, ash_attr_qp_region_origin_xyz[i][k] may be the kth component of the (x,y,z) origin co-ordinate of the ith region relative to the slice origin, and ash_attr_qp_region_size_minus1_xyz[ i ][ k ] plus 1 may be the kth component of the width, height, and depth of the ith region, respectively.
[0078] In the current draft of G-PCC, ICRP coefficients (i.e., ICRP scale factors) are signaled with 2 bits of partial precision, i.e., when a value of 4 is signaled, it corresponds to a scale value of 1. Similarly, when the signaled value is 5, it corresponds to a scale value of 1.25. However, no limits are specified for the range of values signaled. This may lead to situations where arbitrarily large values of ICRP coefficients are signaled, which may cause an overflow in one of the codec's internal calculations. Furthermore, the G-PCC decoder 300 may need to keep track of potentially large values that may not be advantageous (in general, scale values larger than 4 or 8 are rarely used). Similar problems exist for the scale values / coefficients associated with LCRP.
[0079] To address this issue, this disclosure uses ICRP and LCRP coefficients (e.g., s ICRP and s LCRP We propose to constrain the value of . The following text shows the proposed changes from the current draft of the G-PCC standard (e.g., <add> ...< / add> additional text indicated on tag). last_comp_pred_coef_delta[i] specifies the delta scaling value for the predicted value of the last component in the i-th detail layer from the second component of a multi-component attribute. When last_comp_pred_coef_delta[i] is not present, it is inferred to be equal to 0. <add> The value of last_comp_pred_coef_delta[i] shall be within the range of −8 to 8 (inclusive).< / add> The array LastCompPredCoeff, with elements LastCompPredCoeff[i], for i = 0 .. num_detail_levels_minus1, is derived as follows: - initCoeff = last_component_prediction_enabled_flag << 2 - for (i = 0; i<= num_detail_levels_minus1; i++){ - predCoeff = !i ? initCoeff: LastCompPredCoeff[i - 1] - LastCompPredCoeff[i] = predCoeff + last_comp_pred_coeff_delta[i] -} Inter_comp_pred_coef_delta[i][c] specifies the kth delta scaling value for the predicted value of a non-first-order component at the i-th detail layer from the first-order component of a multi-component attribute. When inter_comp_pred_coef_delta[i][c] is not present, it is inferred to be equal to 0. <add> The value of inter_comp_pred_coef_delta[i] shall be within the range of −8 to 8 (inclusive).< / add> The array InterCompPredCoeff with elements InterCompPredCoeff[i][c], with i = 0 .. num_detail_levels_minus1 and c = 1 .. AttrDim - 1, is derived as follows: - initCoeff = lifting_inter_component_prediction_enabled_flag << 2 - for (i = 0; i<= num_detail_levels_minus1; i++) - for (c = 1; c < AttrDim; c++) { - predCoeff = !i ? initCoeff: InterCompPredCoeff[i - 1][c] - InterCompPredCoeff[i][c] = predCoeff + inter_comp_pred_coeff_delta[i][c] -}
[0080] In the above sentence, last_comp_pred_coeff_delta and inter_comp_pred_coeff_delta are syntax elements that the G-PCC encoder 200 may signal in the bitstream. The G-PCC decoder 300 may use last_comp_pred_coeff_delta and inter_comp_pred_coeff_delta to determine the values of the LCRP and ICRP coefficients, respectively.
[0081] In other examples, other value ranges for the ICRP and LCRP coefficients may apply. The value ranges may be different for the ICRP and LCRP coefficients. For example, the ICRP coefficient may be in the range of -8 to 8 (inclusive), while the LCRP coefficient may be in the range of -4 to 4 (inclusive).
[0082] In the current draft of the G-PCC standard, the predictive transform residual is unconstrained and arbitrarily large residual values may be signaled. However, given a particular input range of attribute values, the range of residual values is limited. Residual values beyond this range may cause register / data storage overflow in codec operations.
[0083] This disclosure describes a technique that can address this problem. For example, according to the technique of this disclosure, a constraint may be added so that one or more operations in the G-PCC decoder 300 do not exceed the bit limit. This constraint may ensure that the G-PCC decoder 300 can function at a fixed bit width. For example, if the G-PCC decoder 300 is not configured to have internal / temporary variables in the process exceed 32 bits (e.g., the G-PCC decoder 300 is not configured to process internal / temporary variables exceeding 32 bits), a constraint may be added so that the temporary result of the operation does not exceed 32 bits. In some examples, the residual value may be constrained to be within a certain range. In the predictive transform, the following constraints may be added: In the prediction conversion, the value of CoeffLevel[][] is [-2 bd-1 , 2 bd-1 ] shall be within the range.
[0084] In some examples, the value of CoeffLevel may be clipped to this range. In some examples, the above constraints / clips shall only be applied to the primary component of the attribute. Secondary components may have similar constraints / clips with different values. For example, if the maximum and minimum ICRP coefficients are greater than or equal to a value of 2 n (+C) and -2 n (-C), the value of CoeffLevel[] for the secondary bit depth is [-2 bd-1 -C*2 bd-1 , 2 bd-1 + C*2 bd+n-1 ] (where C may not include fractional bits). In some examples, the G-PCC decoder 300 may apply clipping in one or more operations. More generally, the constraint / clipping may depend on the bit depth of the attribute components and the maximum / minimum values of the ICRP coefficients.
[0085] The attribute values in the lifting transform are updated using a prediction and update stage as defined in the G-PCC draft. Additionally, coefficient weights are derived to apply the relative importance of points in the value LOD.
[0086] The coefficient weights are applied in the scaling and quantization operations using the variables quantWeight and iQuantWeight, which are derived as follows: Code Listing 1 const int64_t iQuantWeight = irsqrt(weights[predictorIndex]); const int64_t quantWeight = (weights[predictorIndex] * iQuantWeight + (1ull << 39)) >> 40; In the above Code Listing 1, predictorIndex is the index of the component of the attribute, weights[predictorIndex] indicates the coefficient weight for the component indicated by predictorIndex, irsqrt( ) is a function that returns the integer square root, iQuantWeight is a variable that indicates the integer square root of the coefficient weight of the component indicated by predictorIndex, quantWeight is the quantized coefficient weight, and 1ull is an unsigned long long value equal to 1.
[0087] The quantization operation on the coefficients (after the prediction update process) is applied as follows: Code Listing 2 auto& color = colors[predictorIndex]; int values[3]; values[0] = quant[0].quantize(color[0] * quantWeight); In Code Listing 2 above, colors[] is an array of attribute component values, quant[] is an array of quantization parameters (QPs), and values[] is an array of component quantization values. quant[0].quantize() denotes a function that quantizes a parameter (e.g., color[0] * quantWeight) using the QP at position 0 of the quant[] array.
[0088] In the G-PCC decoder 300, the residual values [] are used to derive the coefficients using an inverse quantization process as follows: Code Listing 3 int64_t scaled = quant[0].scale(values[0]); color[0] = divExp2RoundHalfInf(scaled * iQuantWeight, 40); In Code Listing 3 above, quant[0].scale() is a function that scales a parameter (e.g., values[0]) by the QP at position 0 of the quant[] array. The function divExp2RoundHalfInf(x, y) shifts the value x to the right by y bits. Thus, divExp2RoundHalfInf is effectively a division operation, but the resulting value is rounded.
[0089] For the last component, additionally, the last component residual prediction may be used as follows ( <e> ...< / e> The steps in the tag apply only to the encoder steps, <e> ...< / e> Steps not enclosed in tags apply to the G-PCC encoder 200 and the G-PCC decoder 300). Code Listing 4 <e> values[1] = quant[1].quantize(color[1] * quantWeight);< / e> scaled = quant[1].scale(values[1]); color[1] = divExp2RoundHalfInf(scaled * iQuantWeight, 40); <e> color[2] -= (lastCompPredCoeff * color[1]) >> 2;< / e> scaled *= lastCompPredCoeff; scaled >>= 2; <e> values[2] = quant[1].quantize(color[2] * quantWeight);< / e> scaled += quant[1].scale(values[2]); color[2] = divExp2RoundHalfInf(scaled * iQuantWeight, 40);
[0090] Depending on the input bit depth of the attribute, bit overflow may occur in some of the above steps, which may affect the quality of the reconstruction of the attribute. Due to the fixed-point representation of the coefficient weights and the 64-bit internal variables, when the value of the lifting coefficient exceeds 15 bits (or 15 + 8 = 23 bits when taking into account the 8-bit internal bit shift), the reconstructed value may not be the intended value due to overflow (for example, in Coding List 3, when values[0] is 16 bits in the expression int64_t scaled = quant[0].scale(values[0]), an overflow will occur in the subsequent operations.
[0091] In accordance with the techniques of this disclosure, a constraint may be added requiring that the value of scaled * iQuantWeight for any of the components of the attribute not exceed 64 bits. In other words, the value of scaled * iQuantWeight must be within the range [-2 63 , 2 63 - 1] range.
[0092] In another example, a clipping operation may be applied instead of an explicit constraint. For example, for the 0th component, clipping may be applied as shown in the following Code Listing 5: Code Listing 5 color[1] = divExp2RoundHalfInf(Clip(-2 63 , 2 63 - 1, scaled * iQuantWeight), 40) In Code Listing 5 above, clip(x, y, z) clips the value z such that z cannot be greater than y and cannot be less than x. In some examples, the value of [scaled * iQuantWeight + (1 << 39)] may be constrained or clipped as above. Similar clipping may be applied to other components.
[0093] Additionally, in some examples, other constraints may be applied to effectively or easily avoid overflow. For example, if the attribute bit depth exceeds a certain threshold, bit overflow may occur even in trivial cases. Therefore, the attribute bit depth may be constrained to be less than a certain value. For example, the attribute bit depth may be constrained to be less than a fixed value (e.g., 15).
[0094] Similarly, there are currently no explicit constraints on the coefficients / residuals that are signaled, and the values of the residuals must be constrained to be equal to a certain bit depth. For example, the values of CoeffLevel[][][] must be in the range [-2 31 , 2 31 - 1], where CoeffLevel[][][] is a variable stored residual value. In some examples, the signaled value of the coefficient / residual, CoeffLevel[][][], may be constrained to be within Clip(-2 31 , 2 31 - 1,CoeffLevel[][][]). This clipping may also be applied to other transforms, such as predictive transforms.
[0095] Thus, in accordance with the techniques of this disclosure, the constraint may limit at least one of the first component of the point attribute, the residual value of the first component of the point attribute, the second component of the attribute, and the residual value of the second component of the point attribute to one or more predefined bit depths (e.g., 15, 32, etc.). In some examples, such as those involving ICRP, the constraint may limit the secondary component of the point attribute, the residual value of the secondary component of the point attribute, and the residual value of the primary component of the second point attribute to one or more second predefined bit depths.
[0096] 5 is a flowchart illustrating example operations for encoding point cloud data according to one or more techniques of this disclosure. The operations presented in the flowcharts of this disclosure are provided as examples. Other operations according to the techniques of this disclosure may include more, fewer, or different actions, or the actions may be performed in a different order.
[0097] In the example of Figure 5, the G-PCC encoder 200 may obtain point cloud data (500). The point cloud data includes data indicative of locations of points in a point cloud. Additionally, the point cloud data includes data indicative of attributes of points in the point cloud. The G-PCC encoder 200 may obtain the point cloud data from a data source 104, from memory 106, or may receive or generate the point cloud data in some other manner.
[0098] Further, the G-PCC encoder 200 may encode the point cloud data (502). Encoding the point cloud data may include generating a bitstream (e.g., attribute bitstream 205) that conforms to one or more constraints. As part of generating the bitstream, the G-PCC encoder 200 may determine a residual value of a first component of an attribute of the point (504). The first component may be the penultimate component of the attribute. For example, the G-PCC encoder 200 may determine the residual value of the first component as the value of the first component minus a predicted value of the first component. In other words, the G-PCC encoder 200 may determine the residual value of the first component as the residual penul = attr penul -pred penul The G-PCC encoder 200 may generate a prediction of the first component as an already reconstructed neighboring attribute value, as a weighted average of the attribute values of one or more neighboring attribute values, or in another manner. Similarly, the G-PCC encoder 200 may generate a prediction of a second component of the attribute of the point (506). The G-PCC encoder 200 may generate a prediction of the second component as an already reconstructed neighboring attribute value, as a weighted average of the attribute values of one or more neighboring attribute values, or in another manner.
[0099] The G-PCC encoder 200 may reconstruct the second component as a sum of a multiplication product of the second component prediction value and the scale factor for the second component and the residual value of the first component (508). For example, the G-PCC encoder 200 may reconstruct the second component as shown in equation (4) above. In some examples, the G-PCC encoder 200 may reconstruct the second component (color[2]) as shown in Code Listing 4 above.
[0100] In the example of FIG. 5, the one or more constraints include constraints that limit the first component of the point's attribute, the residual value of the first component of the point's attribute, the second component of the attribute, and the residual value of the second component of the point's attribute to one or more predefined bit depths. For example, the first component may be limited to [-2 31 , 2 31 - 1].
[0101] In some examples, the G-PCC encoder 200 may encode one or more points of the point cloud data using ICRP. For example, the G-PCC encoder 200 may determine a residual value of a primary component of an attribute of a second point of the point cloud data (e.g., using equation (1) above). Additionally, the G-PCC encoder 200 may determine a residual value of a secondary component of an attribute of a second point of the point cloud data (e.g., using equation (3) above). The G-PCC encoder 200 may generate a predicted value of the secondary component of the attribute of the second point. The G-PCC encoder 200 may reconstruct the secondary component of the attribute of the second point as a sum of a multiplication product of the residual value of the secondary component of the second point attribute, the predicted value of the secondary component of the second point attribute, and a scale factor for the secondary component of the attribute of the second point and the residual value of the primary component of the attribute of the second point (e.g., using equation (4)). The one or more constraints may include a constraint that limits one or more of the quadratic component of the second point attribute, the residual value of the quadratic component of the second point attribute, or the residual value of the linear component of the second point attribute to one or more second predefined bit depths. 31 , 2 31 - 1].
[0102] 6 is a flowchart illustrating an example operation for decoding point cloud data in accordance with one or more techniques of this disclosure. In the example of FIG. 6, a G-PCC decoder 300 may obtain a bitstream that is encoded to comply with one or more constraints (600). The G-PCC encoder 300 may obtain the bitstream from the input interface 122, the memory 120, or another source. The G-PCC decoder 300 may decode the bitstream (602).
[0103] As part of decoding the bitstream, the G-PCC decoder 300 may determine a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream (604). For example, the G-PCC decoder 300 may obtain a syntax element from the attribute bitstream 205 indicating the residual value of the first component.
[0104] Additionally, the G-PCC encoder 300 may generate a prediction of a second component of the attribute of the point (606). The G-PCC decoder 300 may generate the prediction of the second component as an already reconstructed neighboring attribute value, as a weighted average of the attribute value of one or more neighboring attribute values, or in another manner.
[0105] The G-PCC decoder 300 may reconstruct the second component as a sum of a multiplication product of the second component prediction value and the scale factor for the second component and the residual value of the first component (608). For example, the G-PCC decoder 300 may reconstruct the second component as shown in equation (4) above. In some examples, the G-PCC decoder 300 may reconstruct the second component (color[2]) as shown in Code Listing 4 above.
[0106] In the example of FIG. 6, the one or more constraints include constraints that limit the first component of the point's attribute, the residual value of the first component of the point's attribute, the second component of the attribute, and the residual value of the second component of the point's attribute to one or more predefined bit depths. For example, the residual value of the first component is limited to [-2 31 , 2 31 - 1].
[0107] In some examples, the G-PCC decoder 300 may decode one or more points of the point cloud data using ICRP. For example, the G-PCC encoder 300 may determine a residual value of a primary component of an attribute of a second point of the point cloud data (e.g., using equation (1) above) based on data signaled in the bitstream. Additionally, the G-PCC decoder 300 may determine a residual value of a secondary component of an attribute of a second point of the point cloud data based on data signaled in the bitstream. The G-PCC encoder 300 may generate a predicted value of the secondary component of the attribute of the second point. The G-PCC encoder 300 may reconstruct the secondary component of the attribute of the second point as a sum of a multiplication product of the residual value of the secondary component of the attribute of the second point, the predicted value of the secondary component of the attribute of the second point, and a scale factor for the secondary component of the attribute of the second point and the residual value of the primary component of the attribute of the second point (e.g., using equation (4)). The one or more constraints may include a constraint that limits a quadratic component of the second point attribute to a second predefined bit depth and limits one or more of the quadratic component of the second point attribute, the residual value of the quadratic component of the second point attribute, or the residual value of the primary component of the second point attribute to one or more second predefined bit depths. 31 , 2 31 - 1].
[0108] FIG. 7 is a conceptual diagram illustrating an example distance measurement system 700 that may be used with one or more techniques of the present disclosure. In the example of FIG. 7, the distance measurement system 700 includes an illuminator 702 and a sensor 704. The illuminator 702 may emit light 706. In some examples, the illuminator 702 may emit the light 706 as one or more laser beams. The light 706 may be in one or more wavelengths, such as infrared wavelengths or visible light wavelengths. In other examples, the light 706 is not a coherent laser light. When the light 706 encounters an object, such as an object 708, the light 706 produces return light 710. The return light 710 may include backscattered light and / or reflected light. The return light 710 may pass through a lens 711 that directs the return light 710 to produce an image 712 of the object 708 on the sensor 704. The sensor 704 generates a signal 714 based on the image 712. Image 712 may comprise a set of points (eg, as represented by dots in image 712 of FIG. 7).
[0109] In some examples, the illuminator 702 and sensor 704 may be mounted on a rotating structure (e.g., a rotating LIDAR sensor) such that the illuminator 702 and sensor 704 capture a 360-degree view of the environment. In other examples, the distance measurement system 700 may include one or more optical components (e.g., mirrors, collimators, diffraction gratings, etc.) that enable the illuminator 702 and sensor 704 to detect the distance of an object within a certain range (e.g., up to 360 degrees). Although the example of FIG. 7 shows only a single illuminator 702 and sensor 704, the distance measurement system 700 may include multiple sets of illuminators and sensors.
[0110] In some examples, the illuminator 702 generates a structured light pattern. In such examples, the distance measurement system 700 may include a plurality of sensors 704 on which respective images of the structured light pattern are formed. The distance measurement system 700 may use the difference between the images of the structured light pattern to determine the distance to an object 708 from which the structured light pattern is backscattered. The structured light based distance measurement system may have a high level of accuracy (e.g., accuracy in the sub-millimeter range) when the object 708 is relatively close to the sensor 704 (e.g., 0.2 meters to 2 meters). This high level of accuracy may be useful in facial recognition applications, such as for unlocking mobile devices (e.g., mobile phones, tablet computers, etc.) and security applications.
[0111] In some examples, the distance measurement system 700 is a time of flight (ToF) based system. In some examples where the distance measurement system 700 is a ToF based system, the illuminator 702 generates a pulse of light. In other words, the illuminator 702 may modulate the amplitude of the emitted light 706. In such examples, the sensor 704 detects return light 710 from the pulse of light 706 generated by the illuminator 702. The distance measurement system 700 may then determine the distance to the object 708 from which the light 706 is backscattered based on the delay between when the light 706 is emitted and when it is detected, and the known speed of light in air. In some examples, rather than (or in addition to) modulating the amplitude of the emitted light 706, the illuminator 702 may modulate the phase of the emitted light 706. In such an example, the sensor 704 may detect the phase of the returning light 710 from the object 708 and determine the distance to a point on the object 708 using the speed of light and based on the time difference between when the illuminator 702 generates the light 706 at a particular phase and when the sensor 704 detects the returning light 710 at that particular phase.
[0112] In other examples, the point cloud may be generated without the use of the illuminator 702. For example, in some examples, the sensor 704 of the distance measurement system 700 may include two or more optical cameras. In such examples, the distance measurement system 700 may use the optical cameras to capture a stereo image of an environment including the object 708. The distance measurement system 700 may include a point cloud generator 716 that may calculate disparity between locations in the stereo image. The distance measurement system 700 may then use the disparity to determine distances to locations shown in the stereo image. From these distances, the point cloud generator 716 may generate a point cloud.
[0113] The sensor 704 may also detect other attributes of the object 708, such as color and reflectance information. In the example of Figure 7, a point cloud generator 716 may generate a point cloud based on the signal 714 generated by the sensor 704. The distance measurement system 700 and / or the point cloud generator 716 may form part of the data source 104 (Figure 1). Thus, the point cloud data generated by the distance measurement system 700 may be encoded and / or decoded according to any of the techniques of this disclosure.
[0114] FIG. 8 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of the present disclosure may be used. In the example of FIG. 8, a vehicle 800 includes a distance measurement system 802. The distance measurement system 802 may be implemented in the manner described with respect to FIG. 8. Although not shown in the example of FIG. 8, the vehicle 800 may also include a data source, such as data source 104 (FIG. 1), and a G-PCC encoder, such as G-PCC encoder 200 (FIG. 1). In the example of FIG. 8, the distance measurement system 802 emits a laser beam 804 that reflects off pedestrians 806 or other objects in the road. The data source of the vehicle 800 may generate a point cloud based on the signal generated by the distance measurement system 802. The G-PCC encoder of the vehicle 800 may encode the point cloud to generate a bit stream 808, such as a geometry bit stream (FIG. 2) and an attribute bit stream (FIG. 2). The bit stream 808 may include many fewer bits than the unencoded point cloud obtained by the G-PCC encoder.
[0115] An output interface of the vehicle 800 (e.g., output interface 108 (FIG. 1)) may transmit the bitstream 808 to one or more other devices. The bitstream 808 may include many fewer bits than the unencoded point cloud obtained by the G-PCC encoder. Thus, the vehicle 800 may be able to transmit the bitstream 808 to other devices more quickly than the unencoded point cloud data. In addition, the bitstream 808 may require less data storage capacity.
[0116] In the example of FIG. 8, a vehicle 800 may transmit a bitstream 808 to another vehicle 810. The vehicle 810 may include a G-PCC decoder, such as the G-PCC decoder 300 (FIG. 1). The G-PCC decoder of the vehicle 810 may decode the bitstream 808 to reconstruct a point cloud. The vehicle 810 may use the reconstructed point cloud for various purposes. For example, the vehicle 810 may determine that a pedestrian 806 is on the road in front of the vehicle 800 based on the reconstructed point cloud and thus begin to decelerate, e.g., even before the driver of the vehicle 810 recognizes that the pedestrian 806 is on the road. Thus, in some examples, the vehicle 810 may perform autonomous navigation operations based on the reconstructed point cloud.
[0117] Additionally or alternatively, the vehicle 800 may transmit the bit stream 808 to a server system 812. The server system 812 may use the bit stream 808 for various purposes. For example, the server system 812 may store the bit stream 808 for subsequent reconstruction of a point cloud. In this example, the server system 812 may use the point cloud along with other data (e.g., vehicle telemetry data generated by the vehicle 800) to train an autonomous driving system. In another example, the server system 812 may store the bit stream 808 for subsequent reconstruction for forensic crash investigation. Avoiding overflow conditions in the residual values may be important in avoiding point cloud data of insufficient quality, which may adversely affect various uses of the point cloud data, such as autonomous navigation.
[0118] FIG. 9 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of the present disclosure may be used. Extended reality (XR) is a term used to cover a variety of technologies including augmented reality (AR), mixed reality (MR), and virtual reality (VR). In the example of FIG. 9, a user 900 is located at a first location 902. The user 900 is wearing an XR headset 904. As an alternative to the XR headset 904, the user 900 may use a mobile device (e.g., a mobile phone, a tablet computer, etc.). The XR headset 904 includes a depth detection sensor, such as a distance measurement system, that detects the position of a point on an object 906 at the location 902. A data source of the XR headset 904 may use a signal generated by the depth detection sensor to generate a point cloud representation of the object 906 at the location 902. The XR headset 904 may include a G-PCC encoder (e.g., the G-PCC encoder 200 of FIG. 1) configured to encode the point cloud to generate a bitstream 908.
[0119] The XR headset 904 may transmit the bitstream 908 (e.g., over a network such as the Internet) to an XR headset 910 worn by a user 912 at a second location 914. The XR headset 910 may decode the bitstream 908 to reconstruct the point cloud. The XR headset 910 may use the point cloud to generate an XR visualization (e.g., an AR, MR, VR visualization) that represents the object 906 at the location 902. Thus, in some examples, the user 912 may have a 3D immersive experience of the location 902, for example, when the XR headset 910 generates the VR visualization. In some examples, the XR headset 910 may determine a position of a virtual object based on the reconstructed point cloud. For example, the XR headset 910 may determine based on the reconstructed point cloud that the environment (e.g., location 902) includes a plane, and therefore determine that a virtual object (e.g., an animated character) should be placed on the plane. The XR headset 910 may generate an XR visualization in which the virtual object is at the determined position. For example, an XR headset 910 may show an animated character sitting on a flat surface. Avoiding overflow conditions in the residual values can be important in avoiding poor quality point cloud data, which can limit the realism of the XR visualization.
[0120] FIG. 10 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of the present disclosure may be used. In the example of FIG. 10, a mobile device 1000 (e.g., a wireless communication device), such as a mobile phone or tablet computer, includes a distance measurement system, such as a LIDAR system, that detects the location of points on an object 1002 in an environment of the mobile device 1000. A data source of the mobile device 1000 may generate a point cloud representation of the object 1002 using signals generated by a depth detection sensor. The mobile device 1000 may include a G-PCC encoder (e.g., the G-PCC encoder 200 of FIG. 1) configured to encode the point cloud to generate a bitstream 1004. In the example of FIG. 10, the mobile device 1000 may transmit the bitstream to a remote device 1006, such as a server system or another mobile device. The remote device 1006 may decode the bitstream 1004 to reconstruct the point cloud. The remote device 1006 may use the point cloud for various purposes. For example, the remote device 1006 may use the point cloud to generate a map of the environment of the mobile device 1000. For example, the remote device 1006 may generate a map of the interior of a building based on the reconstructed point cloud. In another example, the remote device 1006 may generate imagery (e.g., computer graphics) based on the point cloud. For example, the remote device 1006 may use the points of the point cloud as vertices of a polygon and use color attributes of the points as a basis for shading the polygon. In some examples, the remote device 1006 may use the reconstructed point cloud for facial recognition or other security applications.
[0121] The following is a non-limiting list of clauses that may be in accordance with one or more techniques of the present disclosure. Examples of the various clauses of the present disclosure may be used individually or in any combination.
[0122] Clause 1A: The method includes obtaining a bitstream including encoded point cloud data; and determining whether a decoder is configured to decode the point cloud data based on the bitstream's compliance with one or more of the constraints described in this disclosure.
[0123] Clause 2A: The method of clause 1A, further comprising the step of decoding the point cloud data.
[0124] Clause 3A: The method includes obtaining point cloud data and encoding the point cloud data, the encoding the point cloud data including generating a bitstream that complies with one or more of the constraints described in this disclosure.
[0125] Clause 4A: The method includes obtaining a bitstream including encoded point cloud data and determining whether the bitstream complies with one or more of the constraints described in this disclosure.
[0126] Clause 5A: The method includes obtaining a bitstream including encoded point cloud data, and decoding the point cloud data, the decoding step including performing one or more of the clipping operations described in this disclosure.
[0127] Clause 6A: The method includes the steps of obtaining point cloud data and encoding the point cloud data, the encoding the point cloud data including performing one or more of the clipping operations described in this disclosure.
[0128] Clause 7A: The method of any of clauses 1A to 6A, wherein one or more of the constraint or clipping operations prevents the decoder operations from exceeding the bit depth.
[0129] Clause 8A: The method of any of clauses 1A to 6A, wherein one or more of the constraints or clipping operations of the present disclosure depend on the bit depth of the attribute components of the point cloud data and the minimum and maximum values of the inter-component residual prediction coefficients.
[0130] Clause 9A: A method comprising any combination of the methods in clauses 1A to 8A.
[0131] Clause 10A: A device comprising one or more means for carrying out the methods of any of clauses 1A to 9A.
[0132] Clause 11A: The device of clause 10A, wherein the one or more means comprise one or more processors implemented in circuitry.
[0133] Clause 12A: The device of any of clauses 10A or 11A, further comprising a memory for storing point cloud data.
[0134] Clause 13A: A device according to any of clauses 10A to 12A, wherein the device comprises a decoder.
[0135] Clause 14A: The device of any of clauses 10A to 13A, wherein the device comprises an encoder.
[0136] Clause 15A: The device of any of clauses 10A to 14A, further comprising a device for generating point cloud data.
[0137] Clause 16A: The device of any of clauses 10A to 15A, further comprising a display for presenting an image based on the point cloud.
[0138] Clause 17A: A computer-readable storage medium having instructions stored thereon which, when executed, cause one or more processors to perform the method of any of clauses 1A to 9A.
[0139] Clause 1B: A method for decoding point cloud data, comprising obtaining a bitstream encoded to comply with one or more constraints, and decoding the bitstream, the step of decoding the bitstream comprising the steps of: determining a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream; generating a predicted value of a second component of the attribute of the point; and reconstructing the second component as a sum of multiplication products of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, the one or more constraints comprising a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0140] Clause 2B: The point is a first point of the point cloud data, the predefined bit depth is a first bit depth, and the step of decoding the bit stream includes the steps of: determining a residual value of a first-order component of an attribute of a second point of the point cloud data based on data signaled in the bit stream; determining a residual value of a second-order component of an attribute of the second point of the point cloud data based on data signaled in the bit stream; generating a predicted value of the second-order component of the attribute of the second point; and reconstructing the quadratic component of the attribute of the second point as a sum of a multiplication product of a residual value of the quadratic component of the attribute of the second point, a predicted value of the quadratic component of the attribute of the second point, and a scale factor for the quadratic component of the attribute of the second point and the residual value of the primary component of the attribute of the second point, wherein the one or more constraints include a constraint limiting the quadratic component of the attribute of the second point, the residual value of the quadratic component of the attribute of the second point, and the residual value of the primary component of the attribute of the second point to one or more second predefined bit depths.
[0141] Clause 3B: The method of any of clauses 1B and 2B, further comprising clipping the residual value of the first component of the attribute of the point to one of the predefined bit depths.
[0142] Clause 4B: The method of any of clauses 1B to 3B, further comprising determining whether to decode the point cloud data based on compliance of the bitstream with one or more constraints.
[0143] Clause 5B: Any of the methods of clauses 1B to 4B, wherein the step of determining a residual value of a first component of the point includes a step of dequantizing a signaled value of the first component, and the signaled value of the first component is signaled in the bitstream.
[0144] Clause 6B: A method for encoding point cloud data, comprising obtaining point cloud data and encoding the point cloud data, the encoding of the point cloud data comprising generating a bitstream conforming to one or more constraints, the generating bitstream comprising determining a residual value of a first component of an attribute of the point, generating a predicted value of a second component of the attribute of the point, and reconstructing the second component of the attribute of the point as a sum of multiplication products of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, the one or more constraints comprising a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0145] Clause 7B: The method of clause 6B, wherein the point is a first point and the predefined bit depth is a first predefined bit depth, and encoding the point cloud data further comprises determining a residual value of a first component of an attribute of a second point of the point cloud data, determining a residual value of a second component of the attribute of the second point of the point cloud data, generating a predicted value of the second component of the attribute of the second point, and reconstructing the second component of the attribute of the second point as a sum of multiplication products of the residual value of the second component of the attribute of the second point, the predicted value of the second component of the attribute of the second point, and a scale factor for the second component of the attribute of the second point and the residual value of the first component of the attribute of the second point, and wherein the one or more constraints include a constraint limiting the second component of the attribute of the second point, the residual value of the second component of the attribute of the second point, and the residual value of the first component of the attribute of the second point to one or more second predefined bit depths.
[0146] Clause 8B: The method of any of clauses 6B and 7B, further comprising clipping the residual value of the first component to one of the predefined bit depths.
[0147] Clause 9B: The method of any of clauses 6B to 8B, wherein the step of determining the residual value of the first component includes a step of dequantizing a signaled value of the first component, and the signaled value of the first component is signaled in the bitstream.
[0148] Clause 10B: Any of the methods of clauses 6B to 9B, further comprising the step of generating point cloud data.
[0149] Clause 11B: A device comprises a memory configured to store point cloud data; and one or more processors implemented in a circuit coupled to the memory and configured to obtain a bitstream encoded to comply with one or more constraints and to decode the bitstream, wherein the one or more processors are configured, as part of decoding the bitstream, to: determine a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream; generate a predicted value of a second component of the attribute of the point; and reconstruct the second component as a sum of a multiplication product of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, wherein the one or more constraints include a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0150] Clause 12B: The point is a first point of the point cloud data, the predefined bit depth is a first bit depth, and the one or more processors, as part of decoding the bitstream, determine a residual value of a first order component of an attribute of a second point of the point cloud data based on data signaled in the bitstream; determine a residual value of a second order component of the attribute of the second point of the point cloud data based on data signaled in the bitstream; generate a predicted value of the second order component of the attribute of the second point; and and reconstructing the quadratic component of the attribute of the two points as a sum of a residual value of the quadratic component of the second point attribute, a predicted value of the quadratic component of the second point attribute, and a multiplication product of a scale factor for the quadratic component of the second point attribute and the residual value of the primary component of the second point attribute, wherein the one or more constraints include a constraint limiting the quadratic component of the second point attribute, the residual value of the quadratic component of the second point attribute, and the residual value of the primary component of the second point attribute to one or more second predefined bit depths.
[0151] Clause 13B: The device of any of clauses 11B and 12B, wherein the one or more processors are further configured to clip residual values of the first component to one of the predefined bit depths.
[0152] Clause 14B: The device of any of clauses 11B to 13B, wherein the one or more processors are further configured to determine whether to decode the point cloud data based on the bitstream's compliance with one or more constraints.
[0153] Clause 15B: The device of any of clauses 11B to 14B, wherein the one or more processors are configured to dequantize a signaled value of the first component as part of determining a residual value of the first component, and the signaled value of the first component is signaled in the bitstream.
[0154] Clause 16B: A device comprises a memory configured to store point cloud data; and one or more processors implemented in a circuit coupled to the memory, the one or more processors configured to encode the point cloud data, the one or more processors configured to generate, as part of encoding the point cloud data, a bitstream that complies with one or more constraints, the one or more processors configured to, as part of generating the bitstream, determine a residual value of a first component of an attribute of the point; generate a predicted value of a second component of the attribute of the point; and reconstruct the second component of the attribute of the point as a sum of a multiplication product of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, the one or more constraints including a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0155] Clause 17B: The device of clause 16B, wherein the points are first points and the predefined bit depth is a first predefined bit depth, and the one or more processors are configured to, as part of encoding the point cloud data, determine a residual value of a primary component of an attribute of a second point of the point cloud data, determine a residual value of a secondary component of the attribute of the second point of the point cloud data, generate a predicted value of the secondary component of the attribute of the second point, and reconstruct the secondary component of the attribute of the second point as a sum of multiplication products of the residual value of the secondary component of the second point attribute, the predicted value of the secondary component of the second point attribute, and a scale factor for the secondary component of the second point attribute and the residual value of the primary component of the second point attribute, and wherein the one or more constraints include a constraint limiting the secondary component of the second point attribute, the residual value of the secondary component of the second point attribute, and the residual value of the primary component of the attribute of the second point to one or more second predefined bit depths.
[0156] Clause 18B: The device of any of clauses 16B and 17B, wherein the one or more processors are further configured to clip residual values of the first component to one of the predefined bit depths.
[0157] Clause 19B: The device of any of clauses 16B to 18B, wherein the one or more processors are configured to dequantize a signaled value of the first component as part of determining a residual value of the first component, and the signaled value of the first component is signaled in the bitstream.
[0158] Clause 20B: A device of any of clauses 16B to 19B, further comprising a sensor for generating point cloud data.
[0159] Clause 21B: The device includes means for obtaining a bitstream encoded to comply with one or more constraints; and means for decoding the bitstream, the means for decoding the bitstream comprising means for determining a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream, means for generating a predicted value of a second component of the attribute of the point, and means for reconstructing the second component of the attribute of the point as a sum of multiplication products of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, the one or more constraints including a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0160] Clause 22B: The device includes means for acquiring point cloud data and means for encoding the point cloud data, the means for encoding the point cloud data includes means for generating a bitstream that complies with one or more constraints, the means for generating the bitstream includes means for determining a residual value of a first component of an attribute of the point, means for generating a predicted value of a second component of the attribute of the point, and means for reconstructing the second component of the attribute of the point as a sum of multiplication products of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and a residual value of the first component of the attribute of the point, the one or more constraints including a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0161] Clause 23B: A non-transitory computer-readable data storage medium having instructions stored thereon that, when executed, cause one or more processors to obtain a bitstream encoded to comply with one or more constraints and to decode the bitstream, the instructions that, when executed, cause the one or more processors to determine a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream, generate a predicted value of a second component of the attribute of the point, and reconstruct the second component of the attribute of the point as a sum of a multiplication product of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, wherein the one or more constraints include a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0162] Clause 24B: A non-transitory computer-readable data storage medium having stored thereon instructions that, when executed, cause one or more processors to obtain point cloud data and encode the point cloud data, the instructions causing the one or more processors to encode the point cloud data include instructions that, when executed, cause the one or more processors to generate a bitstream that complies with one or more constraints, and the instructions causing the one or more processors to generate the bitstream, when executed, cause the one or more processors to encode the bitstream by a remainder of a first component of an attribute of the point. a second component of the attribute of the point; and a second component of the attribute of the point as a sum of a multiplication product of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and a residual value of the first component of the attribute of the point, wherein the one or more constraints include a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0163] Clause 1C: A method for decoding point cloud data comprises obtaining a bitstream encoded to comply with one or more constraints, and decoding the bitstream, the step of decoding the bitstream comprising the steps of determining a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream, generating a predicted value of a second component of the attribute of the point, and reconstructing the second component as a sum of multiplication products of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, the one or more constraints comprising a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0164] Clause 2C: The point is a first point of the point cloud data, the predefined bit depth is a first bit depth, and the step of decoding the bit stream includes the steps of: determining a residual value of a first-order component of an attribute of a second point of the point cloud data based on data signaled in the bit stream; determining a residual value of a second-order component of an attribute of the second point of the point cloud data based on data signaled in the bit stream; generating a predicted value of the second-order component of the attribute of the second point; and reconstructing the quadratic component of the attribute of the second point as a sum of a multiplication product of a residual value of the quadratic component of the attribute of the second point, a predicted value of the quadratic component of the attribute of the second point, and a scale factor for the quadratic component of the attribute of the second point and the residual value of the primary component of the attribute of the second point, wherein the one or more constraints include a constraint limiting the quadratic component of the attribute of the second point, the residual value of the quadratic component of the attribute of the second point, and the residual value of the primary component of the attribute of the second point to one or more second predefined bit depths.
[0165] Clause 3C: The method of clause 1C, further comprising clipping the residual value of the first component of the attribute of the point to one of the predefined bit depths.
[0166] Clause 4C: The method of clause 1C, further comprising determining whether to decode the point cloud data based on the bitstream's compliance with one or more constraints.
[0167] Clause 5C: The method of clause 1C, wherein the step of determining a residual value of the first component of the point includes a step of dequantizing a signaled value of the first component, the signaled value of the first component being signaled in the bitstream.
[0168] Clause 6C: A method for encoding point cloud data, comprising obtaining point cloud data and encoding the point cloud data, the encoding of the point cloud data comprising generating a bitstream conforming to one or more constraints, the generating bitstream comprising determining a residual value of a first component of an attribute of the point, generating a predicted value of a second component of the attribute of the point, and reconstructing the second component of the attribute of the point as a sum of multiplication products of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, the one or more constraints comprising a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0169] Clause 7C: The method of clause 6C, wherein the point is a first point and the predefined bit depth is a first predefined bit depth, and encoding the point cloud data further comprises determining a residual value of a first component of an attribute of a second point of the point cloud data, determining a residual value of a second component of the attribute of the second point of the point cloud data, generating a predicted value of the second component of the attribute of the second point, and reconstructing the second component of the attribute of the second point as a sum of multiplication products of the residual value of the second component of the second point attribute, the predicted value of the second component of the attribute of the second point, and a scale factor for the second component of the attribute of the second point and the residual value of the first component of the attribute of the second point, and wherein the one or more constraints include a constraint limiting the second component of the second point attribute, the residual value of the second component of the second point attribute, and the residual value of the first component of the attribute of the second point to one or more second predefined bit depths.
[0170] Clause 8C: The method of clause 6C, further comprising clipping the residual value of the first component to one of the predefined bit depths.
[0171] Clause 9C: The method of clause 6C, wherein determining the residual value of the first component comprises dequantizing a signaled value of the first component, the signaled value of the first component being signaled in the bitstream.
[0172] Clause 10C: The method of clause 6C, further comprising the step of generating point cloud data.
[0173] Clause 11C: A device comprises a memory configured to store point cloud data; and one or more processors implemented in a circuit coupled to the memory and configured to obtain a bitstream encoded to comply with one or more constraints and to decode the bitstream, wherein the one or more processors are configured, as part of decoding the bitstream, to determine a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream, generate a predicted value of a second component of the attribute of the point, and reconstruct the second component as a sum of a multiplication product of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, wherein the one or more constraints include a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0174] Clause 12C: The point is a first point of the point cloud data, the predefined bit depth is a first bit depth, and the one or more processors, as part of decoding the bitstream, determine a residual value of a first order component of an attribute of a second point of the point cloud data based on data signaled in the bitstream; determine a residual value of a second order component of the attribute of the second point of the point cloud data based on data signaled in the bitstream; generate a predicted value of the second order component of the attribute of the second point; and and reconstructing the quadratic component of the attribute of the two points as a sum of a residual value of the quadratic component of the second point attribute, a predicted value of the quadratic component of the second point attribute, and a multiplication product of a scale factor for the quadratic component of the second point attribute and the residual value of the primary component of the second point attribute, wherein the one or more constraints include a constraint limiting the quadratic component of the second point attribute, the residual value of the quadratic component of the second point attribute, and the residual value of the primary component of the second point attribute to one or more second predefined bit depths.
[0175] Clause 13C: The device of clause 11C, wherein the one or more processors are further configured to clip residual values of the first component to one of the predefined bit depths.
[0176] Clause 14C: The device of clause 11C, wherein the one or more processors are further configured to determine whether to decode the point cloud data based on the bitstream's compliance with the one or more constraints.
[0177] Clause 15C: The device of clause 11C, wherein the one or more processors are configured to dequantize a signaled value of the first component as part of determining a residual value of the first component, and the signaled value of the first component is signaled in the bitstream.
[0178] Clause 16C: A device comprises a memory configured to store point cloud data; and one or more processors implemented in a circuit coupled to the memory, the one or more processors configured to encode the point cloud data, the one or more processors configured to generate, as part of encoding the point cloud data, a bitstream that complies with one or more constraints, the one or more processors configured to, as part of generating the bitstream, determine a residual value of a first component of an attribute of the point; generate a predicted value of a second component of the attribute of the point; and reconstruct the second component of the attribute of the point as a sum of a multiplication product of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, the one or more constraints including a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0179] Clause 17C: The device of clause 16C, wherein the points are first points and the predefined bit depth is a first predefined bit depth, and the one or more processors are configured to, as part of encoding the point cloud data, determine a residual value of a primary component of an attribute of a second point of the point cloud data, determine a residual value of a secondary component of the attribute of the second point of the point cloud data, generate a predicted value of the secondary component of the attribute of the second point, and reconstruct the secondary component of the attribute of the second point as a sum of multiplication products of the residual value of the secondary component of the second point attribute, the predicted value of the secondary component of the second point attribute, and a scale factor for the secondary component of the second point attribute and the residual value of the primary component of the second point attribute, and wherein the one or more constraints include a constraint limiting the secondary component of the second point attribute, the residual value of the secondary component of the second point attribute, and the residual value of the primary component of the attribute of the second point to one or more second predefined bit depths.
[0180] Clause 18C: The device of clause 16C, wherein the one or more processors are further configured to clip residual values of the first component to one of the predefined bit depths.
[0181] Clause 19C: The device of clause 16C, wherein the one or more processors are configured to dequantize a signaled value of the first component as part of determining a residual value of the first component, the signaled value of the first component being signaled in the bitstream.
[0182] Clause 20C: The device of clause 16, further comprising a sensor for generating point cloud data.
[0183] Clause 21C: The device includes means for obtaining a bitstream encoded to comply with one or more constraints; and means for decoding the bitstream, the means for decoding the bitstream comprising means for determining a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream, means for generating a predicted value of a second component of the attribute of the point, and means for reconstructing the second component of the attribute of the point as a sum of multiplication products of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, the one or more constraints including a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0184] Clause 22C: A device includes means for acquiring point cloud data and means for encoding the point cloud data, the means for encoding the point cloud data including means for generating a bitstream that complies with one or more constraints, the means for generating the bitstream including means for determining a residual value of a first component of an attribute of the point, means for generating a predicted value of a second component of the attribute of the point, and means for reconstructing the second component of the attribute of the point as a sum of multiplication products of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, the one or more constraints including a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0185] Clause 23C: A non-transitory computer-readable data storage medium having instructions stored thereon that, when executed, cause one or more processors to obtain a bitstream encoded to comply with one or more constraints and to decode the bitstream, the instructions that, when executed, cause the one or more processors to determine a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream, generate a predicted value of a second component of the attribute of the point, and reconstruct the second component of the attribute of the point as a sum of a multiplication product of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point, wherein the one or more constraints include a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0186] Clause 24C: A non-transitory computer-readable data storage medium having instructions stored thereon that, when executed, cause one or more processors to obtain point cloud data and encode the point cloud data, the instructions causing the one or more processors to encode the point cloud data include instructions that, when executed, cause the one or more processors to generate a bitstream that complies with one or more constraints, and the instructions causing the one or more processors to generate the bitstream, when executed, cause the one or more processors to encode the bitstream by a remainder of a first component of an attribute of the point. a second component of the attribute of the point; and a second component of the attribute of the point as a sum of a multiplication product of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and a residual value of the first component of the attribute of the point, wherein the one or more constraints include a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
[0187] The present disclosure describes one or more examples that may be applied independently or in combination. Depending on the example, it should be recognized that some acts or events of any of the techniques described herein may be performed in a different sequence, may be added, combined, or may be omitted entirely (e.g., not all acts or events described are necessary to the practice of the technique). Moreover, in some examples, acts or events may be performed in parallel rather than sequentially, for example, through multi-threaded processing, interrupt processing, or multiple processors.
[0188] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted via a computer-readable medium as one or more instructions or code and executed by a hardware-based processing unit. The computer-readable medium may include a computer-readable storage medium, which corresponds to a tangible medium, such as a data storage medium, or a communication medium, which includes any medium that facilitates transfer of a computer program from one place to another, for example according to a communication protocol. In this manner, the computer-readable medium may generally correspond to (1) a tangible computer-readable storage medium that is non-transitory, or (2) a communication medium, such as a signal or carrier wave. The data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[0189] By way of example and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included within the definition of the medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but instead cover non-transitory tangible storage media. As used herein, disk and disc include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and Blu-ray disc, where disks typically reproduce data magnetically and discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer readable media.
[0190] The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Thus, the terms "processor" and "processing circuitry" as used herein may refer to any of the above structures, or any other structures suitable for implementing the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or may be incorporated into a composite codec. Also, the techniques may be fully implemented in one or more circuits or logic elements.
[0191] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chipsets). Various components, modules, or units have been described in this disclosure to highlight functional aspects of devices configured to perform the disclosed techniques, but they do not necessarily require realization by different hardware units. Rather, as described above, the various units may be combined in a codec hardware unit or may be provided by a collection of interoperable hardware units, including one or more processors as described above, along with appropriate software and / or firmware.
[0192] Various examples have been described. These and other examples are within the scope of the following claims. [Explanation of symbols]
[0193] 100 Systems 102 Source Device 104 Data Sources 106 Memory 108 Output Interface 110 Computer-readable medium 112 Storage Devices 114 File Server 116 Destination Device 118 Data Consumer 120 Memory 122 Input Interface 200G-PCC Encoder 202 Coordinate Transformation Unit 203 Geometry Bitstream 204 Color Conversion Unit 205 Attribute Bitstream 206 Voxelization Unit 208 Attribute Transfer Unit 210 8-tree analysis unit 212 Surface Approximation Analysis Unit 214 Arithmetic Coding Unit 216 Geometry Reconstruction Unit 218 RAHT Unit 220 LOD generation units 222 Lifting Unit 224 Coefficient Quantization Unit 226 Arithmetic Coding Unit 300 G-PCC Decoder 302 Geometry Arithmetic Decoding Unit 304 Attribute Arithmetic Decoding Unit 306 8th Tree Synthesis Unit 308 Inverse Quantization Unit 310 Surface Approximation Synthesis Unit 312 Geometry Reconstruction Unit 314 RAHT Unit 316 LOD generation units 318 Reverse Lifting Unit 320 Inverse Coordinate Transformation Unit 322 Inverse Color Conversion Unit 700 Distance Measuring System 702 Illuminator 704 Sensors 706 light 708 Objects 710 Return light 711 Lens 712 images 714 Signal 716 Point Cloud Generator 800 vehicles 802 Distance Measuring System 804 Laser Beam 806 Pedestrians 808 Bitstream 810 Vehicles 812 Server System 900 users 902 1st Location 904 XR Headset 906 Object 908 Bitstream 910 XR Headset 912 users 914 Second Location 1000 Mobile Devices 1002 Objects 1004 Bitstream 1006 Remote Device< / add> < / add>
Claims
1. 1. A method for decoding point cloud data, comprising: obtaining a bitstream encoded to comply with one or more constraints; and decoding the bitstream, the decoding step comprising: determining a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream; generating a prediction of a second component of the attribute of the point; reconstructing the second component as a sum of multiplication products of the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point and the residual value of the first component of the attribute of the point; the one or more constraints include a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
2. the point is a first point of the point cloud data, the predefined bit depth is a first bit depth, and the step of decoding the bit stream includes: determining a residual value of a first-order component of an attribute of a second point of the point cloud data based on the data signaled in the bitstream; determining a residual value of a second order component of the attribute of the second point of the point cloud data based on the data signaled in the bitstream; generating a prediction of the quadratic component of the attribute of the second point; reconstructing the quadratic component of the attribute of the second point as a sum of a multiplication product of the residual value of the quadratic component of the attribute of the second point, the predicted value of the quadratic component of the attribute of the second point, and a scale factor for the quadratic component of the attribute of the second point and the residual value of the primary component of the attribute of the second point; 2. The method of claim 1 , wherein the one or more constraints include a constraint limiting the quadratic component of the attribute of the second point, the residual value of the quadratic component of the attribute of the second point, and the residual value of the primary component of the attribute of the second point to one or more second predefined bit depths.
3. The method of claim 1 , further comprising clipping the residual value of the first component of the attribute of the point to one of the predefined bit depths.
4. The method of claim 1 , further comprising determining whether to decode the point cloud data based on the bitstream's compliance with the one or more constraints.
5. 2. The method of claim 1, wherein determining the residual value of the first component for the point comprises dequantizing a signaled value of the first component, the signaled value of the first component being signaled in the bitstream.
6. 1. A method for encoding point cloud data, comprising the steps of: acquiring the point cloud data; and encoding the point cloud data, the encoding comprising generating a bitstream that complies with one or more constraints, the generating bitstream comprising: determining a residual value of a first component of an attribute of the point; generating a prediction of a second component of the attribute of the point; reconstructing the second component of the attribute of the point as a sum of multiplication products of the residual value of the first component of the attribute of the point and a scale factor for the second component of the attribute of the point, the one or more constraints include a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
7. The point is a first point, the predefined bit depth is a first predefined bit depth, and encoding the point cloud data includes: determining a residual value of a first-order component of an attribute of a second point of the point cloud data; determining a residual value of a second component of the attribute of the second point of the point cloud data; generating a prediction of the quadratic component of the attribute of the second point; reconstructing the quadratic component of the attribute of the second point as a sum of a multiplication product of the residual value of the quadratic component of the attribute of the second point, the predicted value of the quadratic component of the attribute of the second point, and a scale factor for the quadratic component of the attribute of the second point and the residual value of the primary component of the attribute of the second point; 7. The method of claim 6, wherein the one or more constraints include a constraint limiting the quadratic component of the attribute of the second point, the residual value of the quadratic component of the attribute of the second point, and the residual value of the primary component of the attribute of the second point to one or more second predefined bit depths.
8. The method of claim 6 , further comprising clipping the residual values of the first component to one of the predefined bit depths.
9. a memory configured to store the point cloud data; and one or more processors implemented in circuitry coupled to the memory, the one or more processors comprising: Obtaining a bitstream encoded to comply with one or more constraints; and decoding the bitstream, wherein as part of encoding the bitstream, the one or more processors determining a residual value of a first component of an attribute of a point of the point cloud data based on data signaled in the bitstream; generating a prediction of a second component of the attribute of the point; and reconstructing the second component as a sum of a multiplication product of the residual value of the first component of the attribute of the point and a scale factor for the second component of the attribute of the point, the one or more constraints include a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
10. the point is a first point of the point cloud data, the predefined bit depth is a first bit depth, and the one or more processors, as part of decoding the bitstream, determining a residual value of a first-order component of an attribute of a second point of the point cloud data based on the data signaled in the bitstream; determining a residual value of a second order component of the attribute of the second point of the point cloud data based on the data signaled in the bitstream; generating a prediction of the quadratic component of the attribute of the second point; and reconstructing the quadratic component of the attribute of the second point as a sum of a multiplication product of the residual value of the quadratic component of the attribute of the second point, the predicted value of the quadratic component of the attribute of the second point, and a scale factor for the quadratic component of the attribute of the second point and the residual value of the primary component of the attribute of the second point; 10. The device of claim 9, wherein the one or more constraints include a constraint limiting the quadratic component of the attribute of the second point, the residual value of the quadratic component of the attribute of the second point, and the residual value of the primary component of the attribute of the second point to one or more second predefined bit depths.
11. 10. The device of claim 9, wherein the one or more processors are further configured to clip the residual values of the first component to one of the predefined bit depths.
12. 10. The device of claim 9, wherein the one or more processors are further configured to determine whether to decode the point cloud data based on the bitstream's compliance with the one or more constraints.
13. 10. The device of claim 9, wherein the one or more processors are configured to dequantize a signaled value of the first component as part of determining the residual value of the first component, the signaled value of the first component being signaled in the bitstream.
14. a memory configured to store the point cloud data; one or more processors implemented in circuitry coupled to the memory, the one or more processors configured to encode the point cloud data, the one or more processors configured as part of encoding the point cloud data to generate a bitstream that complies with one or more constraints, the one or more processors configured as part of generating the bitstream to: determining a residual value of a first component of an attribute of the point; generating a prediction of a second component of the attribute of the point; and reconstructing the second component of the attribute of the point as a sum of a multiplication product of the residual value of the first component of the attribute of the point and the predicted value of the second component of the attribute of the point and a scale factor for the second component of the attribute of the point; the one or more constraints include a constraint limiting the first component of the attribute of the point, the residual value of the first component of the attribute of the point, the second component of the attribute, and the residual value of the second component of the attribute of the point to one or more predefined bit depths.
15. A computer-readable data storage medium storing instructions which, when executed by one or more processors, cause the one or more processors to perform the method of any one of claims 1 to 8.