Attribute residual coding in g-pcc
By determining in G-PCC that when the residual value of all components except one component of the multi-component attribute of a point cloud is zero, only the value of that component is encoded as the residual value minus the offset, the redundancy problem in point cloud encoding and decoding is solved and the data transmission efficiency is improved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2021-06-09
- Publication Date
- 2026-03-20
AI Technical Summary
In geometric point cloud compression (G-PCC), the independent encoding and decoding of residual values of multi-component attributes of points is redundant, resulting in low data transmission efficiency.
By determining that the residual value of all components except one in the point cloud is zero, only the value of that component is encoded as the residual value minus the offset, and this is notified by a signal in the bit stream, thus reducing the amount of data.
This effectively reduces the amount of data that the G-PCC encoder and decoder need to transmit and receive, thus improving data transmission efficiency.
Smart Images

Figure CN115699771B_ABST
Abstract
Description
[0001] Cross Reference to Related Applications
[0002] This application claims priority to U.S. Application No. 17 / 342,249, filed June 8, 2021, U.S. Provisional Application No. 63 / 036,878, filed June 9, 2020, and U.S. Provisional Application No. 63 / 153,187, filed February 24, 2021, the entire contents of each of which are incorporated by reference herein. U.S. Application No. 17 / 342,249 claims the benefit of U.S. Provisional Application No. 63 / 036,878, filed June 9, 2020, and U.S. Provisional Application No. 63 / 153,187, filed February 24, 2021. TECHNICAL FIELD
[0003] The present disclosure relates to point cloud encoding and decoding. BACKGROUND
[0004] A point cloud is a collection of points in a 3-dimensional space. The points can correspond to points on objects within the 3-dimensional space. Thus, a point cloud can be used to represent the physical content of a 3-dimensional space. Point clouds can play a role in various situations. For example, a point cloud can be used for an autonomous vehicle in order to represent the positioning of objects on a road. In another example, a point cloud can be used to represent the physical content of an environment in order to position virtual objects in an augmented reality (AR) or mixed reality (MR) application. Point cloud compression is a process of encoding and decoding a point cloud. Encoding a point cloud can reduce the amount of data needed to store and transmit a point cloud. SUMMARY
[0005] Generally, the present disclosure describes techniques for attribute residual coding, such as for the geometry point cloud compression (G-PCC) standard that is currently being developed. However, the example techniques are not limited to the G-PCC standard. In G-PCC, a point can include multiple attributes, and each attribute can include one or more components. One example of an attribute is a color attribute, and a color attribute can include three color components (e.g., RGB, YCbCr) to define the color of a point. A color component is one example of an attribute, and other examples of attributes are possible, including examples of different components of an attribute (e.g., a surface normal attribute includes x, y, z components). To code an attribute of a point, a G-PCC encoder can determine a residual value (e.g., a residual coefficient), and the G-PCC encoder can signal information indicative of the residual value, and a G-PCC decoder can receive the information indicative of the residual value to reconstruct the point.
[0006] In some examples, the sign and magnitude information of the residual values of each component (e.g., color component or other component) are independently coded and decoded. The residual values of each component of the residual coefficients can be zero, in which case there can be redundancy in this independent coding and decoding of the sign and magnitude information. This disclosure describes example techniques for efficiently coding (e.g., encoding or decoding) component information, such as when the residual values of the components are zero in G-PCC. As such, the example techniques describe a technical solution to a technical problem that provides a practical application for attribute coding in G-PCC.
[0007] In one example, the disclosure describes a method of encoding a point cloud, comprising: determining that residual values of all components of an attribute of a point in the point cloud except for one component are equal to zero; based on determining that the residual values of all components of the attribute except for the one component are equal to zero, determining a value of the one component to be equal to a magnitude of a residual value of the one component of the attribute minus an offset; encoding the value of the one component; and signaling the encoded value in a bitstream.
[0008] In another example, the disclosure describes a method of decoding a point cloud, comprising: decoding values of components of an attribute of a point in the point cloud, the values indicating residual values of the components; determining that the residual values of all components of the attribute except for one component are equal to zero; based on determining that the residual values of all components of the attribute except for the one component are equal to zero, adding an offset to the decoded values of the one component of the attribute to determine a magnitude of the residual value of the one component; and reconstructing the components of the attribute of the point based on the residual values of the components.
[0009] In another example, the disclosure describes an apparatus for encoding a point cloud, comprising: a memory configured to store the point cloud; and processing circuitry configured to: determine that residual values of all components of an attribute of a point in the point cloud except for one component are equal to zero; based on determining that the residual values of all components of the attribute except for the one component are equal to zero, determine a value of the one component to be equal to a magnitude of a residual value of the one component of the attribute minus an offset; encode the value of the one component; and signal the encoded value in a bitstream.
[0010] In another example, the disclosure describes an apparatus for decoding a point cloud, comprising: a memory configured to store the point cloud; and processing circuitry configured to: decode values of components of an attribute of a point in the point cloud, the values indicating residual values of the components; determine that the residual values of all components of the attribute except for one component are equal to zero; based on determining that the residual values of all components of the attribute except for the one component are equal to zero, add an offset to the decoded values of the one component of the attribute to determine a magnitude of the residual value of the one component; and reconstruct the components of the attribute of the point based on the residual values of the components.
[0011] In another example, the disclosure describes a computer-readable storage medium having instructions stored thereon that, when executed, cause one or more processors of a device for encoding a point cloud to: determine that residual values of all but one component of an attribute of a point in the point cloud are equal to zero; based on determining that the residual values of all but the one component of the attribute are equal to zero, determine a value of the one component to be equal to a magnitude of a residual value of the one component of the attribute minus an offset; encode the value of the one component; and signal the encoded value in a bitstream.
[0012] In another example, the disclosure describes a computer-readable storage medium having instructions stored thereon that, when executed, cause one or more processors of a device for decoding a point cloud to: decode values of components of an attribute of a point in the point cloud, the values indicating residual values of the components; determine that residual values of all but one component of the attribute are equal to zero; based on determining that the residual values of all but the one component of the attribute are equal to zero, add an offset to the decoded values of the one component of the attribute to determine a magnitude of a residual value of the one component; and reconstruct the components of the attribute of the point based on the residual values of the components.
[0013] 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.
[0014] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will become apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF DRAWINGS
[0015] Figure 1 is a block diagram illustrating an example encoding and decoding system that can perform techniques of this disclosure.
[0016] Figure 2 is a block diagram illustrating an example geometry point cloud compression (G-PCC) encoder.
[0017] Figure 3 is a block diagram illustrating an example G-PCC decoder.
[0018] Figure 4 is a flow diagram illustrating an example of encoding residual values for G-PCC.
[0019] Figure 5 is a flow diagram illustrating an example method of encoding a point cloud.
[0020] Figure 6 is a flow diagram illustrating an example method of decoding a point cloud.
[0021] Figure 7 FIG. 1 is a conceptual diagram illustrating an example ranging system that can be used with one or more techniques of this disclosure.
[0022] Figure 8 FIG. 2 is a conceptual diagram illustrating an example vehicle-based scenario that can use one or more techniques of this disclosure.
[0023] Figure 9 FIG. 3 is a conceptual diagram illustrating an example extended reality system that can use one or more techniques of this disclosure.
[0024] Figure 10 FIG. 4 is a conceptual diagram illustrating an example mobile device system that can use one or more techniques of this disclosure. DETAILED DESCRIPTION
[0025] This disclosure describes example techniques related to coding (e.g., encoding and decoding) residual values for multi-component attributes of points in a point cloud. Each point in a point cloud includes one or more attributes, such as a color attribute, a surface attribute, a weather attribute, etc. Some of these attributes can be multi-component attributes, and some other attributes can be single-component attributes. For example, a color attribute can include three components (e.g., one luminance component and two chrominance components, or a red component, a green component, and a blue component) that indicate a color of a point. An albedo attribute can include a single component (e.g., one value that indicates an albedo of a point).
[0026] To reduce the amount of data that a geometry point cloud compression (G-PCC) encoder needs to signal and a G-PCC decoder needs to receive, the G-PCC encoder can be configured to determine residual values between attributes of a current point and attributes of a previously encoded point, instead of signaling component values of the attributes of each point. The G-PCC encoder can signal the residual values (e.g., a size and a sign information of the residual values, such as positive or negative), which tends to require fewer number of bits compared to signaling values of the components. The G-PCC decoder can receive the residual values and add the residual values to the previously decoded point to reconstruct the current point.
[0027] For example, the G-PCC encoder can determine a difference between an albedo value of an albedo attribute of a current point and an albedo value of an albedo attribute of a previous point to determine a residual albedo value. The G-PCC encoder can signal the resulting residual albedo value and information that identifies the previous point. The G-PCC decoder can receive the residual albedo value and identify the previous point. The G-PCC decoder can add the residual albedo value to the albedo value of the previous point to reconstruct the albedo value of the current point.
[0028] In some cases, the residual values of the components of an attribute can be zero. For example, there can be a string of reflectance attributes of points in consecutive order whose residual values are zero. In this case, instead of encoding and signaling each zero residual value, the G-PCC encoder can signal and the G-PCC decoder can receive a syntax element (e.g., a "zero run" syntax element) indicating the number of points in the order whose residual values are zero.
[0029] However, for multi-component attributes, it can happen that the residual values of some components are zero, but the residual value of another component is non-zero. For example, for a color attribute, the color components can be a luminance component and two chrominance components. As an example, the residual values of the chrominance components can be zero, but the residual value of the luminance component can be non-zero. In this case, the zero run syntax element would indicate that there is no zero run (i.e., at least one component of the attribute has a non-zero residual value).
[0030] This disclosure describes example techniques to reduce the amount of data signaled by a G-PCC encoder and received by a G-PCC decoder in the case that all but one component of an attribute of a point in a point cloud (e.g., a point in a point cloud) has a residual value equal to zero (i.e., there is one component that has a non-zero residual value, and all other components have zero residual values). For example, based on determining that all but one component of an attribute has a residual value equal to zero, the G-PCC encoder can determine a value of the one component equal to a magnitude of the residual value of one component of the attribute minus an offset (e.g., a positive integer). The magnitude of the residual value can be an absolute value of the residual value. The G-PCC encoder can signal the determined value (e.g., the magnitude of the residual value minus the offset) instead of signaling the full value of the magnitude of the residual value, which can require fewer bits to signal than the bits required to signal the full magnitude of the residual value. In addition to the magnitude of the residual value, the G-PCC encoder can also signal sign information (e.g., whether the residual value is positive or negative).
[0031] A G-PCC decoder can decode a value of a component of an attribute of a point in a point cloud, where the value indicates a residual value of the component. The G-PCC decoder can determine that residual values of all components of the attribute except one component are equal to zero. Based on determining that the residual values of all components of the attribute except the one component are equal to zero, the G-PCC decoder can add an offset to the value of the one component of the attribute to determine a magnitude of the residual value of the one component. As such, the amount of data that the G-PCC decoder needs to receive can be reduced because the number of bits needed to subtract the offset from the magnitude of the residual value can be less than the number of bits needed for the residual value. The G-PCC decoder can also decode information indicating a sign (e.g., positive or negative) of the residual value, and based on the magnitude of the residual value and the sign of the residual value, the G-PCC decoder can determine the residual value.
[0032] Figure 1 FIG. 1 is a block diagram illustrating an example encoding and decoding system 100 that can perform the techniques of this disclosure. The techniques of this disclosure generally relate to encoding and decoding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. Generally, point cloud data includes any data used to process a point cloud. The encoding and decoding can efficiently compress and / or decompress the point cloud data.
[0033] As shown in FIG. 1, system 100 includes a source device 102 and a destination device 116. Source device 102 provides encoded point cloud data to be decoded by destination device 116. Specifically, in the example of FIG. 1, source device 102 provides point cloud data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 can include any of a variety of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, land or sea vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, etc. In some cases, source device 102 and destination device 116 can be equipped for wireless communication. Figure 1 Figure 1 In the example of FIG. 1, source device 102 provides point cloud data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 can include any of a variety of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, land or sea vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, etc. In some cases, source device 102 and destination device 116 can be equipped for wireless communication.
[0034] In the example of FIG. 1, source device 102 provides point cloud data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 can include any of a variety of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, land or sea vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, etc. In some cases, source device 102 and destination device 116 can be equipped for wireless communication. Figure 1 In the example of FIG. 1, source device 102 includes data source 104, memory 106, G-PCC encoder 200, and output interface 108. Destination device 116 includes input interface 122, G-PCC decoder 300, memory 120, and data sink 118. In accordance with this disclosure, G-PCC encoder 200 of source device 102 and G-PCC decoder 300 of destination device 116 can be configured to apply the techniques of this disclosure related to coding residual values for attributes of points in a point cloud. Thus, source device 102 represents an example of an encoding device, while destination device 116 represents an example of a decoding device. In other examples, source device 102 and destination device 116 can include other components or arrangements. For example, source device 102 can receive data (e.g., point cloud data) from an internal or external source. Likewise, destination device 116 can interface with an external data sink rather than include a data sink in the same device.
[0035] Figure 1 The system 100 illustrated is merely one example. In general, other digital encoding and / or decoding devices can perform the techniques of this disclosure related to coding residual values for attributes of points in a point cloud. Source device 102 and destination device 116 are merely examples of such devices in which source device 102 generates encoded data for transmission to destination device 116. A "coding" device as referred to herein is a device that codes (encodes and / or decodes) data. Thus, G-PCC encoder 200 and G-PCC decoder 300 represent examples of coding devices, specifically, encoders and decoders, respectively. In some examples, source device 102 and destination device 116 can operate in a substantially symmetrical manner to support one-way or two-way transmission between source device 102 and destination device 116, e.g., to support streaming, playback, broadcast, telephony, navigation, and other applications.
[0036] In general, data source 104 represents a source of data (i.e., raw, uncoded point cloud data), and can provide a continuous series of "frames" of data to G-PCC encoder 200 that encodes the data of the frames. Data source 104 of source device 102 can include a point cloud capture device such as any of a variety of cameras or sensors, e.g., a 3D scanner or a 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, point cloud data can be generated by a computer from a scanner, camera, sensor, or other data. For example, data source 104 can generate computer graphics-based data as source data, or produce a combination of real-time data, archived data, and computer-generated data. In each case, G-PCC encoder 200 encodes the captured, previously captured, or computer-generated data. G-PCC encoder 200 can rearrange the frames from reception order (sometimes referred to as "presentation order") into an encoding order for coding. G-PCC encoder 200 can generate one or more bitstreams that include encoded data. Source device 102 can then output the encoded data via output interface 108 onto computer- readable medium 110 for reception and / or retrieval by, e.g., input interface 122 of destination device 116.
[0037] Memory 106 of source device 102 and memory 120 of destination device 116 can represent general purpose memories. In some examples, memory 106 and memory 120 can store raw data, e.g., raw data from data source 104 and raw, decoded data from G-PCC decoder 300. Additionally or alternatively, memory 106 and memory 120 can store software instructions that are executable by, e.g., G-PCC encoder 200 and G-PCC decoder 300, respectively. Although this example shows memory 106 and memory 120 separate from G-PCC encoder 200 and G-PCC decoder 300, it should be understood that G-PCC encoder 200 and G-PCC decoder 300 can also include internal memories for similar or equivalent purposes. Furthermore, memory 106 and memory 120 can store encoded data, e.g., data output from G-PCC encoder 200 and input to G-PCC decoder 300. In some examples, portions of memory 106 and memory 120 can be allocated as one or more buffers, e.g., for storing raw, decoded, and / or encoded data. For example, memory 106 and memory 120 can store data representing a point cloud.
[0038] Computer-readable medium 110 can represent any type of medium or device capable of storing encoding data. In one example, computer-readable medium 110 represents a communication medium to enable source device 102 to transmit encoded data directly to destination device 116 in real-time, e.g., via a radio frequency network or computer-based network. Output interface 108 can modulate a transmission signal including the encoded data, and input interface 122 can demodulate the received transmission signal, according to a communication standard, such as a wireless communication protocol. The communication medium can comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can form part of a packet-based network, such as a local area network, a wide-area network, or a global network such as the Internet. The communication medium can include routers, switches, base stations, or any other equipment that can be useful to facilitate communication from source device 102 to destination device 116.
[0039] In some examples, source device 102 can output encoded data from output interface 108 to storage device 112. Similarly, destination device 116 can access encoded data from storage device 112 via input interface 122. Storage device 112 can include any of a variety of distributed or locally accessed data storage media such as a hard drive, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other suitable digital storage media for storing encoded data.
[0040] In some examples, source device 102 can output encoded data to file server 114 or another intermediate storage device that can store encoded data generated by source device 102. Destination device 116 can access stored data from file server 114 via streaming or download. File server 114 can be any type of server device that is capable of storing encoded data and transmitting that encoded data to destination device 116. File server 114 can represent a web server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network attached storage (NAS) device. Destination device 116 can access encoded data from file server 114 through any standard data connection, including an Internet connection. This can include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of both that is suitable for accessing encoded data stored on file server 114. File server 114 and input interface 122 can be configured to operate according to a streaming protocol, a download transmission protocol, or a combination thereof.
[0041] Output interface 108 and input interface 122 can represent wireless transmitters / receivers, modems, wired networking components (e.g., Ethernet cards), wireless communication components operating according to any of a variety of IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 comprise wireless components, output interface 108 and input interface 122 can be configured to transmit data, such as encoded data, according to a cellular communication standard, such as 4G, 4G-LTE (Long-Term Evolution), LTE Advanced, 5G, and so on. In some examples where output interface 108 includes a wireless transmitter, output interface 108 and input interface 122 can be configured to transmit data, such as encoded data, according to other wireless standards, such as IEEE 802.11 specifications, IEEE 802.15 specifications (e.g., ZigBee TM ), Bluetooth TM standards, and so on. In some examples, source device 102 and / or destination device 116 can include respective system on a chip (SoC) devices. For example, source device 102 can include an SoC device to perform functions attributed to G-PCC encoder 200 and / or output interface 108, and destination device 116 can include an SoC device to perform functions attributed to G-PCC decoder 300 and / or input interface 122.
[0042] The techniques of this disclosure can be applied to encoding and decoding to support any of a variety of applications, such as automatic vehicle-to-vehicle communication, communication between scanners, cameras, sensors, and processing devices (such as local or remote servers), geographic mapping, or other applications.
[0043] Input interface 122 of destination device 116 receives an encoded bitstream from computer-readable medium 110 (e.g., a communication medium, storage device 112, file server 114, and so on). The encoded bitstream can include signaling information defined by G-PCC encoder 200 that is used by G-PCC decoder 300, such as syntax elements with values that describe characteristics and / or processing of coded units (e.g., slices, pictures, groups of pictures, sequences, and so on). Data consumer 118 uses the decoded data. For example, data consumer 118 can use the decoded data to determine a location of a physical object. In some examples, data consumer 118 can include a display to present a point cloud-based image.
[0044] The G-PCC encoder 200 and the G-PCC decoder 300 each can be implemented as any of a variety of suitable encoder and / or decoder circuitry, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware or any combinations thereof. When the techniques are implemented partially in software, a device can store instructions for the software in a suitable, non- transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Each of the G-PCC encoder 200 and the G-PCC decoder 300 can be included in one or more encoders or decoders, any of which can be integrated as part of a combined encoder / decoder (CODEC) in a respective device. A device including the G-PCC encoder 200 and / or the G-PCC decoder 300 can comprise one or more integrated circuits (ICs), microprocessors, and / or other types of devices.
[0045] The G-PCC encoder 200 and the G-PCC decoder 300 can operate according to a coding standard, such as the Video Point Cloud Compression (V-PCC) standard or the Geometric Point Cloud Compression (G-PCC) standard. This disclosure can generally refer to coding (e.g., encoding and decoding) of pictures to include processes of encoding or decoding data. An encoded bitstream generally includes a series of values for syntax elements that represent coding decisions (e.g., coding modes).
[0046] This disclosure can generally refer to “signaling” particular information, such as syntax elements. The term “signaling” can generally refer to the communication of values for syntax elements and / or other data used to decode encoded data. That is, the G-PCC encoder 200 can signal values for syntax elements in a bitstream. Generally, signaling refers to generating values in a bitstream. As described above, the source device 102 can communicate the bitstream to the destination device 116 in substantially real-time or non-real time, such as can occur when storing syntax elements to the storage device 112 for later retrieval by the destination device 116.
[0047] The ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) is investigating the potential need for standardization of point cloud coding technologies that significantly outperform current approaches in compression capability, and will work to create such a standard. A group called the Three-Dimensional Graphics Team (3DG) is working together on this exploratory activity to evaluate compression technology designs proposed by experts in the field.
[0048] Point cloud compression activities are divided into two different approaches. The first approach is “Video Point Cloud Compression” (V-PCC), which segments 3D objects and projects these segments in multiple 2D faces (represented as “patches” in 2D frames), which are further encoded by traditional 2D video codecs, such as High Efficiency Video Coding (HEVC) (ITU-T H.265) codec. The second approach is “Geometry-based Point Cloud Compression” (G-PCC), which directly compresses 3D geometry, i.e., the positioning of a set of points in 3D space and associated attribute values (for each point associated with the 3D geometry). G-PCC addresses both Class 1 (static point clouds) and Class 3 (dynamically acquired point clouds) point cloud compression problems. The latest draft of the G-PCC standard can be found in “G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19328,” published in Alpbach, Austria in June 2020, and the description of the codec can be found in “G-PCC Codec Description v6, ISO / IEC JTC1 / SC29 / WG11 w19091,” published in Brussels, Belgium in January 2020.
[0049] A point cloud contains a set of points in 3D space and can have attributes associated with the points. These attributes can be color information (such as R, G, B, or Y, Cb, Cr), or reflectance information, or other attributes. For convenience, various examples are described for color attributes having color components (e.g., RGB or YCbCr), but example techniques can be applied to general attributes or components of attributes. Point clouds can be captured by various cameras or sensors, such as LIDAR sensors and 3D scanners, and can also be computer generated. Point cloud data is used for various applications, including but not limited to architecture (modeling), graphics (3D models for visualization and animation), automotive industry (LIDAR sensors to help with navigation), and other applications that can utilize cell phones, tablet computers, or other computing devices.
[0050] The 3D space occupied by the point cloud data can be enclosed by a virtual bounding box. The position of points in the bounding box can be represented by a certain precision; thus, the position of one or more points can be quantized based on the precision. At a minimum level, the bounding box is partitioned into voxels as the smallest unit of space represented by a unit cube. A voxel in the bounding box can be associated with zero, one, or more than one point. The bounding box can be partitioned into multiple cubes / cube regions, which can be referred to as tiles. Each tile can be encoded as one or more slices. Partitioning the bounding box into slices and tiles can be based on the number of points in each partition, or based on other considerations (e.g., certain regions can be encoded as tiles). Slice regions can be further partitioned using similar partitioning decisions as in video codecs.
[0051] As described in more detail, the G-PCC encoder 200 and the G-PCC decoder 300 can be configured to determine that a residual value of one or more components of a point in a point cloud is equal to 0. The G-PCC encoder 200 and the G-PCC decoder 300 can be configured to code the residual value in a non-independent manner based on the determination that the residual value of the one or more components of the point is equal to 0. For example, coding the residual value in the non-independent manner can include coding a residual value (e.g., a magnitude of the residual value) of one component in a first manner based on residual values of the other two components being equal to 0. The first manner can be different from a second manner in which the residual value of the one component is coded based on the residual values of the other two components not being equal to 0.
[0052] For example, a current point can include multiple attributes, and each attribute can include one or more components each having a component value. Rather than signaling the component value of each component of an attribute, the G-PCC encoder 200 can determine a residual value (e.g., a difference) between the component value of a component of a current point and a component value of a component of a previous point (e.g., a previously encoded point). The G-PCC encoder 200 can be configured to signal the residual value and information for identifying the previous point.
[0053] The G-PCC decoder 300 can receive the residual value and the information for identifying the previous point, which is a previously decoded point from the perspective of the G-PCC decoder 300. The G-PCC decoder 300 can identify the previous point from the signaled information and add the residual value to the component value of the previous point to reconstruct the attribute of the current point.
[0054] As such as for Figure 4In some examples, the residual value of a component of an attribute can be zero, and there can be a number of sequential points (e.g., consecutive points defined by a scan order) for which the residual value of the component of its respective attribute is zero. In this case, the G-PCC encoder 200 can signal a zero run syntax element that indicates the number of consecutive points for which the residual value of the attribute is zero, instead of signaling a value of zero. The G-PCC encoder 200 can then signal the residual value of the attribute for the point following the last point of the consecutive points for which the residual value is zero. If the zero run syntax element is equal to zero, this means that the residual value of the attribute for the current point is not equal to zero.
[0055] If the residual value of all components of an attribute is equal to zero, the residual value of the attribute can be considered to be zero. If the residual value of any of the components of the attribute is not equal to zero, the residual value of the attribute can be considered to be non-zero. That is, for a multi-component attribute, if the residual value of all components is equal to zero, the residual value of the attribute can be considered to be zero and counted in the zero run syntax element. If the residual value of any component is not equal to zero, the zero run syntax element for the multi-component attribute can be equal to zero.
[0056] In some techniques, the G-PCC encoder 200 can encode the residual value of each component of an attribute if the residual value of any component is not equal to zero. The magnitude and sign information of the non-zero components are coded separately. This disclosure describes reducing the amount of signaling in some example cases where the residual value of at least one component of a multi-component attribute is not equal to zero, thereby improving bandwidth utilization.
[0057] For example, although the residual value of one component of an attribute (e.g., a multi-component attribute) is not equal to zero, it is possible that the residual value of the other components is equal to zero. In the case where the residual value of the other components is equal to zero, if the G-PCC encoder 200 determines that the value of the magnitude of the one component is equal to the magnitude of the residual value of the one component minus an offset (e.g., a positive integer value like 1), the amount of data that needs to be signaled can be reduced while the signaling of the sign information can remain the same. From the perspective of the G-PCC decoder 300, if the G-PCC decoder 300 determines that the value of all components except for the one component is equal to zero, the G-PCC decoder 300 can determine the magnitude of the residual value of the one component by adding the offset to the decoded value of the one component.
[0058] As an example, for a surface normal attribute of a current point, there can be three components: an x-component, a y-component, and a z-component. The G-PCC encoder 200 can determine a residual value for the x-component (e.g., the x-component of the attribute of the current point minus the x-component of the attribute of the previous point), determine a residual value for the y-component (e.g., the y-component of the attribute of the current point minus the y-component of the attribute of the previous point), and determine a residual value for the z-component (e.g., the z-component of the attribute of the current point minus the z-component of the attribute of the previous point). In this example, the residual value for the x-component can equal zero, the residual value for the y-component can equal zero, and the residual value for the z-component can equal five (e.g., the magnitude of the residual value is five and the sign information is positive).
[0059] The G-PCC encoder 200 can be configured to determine that the residual values for all but one component of an attribute of a point in the point cloud equal zero. For example, the residual values for the x-component and the y-component equal zero, but the residual value for the z-component does not. Based on determining that the residual values for all but one component of the attribute equal zero, the G-PCC encoder 200 can determine a value for the one component (e.g., the value of the magnitude of the z-component) that equals the magnitude of the residual value for the one component (e.g., five) minus an offset. As an example, the offset equals one, and in this example, the value for the one component (e.g., the value of the magnitude of the z-component) equals four (e.g., five minus one).
[0060] The G-PCC encoder 200 can encode the zero values for the components of the attribute other than the one component (e.g., encode the zero values for the x-component and the y-component), and signal the encoded zero values. For the one component (e.g., the z-component), the G-PCC encoder 200 can encode the value for the one component (e.g., four), and signal the encoded value in the bitstream. In one or more examples, the value for the one component can refer to the magnitude of the one component. The sign information can be separately encoded and decoded. Generally, fewer bits are needed to signal smaller values, and thus, fewer bits are needed to signal a value of four than a value of five. For example, the G-PCC encoder 200 can encode the values of 0, 0, and 4 for the magnitude information, and signal these values.
[0061] The G-PCC decoder 300 can decode values for components of an attribute of a point in a point cloud, where the values indicate residual values for the components. For example, consistent with the example described above, the G-PCC decoder 300 can decode the values of 0, 0, and 4. The G-PCC decoder 300 can determine that the residual values for all but one component of the attribute equal zero. For example, the G-PCC decoder 300 can determine that the residual value for the x-component is zero, and the residual value for the y-component is zero. However, the received value for the z-component equals four. Thus, the residual value for the z-component does not equal zero.
[0062] In this example, based on determining that the residual values of all but one component of the attribute are equal to zero, the G-PCC decoder 300 can add an offset to the decoded value of the one component of the attribute to determine the size of the residual value of the one component. For example, the offset value can be one, and the G-PCC decoder 300 can add one to the decoded value of the z component (e.g., four) to determine that the size of the residual value of the z component is five. The G-PCC decoder 300 can reconstruct the components of the attribute of the point based on the residual values of the components. For example, the G-PCC decoder 300 can add the residual value of a component to the component value of the attribute of the previous point to reconstruct the component of the attribute of the point.
[0063] In the above example, the G-PCC encoder 200 can be configured to signal the residual value of the x component, then signal the residual value of the y component, and then signal the residual value of the z component. If the residual values of the x component and the y component are zero (e.g., the first two residual values of the attribute are zero), then the residual value of the z component can need to be a non-zero value. Otherwise, the zero run syntax element can indicate that the residual values of all components are zero. Thus, when the G-PCC decoder 300 decodes the first two residual values as zero, then the G-PCC decoder 300 can determine that the residual value of the next component (e.g., the z component) needs to be a non-zero value because the zero run syntax element does not indicate that the residual values of the attribute are equal to zero. Because the residual value of the next component can need to be non-zero, the G-PCC decoder 300 can be configured to add an offset to the value of the next component decoded by the G-PCC decoder 300 (e.g., add one to the value decoded by the G-PCC decoder 300 to determine the size of the actual residual value of the component).
[0064] Thus, if an attribute has N components: component 0 to component (N-1), then if the values of component 0 to component (N-2) are equal to 0, then the value of component (N-1) signaled by the G-PCC encoder 200 and received by the G-PCC decoder 300 can be the value of component (N-1) minus an offset. For example, for an N-dimensional attribute (e.g., an attribute having N components), if for the first (N-1) components (e.g., component 0 to N-2), the residual values are all zero (e.g., value(component 0) = value(component 1) =... = value(component (N-2)) = 0), then for the Nth component (e.g., component (N-1)), abs(value(component (N-1)-1)) is coded instead of abs(value(component (N-1)).
[0065] The G-PCC encoder 200 can signal the residual values of the components in the order in which the residual values are processed, and the G-PCC decoder 300 can receive the residual values of the components in the order in which the residual values are processed. For example, for an attribute that can have a primary component and a secondary component, where the primary component is processed before the secondary component because information of the primary component can be used to encode or decode the secondary component.
[0066] In some examples, the G-PCC encoder 200 can signal the residual values of the primary component before the residual values of the secondary component, and the G-PCC decoder 300 can receive the residual values of the primary component before the residual values of the secondary component. However, there can be a case where the likelihood of the residual values of the secondary component being zero is higher than the likelihood of the residual values of the primary component being zero.
[0067] As an example, a color attribute includes a luma component and two chroma components. The luma component can be a primary component, and the two chroma components can be secondary components. The processing order of the G-PCC encoder 200 and the G-PCC decoder 300 can be to process the luma component first and then process the chroma components. However, the likelihood of the residual values of the chroma components being zero can be higher.
[0068] Suppose the residual values of the chroma components are zero, and the residual value of the luma component is non-zero. If the G-PCC encoder 200 signals the residual value of the luma component first and then signals the residual values of the chroma components, the G-PCC decoder 300 can not be able to determine that the residual values of all but one component (e.g., the two chroma components but not the luma component) are equal to zero until all the residual component values are decoded.
[0069] In one or more examples, the G-PCC encoder 200 can be configured to signal the residual values of the components of the attribute in a different coding order than the processing order, and the G-PCC decoder 300 can be configured to receive the residual values of the components of the attribute in a different coding order than the processing order. For example, the G-PCC encoder 200 can signal the residual values of the chroma components of the attribute before receiving the residual value of the luma component, and the G-PCC decoder 300 can receive the residual values of the chroma components of the attribute before receiving the residual value of the luma component. For example, in the encoding order, the G-PCC encoder 200 can encode and signal the residual values of the chroma components before encoding and signaling the residual value of the luma component. In the decoding order, the G-PCC decoder 300 can receive and decode (e.g., parse) the residual values of the chroma components before receiving and decoding the residual value of the luma component. As described above, if the residual values of the chroma components are zero, the value of the size of the luma component that the G-PCC encoder 200 signals and the value of the size of the luma component that the G-PCC decoder 300 decodes can be the size of the residual value of the luma component minus the offset (e.g., with a value of one).
[0070] The above example of signaling and decoding a value equal to the size of the residual value of one component minus an offset can be used for a case where the residual values of all but one component of the attribute of a point in the point cloud are equal to zero. However, if the G-PCC encoder 200 or the G-PCC decoder 300 determines that the residual values of at least two of the components of the attribute of a point in the point cloud are not equal to zero, the G-PCC encoder 200 can encode, and the G-PCC decoder 300 can decode, the residual values of the components of the attribute (e.g., the encoded and decoded values can be the actual residual values of the components).
[0071] Further, the above examples of attributes include surface normal attributes and color attributes. Other examples of attributes can exist, and the example techniques are not limited to the above examples. As some non-limiting examples, examples of attributes include color, frame number, humidity, temperature, weather (e.g., a combination of humidity and temperature), surface normal, or a combination of color and surface normal.
[0072] Figure 2 An overview of the G-PCC encoder 200 is provided. Figure 3 An overview of the G-PCC decoder 300 is provided. The illustrated modules are logical and do not necessarily correspond one-to-one to implementation code in a reference implementation of a G-PCC codec (i.e., the TMC13 test model software under study by ISO / IEC MPEG (JTC 1 / SC 29 / WG 11)).
[0073] In G-PCC encoder 200 and G-PCC decoder 300, point cloud positioning is first coded. Attribute coding depends on decoded geometry. In Figure 2 and Figure 3 In, the modules with gray shading are options typically used for class 1 data. The modules with diagonal cross-shading are options typically used for class 3 data. All other modules are common between class 1 and class 3.
[0074] For class 3 data, the compressed geometry is typically represented as an octree from the root all the way to the leaf layer of individual voxels. For class 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree from the root to the leaf layer of blocks larger than voxels) plus a model approximating the surface within each leaf of the pruned octree. As such, class 1 and class 3 data share the octree coding mechanism, while class 1 data can also approximate the voxels in each leaf with a surface model. The surface model used is a triangle mesh that includes 1 to 10 triangles per block, forming a triangle soup. Thus, the class 1 geometry coder is referred to as the Trisoup geometry coder, while the class 3 geometry coder is referred to as the Octree geometry coder.
[0075] At each node of the octree, the occupancy of one or more of its child nodes (up to eight nodes) is signaled (when not inferred). Multiple neighboring nodes 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 neighboring node, the occupancy of the node and / or its child nodes can be used to predict the occupancy of the current node or its child nodes. For points that are sparse in a particular node of the octree, the coder also supports a direct coding mode, in which the 3D position of the point is directly encoded. A flag can be signaled to indicate that the direct mode is signaled. At the bottom level, the number of points associated with an octree node / leaf node can also be coded.
[0076] Once the geometry is coded, the attributes corresponding to the geometry points are also coded. When there are multiple attribute points corresponding to one reconstructed / decoded geometry point, the attribute value representing the reconstructed point can be derived.
[0077] In G-PCC, there are three attribute encoding / decoding methods: Region Adaptive Hierarchical Transform (RAHT) encoding / decoding, interpolation-based hierarchical nearest neighbor prediction (prediction transform), and interpolation-based hierarchical nearest neighbor prediction with update / lifting steps (lifting transform). RAHT and lifting are typically used for Class 1 data, while prediction is typically used for Class 3 data. However, any method can be used for any data, and like the geometry codec in G-PCC, the attribute encoding / decoding method used for point cloud encoding / decoding is specified in the bitstream.
[0078] Attribute encoding and decoding can be performed at the level of detail (LOD), where a finer representation of the point cloud attributes can be obtained for each LOD. Each LOD can be specified based on a distance metric to neighboring nodes or based on sampling distance.
[0079] At the G-PCC encoder 200, the residuals of the output of the encoding / decoding method, which are obtained as attributes, are quantized. Context-adaptive arithmetic encoding / decoding can be used to encode and decode the quantized residuals.
[0080] exist Figure 2 In the example, 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 geometric reconstruction unit 216, a RAHT unit 218, a LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, and an arithmetic coding unit 226.
[0081] like Figure 2 As shown in the example, the G-PCC encoder 200 can receive a set of locations and a set of attributes. Locations can include the coordinates of points in the point cloud. Attributes can include information about the points in the point cloud, such as the color associated with a point in the point cloud.
[0082] The coordinate transformation unit 202 can transform the coordinates of a point from the initial domain to the transformation domain. The transformed coordinates can be referred to as transformed coordinates. The color transformation unit 204 can perform transformations to change the color information of an attribute to different domains. For example, the color transformation unit 204 can transform color information from the RGB color space to the YCbCr color space.
[0083] In addition, Figure 2In the example of FIG. 2, the voxelization unit 206 can voxelize the transformed coordinates. The voxelization of the transformed coordinates can include quantization and removal of some points of the point cloud. In other words, multiple points of the point cloud can be grouped into a single "voxel," which can then be treated as a single point in some respects. Further, the octree analysis unit 210 can generate an octree based on the voxelized transformed coordinates. Further, in the example of FIG. 2, the surface approximation analysis unit 212 can analyze the points to potentially determine a surface representation of a set of points. The arithmetic encoding unit 214 can entropy encode syntax elements representing information of the octree and / or the surface determined by the surface approximation analysis unit 212. The G-PCC encoder 200 can output these syntax elements in a geometry bitstream. Figure 2 In the example of FIG. 2, the surface approximation analysis unit 212 can analyze the points to potentially determine a surface representation of a set of points. The arithmetic encoding unit 214 can entropy encode syntax elements representing information of the octree and / or the surface determined by the surface approximation analysis unit 212. The G-PCC encoder 200 can output these syntax elements in a geometry bitstream.
[0084] The geometry reconstruction unit 216 can reconstruct the transformed coordinates of the points in the point cloud based on the octree, data indicating the surface determined by the surface approximation analysis unit 212, and / or other information. Because of the voxelization and the surface approximation, the number of transformed coordinates reconstructed by the geometry reconstruction unit 216 can be different from the original number of points of the point cloud. The disclosure can refer to the resulting points as reconstructed points. The attribute transmission unit 208 can transmit the attributes of the original points of the point cloud onto the reconstructed points of the point cloud.
[0085] Further, the RAHT unit 218 can RAHT encode the attributes of the reconstructed points. Further, the LOD generation unit 220 and the lifting unit 222 can perform LOD processing and lifting, respectively, on the attributes of the reconstructed points. The RAHT unit 218 and the lifting unit 222 can generate coefficients based on the attributes. The coefficient quantization unit 224 can quantize the coefficients generated by the RAHT unit 218 or the lifting unit 222. The arithmetic encoding unit 226 can arithmetic encode syntax elements representing the quantized coefficients. The G-PCC encoder 200 can output these syntax elements in an attribute bitstream.
[0086] In one or more examples, the arithmetic encoding unit 226 can be configured to perform the example techniques described in this disclosure. For example, as described above, in the case that the residual values of all but one component are equal to zero, the arithmetic encoding unit 226 can determine a value for the one component that is equal to the magnitude of the residual value of the one component of the attribute minus the offset. The arithmetic encoding unit 226 can encode the value for the one component and signal the encoded value in the bitstream. The arithmetic encoding unit 226 can also encode the zero values for the other components of the attribute other than the one component and signal the encoded zero values for the components of the attribute other than the one component.
[0087] In the example of FIG. 2, the surface approximation analysis unit 212 can analyze the points to potentially determine a surface representation of a set of points. The arithmetic encoding unit 214 can entropy encode syntax elements representing information of the octree and / or the surface determined by the surface approximation analysis unit 212. The G-PCC encoder 200 can output these syntax elements in a geometry bitstream. Figure 3In the example, the G-PCC decoder 300 may include a geometric 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 geometric reconstruction unit 312, a RAHT unit 314, an LOD generation unit 316, an inverse lifting unit 318, an inverse coordinate transformation unit 320, and an inverse color transformation unit 322.
[0088] The G-PCC decoder 300 can obtain a geometric bitstream and an attribute bitstream. The geometric arithmetic decoding unit 302 of the decoder 300 can perform arithmetic decoding on the syntax elements in the geometric bitstream (e.g., context-adaptive binary arithmetic codec (CABAC) or other types of arithmetic decoding). Similarly, the attribute arithmetic decoding unit 304 can perform arithmetic decoding on the syntax elements in the attribute bitstream.
[0089] The attribute arithmetic decoding unit 304 can be configured to perform the example techniques described herein. For example, the attribute arithmetic decoding unit 304 can decode the values of components of an attribute of points in a point cloud, the values indicating the residual values of the components. The attribute arithmetic decoding unit 304 can determine that the residual values of all components of an attribute except for one component are equal to zero, and based on the determination that the residual values of all components of an attribute except for that one component are equal to zero, the attribute arithmetic decoding unit 304 can add an offset to the decoded value of that one component of the attribute to determine the magnitude of the residual value of that one component.
[0090] A reconstruction unit similar to geometric reconstruction unit 312 can reconstruct the components of a point's attributes based on the residual values of the components. For example, the reconstruction unit can add the residual value of each component of a point's attributes to the corresponding value of the corresponding component of a previous point (e.g., a previously decoded point).
[0091] Octree synthesis unit 306 can synthesize an octree based on syntax elements parsed from the geometric bitstream. When a surface approximation is used for the geometric bitstream, surface approximation synthesis unit 310 can determine the surface model based on syntax elements parsed from the geometric bitstream and on the octree.
[0092] Furthermore, the geometric reconstruction unit 312 can perform reconstruction to determine the coordinates of points in the point cloud. The inverse coordinate transformation unit 320 can perform an inverse transformation on the reconstructed coordinates to convert the reconstructed coordinates (locations) of points in the point cloud from the transformation domain back to the initial domain.
[0093] In addition, Figure 3 In the example, the inverse quantization unit 308 can inverse quantize the attribute value. The attribute value can be based on syntax elements obtained from the attribute bitstream (e.g., including syntax elements decoded by the attribute arithmetic decoding unit 304).
[0094] Depending on how the attribute values are encoded, the RAHT unit 314 can perform RAHT encoding to determine color values of points of the point cloud based on the inverse quantized attribute values. Alternatively, the LOD generation unit 316 and the inverse lifting unit 318 can use techniques based on levels of detail to determine color values of points of the point cloud.
[0095] Further, in Figure 3 In examples, the inverse transform color unit 322 can inverse color transform the color values. The inverse color transform can be an inverse operation of the color transform performed by the color transform unit 204 of the encoder 200. For example, the color transform unit 204 can transform color information from an RGB color space to a YCbCr color space. Thus, the inverse color transform unit 322 can transform the color information from the YCbCr color space to the RGB color space.
[0096] Figure 2 And Figure 3 Various units of the encoder 200 and the decoder 300 are shown to help understand the operations performed by the encoder 200 and the decoder 300. The units can be implemented as fixed function circuitry, programmable circuitry, or a combination thereof. Fixed function circuitry refers to circuitry that provides specific functionality, and is preset with operations that are performable. Programmable circuitry refers to circuitry that can be programmed to perform various tasks, and provides flexible functionality within the operations that are performable. For instance, the programmable circuitry can execute software or firmware that cause the programmable circuitry to operate in ways defined by instructions of the software or firmware. The fixed function circuitry can execute software instructions (e.g., to receive parameters or output parameters), but the types of operations that the fixed function circuitry executes are generally unalterable. In some examples, one or more of the units can be distinct circuit blocks (fixed function or programmable), and in some examples, one or more of the units can be integrated circuitry.
[0097] As described above, there can be three different attribute coding methods (i.e., prediction, lifting, and regional adaptive hierarchical transform). For each of the attribute coding methods, there can be quantized (or unquantized for lossless coding) residual coefficients (e.g., residual values). The residual coefficients can be highly biased towards zero values, especially for high quantization parameters. To efficiently code the frequent zero values, run-length coding is employed.
[0098] Figure 4 is a flowchart showing an example of the encoder 200 encoding residual values. For example, Figure 4 An example of using a zero run syntax element is shown. For color attribute coding, zero run is defined over all three color components (RGB / YCbCr / YCoCg-R).
[0099] In Figure 4In the example of FIG. 6, the residual values of the attribute can be 73, 50, 31, 15, 0, 12, followed by N number of zeros. Figure 4 The residual value in FIG. 6 refers to the magnitude of the residual value, and each residual value can be positive or negative. The "encode value" shows the value to be encoded. Before the residual values of the attribute, the G-PCC encoder 200 can encode and the G-PCC decoder 300 can decode the zero run syntax element.
[0100] For example, when all three residual values are zero (e.g., the residual values of the three color components of a point in the point cloud are 0), the zero run is incremented. Thus, for residual values of a color attribute that are non-zero (i.e., not all components have a residual value of zero), the value of the zero run is set to 0.
[0101] For example, because the value of 73 is non-zero, the zero run syntax element before the residual value of 73 is equal to 0 (e.g., because the value is 73, the run length of the residual value of zero is 0). The zero run syntax element before the residual value of 50 is equal to 0 (e.g., because the value is 50, the run length of the residual value of zero is 0). The zero run syntax element before the residual value of 32 is equal to 0 (e.g., because the value is 32, the run length of the residual value of zero is 0). The zero run syntax element before the residual value of 15 is equal to 0 (e.g., because the value is 15, the run length of the residual value of zero is 0).
[0102] The residual value after the residual value of 15 is one residual value of 0. Thus, the zero run syntax element after the residual value of 15 is set to equal 1 to indicate the presence of a string of one residual value whose value is 0. The residual value after the residual value of 12 is N residual values of 0. Thus, the zero run syntax element after the residual value of 12 is set to equal N to indicate the presence of a string of N residual values whose value is 0.
[0103] For each component, the magnitude and sign are coded separately. A 1-bit using bypass coding is used to signal the sign (sign). As shown in FIG. 5, each non-zero residual value is decremented by one. Figure 4
[0104] The G-PCC encoder 200 can determine whether the resulting value is equal to 0 (400). For the magnitude, if the value is 0 (400 is), the flag "isZero" is set to 1 to indicate whether the magnitude is zero (402), followed by a subsequent flag "isOne" that indicates whether the residual value is equal to 1 if the magnitude is non-zero (400 no). In zero run length coding, the number of zeros before each residual value is counted as a zero run, and then the zero run is coded instead of coding a sequence of 0s.
[0105] The G-PCC encoder 200 can determine whether the value is equal to one (406). If the value is equal to one (406 - YES), the G-PCC encoder 200 can set the value of “isOne” to one (408). If the value is not equal to one (406 - NO), the G-PCC encoder 200 can set the value of “isOne” to equal zero (410). The G-PCC encoder 200 can encode the value -2 to reduce the amount of data that needs to be signaled (412).
[0106] Figure 4 Examples of the above can apply to cases where two or more components of the attribute have non-zero residual values. However, if only one component of the attribute has a non-zero residual value, the G-PCC encoder 200 can encode and signal the residual value of the one component as the value of the one component minus an offset (e.g., one). However, the G-PCC encoder 200 can also signal the residual value of the one component according to examples of the above. Figure 4
[0107] As one non-limiting example, the zero run parameter is encoded with a truncated unary code with 3 contexts, and the isOne flag is encoded with 7 contexts using the same way as encoding the isZero flag. The above example techniques using zero run, isZero, and isOne apply to all three attribute coding schemes (e.g., all three color components can be coded using the same or similar schemes).
[0108] The next step in the coding of the residual values after zero run, isZero, and isOne involves the coding of the remaining absolute values. “Alphabet partition” coding is employed, the details of which can be found in Sehoon Yea, Stephen Wegner, Shan Liu, “[GPCC] Alphabet Partition Coding of Transform Coefficients,” ISO / IEC JTC1 / SC29 / WG11 MPEG / m52720, Brussels, Belgium, Jan. 2020. The source code for the coding of the residuals is shown below. Here, value0, value1, and value2 indicate the residual values of the first, second, and third color components, respectively. For example, for YCbCr and YCoCg-R coding, the first component (e.g., value0) is luminance, and the other components (e.g., value1 and value2) are chrominance. For a red-green-blue (RGB) color space, there can be similar color components.
[0109] The encoded code is as follows:
[0110]
[0111]
[0112]
[0113] The corresponding decoding process is as follows.
[0114]
[0115]
[0116]
[0117] The corresponding syntax and semantics are as follows:
[0118]
[0119]
[0120]
[0121] coeff_abs_level_gt0_flag[c], coeff_abs_level_gt1_flag[c], coeff_abs_level_remaining[c] and coeff_sign_flag[c] together specify the c-th attribute coefficient component level CoeffLevel[coeffldx][c]. A positive coefficient level is indicated by coeff_sign_flag[c] being equal to 0. A negative coefficient level is indicated by coeff_sign_flag[c] being equal to 1. Any of coeff_abs_level_gt0_flag[c], coeff_abs_level_gt1_flag[c], coeff_abs_level_remaining[c] or coeff_sign_flag[c] not present is inferred to be 0.
[0122] The following pseudo code describes an example of determining CoeffLevel.
[0123]
[0124] In techniques of encoding and decoding residual values of color components, certain issues can exist. For example, the following process of encoding and decoding color attributes is invoked when zero run is 0 (i.e., not all components have zero residual values). In some techniques, the size and sign of three components (e.g., three color components) are independently coded. However, in the case where all residual values are zero (e.g., value0 = value1 = value2 = 0), the residual values are also coded, which can be redundant because the process is only invoked when the zero run condition (i.e., all residual values are 0) is false.
[0125] Below is source code of how G-PCC encoder 200 and G-PCC decoder 300 can encode or decode residual values of color components.
[0126]
[0127]
[0128]
[0129] The present disclosure describes example techniques of removing redundant coding in the case of “value0 = value1 = value2 = 0” (e.g., residual values of three color components equal to 0). As one example, G-PCC encoder 200 or G-PCC decoder 300 can determine that residual values of one or more color components of a point in a point cloud equal to 0, and based on determining that the residual values of the one or more color components of the point equal to 0, encode (e.g., encode or decode) the residual values in a non-independent manner. To encode in a non-independent manner can mean that the manner of encoding the residual values of at least one color component is based on the residual values of at least another color component. For example, to encode the residual values in a non-independent manner, G-PCC encoder 200 and G-PCC decoder 300 can be configured to encode (e.g., signal or decode) the size of the residual value of one color component in a first manner based on the residual values of the other two color components equaling to 0. The first manner is different from a second manner for non-independent coding in which the size of the residual value of one color component is encoded based on the residual values of the other two components not equaling to 0.
[0130] The above examples provide color components as an example attribute, but example techniques are not limited to color components. For example, G-PCC encoder 200 or G-PCC decoder 300 can determine that residual values of one or more attributes of a point in a point cloud (e.g., where color components are an example attribute) are equal to zero, and based on determining that the residual values of the one or more attributes of the point are equal to zero, code (e.g., encode or decode, respectively) the residual values in a non-independent manner. Coding in a non-independent manner can mean that the way the residual values of at least one attribute are coded is based on the residual values of at least another attribute. For example, to code the residual values in a non-independent manner, G-PCC encoder 200 and G-PCC decoder 300 can be configured to code the residual values of one attribute in a first manner based on the residual values of the other two color components being equal to zero. For non-independent coding, the first manner is different from a second manner in which the residual values of one attribute are coded based on the residual values of the other two components not being equal to zero.
[0131] As described above, color components are an example attribute of a point. Other examples of attributes include frame number, humidity, temperature, surface normal, etc. In some examples, attributes of a point can be grouped. For example, (color [3 components], frame number [1 component]) can be grouped together for a total of 4 components. Humidity and temperature can be grouped together for a total of 2 components (e.g., for a specific description of weather, etc.). Color components [3 components] and surface normal [3 components] for a total of 6 components (e.g., for light field representation) can be additional examples of attributes.
[0132] For example, one example technique is to signal abs(value2) - 1 instead of abs(value2) for a size portion, because abs(value2) should be greater than 0. In other words, from the perspective of G-PCC encoder 200, based on determining that residual values of all but one component of an attribute are equal to zero, G-PCC encoder 200 can determine a value of the one component that is equal to a magnitude of the residual value of one component of the attribute minus an offset. G-PCC encoder 200 can encode the value of the one component and signal the encoded value in a bitstream. From the perspective of G-PCC decoder 300, G-PCC decoder 300 can decode a value of a component of an attribute of a point in a point cloud that indicates a residual value of the component. G-PCC decoder 300 can determine that residual values of all but one component of the attribute are equal to zero. Based on determining that residual values of all but one component of the attribute are equal to zero, G-PCC decoder 300 can add the offset to the decoded value of the one component of the attribute to determine a magnitude of the residual value of the one component.
[0133] The corresponding source code for the encoding and decoding process is as follows. Moreover, while described for value2, the example techniques can be extended to value0 or value1. That is, value2 can be the residual value for any one of the color components of the point. Below, <add> ....< / add> The portions within the are shown to supplement the source code.
[0134]
[0135]
[0136]
[0137] In the example source code above, the G-PCC encoder 200 and the G-PCC decoder 300 can determine that the residual values for two color components of the point are equal to zero (e.g., if (b0 && b2) is true, where b0 is true if value0 for the first chroma component is zero, and b2 is true if value1 for the second chroma component is zero). In this example, to code the residual values in a non-independent manner, based on the determination that the residual values for one or more color components of the point are equal to zero, the G-PCC encoder 200 and the G-PCC decoder 300 can code the residual value for the third color component based on an offset (e.g., the offset value is 1). For example, to code the residual value for the third color component based on the offset, the G-PCC encoder 200 and the G-PCC decoder 300 can code the residual value for the third color component by subtracting the offset when encoding or adding the offset when decoding.
[0138] Generally, for an attribute of N dimensions, if for the first (N-1) components, the residual values are all zero (i.e., value(0) = value(1) =... = value(N-2) = 0), for the Nth component, for the magnitude part, abs(value(N-1) - 1) is coded instead of abs(value(N-1)).
[0139] In some cases, when two residual values have a value of zero (e.g., the residual values for two color components are zero), a bit savings can be encountered, which can result in the residual value for the third color component being inferred to be non-zero (e.g., the value cannot be zero) when coding the third residual value (e.g., the residual value for the third color component). Since value0 indicates a luma residual (e.g., the residual value for a luma color component), and value1 / value2 indicate a chroma residual (e.g., the residual value for a chroma color component), the probability of value0 = value1 = value2 = 0 (chroma residuals are zero) is higher than value0 = value1 = 0.
[0140] Thus, in some examples, coding value1 and value2 before value0 (i.e., changing the coding order) can save more bits. The example way of handling the redundancy described above is to code value1 and value2 before value0, and when value1 = value2 = 0, for the size part, code abs(value0) - 1 instead of abs(value0).
[0141] The corresponding source code for the encoding and decoding process is as follows. In the source code, value0 refers to the luma component, and value1 and value2 refer to the chroma components. Below, <add> ....< / add> The parts inside the
[0142]
[0143]
[0144]
[0145] In the example source code described above, G-PCC encoder 200 and G-PCC decoder 300 can determine that the residual values of the chroma color components of a point are equal to 0 (e.g., if (b0 && b2) is true, where b0 is true if value1 of the first chroma component is zero, and b2 is true if value2 of the second chroma component is zero). In this example, to code the residual values in a non-independent way, based on the determination that the residual values of one or more color components of a point are equal to 0, G-PCC encoder 200 and G-PCC decoder 300 can code the residual value of the luma color component of the point based on an offset (e.g., add an offset of 1 when encoding, and subtract an offset of 1 when decoding).
[0146] In this example, to code the residual values, G-PCC encoder 200 and G-PCC decoder 300 can code the chroma color components before coding the luma color component of the residual values. In some examples, G-PCC encoder 200 and G-PCC decoder 300 can code the chroma color components before coding the luma color component of the residual values even if the residual values of both chroma color components are non-zero.
[0147] Generally, for an attribute of N dimensions, if for the last (N-1) components, the residuals are all zero (i.e., value(1) = value(2) =... = value(N-1) = 0), for the 0th component, for the size part, abs(value(0) - 1) is coded instead of abs(value(0)).
[0148] The example above provides an example of a color component as an attribute. Generally, an attribute of a point can have one or more components, and the example techniques can be extended to examples of one or more components of an attribute. For example, an attribute of a point can include one or more components. As an example, an attribute can be a normal vector to a surface, a color component, a coordinate (x, y, z) including time, or a combination. The combination can be other attributes, such as a normal vector to a surface. Other examples of combinations can be three color components and a frame number for a total of four components, humidity and temperature (e.g., for a particular description of weather, etc.) for a total of two components, or three color components and three components defining a surface normal (e.g., for a light field representation) for a total of six components.
[0149] Thus, in one or more examples, G-PCC encoder 200 and G-PCC decoder 300 can determine that a residual value of one or more components of an attribute of a point cloud is equal to 0. In one or more examples, an attribute can include only one component, in which case the attribute and the component can be the same (e.g., a frame number). In one or more examples, an attribute can include multiple components. For example, for a color attribute, there can be three color components (e.g., RGB or YCbCr), for a surface normal attribute, there can be three components (e.g., x, y, z), for a weather description attribute, there can be two or more components (e.g., humidity and temperature, etc.), and for a light field representation attribute, there can be six components (e.g., three color components and three components of a surface normal). The above are some examples of attributes and color components, and these techniques should not be considered limited to the examples above, and other types of attributes and components can be utilized. In one or more examples, G-PCC encoder 200 and G-PCC decoder 300 can code (e.g., encode or decode) a residual value in a non-independent manner based on determining that the residual value of one or more components of an attribute of a point is equal to 0.
[0150] The syntax and semantics are changed as follows. Below, <add> ....< / add> The portion within the inner shows the supplement to the source code.
[0151]
[0152]
[0153] coeff_abs_level_gt0_flag[c], coeff_abs_level_gt1_flag[c], coeff_abs_level_remaining[c], and coeff_sign_flag[c] collectively specify the c-th attribute coefficient component level CoeffLevel[coeffldx][c]. A positive coefficient level is indicated by coeff_sign_flag[c] being equal to 0. A negative coefficient level is indicated by coeff_sign_flag[c] being equal to 1. Any of coeff_abs_level_gt0_flag[c], coeff_abs_level_gt1_flag[c], coeff_abs_level_remaining[c], or coeff_sign_flag[c] that is not present is inferred to be 0.
[0154] The following pseudo code can be part of the operations conducted in accordance with one or more examples described in this disclosure.
[0155]
[0156] Figure 5 is a flowchart illustrating an example method of encoding a point cloud. For ease of illustration, the example is described with respect to G-PCC encoder 200. Figure 5 The memory 106 and / or the memory of the G-PCC encoder 200 can be configured to store a point cloud, for example. Further, for ease of illustration, the example is described with respect to color attributes, but the example can also apply to other attributes. Examples of attributes include color, frame number, humidity, temperature, surface normal, a combination of humidity and temperature, or a combination of color and surface normal.
[0157] The processing circuitry of the G-PCC encoder 200 can be configured to determine that residual values of all but one component of attributes of points in the point cloud are equal to zero (500). For example, the G-PCC encoder 200 can determine that residual values of two chroma components are equal to zero, but a residual value of a luma component is not equal to zero. In this example, the luma component is the one component, and all but the one component are the two chroma components.
[0158] Based on determining that the residual values of all but one component of the attributes are equal to zero, the processing circuitry of the G-PCC encoder 200 can determine a value of the one component that is equal to a magnitude of the residual value of the one component of the attributes minus an offset (502). One example of the offset is an offset equal to 1, although other integer or non-integer values are possible.
[0159] As an example, the zero-run syntax element can be false, which indicates that the residual value of at least one component of the attribute should not be equal to zero. Thus, if the residual values of all components before one component are equal to zero, the residual value of the one component (e.g., the luma component) should not be equal to zero. In this case, the processing circuit of the G-PCC encoder 200 can determine the value of the one component (e.g., the luma component), which is equal to the residual value of the one component (e.g., the luma component) minus an offset (e.g., 1), instead of signaling the actual residual value of the one component.
[0160] The processing circuit of the G-PCC encoder 200 can encode (504) the value of the one component. The processing circuit of the G-PCC encoder 200 can signal (506) the encoded value in the bitstream.
[0161] The processing circuit of the G-PCC encoder 200 can also encode zero values of the components of the attribute other than the one component, and signal the encoded zero values of the components of the attribute other than the one component. For example, the processing circuit of the G-PCC encoder 200 can encode zero values of the two chroma components, and signal the encoded zero values of the two chroma components.
[0162] The processing circuit of the G-PCC encoder 200 can encode the one component with a non-zero residual value last after encoding the components with residual values of zero. For example, to encode zero values of the components of the attribute other than the one component, the processing circuit of the G-PCC encoder 200 can be configured to encode the zero values of the components of the attribute other than the one component before encoding the value of the one component. As an example, the processing circuit of the G-PCC encoder 200 can encode zero residual values of the two chroma components before encoding the value of the luma component (e.g., before encoding the value of the residual value of the luma component minus an offset).
[0163] In some examples, there can be a processing order of components. For example, the processing order of color attributes can be to process the luma component before processing the chroma components. However, as described above, in some examples, the processing circuit of the G-PCC encoder 200 can encode the residual values of the chroma components before encoding the value of the luma component (e.g., the value is equal to the residual value of the luma component minus an offset).
[0164] Accordingly, in the processing order, one component (e.g., the luma component) is processed before other components (e.g., the chroma components). However, to encode the zero values of the components of the attribute other than the one component before encoding the values of the one component, the processing circuit of the G-PCC encoder 200 can be configured to encode in an encoding order that is different from the processing order, in which the residual values of the components other than the one component are encoded before the values of the one component are encoded. That is, the G-PCC encoder 200 can encode in an encoding order in which the residual values of the chroma components are encoded before the values of the luma component are encoded. For example, in the encoding order, one component is encoded after the components other than the one component are encoded.
[0165] The example techniques described above can apply to the example in which the residual values of all components other than the one component are equal to zero. In the case in which the residual values of two or more components are equal to or not equal to zero, the encoding techniques can be different. For example, Figure 5 The point in the example of FIG. 6A can be a first point. The processing circuit of the G-PCC encoder 200 can determine that the residual values of at least two components of the attribute of a second point in the point cloud are not equal to zero. In this example, the processing circuit of the G-PCC encoder 200 can encode the residual values of the components of the attribute of the second point.
[0166] Figure 6 FIG. 6B is a flowchart illustrating an example method of decoding a point cloud. For ease of illustration, the example is described with respect to the G-PCC decoder 300. Figure 6 The memory 120 and / or the memory of the G-PCC decoder 300 can be configured to store the point cloud. Further, as with the example of FIG. 6A, the example is described with respect to a color attribute, but the example can also apply to other attributes. Examples of attributes include color, frame number, humidity, temperature, surface normal, a combination of humidity and temperature, or a combination of color and surface normal. Figure 5
[0167] The processing circuit of the G-PCC decoder 300 can be configured to decode the component values of the attribute of a point in the point cloud, the values indicating residual values of the components (600). For example, the G-PCC decoder 300 can decode the values of the chroma components and the luma component of a color attribute.
[0168] The processing circuitry of the G-PCC decoder 300 can be configured to determine that the residual values of all but one component of the attribute are equal to zero (602). For example, the G-PCC decoder 300 can determine that the residual values of both chroma components are equal to zero. Because the zero run syntax element can indicate that the residual values of the color attribute are non-zero, the G-PCC decoder 300 can determine that the residual value of the luma component is not equal to zero. Further, the G-PCC decoder 300 can decode the value of the luma component that indicates the size of the residual value of the luma component that is non-zero. However, it is possible that the decoded value of the luma component is zero, such as the actual residual value (e.g., the actual size of the residual value) of the luma component is equal to one and the offset added to the decoded value is equal to one. In the case that the decoded value of the luma component is equal to zero, the G-PCC decoder 300 can determine that the actual residual value of the luma component cannot be zero because the zero run syntax element is false (e.g., does not indicate that the residual values of the color attribute are equal to zero).
[0169] The processing circuitry of the G-PCC decoder 300 can decode the zero values of the components other than the one component. For example, for both chroma components, the processing circuitry of the G-PCC decoder 300 can decode the zero values.
[0170] Based on determining that the residual values of all but one component of the attribute are equal to zero, the processing circuitry of the G-PCC decoder 300 can add an offset to the decoded value of the one component of the attribute to determine the size of the residual value of the one component (604). One example of the offset is an offset equal to one.
[0171] As one example, because the decoded values of all but one component are equal to zero, the G-PCC decoder 300 can determine that the decoded value of the one component is the actual residual value of the one component plus the offset. Thus, to determine the residual value of one component (e.g., the luma component), the processing circuitry of the G-PCC decoder 300 can add the offset to the decoded value of the one component.
[0172] The processing circuitry of the G-PCC decoder 300 can reconstruct the component of the attribute of the point based on the residual value of the component (606). For example, the processing circuitry of the G-PCC decoder 300 can add the residual value of the component to the corresponding component value of the component of the previous point (e.g., the previously decoded point) to reconstruct the component of the attribute of the point.
[0173] The processing circuitry of the G-PCC decoder 300 can decode one component of the attribute last, after decoding components of the attribute for which the residual values are zero. For example, to decode zero values for components of the attribute other than one component, the processing circuitry of the G-PCC decoder 300 can be configured to decode zero values for components of the attribute other than the one component before decoding values for the one component. As an example, the processing circuitry of the G-PCC decoder 300 can decode zero residual values for two chroma components before decoding values for the luma component (e.g., before decoding values for the luma component that equal the residual values for the luma component minus the offset).
[0174] As described above, components can have a processing order. For example, the processing order for color attributes can process luma components before processing chroma components. However, as described above, in some examples, the processing circuitry of the G-PCC decoder 300 can decode residual values for chroma components before decoding values for a luma component (e.g., values that equal residual values for the luma component minus an offset).
[0175] Accordingly, in the processing order, one component (e.g., a luma component) is processed before other components (e.g., chroma components) other than the one component are processed. However, to decode zero values for components of the attribute other than one component before decoding values for the one component, the processing circuitry of the G-PCC decoder 300 can be configured to decode in a decoding order that differs from the processing order, in which residual values for components other than the one component are decoded before decoding values for the one component. That is, the G-PCC decoder 300 can decode in a decoding order in which residual values for chroma components are decoded before decoding values for a luma component. For example, in the decoding order, one component is decoded after components other than the one component are decoded.
[0176] The example techniques described above can apply to examples in which residual values for all components other than one component equal zero. In cases in which residual values for two or more components equal or do not equal zero, the decoding techniques can differ. For example, Figure 6 The point in the example of FIG. 6A can be a first point. The processing circuitry of the G-PCC decoder 300 can determine that residual values for at least two components of the attribute of a second point in the point cloud do not equal zero. In this example, the processing circuitry of the G-PCC decoder 300 can decode residual values for the components of the attribute of the second point.
[0177] Figure 7 FIG. 7 is a conceptual diagram illustrating an example ranging system 700 that can be used with one or more techniques of this disclosure. In the example of FIG. 7, the ranging system 700 includes a light source 702, a lens 704, a mirror 706, a beam splitter 708, a detector 710, and a processor 712. Figure 7In the example of FIG. 7, ranging system 700 includes illuminator 702 and sensor 704. Illuminator 702 can emit light 706. In some examples, illuminator 702 can emit light 706 as one or more laser beams. Light 706 can be one or more wavelengths, such as infrared wavelengths or visible wavelengths. In other examples, light 706 is not coherent laser light. When light 706 encounters an object, such as object 708, light 706 forms return light 710. Return light 710 can include backscattered light and / or reflected light. Return light 710 can pass through lens 711, which directs return light 710 onto sensor 704 to form image 712 of object 708. Sensor 704 generates signal 714 based on image 712. Image 712 can include a set of points (e.g., as represented by Figure 7
[0178] In some examples, illuminator 702 and sensor 704 can be mounted on a rotating structure so that illuminator 702 and sensor 704 capture a 360-degree view of the environment. In other examples, ranging system 700 can include one or more optical components (e.g., mirrors, collimators, diffraction gratings, etc.) that enable illuminator 702 and sensor 704 to detect distances to objects within a particular range (e.g., up to 360 degrees). Although Figure 7 Although the example of FIG. 7 shows only a single illuminator 702 and sensor 704, ranging system 700 can include multiple sets of illuminators and sensors.
[0179] In some examples, illuminator 702 generates a structured light pattern. In such examples, ranging system 700 can include multiple sensors 704 that form respective images of the structured light pattern thereon. Ranging system 700 can use differences between the images of the structured light pattern to determine distances to object 708 from which the structured light pattern backscatters. Structured light-based ranging systems can have a high level of accuracy (e.g., accuracy in the sub-millimeter range) when object 708 is relatively close to sensor 704 (e.g., 0.2 meters to 2 meters). Such a high level of accuracy can be useful in facial recognition applications, such as unlocking mobile devices (e.g., mobile phones, tablet computers, etc.) and security applications.
[0180] In some examples, the ranging system 700 is a time-of-flight (ToF) based system. In some examples of the ToF-based ranging system 700, an illuminator 702 generates light pulses. In other words, the illuminator 702 can modulate the amplitude of the emitted light 706. In this example, the sensor 704 detects the return light 710 from the pulse of light 706 generated by the illuminator 702. The ranging system 700 can then determine the distance to the object 708 from which the light 706 is backscattered, based on the delay between the emission and detection of light 706 and the known speed of light in air. In some examples, instead of modulating the amplitude (or other aspects) of the emitted light 704, the illuminator 702 can modulate the phase of the emitted light 704. In this example, sensor 704 can detect the phase of the return light 710 from object 708, and use the speed of light and the time difference between the time when illuminator 702 generates light 706 at a specific phase and the time when sensor 704 detects the return light 710 at a specific phase to determine the distance to a point on object 708.
[0181] In other examples, point clouds can be generated without using illuminator 702. For instance, in some examples, sensor 704 of ranging system 700 may include two or more optical cameras. In this example, ranging system 700 can use the optical cameras to capture a stereo image of the environment including object 708. Ranging system 700 may include point cloud generator 716 capable of calculating differences between locations in the stereo image. Ranging system 700 can then use these differences to determine distances to locations shown in the stereo image. Based on these distances, point cloud generator 716 can generate a point cloud.
[0182] Sensor 704 can also detect other properties of object 708, such as color and reflectivity information. Figure 7 In the example, point cloud generator 716 can generate a point cloud based on signal 714 generated by sensor 704. Ranging system 700 and / or point cloud generator 716 can form data source 104 ( Figure 1 Therefore, the point cloud generated by the ranging system 700 can be encoded and / or decoded according to any technique disclosed herein.
[0183] Figure 8 This is a conceptual diagram of a vehicle-based scenario illustrating examples of where one or more technologies of this disclosure may be used. Figure 8 In the example, vehicle 800 includes a ranging system 802. The ranging system 802 can be used for... Figure 8 This will be achieved through discussion. Although Figure 8 An example is not shown, but vehicle 800 may also include data sources (such as data source 104). Figure 1)) and G-PCC encoders (such as G-PCC encoder 200 ( Figure 1 )).exist Figure 8 In the example, ranging system 802 emits a laser beam 804, which is reflected from a pedestrian 806 or other object on the road. The data source of vehicle 800 can generate a point cloud based on the signal generated by ranging system 802. G-PCC encoder of vehicle 800 can encode the point cloud to generate a bitstream 808, such as a geometric bitstream (…). Figure 2 ) and attribute bitstream ( Figure 2 Bitstream 808 can contain far fewer bits than the uncoded point cloud obtained by the G-PCC encoder.
[0184] The output interface of vehicle 800 (e.g., output interface 108) Figure 1 The bitstream 808 can be sent to one or more other devices. The bitstream 808 can contain significantly fewer bits than the uncoded point cloud obtained by the G-PCC encoder. Therefore, the vehicle 800 can send the bitstream 808 to other devices much faster than uncoded point cloud data. Furthermore, the bitstream 808 may require less data storage capacity.
[0185] exist Figure 8 In the example, vehicle 800 can send bitstream 808 to another vehicle 810. Vehicle 810 may include a G-PCC decoder, such as G-PCC decoder 300. Figure 1 The G-PCC decoder of vehicle 810 can decode bitstream 808 to reconstruct the point cloud. Vehicle 810 can use the reconstructed point cloud for various purposes. For example, vehicle 810 can determine, based on the reconstructed point cloud, that pedestrian 806 is ahead of vehicle 800 on the road, and therefore (e.g., even before the driver of vehicle 810 becomes aware that pedestrian 806 is on the road) begin to decelerate. Thus, in some examples, vehicle 810 can perform autonomous navigation operations based on the reconstructed point cloud.
[0186] Alternatively or additionally, vehicle 800 may send bitstream 808 to server system 812. Server system 812 may use bitstream 808 for various purposes. For example, server system 812 may store bitstream 808 for subsequent reconstruction of the point cloud. In this example, server system 812 may use the point cloud, along with other data (e.g., vehicle telemetry data generated by vehicle 800), to train an autonomous driving system. In other examples, server system 812 may store bitstream 808 for subsequent reconstruction for forensic collision investigations (e.g., if vehicle 800 collides with pedestrian 806).
[0187] Figure 9is a conceptual diagram illustrating an example extended reality system that can use one or more techniques of this disclosure. Extended reality (XR) is a term used to encompass a range of technologies, including augmented reality (AR), mixed reality (MR), and virtual reality (VR). In Figure 9 In an example, a user 900 is located at a first location 902. The user 900 wears an XR headset 904. As an alternative to the XR headset 904, the user 900 can 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 ranging system, that detects the positions of points on an object 906 located at the location 902. A data source of the XR headset 904 can use signals generated by the depth detection sensor to generate a point cloud representation of the object 906 located at the location 902. The XR headset 904 can include a G-PCC encoder configured to encode the point cloud to generate a bitstream 908 (e.g., a G-PCC encoder 200 of Figure 1 ).
[0188] The XR headset 904 can transmit the bitstream 908 to an XR headset 910 worn by a user 912 located at a second location 914 (e.g., via a network such as the Internet). The XR headset 910 can decode the bitstream 908 to reconstruct the point cloud. The XR headset 910 can use the point cloud to generate an XR visualization (e.g., an AR, MR, VR visualization) that represents the object 906 located at the location 902. Thus, in some examples, such as when the XR headset 910 generates a VR visualization, the user 912 can have a 3D immersive experience of the location 902. In some examples, the XR headset 910 can determine a position of a virtual object based on the reconstructed point cloud. For example, the XR headset 910 can determine, based on the reconstructed point cloud, that the environment (e.g., the location 902) includes a plane, and then determine that a virtual object (e.g., a cartoon character) is to be positioned on the plane. The XR headset 910 can generate an XR visualization with the virtual object in the determined position. For example, the XR headset 910 can display the cartoon character sitting on the plane.
[0189] Figure 10 is a conceptual diagram illustrating an example mobile device system that can use one or more techniques of this disclosure. In Figure 10 In an example, a mobile device 1000 (such as a mobile phone or a tablet computer) includes a ranging system, such as a LIDAR system, that detects the positions of points on an object 1002 in an environment of the mobile device 1000. A data source of the mobile device 1000 can use signals generated by the depth detection sensor to generate a point cloud representation of the object 1002. The mobile device 1000 can include a G-PCC encoder configured to encode the point cloud to generate a bitstream 1004 (e.g., a G-PCC encoder 200 of Figure 1 ). In Figure 10In the example of FIG. 10, mobile device 1000 can transmit the bitstream to a remote device 1006, such as a server system or other mobile device. Remote device 1006 can decode the bitstream 1004 to reconstruct the point cloud. Remote device 1006 can use the point cloud for various purposes. For example, remote device 1006 can use the point cloud to generate an environmental map of mobile device 1000. For example, remote device 1006 can generate a map of the interior of a building based on the reconstructed point cloud. In another example, remote device 1006 can generate an image (e.g., computer graphics) based on the point cloud. For example, remote device 1006 can use the points of the point cloud as vertices of polygons and use the color attributes of the points as a basis for shading the polygons. In some examples, remote device 1006 can use the reconstructed point cloud for facial recognition or other security applications.
[0190] Examples of aspects of the present disclosure can be used individually or in any combination. The following are some example clauses that can be utilized individually or in combination.
[0191] Clause 1. A method of coding a point cloud, comprising: determining that residual values of one or more color components of a point in the point cloud are equal to zero; and based on the determination that the residual values of the one or more color components of the point are equal to zero, coding the residual values in a non-independent manner.
[0192] Clause 2. The method of clause 1, wherein coding the residual values in the non- independent manner comprises coding a residual value of one color component based on residual values of the other two color components being equal to zero in a first manner, wherein the first manner is different from a second manner in which the residual value of one color component is coded based on the residual values of the other two components not being equal to zero.
[0193] Clause 3. The method of any of clauses 1 and 2, wherein determining that the residual values of the one or more color components of the point are equal to zero comprises determining that residual values of two color components of the point are equal to zero, and wherein coding the residual values in the non-independent manner based on the determination that the residual values of the one or more color components of the point are equal to zero comprises coding a residual value of a third color component based on an offset.
[0194] Clause 4. The method of clause 3, wherein coding the residual value of the third color component based on the offset comprises coding the residual value of the third color component by subtracting the offset from the residual value of the third color component at encoding or adding the offset to the residual value of the third color component at decoding.
[0195] Clause 5. The method of any of clauses 1-4, wherein determining that the residual values of the one or more color components of the point are equal to 0 comprises determining that the residual values of the chroma color components of the point are equal to 0, and wherein coding the residual values in a non-independent manner based on determining that the residual values of the one or more color components of the point are equal to 0 comprises coding the residual values of the luma color component of the point based on the offset.
[0196] Clause 6. The method of any of clauses 1-5, further comprising generating the point cloud.
[0197] Clause 7. The method of any of clauses 1-6, wherein coding the residual values comprises coding the chroma color components before coding the luma color component of the residual values.
[0198] Clause 8. The method of any of clauses 1-7, wherein the coding comprises decoding the residual values, the method further comprising reconstructing the one or more color components of the point based on the residual values.
[0199] Clause 9. The method of any of clauses 1-7, wherein the coding comprises encoding the residual values, the method further comprising signaling information indicative of the encoded residual values.
[0200] Clause 10. A device for coding a point cloud, comprising a memory configured to store data representative of the point cloud, and processing circuitry coupled to the memory and configured to perform the method of any of clauses 1-9.
[0201] Clause 11. The device of clause 10, wherein the device comprises a decoder.
[0202] Clause 12. The device of clause 10, wherein the device comprises an encoder.
[0203] Clause 13. The device of any of clauses 10-12, further comprising a device for generating the point cloud.
[0204] Clause 14. The device of any of clauses 10-13, further comprising a display for presenting an image based on the point cloud.
[0205] Clause 15. A computer-readable storage medium having stored thereon instructions which, when executed, cause one or more processors to perform the method of any of clauses 1-9.
[0206] Clause 16. A device for coding a point cloud, comprising means for performing the method of any of clauses 1-9.
[0207] Clause 17. A method for encoding and decoding a point cloud, comprising: determining that the residual value of one or more components of an attribute of a point in the point cloud is equal to 0; and encoding and decoding the residual value in a non-independent manner based on the determination that the residual value of one or more components of an attribute of a point is equal to 0.
[0208] Clause 18. The method according to Clause 17, wherein encoding and decoding the residual value in a non-independent manner comprises: encoding and decoding the residual value of one component in a first manner based on the residual values of the other two components being equal to 0, wherein the first manner differs from the second manner in which the residual value of one component is encoded and decoded based on the residual values of the other two components not being equal to 0.
[0209] Clause 19. The method according to any one of Clauses 17 and 18, wherein determining that the residual value of one or more components of a point is equal to 0 comprises: determining that the residual value of two components of a point is equal to 0, and wherein encoding or decoding the residual value in a non-independent manner based on the residual value of one or more components of a point being equal to 0 comprises: encoding or decoding the residual value of a third component based on an offset.
[0210] Clause 20. The method according to Clause 19, wherein encoding and decoding the residual value of the third component based on the offset comprises: encoding and decoding the residual value of the third component by subtracting the offset from the residual value of the third component during encoding or by adding the offset to the residual value of the third component during decoding.
[0211] Clause 21. The method according to any one of Clauses 17 to 20, wherein determining that the residual value of one or more components of a point is equal to 0 comprises: determining that the residual value of the chromaticity component of a point is equal to 0, and wherein encoding or decoding the residual value in a non-independent manner based on the residual value of one or more components of a point being equal to 0 comprises: encoding or decoding the residual value of the luminance component of a point based on an offset.
[0212] Clause 22 The method pursuant to any one of Clauses 17 to 21 further includes generating a point cloud.
[0213] Clause 23. The method according to any one of Clauses 17 to 22, wherein encoding and decoding the residual value comprises: encoding and decoding the chromaticity component before encoding and decoding the luminance component of the residual value.
[0214] Clause 24. The method according to any one of Clauses 17 to 23, wherein encoding and decoding includes decoding residual values, and the method further includes: reconstructing one or more components of a point based on the residual values.
[0215] Clause 25. The method according to any one of Clauses 17 to 23, wherein encoding and decoding comprises: encoding a residual value, the method further comprising: signaling information indicating the encoded residual value.
[0216] Clause 26. A device for coding a point cloud, comprising: a memory configured to store data representing a point cloud; and processing circuitry coupled to the memory and configured to perform the method of any of clauses 17-25.
[0217] Clause 27. The device of clause 26, wherein the device comprises a decoder.
[0218] Clause 28. The device of clause 26, wherein the device comprises an encoder.
[0219] Clause 29. The device of any of clauses 26-28, further comprising a device for generating a point cloud.
[0220] Clause 30. The device of any of clauses 26-28, further comprising a display for presenting an image based on the point cloud.
[0221] Clause 31. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to perform the method of any of clauses 17-25.
[0222] Clause 32. A device for coding a point cloud, comprising: means for performing the method of any of clauses 17-25.
[0223] Clause 33. A method of coding a point cloud, comprising: determining that residual values of one or more components of a property of a point in the point cloud are equal to zero; and based on the determination that the residual values of the one or more components of the property of the point are equal to zero, coding the residual values in a non-independent manner.
[0224] Clause 34. The method of clause 33, wherein coding the residual values in the non- independent manner comprises coding a residual value of one component based on residual values of other two components being equal to zero in a first manner, wherein the first manner is different from a second manner in which the residual value of one component is coded based on the residual values of the other two components not being equal to zero.
[0225] Clause 35. The method of clause 33, wherein determining that the residual values of the one or more components of the point are equal to zero comprises determining that residual values of two components of the point are equal to zero, and wherein coding the residual values in the non-independent manner based on the determination that the residual values of the one or more components of the point are equal to zero comprises coding a residual value of a third component based on an offset.
[0226] Clause 36. The method of clause 35, wherein coding the residual value of the third component based on the offset comprises coding the residual value of the third component by subtracting the offset from the residual value of the third component at encoding or adding the offset to the residual value of the third component at decoding.
[0227] Clause 37. The method of clause 33, wherein determining that the residual value of one or more components of the point is equal to 0 comprises determining that the residual value of a chroma component of the point is equal to 0, and wherein coding the residual value in a non-independent manner based on determining that the residual value of one or more components of the point is equal to 0 comprises coding the residual value of a luma component of the point based on an offset.
[0228] Clause 38. The method of clause 33, further comprising generating the point cloud.
[0229] Clause 39. The method of clause 33, wherein coding the residual value comprises coding the chroma components before coding the luma component of the residual value.
[0230] Clause 40. The method of clause 33, wherein coding comprises decoding the residual value, the method further comprising reconstructing one or more components of the point based on the residual value.
[0231] Clause 41. The method of clause 33, wherein coding comprises encoding the residual value, the method further comprising signaling information indicative of the encoded residual value.
[0232] Clause 42. A device for coding a point cloud, comprising a memory configured to store data representing the point cloud, and processing circuitry coupled to the memory and configured to perform the method of any of clauses 33 to 41.
[0233] Clause 43. The device of clause 42, wherein the device comprises a decoder.
[0234] Clause 44. The device of clause 42, wherein the device comprises an encoder.
[0235] Clause 45. The device of clause 42, further comprising a device for generating the point cloud.
[0236] Clause 46. The device of clause 42, further comprising a display for presenting an image based on the point cloud.
[0237] Clause 1A: A method of encoding a point cloud, comprising: determining that residual values of all but one component of an attribute of a point in the point cloud are equal to zero; based on the determination that the residual values of all but one component of the attribute are equal to zero, determining that a value of the one component is equal to a magnitude of a residual value of the one component of the attribute minus an offset; encoding the value of the one component; and signaling the encoded value in a bitstream.
[0238] Clause 2A: The method of clause 1A, further comprising: encoding zero values of components of the attribute other than the one component; and signaling the encoded zero values of the components of the attribute other than the one component.
[0239] Clause 3A: The method of clause 2A, wherein encoding the zero values of the components of the attribute other than the one component comprises encoding the zero values of the components of the attribute other than the one component prior to encoding the value of the one component.
[0240] Clause 4A: The method of clause 3A, wherein the one component is processed prior to the components other than the one component in a processing order, and wherein encoding the zero values of the components of the attribute other than the one component prior to encoding the value of the one component comprises encoding the zero values of the components other than the one component in an encoding order different from the processing order, wherein the one component is encoded after the components other than the one component in the encoding order.
[0241] Clause 5A: The method of any of clauses 3A and 4A, wherein the attribute is a color attribute, wherein the one component of the attribute is a luminance component, and wherein the components other than the one component comprise chrominance components.
[0242] Clause 6A: The method of any of clauses 1A to 5A, wherein the point comprises a first point, the method further comprising: determining that residual values of at least two of the components of the attribute of a second point in the point cloud are not equal to zero; and encoding the residual values of the components of the attribute of the second point.
[0243] Clause 7A: The method of any of clauses 1A to 6A, wherein the attribute comprises at least one of a color, a frame number, a humidity, a temperature, a surface normal, a combination of humidity and temperature, or a combination of color and surface normal.
[0244] Clause 8A: The method of any of clauses 1A to 7A, wherein the offset is equal to 1.
[0245] Clause 9A: A method of decoding a point cloud, comprising: decoding values of components of an attribute of a point in the point cloud, the values indicating residual values of the components; determining that the residual values of all components of the attribute except one component are equal to zero; based on the determination that the residual values of all components of the attribute except one component are equal to zero, adding an offset to a decoded value of the one component of the attribute to determine a magnitude of the residual value of the one component; and, based on the residual values of the components, reconstructing the components of the attribute of the point.
[0246] Clause 10A: The method of clause 9A, further comprising: decoding zero values of the components of the attribute except one component.
[0247] Clause 11A: The method of clause 10A, wherein decoding the zero values of the components of the attribute except one component comprises decoding the zero values of the components of the attribute except the one component prior to decoding a value of the one component.
[0248] Clause 12A: The method of clause 11A, wherein the one component is processed prior to the components except the one component in a processing order, and wherein decoding the zero values of the components of the attribute except the one component prior to decoding a value of the one component comprises decoding the zero values of the components except the one component in a decoding order that is different from the processing order, wherein the one component is decoded after the components except the one component in the decoding order.
[0249] Clause 13A: The method of any of clauses 11A and 12A, wherein the attribute is a color attribute, wherein the one component of the attribute is a luminance component, and wherein the components except the one component include chrominance components.
[0250] Clause 14A: The method of any of clauses 9A to 13A, wherein the point comprises a first point, the method further comprising: determining that residual values of at least two components of an attribute of a second point in the point cloud are not equal to zero; and, decoding the residual values of the components of the attribute of the second point.
[0251] Clause 15A: The method of any of clauses 9A to 14A, wherein the attribute comprises at least one of a color, a frame number, a humidity, a temperature, a surface normal, a combination of humidity and temperature, or a combination of color and surface normal.
[0252] Clause 16A: The method of any of clauses 9A to 15A, wherein the offset is equal to 1.
[0253] Clause 17A: A device for encoding a point cloud, comprising: a memory configured to store the point cloud; and processing circuitry configured to: determine that residual values of all but one component of a property of a point in the point cloud are equal to zero; based on the determination that the residual values of all but one component of the property are equal to zero, determine that a value of the one component is equal to a magnitude of a residual value of the one component of the property minus an offset; encode the value of the one component; and signal the encoded value in a bitstream.
[0254] Clause 18A: The device of clause 17A, wherein the processing circuitry is configured to: encode zero values of the components of the property other than the one component; and signal the encoded zero values of the components of the property other than the one component.
[0255] Clause 19A: The device of clause 18A, wherein, to encode the zero values of the components of the property other than the one component, the processing circuitry is configured to: encode the zero values of the components of the property other than the one component prior to encoding the value of the one component.
[0256] Clause 20A: The device of clause 19A, wherein, in a processing order, the one component is processed prior to the components other than the one component, and wherein, to encode the zero values of the components of the property other than the one component prior to encoding the value of the one component, the processing circuitry is configured to: encode the zero values of the components other than the one component in an encoding order that is different from the processing order, wherein, in the encoding order, the one component is encoded after the components other than the one component.
[0257] Clause 21A: The device of any of clauses 19A and 20A, wherein the property is a color property, wherein one component of the property is a luminance component, and wherein the components other than the one component include chrominance components.
[0258] Clause 22A: The device of any of clauses 17A to 21A, wherein the point comprises a first point, and wherein the processing circuitry is configured to: determine that residual values of at least two of the components of the property of a second point in the point cloud are not equal to zero; and encode the residual values of the components of the property of the second point.
[0259] Clause 23A: The device of any of clauses 17A to 22A, wherein the property comprises at least one of a color, a frame number, a humidity, a temperature, a surface normal, a combination of humidity and temperature, or a combination of color and surface normal.
[0260] Clause 24A: The device of any of clauses 17A to 23A, wherein the offset is equal to 1.
[0261] Clause 25A: The device of any of clauses 17A-24A, wherein the processing circuitry is configured to generate the point cloud.
[0262] Clause 26A: The device of clause 25A, wherein the processing circuitry is configured to, as part of generating the point cloud, generate the point cloud based on signals from the LIDAR device.
[0263] Clause 27A: The device of any of clauses 17A-26A, wherein the device is one of a mobile phone or a tablet computer.
[0264] Clause 28A: The device of any of clauses 17A-27A, wherein the device is a vehicle.
[0265] Clause 29A: The device of any of clauses 17A-28A, wherein the device is an extended reality device.
[0266] Clause 30A: The device of any of clauses 17A-29A, wherein the device includes an interface configured to transmit the point cloud data.
[0267] Clause 31A: A device for decoding a point cloud, comprising: a memory configured to store the point cloud; and processing circuitry configured to: decode a value of a component of an attribute of a point in the point cloud, the value indicating a residual value of the component; determine that residual values of all components of the attribute except one component are equal to zero; based on the determination that the residual values of all components of the attribute except the one component are equal to zero, add an offset to a decoded value of the one component of the attribute to determine a size of a residual value of the one component; and, based on the residual values of the components, reconstruct the component of the attribute of the point.
[0268] Clause 32A: The device of clause 31A, wherein the processing circuitry is configured to decode zero values of the components of the attribute except the one component.
[0269] Clause 33A: The device of clause 32A, wherein to decode the zero values of the components of the attribute except the one component, the processing circuitry is configured to decode the zero values of the components of the attribute except the one component prior to decoding the value of the one component.
[0270] Clause 34A: The device of any of clauses 33A, wherein, in the processing order, the one component is processed before the components other than the one component, and wherein, to decode the zero values of the components of the attribute other than the one component before encoding the value of the one component, the processing circuitry is configured to decode the zero values of the components other than the one component in a decoding order that is different from the processing order, wherein, in the decoding order, the one component is decoded after the components other than the one component.
[0271] Clause 35A: The device of any of clauses 33A and 34A, wherein the attribute is a color attribute, wherein the one component of the attribute is a luminance component, and wherein the components other than the one component include chrominance components.
[0272] Clause 36A: The device of any of clauses 31A-35A, wherein the point comprises a first point, and wherein the processing circuitry is configured to determine that the residual values of at least two of the components of the attribute of a second point in the point cloud are not equal to zero, and to decode the residual values of the components of the attribute of the second point.
[0273] Clause 37A: The device of any of clauses 31A-36A, wherein the attribute comprises at least one of a color, a frame number, a humidity, a temperature, a surface normal, a combination of humidity and temperature, or a combination of color and surface normal.
[0274] Clause 38A: The device of any of clauses 31A-37A, wherein the offset is equal to 1.
[0275] Clause 39A: The device of any of clauses 31A-38A, wherein the processing circuitry is configured to generate a map of an interior of a building based on the reconstructed components.
[0276] Clause 40A: The device of any of clauses 31A-39A, wherein the processing circuitry is configured to perform an autonomous navigation operation based on the reconstructed components.
[0277] Clause 41A: The device of any of clauses 31A-40A, wherein the processing circuitry is configured to generate computer graphics based on the reconstructed components.
[0278] Clause 42A: The device of clause 41A, wherein the processing circuitry is configured to determine a positioning of a virtual object based on the reconstructed components, and to generate an extended reality (XR) visualization in which the virtual object is located at the determined positioning.
[0279] Clause 43A: The device of any of clauses 31A-42A, wherein the device is one of a mobile phone or a tablet computer.
[0280] Clause 44A: The device of any of clauses 31A-43A, wherein the device is a vehicle.
[0281] Clause 45A: The device of any of clauses 31A-44A, wherein the device is an extended reality device.
[0282] Clause 46A: The device of any of clauses 31A-45A, further comprising a display to present an image based on the point cloud.
[0283] Clause 47A: A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors of a device to encode a point cloud to: determine that residual values of all but one component of a property of a point in the point cloud are equal to zero; based on determining that the residual values of all but one component of the property are equal to zero, determine a value of the one component to be equal to a magnitude of a residual value of the one component of the property minus an offset; encode the value of the one component; and signal the encoded value in a bitstream.
[0284] Clause 48A: A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors of a device to decode a point cloud to: decode values of components of a property of a point in the point cloud, the values indicating residual values of the components; determine that residual values of all but one component of the property are equal to zero; based on determining that the residual values of all but one component of the property are equal to zero, add an offset to the decoded values of the one component of the property to determine a magnitude of a residual value of the one component; and reconstruct the components of the property of the point based on the residual values of the components.
[0285] It is recognized that depending on the example, particular behaviors or events of any of the techniques described herein can be performed in a different order, added, merged, or excluded altogether (e.g., not all described behaviors or events are necessary for the practice of the techniques). Moreover, in a particular example, behaviors or events can be performed concurrently (e.g., through multi-threading, interrupt processing, or multiple processors), rather than in the order described.
[0286] Clause 1B: A method of encoding a point cloud, comprising: determining that residual values of all but one component of a property of a point in the point cloud are equal to zero; based on determining that the residual values of all but one component of the property are equal to zero, determining a value of the one component to be equal to a magnitude of a residual value of the one component of the property minus an offset; encoding the value of the one component; and signaling the encoded value in a bitstream.
[0287] Clause 2B: The method of clause IB, further comprising: encoding zero values for components of the attribute other than the one component; and signaling the encoded zero values for the components of the attribute other than the one component.
[0288] Clause 3B: The method of clause 2B, wherein encoding zero values for components of the attribute other than the one component comprises encoding zero values for components of the attribute other than the one component prior to encoding the value for the one component.
[0289] Clause 4B: The method of clause 3B, wherein the one component is processed prior to the components other than the one component in a processing order, and wherein encoding zero values for components of the attribute other than the one component prior to encoding the value for the one component comprises encoding zero values for the components other than the one component in an encoding order different from the processing order, wherein the one component is encoded after the components other than the one component in the encoding order.
[0290] Clause 5B: The method of clause 3B, wherein the attribute is a color attribute, wherein the one component of the attribute is a luminance component, and wherein the components other than the one component comprise chrominance components.
[0291] Clause 6B: The method of clause IB, wherein the point comprises a first point, the method further comprising: determining that residual values for at least two of the components of the attribute of a second point in the point cloud are not equal to zero; and encoding the residual values for the components of the attribute of the second point.
[0292] Clause 7B: The method of clause IB, wherein the attribute comprises at least one of a color, a frame number, a humidity, a temperature, a surface normal, a combination of humidity and temperature, or a combination of color and surface normal.
[0293] Clause 8B: The method of clause IB, wherein the offset is equal to one.
[0294] Clause 9B: A method of decoding a point cloud, comprising: decoding values for components of an attribute of a point in the point cloud, the values indicating residual values for the components; determining that the residual values for all components of the attribute other than one component are equal to zero; based on the determination that the residual values for all components of the attribute other than the one component are equal to zero, adding an offset to the decoded values for the one component of the attribute to determine a magnitude of the residual values for the one component; and reconstructing the components of the attribute of the point based on the residual values for the components.
[0295] Clause 10B: The method of clause 9B, further comprising: decoding zero values for components of the attribute other than the one component.
[0296] Clause 11B: The method of clause 10B, wherein the decoding of the zero values of the components of the attribute other than the one component includes decoding the zero values of the components of the attribute other than the one component prior to decoding the value of the one component.
[0297] Clause 12B: The method of clause 11B, wherein, in a processing order, the one component is processed prior to the components other than the one component, and wherein the decoding of the zero values of the components of the attribute other than the one component prior to decoding the value of the one component includes decoding the zero values of the components other than the one component in a decoding order that is different from the processing order, wherein, in the decoding order, the one component is decoded after the components other than the one component.
[0298] Clause 13B: The method of clause 11B, wherein the attribute is a color attribute, wherein the one component of the attribute is a luminance component, and wherein the components other than the one component include chrominance components.
[0299] Clause 14B: The method of clause 9B, wherein the point includes a first point, the method further comprising determining that residual values of at least two of the components of the attribute of a second point in the point cloud are not equal to zero, and decoding the residual values of the components of the attribute of the second point.
[0300] Clause 15B: The method of clause 9B, wherein the attribute includes at least one of a color, a frame number, a humidity, a temperature, a surface normal, a combination of the humidity and the temperature, or a combination of the color and the surface normal.
[0301] Clause 16B: The method of clause 9B, wherein the offset is equal to 1.
[0302] Clause 17B: An apparatus for encoding a point cloud, comprising: a memory configured to store the point cloud; and processing circuitry configured to: determine that residual values of all components of an attribute of a point in the point cloud other than one component are equal to zero; based on the determination that the residual values of all components of the attribute other than the one component are equal to zero, determine a value of the one component that is equal to a magnitude of a residual value of the one component of the attribute minus an offset; encode the value of the one component; and signal the encoded value in a bitstream.
[0303] Clause 18B: The apparatus of clause 17B, wherein the processing circuitry is configured to: encode zero values of the components of the attribute other than the one component; and signal the encoded zero values of the components of the attribute other than the one component.
[0304] Clause 19B: The device of clause 18B, wherein to encode the zero values of the components of the attribute other than the one component, the processing circuitry is configured to encode the zero values of the components of the attribute other than the one component prior to encoding the value of the one component.
[0305] Clause 20B: The device of clause 19B, wherein in the processing order, the one component is processed prior to the components other than the one component, and wherein to encode the zero values of the components of the attribute other than the one component prior to encoding the value of the one component, the processing circuitry is configured to encode the zero values of the components other than the one component in an encoding order that is different from the processing order, wherein in the encoding order, the one component is encoded after the components other than the one component.
[0306] Clause 21B: The device of clause 19B, wherein the attribute is a color attribute, wherein the one component of the attribute is a luminance component, and wherein the components other than the one component include chrominance components.
[0307] Clause 22B: The device of clause 17B, wherein the point comprises a first point, and wherein the processing circuitry is configured to determine that the residual values of at least two of the components of the attribute of a second point in the point cloud are not equal to zero, and to encode the residual values of the components of the attribute of the second point.
[0308] Clause 23B: The device of clause 17B, wherein the attribute comprises at least one of a color, a frame number, a humidity, a temperature, a surface normal, a combination of humidity and temperature, or a combination of color and surface normal.
[0309] Clause 24B: The device of clause 17B, wherein the offset is equal to 1.
[0310] Clause 25B: The device of clause 17B, wherein the processing circuitry is configured to generate the point cloud.
[0311] Clause 26B: The device of clause 25B, wherein the processing circuitry is configured to generate the point cloud based on signals from a LIDAR device as part of generating the point cloud.
[0312] Clause 27B: The device of clause 17B, wherein the device is one of a mobile phone or a tablet computer.
[0313] Clause 28B: The device of clause 17B, wherein the device is a vehicle.
[0314] Clause 29B: The device of clause 17B, wherein the device is an extended reality device.
[0315] Clause 30B: The device of clause 17B, wherein the device comprises an interface configured to transmit the point cloud data.
[0316] Clause 31B: A device for decoding a point cloud, comprising: a memory configured to store the point cloud; and processing circuitry configured to: decode values of components of an attribute of a point in the point cloud, the values indicating residual values of the components; determine that the residual values of all components of the attribute except one component are equal to zero; based on the determination that the residual values of all components of the attribute except the one component are equal to zero, add an offset to a decoded value of the one component of the attribute to determine a magnitude of a residual value of the one component; and reconstruct the components of the attribute of the point based on the residual values of the components.
[0317] Clause 32B: The device of clause 31B, wherein the processing circuitry is configured to: decode zero values of the components of the attribute except the one component.
[0318] Clause 33B: The device of clause 32B, wherein to decode the zero values of the components of the attribute except the one component, the processing circuitry is configured to: decode the zero values of the components of the attribute except the one component prior to decoding the value of the one component.
[0319] Clause 34B: The device of clause 33B, wherein the one component is processed prior to the components except the one component in a processing order, and wherein to decode the zero values of the components of the attribute except the one component prior to encoding the value of the one component, the processing circuitry is configured to decode the zero values of the components except the one component in a decoding order different from the processing order, wherein the one component is decoded after the components except the one component in the decoding order.
[0320] Clause 35B: The device of clause 33B, wherein the attribute is a color attribute, wherein one component of the attribute is a luminance component, and wherein the components except the one component include chrominance components.
[0321] Clause 36B: The device of clause 31B, wherein the point comprises a first point, and wherein the processing circuitry is configured to: determine that residual values of at least two components of the components of the attribute of a second point in the point cloud are not equal to zero; and decode the residual values of the components of the attribute of the second point.
[0322] Clause 37B: The device of clause 31B, wherein the attribute comprises at least one of a color, a frame number, a humidity, a temperature, a surface normal, a combination of humidity and temperature, or a combination of color and surface normal.
[0323] Clause 38B: The device of clause 31B, wherein the offset is equal to 1.
[0324] Clause 39B: The device of clause 31B, wherein the processing circuitry is configured to generate a map of the interior of the building based on the reconstructed components.
[0325] Clause 40B: The device of clause 31B, wherein the processing circuitry is configured to perform an autonomous navigation operation based on the reconstructed components.
[0326] Clause 41B: The device of clause 31B, wherein the processing circuitry is configured to generate computer graphics based on the reconstructed components.
[0327] Clause 42B: The device of clause 41B, wherein the processing circuitry is configured to determine a positioning of a virtual object based on the reconstructed components; and generate an extended reality (XR) visualization of the virtual object at the determined positioning.
[0328] Clause 43B: The device of clause 31B, wherein the device is one of a mobile phone or a tablet computer.
[0329] Clause 44B: The device of clause 31B, wherein the device is a vehicle.
[0330] Clause 45B: The device of clause 31B, wherein the device is an extended reality device.
[0331] Clause 46B: The device of clause 31B, further comprising a display for presenting an image based on the point cloud.
[0332] Clause 47B: A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors of a device for encoding a point cloud to: determine that residual values of all but one component of an attribute of points in the point cloud are equal to zero; based on determining that the residual values of all but one component of the attribute are equal to zero, determine that a value of the one component is equal to a magnitude of a residual value of the one component of the attribute minus an offset; encode the value of the one component; and signal the encoded value in a bitstream.
[0333] Clause 48B: A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors of a device to decode for a point cloud: decode values of components of an attribute of a point in the point cloud, the values indicating residual values of the components; determine that the residual values of all but one component of the attribute are equal to zero; based on the determination that the residual values of all but one component of the attribute are equal to zero, add an offset to a decoded value of the one component of the attribute to determine a magnitude of the residual value of the one component; and, based on the residual values of the components, reconstruct the components of the attribute of the point.
[0334] In one or more examples, the functions described can be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions can be stored on or transmitted over as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media can include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer- readable media generally can correspond to (1) tangible computer-readable storage media which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for implementation of the techniques described in this disclosure. A computer program product can include a computer-readable medium.
[0335] By way of example, and not limitation, such computer-readable storage media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but are instead directed to non-transitory, tangible storage media. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0336] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term "processor" as used herein can refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein can be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques could be fully implemented in one or more circuits or logic elements.
[0337] The techniques of this disclosure can be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chip set). While the
[0338] Various examples have been described. These and other examples fall within the scope of the following claims.
Claims
1. A method for encoding point clouds, the method comprising: The residual value of consecutive points with a residual value of zero in the scan sequence is signaled in the bitstream by a syntax element that indicates the number of consecutive points with a residual value of zero in the scan sequence. The residual values of all components of the attributes of subsequent points in the point cloud, except for one component, are equal to zero. Based on the fact that the residual values of all components of a given attribute except for one component are equal to zero, the value of the one component is determined, which is equal to the magnitude of the residual value of the one component of the attribute minus the offset. Encode the value of the component; Before encoding the value of the one component, the zero values of the other components of the attribute are encoded. In the bitstream, the zero value of the encoded components of the attribute other than the one component is signaled. as well as The encoded values are communicated via signals in the bit stream.
2. The method according to claim 1, in, In the processing sequence, the first component is processed before all other components are processed, and Encoding the zero values of the components of the attribute other than the one component before encoding the value of the one component includes: encoding the zero values of the components other than the one component in an encoding order different from the processing order, wherein, in the encoding order, the one component is encoded after the components other than the one component are encoded.
3. The method according to claim 1, wherein, The attribute is a color attribute, wherein the attribute's one component is a luminance component, and wherein the components other than the one component include a chrominance component.
4. The method according to claim 1, wherein, The point includes the first point, and the method further includes: Determine that at least two of the component attributes of the second point in the point cloud have residual values that are not equal to zero; and Encode the residual values of the components of the attribute at the second point.
5. The method according to claim 1, wherein, The attributes include at least one of color, frame rate, humidity, temperature, surface normal, a combination of humidity and temperature, or a combination of color and surface normal.
6. The method according to claim 1, wherein, The offset is equal to 1.
7. A method for decoding point clouds, comprising: Receive a syntax element representing the number of consecutive points with a residual value of zero in the scan sequence; Based on the syntax element, the residual attribute value of the consecutive points is determined to be zero; Decode the values of the components of the attributes of subsequent points in the point cloud, where the values indicate the residual values of the components; The residuals of all components of a given attribute except for one component are equal to zero. Before decoding the value of the said one component, decode the zero values of the components of the attribute other than the said one component; Based on the fact that the residual values of all components of a given attribute except for one component are equal to zero, an offset is added to the decoded value of the one component of the attribute to determine the magnitude of the residual value of the one component. as well as Based on the residual values of the components, reconstruct the components of the attributes of the points.
8. The method according to claim 7, in, In the processing sequence, the first component is processed before all other components are processed, and The zero-value decoding of the components of the attribute other than the one component before decoding the value of the one component includes: decoding the zero-values of the components other than the one component in a decoding order different from the processing order, wherein, in the decoding order, the one component is decoded after the components other than the one component are decoded.
9. The method according to claim 7, wherein, The attribute is a color attribute, wherein the attribute's one component is a luminance component, and wherein the components other than the one component include a chrominance component.
10. The method according to claim 7, wherein, The point includes the first point, and the method further includes: Determine that at least two of the component attributes of the second point in the point cloud have residual values that are not equal to zero; and Decode the residual values of the components of the attribute at the second point.
11. The method according to claim 7, wherein, The attributes include at least one of color, frame rate, humidity, temperature, surface normal, a combination of humidity and temperature, or a combination of color and surface normal.
12. The method according to claim 7, wherein, The offset is equal to 1.
13. An apparatus for encoding point clouds, the apparatus comprising: A memory configured to store point clouds; and The processing circuit is configured as follows: The residual value of consecutive points with a residual value of zero in the scan sequence is signaled in the bitstream by a syntax element that indicates the number of consecutive points with a residual value of zero in the scan sequence. The residual values of all components of the attributes of subsequent points in the point cloud, except for one component, are equal to zero. Based on the fact that the residual values of all components of a given attribute except for one component are equal to zero, the value of the one component is determined, which is equal to the magnitude of the residual value of the one component of the attribute minus the offset. Encode the value of the component; Before encoding the value of the one component, the zero values of the other components of the attribute are encoded. In the bitstream, the zero value of the encoded components of the attribute other than the one component is signaled. as well as The encoded values are communicated via signals in the bit stream.
14. The device according to claim 13, in, In the processing sequence, the first component is processed before all other components are processed, and In order to encode the zero values of the components of the attribute other than the one component before encoding the value of the one component, the processing circuit is configured to encode the zero values of the components other than the one component in an encoding order different from the processing order, wherein, in the encoding order, the one component is encoded after the components other than the one component are encoded.
15. The device according to claim 13, wherein, The attribute is a color attribute, wherein the attribute's one component is a luminance component, and wherein the components other than the one component include a chrominance component.
16. The device according to claim 13, wherein, The points include a first point, and wherein the processing circuitry is configured to: Determine that at least two of the component attributes of the second point in the point cloud have residual values that are not equal to zero; and Encode the residual values of the components of the attribute at the second point.
17. The device according to claim 13, wherein, The attributes include at least one of color, frame rate, humidity, temperature, surface normal, a combination of humidity and temperature, or a combination of color and surface normal.
18. The device according to claim 13, wherein, The offset is equal to 1.
19. The device according to claim 13, wherein, The processing circuit is configured to generate point clouds.
20. The device according to claim 19, wherein, The processing circuit is configured to generate a point cloud based on signals from a LIDAR device, as part of the point cloud generation process.
21. The device according to claim 13, wherein, The device is either a mobile phone or a tablet computer.
22. The device according to claim 13, wherein, The device is a vehicle.
23. The device according to claim 13, wherein, The device in question is an augmented reality device.
24. The device according to claim 13, wherein, The device includes an interface configured to send point cloud data.
25. An apparatus for decoding point clouds, the apparatus comprising: A memory configured to store point clouds; and The processing circuit is configured as follows: A syntax element that indicates the number of consecutive points with a residual value of zero in the scan sequence; Based on the syntax element, the residual attribute value of the consecutive points is determined to be zero; Decode the values of the components of the attributes of subsequent points in the point cloud, where the values indicate the residual values of the components; The residuals of all components of a given attribute except for one component are equal to zero. Before decoding the value of the said one component, decode the zero values of the components of the attribute other than the said one component; Based on the fact that the residual values of all components of a given attribute except for one component are equal to zero, an offset is added to the decoded value of the one component of the attribute to determine the magnitude of the residual value of the one component. as well as Based on the residual values of the components, reconstruct the components of the attributes of the points.
26. The device according to claim 25, in, In the processing sequence, the first component is processed before all other components are processed, and In order to decode the zero values of the components of the attribute other than the one component before encoding the value of the one component, the processing circuit is configured to decode the zero values of the components other than the one component in a decoding order different from the processing order, wherein, in the decoding order, the one component is decoded after the components other than the one component are decoded.
27. The device according to claim 25, wherein, The attribute is a color attribute, wherein the attribute's one component is a luminance component, and wherein the components other than the one component include a chrominance component.
28. The device according to claim 25, wherein, The points include a first point, and wherein the processing circuitry is configured to: Determine that at least two of the component attributes of the second point in the point cloud have residual values that are not equal to zero; and Decode the residual values of the components of the attribute at the second point.
29. The device according to claim 25, wherein, The attributes include at least one of color, frame rate, humidity, temperature, surface normal, a combination of humidity and temperature, or a combination of color and surface normal.
30. The device according to claim 25, wherein, The offset is equal to 1.
31. The device according to claim 25, wherein, The processing circuit is configured to generate a map of the building's interior based on the reconstructed components.
32. The device according to claim 25, wherein, The processing circuit is configured to perform automatic navigation operations based on the reconstructed components.
33. The device according to claim 25, wherein, The processing circuit is configured to generate computer graphics based on the reconstructed components.
34. The device according to claim 33, wherein, The processing circuit is configured as follows: Based on the reconstructed components, the location of the virtual object is determined; and Generate virtual objects in a defined location within an extended reality XR visualization.
35. The device according to claim 25, wherein, The device is either a mobile phone or a tablet computer.
36. The device according to claim 25, wherein, The device is a vehicle.
37. The device according to claim 25, wherein, The device in question is an augmented reality device.
38. The device of claim 25 further includes a display for presenting point cloud-based images.
39. A computer-readable storage medium having instructions stored thereon, which, when executed, are used by one or more processors of a device for encoding point clouds: The residual value of consecutive points with a residual value of zero in the scan sequence is signaled in the bitstream by a syntax element that indicates the number of consecutive points with a residual value of zero in the scan sequence. The residual values of all components of the attributes of subsequent points in the point cloud, except for one component, are equal to zero. Based on the fact that the residual values of all components of a given attribute except for one component are equal to zero, the value of the one component is determined, which is equal to the magnitude of the residual value of the one component of the attribute minus the offset. Encode the value of the component; Before encoding the value of the one component, the zero values of the other components of the attribute are encoded. In the bitstream, the zero value of the encoded components of the attribute other than the one component is signaled. as well as The encoded value is communicated using signals in the bit stream.
40. A computer-readable storage medium having instructions stored thereon, which, when executed, are used by one or more processors of a device for decoding point clouds: A syntax element that indicates the number of consecutive points with a residual value of zero in the scan sequence; Based on the syntax element, the residual attribute value of the consecutive points is determined to be zero; Decode the values of the components of the attributes of subsequent points in the point cloud, where the values indicate the residual values of the components; The residuals of all components of a given attribute except for one component are equal to zero. Before decoding the value of the said one component, decode the zero values of the components of the attribute other than the said one component; Based on the fact that the residual values of all components of a given attribute except for one component are equal to zero, an offset is added to the decoded value of the one component of the attribute to determine the magnitude of the residual value of the one component. as well as Based on the residual values of the components, reconstruct the components of the attributes of the points.
Citation Information
Patent Citations
Handling duplicate points in point cloud compression
US20190197739A1