Scaling quantization parameter values ​​in geometry-based point cloud compression (G-PCC)

By determining final QP values using node QP offsets multiplied by a geometry QP multiplier, the signaling overhead in point cloud compression is reduced, improving the efficiency of encoding and decoding processes.

JP7817992B2Active Publication Date: 2026-02-19QUALCOMM INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2023517761
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-10-01
Filing Date
2021-10-04
Publication Date
2026-02-19
Estimated Expiration
2041-10-04

AI Technical Summary

Technical Problem

Existing point cloud compression techniques require significant signaling overhead for determining final quantization parameter (QP) values, which affects efficiency in encoding and decoding processes.

Method used

Determine final quantization parameter (QP) values as a function of node QP offsets multiplied by a geometry QP multiplier, using syntax elements with a smaller number of bits to reduce signaling overhead.

Benefits of technology

Reduces signaling overhead in point cloud encoding and decoding, enhancing efficiency and reducing computational resources required for QP determination.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007817992000007
    Figure 0007817992000007
  • Figure 0007817992000008
    Figure 0007817992000008
  • Figure 0007817992000009
    Figure 0007817992000009
Patent Text Reader

Abstract

The G-PCC coder is configured to receive point cloud data, determine a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier, and code the point cloud data using the final QP value to create a coded point cloud.
Need to check novelty before this filing date? Find Prior Art

Description

Priority claims

[0001]

[0001] This application claims priority to U.S. Patent Application No. 17 / 492,095, filed October 1, 2021, and U.S. Provisional Patent Application No. 63 / 087,805, filed October 5, 2020, the entire contents of each of which are incorporated herein by reference. U.S. Patent Application No. 17 / 492,095, filed October 1, 2021, claims the benefit of U.S. Provisional Patent Application No. 63 / 087,805, filed October 5, 2020. [Technical Field]

[0002]

[0002] This disclosure relates to point cloud encoding and decoding. [Background technology]

[0003]

[0003] A point cloud is a collection of points in three-dimensional space. The points may correspond to points on an object in three-dimensional space. Thus, a point cloud can be used to represent the physical content of a three-dimensional space. Point clouds can have utility in a wide variety of situations. For example, a point cloud can be used in the context of autonomous vehicles to represent the location of objects on a road. In another example, a point cloud can be used in the context of representing the physical content of an environment to place virtual objects in an augmented reality (AR) or mixed reality (MR) application. Point cloud compression is the process for encoding and decoding a point cloud. Encoding a point cloud can reduce the amount of data required to store and transmit the point cloud. Summary of the Invention

[0004]

[0004] Generally, this disclosure describes methods and devices for improving quantization and scaling of geometry-based point clouds. In particular, this disclosure describes techniques for determining final quantization parameter (QP) values ​​using syntax elements that are signaled with a lower number of bits than previous techniques. For example, this disclosure describes techniques in which the final QP value is determined as a function of node QP offsets multiplied by a geometry QP multiplier. By using the multiplier, syntax elements with a smaller number of bits can be used to derive large node QP offset terms, thus reducing the signaling overhead for final QP determination.

[0005]

[0005] In one example, the present disclosure describes an apparatus configured to encode a point cloud, the apparatus comprising: a memory configured to store point cloud data; and one or more processors implemented in circuitry and in communication with the memory, the one or more processors configured to receive the point cloud data; determine final quantization parameter (QP) values ​​for the point cloud data as a function of node QP offsets multiplied by a geometry QP multiplier; and encode the point cloud data using the final QP values ​​to create an encoded point cloud.

[0006]

[0006] In another example, the present disclosure describes a method for encoding a point cloud, the method comprising receiving point cloud data, determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier, and encoding the point cloud data using the final QP value to create an encoded point cloud.

[0007]

[0007] In another example, the present disclosure describes a non-transitory computer-readable storage medium that stores instructions that, when executed, cause one or more processors of a device configured to encode a point cloud to receive point cloud data, determine a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier, and encode the point cloud data using the final QP value to create an encoded point cloud.

[0008]

[0008] In another example, the present disclosure describes an apparatus configured to encode a point cloud, the apparatus comprising: means for receiving point cloud data; means for determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier; and means for encoding the point cloud data using the final QP value to create an encoded point cloud.

[0009]

[0009] In another example, the present disclosure describes an apparatus configured to decode a point cloud, the apparatus comprising: a memory configured to store encoded point cloud data; and one or more processors implemented in circuitry and in communication with the memory, the one or more processors configured to receive the encoded point cloud data; determine final quantization parameter (QP) values ​​for the point cloud data as a function of node QP offsets multiplied by a geometry QP multiplier; and decode the encoded point cloud data using the final QP values ​​to create a decoded point cloud.

[0010]

[0010] In another example, the present disclosure describes a method for decoding a point cloud, the method comprising receiving encoded point cloud data, determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier, and decoding the encoded point cloud data using the final QP value to create a decoded point cloud.

[0011]

[0011] In another example, the present disclosure describes a non-transitory computer-readable storage medium that stores instructions that, when executed, cause one or more processors of a device configured to decode a point cloud to receive encoded point cloud data, determine a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier, and decode the encoded point cloud data using the final QP value to create a decoded point cloud.

[0012]

[0012] In another example, the present disclosure describes an apparatus configured to decode a point cloud, the apparatus comprising: means for receiving encoded point cloud data; means for determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier; and means for decoding the encoded point cloud data using the final QP value to create a decoded point cloud.

[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. [Brief explanation of the drawings]

[0014]

Figure 1

[0014] FIG. 1 is a block diagram illustrating an example encoding and decoding system that may implement the techniques of this disclosure.

Figure 2

[0015] 1 is a block diagram illustrating an example geometry point cloud compression (G-PCC) encoder.

Figure 3

[0016] FIG. 1 is a block diagram illustrating an exemplary G-PCC decoder.

Figure 4

[0017] FIG. 1 is a conceptual diagram illustrating an example of a prediction tree.

Figure 5

[0018] 1 is a flowchart illustrating an example encoding technique of this disclosure.

Figure 6

[0019] 1 is a flowchart illustrating an example decoding technique of this disclosure.

Figure 7

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

Figure 8

[0021] FIG. 1 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of the present disclosure may be used.

Figure 9

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

Figure 10

[0023] FIG. 1 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of the present disclosure may be used. DETAILED DESCRIPTION OF THE INVENTION

[0015]

[0024] Generally, this disclosure describes methods and devices for improving quantization and scaling of geometry-based point clouds. In particular, this disclosure describes techniques for determining final quantization parameter (QP) values ​​using syntax elements signaled with a lower number of bits than previous techniques. For example, this disclosure describes techniques in which the final QP value is determined as a function of node QP offsets multiplied by a geometry QP multiplier. By using a multiplier, syntax elements with a smaller number of bits can be used to derive large node QP offset terms, thus reducing the signaling overhead for final QP determination.

[0016]

[0025] 1 is a block diagram illustrating an example encoding and decoding system 100 that may implement the techniques of this disclosure. The techniques of this disclosure are generally directed to coding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. Generally, point cloud data includes any data for processing a point cloud. Coding may be effective in compressing and / or decompressing point cloud data.

[0017]

[0026] 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. In particular, 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 may comprise any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, terrestrial or marine vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, surveillance or security equipment, etc. In some cases, source device 102 and destination device 116 may be equipped for wireless communication.

[0018]

[0027] 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 consumer 118. According to this disclosure, G-PCC encoder 200 of source device 102 and G-PCC decoder 300 of destination device 116 may be configured to apply techniques of this disclosure related to scaling of quantization parameters. 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 may include other components or configurations. For example, source device 102 may receive data (e.g., point cloud data) from an internal or external source. Similarly, destination device 116 may interface with an external data consumer rather than including the data consumer within the same device.

[0019]

[0028] The system 100 shown in FIG. 1 is merely an example. In general, other digital encoding and / or decoding devices may implement the techniques of this disclosure related to scaling quantization parameters. The source device 102 and the destination device 116 are merely examples of devices in which the source device 102 generates coded data for transmission to the destination device 116. This disclosure refers to a “coding” device as a device that performs coding (encoding and / or decoding) of data. Accordingly, the G-PCC encoder 200 and the G-PCC decoder 300 represent examples of coding devices, specifically, encoders and decoders, respectively. Similarly, the term “coding” may refer to either encoding or decoding. In some examples, the source device 102 and the destination device 116 may operate substantially symmetrically, such that each of the source device 102 and the destination device 116 includes encoding and decoding components. Thus, the system 100 may support unidirectional or bidirectional transmission between the source device 102 and the destination device 116, for example, streaming, playback, broadcasting, telephony, navigation, and other uses.

[0020]

[0029] Generally, the data source 104 represents a source of data (i.e., raw, unencoded point cloud data) and may provide a continuous series of “frames” of data to the G-PCC encoder 200, which encodes the data for the frames. The data source 104 of the source device 102 may include a point cloud capture device, such as any of a variety of cameras or sensors, e.g., a 3D scanner or light detection and ranging (LIDAR) device, one or more video cameras, an archive containing previously captured data, and / or a data feed interface for receiving data from a data content provider. In this manner, the data source 104 may generate a point cloud. Alternatively or additionally, the point cloud data may be computer-generated from scanner, camera, sensor, or other data. For example, the data source 104 may generate computer-graphics-based data as source data or may create a combination of live data, archived data, and computer-generated data. In each case, the G-PCC encoder 200 encodes the captured data, pre-captured data, or computer-generated data. The G-PCC encoder 200 may reorder frames from their reception order (sometimes called "display order") into a coding order for coding. The G-PCC encoder 200 may generate one or more bitstreams including the encoded data. The source device 102 may then output the encoded data onto the computer-readable medium 110 via the output interface 108, for receipt and / or retrieval by, for example, the input interface 122 of the destination device 116.

[0021]

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

[0022]

[0031] The computer-readable medium 110 may represent any type of medium or device capable of transporting encoded data from the source device 102 to the destination device 116. In one example, the computer-readable medium 110 represents a communication medium for enabling the source device 102 to transmit encoded data (e.g., an encoded point cloud) directly to the destination device 116 in real time, for example, via a radio frequency network or a computer-based network. The output interface 108 may modulate a transmission signal including the encoded data, and the input interface 122 may demodulate a received transmission signal in accordance with a communication standard such as a wireless communication protocol. The communication medium may comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful for facilitating communication from the source device 102 to the destination device 116.

[0023]

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

[0024]

[0033] In some examples, source device 102 may output the encoded data to a file server 114 or another intermediate storage device, which may store the encoded data generated by source device 102. Destination device 116 may access the stored data from file server 114 via streaming or download. File server 114 may be any type of server device capable of storing encoded data and transmitting the encoded data to destination device 116. File server 114 may represent a web server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network-attached storage (NAS) device. Destination device 116 may access the encoded data from file server 114 through any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of both, that is suitable for accessing the encoded data stored on file server 114. The file server 114 and the input interface 122 may be configured to operate according to a streaming transmission protocol, a download transmission protocol, or a combination thereof.

[0025]

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

[0026]

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

[0027]

[0036] In some examples, the source device 102 and / or the destination device 116 are mobile devices, such as a mobile phone, an augmented reality (AR) device, or a mixed reality (MR) device. In such examples, the source device 102 may generate and encode a point cloud as part of a process for mapping the source device's 102's local environment. For AR and MR examples, the destination device 116 may use the point cloud to generate a virtual environment based on the source device's 102's local environment. In some examples, the source device 102 and / or the destination device 116 are terrestrial or marine vehicles, spacecraft, or aircraft. In such examples, the source device 102 may generate and encode a point cloud as part of a process for mapping the source device's environment, for example, for autonomous navigation, accident forensics, and other purposes.

[0028]

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

[0029]

[0038] The G-PCC encoder 200 and the G-PCC decoder 300 may each be implemented as any of a variety of suitable encoder and / or decoder circuits, or any combination thereof, including one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, etc. When the techniques are implemented partially in software, a device may store instructions for the software on a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to implement the techniques of this disclosure. The G-PCC encoder 200 and the G-PCC decoder 300 may each be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (codec) in the respective device. A device including the G-PCC encoder 200 and / or the G-PCC decoder 300 may comprise one or more integrated circuits, microprocessors, and / or other types of devices.

[0030]

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

[0031]

[0040] This disclosure may generally refer to “signaling” certain information, such as syntax elements. The term “signaling” may generally refer to communicating values ​​for syntax elements and / or other data used to decode encoded data. That is, G-PCC encoder 200 may signal values ​​for syntax elements in a bitstream. Generally, signaling refers to generating values ​​in a bitstream. As mentioned above, source device 102 may transport a bitstream to destination device 116 in substantially real time or non-real time, which may occur when storing syntax elements in storage device 112 for later retrieval by destination device 116.

[0032]

[0041] ISO / IEC MPEG (JTC1 / SC29 / WG11) is studying the potential need for a standard for point cloud coding techniques with compression capabilities significantly exceeding those of current methods, with the goal of creating such a standard. The group is collaborating on this exploration in a collaborative effort known as the 3-Dimensional Graphics Team (3DG) to evaluate compression technology designs proposed by experts in the field.

[0033]

[0042] Point cloud compression activity is categorized into two different approaches. The first approach is "video point cloud compression" (V-PCC), which segments a 3D object and projects the segments into multiple 2D planes (represented as "patches" in a 2D frame), which are further coded by a legacy 2D video codec such as the High Efficiency Video Coding (HEVC) (ITU-T H.265) codec. The second approach is "geometry-based point cloud compression" (G-PCC), which directly compresses the 3D geometry, i.e., the positions of a set of points in 3D space and the associated attribute values ​​(for each point associated with the 3D geometry). G-PCC addresses the compression of point clouds in both Category 1 (static point clouds) and Category 3 (dynamically collected point clouds). A recent draft of the G-PCC standard is available at G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19088, Brussels, Belgium, January 2020 (hereafter "w19088"), and the codec description is available at G-PCC Codec Description v6, ISO / IEC JTC1 / SC29 / WG11 w19091, Brussels, Belgium, January 2020 (hereafter "w19091").

[0034]

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

[0035]

[0044] The 3D space occupied by the point cloud data may be enclosed by a virtual bounding box. The positions of points in the bounding box may be represented with a certain precision, and therefore, the positions of one or more points may be quantized based on that precision. At the smallest level, the bounding box is divided into voxels, which are the smallest units of space represented by a unit cube. A voxel in a bounding box may be associated with zero, one, or more points. The bounding box may be divided into multiple cubic / rectangular regions, sometimes called tiles. Each tile may be coded into one or more slices. The division of the bounding box into slices and tiles may be based on the number of points in each division or other considerations (e.g., a particular region may be coded as a tile). The slice regions may be further divided using division decisions similar to those in video codecs.

[0036]

[0045] Figure 2 provides an overview of a G-PCC encoder 200. Figure 3 provides an overview of a G-PCC decoder 300. The illustrated modules are logical and do not necessarily correspond one-to-one to the code implemented in the reference implementation of the G-PCC codec, i.e., the TMC13 test model software studied by ISO / IEC MPEG (JTC1 / SC29 / WG11).

[0037]

[0046] In both the G-PCC encoder 200 and the G-PCC decoder 300, the point cloud position is coded first. Attribute coding depends on the decoded geometry. In Figures 2 and 3, the gray shaded modules are options typically used for Category 1 data. The diagonally shaded modules are options typically used for Category 3 data. All other modules are common between Category 1 and Category 3.

[0038]

[0047] For Category 3 data, the compressed geometry is typically represented as an octree extending from the root down to the leaf level of individual voxels. For Category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree extending from the root down to the leaf level of blocks larger than a voxel) and a model approximating the surface within each leaf of the pruned octree. In this way, both Category 1 and Category 3 data share the octree coding mechanism, but Category 1 data may additionally approximate the voxels within each leaf with a surface model. The surface model used is a triangulation with 1 to 10 triangles per block, resulting in a triangle soup. Therefore, Category 1 geometry codecs are known as Trisoup geometry codecs, and Category 3 geometry codecs are known as Octree geometry codecs.

[0039]

[0048] At each node of the octree, the occupancy is signaled (if not inferred) for one or more of its child nodes (up to eight nodes). Multiple neighborhoods are specified, including (a) nodes that share a face with the current octree node, (b) nodes that share a face, edge, or vertex with the current octree node, etc. Within each neighborhood, the occupancy of the node and / or its children can be used to predict the occupancy of the current node or its children. For points that are sparsely distributed in some nodes of the octree, the codec (e.g., implemented by the G-PCC encoder 200 and the G-PCC decoder 300) also supports a direct coding mode in which the 3D positions of the points are directly coded. A flag can be signaled to indicate that the direct mode is signaled. At the lowest level, the number of points associated with an octree node / leaf node can also be coded.

[0040]

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

[0041]

[0050] G-PCC has three attribute coding methods: region-adaptive hierarchical transform (RAHT) coding, interpolation-based hierarchical nearest neighbor prediction (prediction transform), and interpolation-based hierarchical nearest neighbor prediction with an update / lifting step (lifting transform). RAHT and lifting are typically used for category 1 data, while prediction is typically used for category 3 data. However, either method can be used for any data, and similar to the geometry codec in G-PCC, the attribute coding method used to code point clouds is specified in the bitstream.

[0042]

[0051] The coding of attributes can be done at levels of detail (LoD), where a finer representation of the point cloud attributes can be obtained for each level of detail. Each level of detail can be designated based on a distance metric from neighboring nodes or based on a sampling distance.

[0043]

[0052] In the G-PCC encoder 200, the residual obtained as the output of the coding method for the attribute is quantized. The quantized residual may be coded using context-adaptive arithmetic coding.

[0044]

[0053] In the example of FIG. 2, the G-PCC encoder 200 may include a coordinate transformation unit 202, a color transformation unit 204, a voxelization unit 206, an attribute transfer unit 208, an octree analysis unit 210, a surface approximation analysis unit 212, an arithmetic coding unit 214, a geometry reconstruction unit 216, a RAHT unit 218, an LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, and an arithmetic coding unit 226.

[0045]

[0054] As shown in the example of FIG. 2, the G-PCC encoder 200 may receive a set of positions and a set of attributes for points of a point cloud. The G-PCC encoder 200 may obtain the set of positions and the set of attributes for points of the point cloud from the data source 104 (FIG. 1). The positions may include coordinates of the points of the point cloud. The attributes may include information about the points of the point cloud, such as a color associated with the points of the point cloud. The G-PCC encoder 200 may generate a geometry bitstream 203 that includes encoded representations of the positions of the points of the point cloud. The G-PCC encoder 200 may also generate an attribute bitstream 205 that includes encoded representations of the set of attributes.

[0046]

[0055] The coordinate transformation unit 202 may apply a transform to the coordinates of the points to convert the coordinates from the initial domain to the transformation domain. This disclosure may refer to the transformed coordinates as transformed coordinates. The color transformation unit 204 may apply a transform to convert color information of the attributes to a different domain. For example, the color transformation unit 204 may convert color information from the RGB color space to the YCbCr color space.

[0047]

[0056] Further, in the example of FIG. 2, the voxelization unit 206 may voxelize the transformed coordinates. Voxelizing the transformed coordinates may include quantization and removing some points of the point cloud. In other words, multiple points of the point cloud may be contained within a single "voxel," which may then be treated as one point in some respects. Further, the octree analysis unit 210 may generate an octree based on the voxelized transformed coordinates. Further, in the example of FIG. 2, the surface approximation analysis unit 212 may analyze the points to potentially determine a surface representation of the set of points. The arithmetic coding unit 214 may entropy code syntax elements representing the octree and / or surface information determined by the surface approximation analysis unit 212. The G-PCC encoder 200 may output these syntax elements in the geometry bitstream 203. The geometry bitstream 203 may also include other syntax elements, including syntax elements that are not arithmetically coded.

[0048]

[0057] The geometry reconstruction unit 216 may reconstruct transformation coordinates of points of the point cloud based on the octree, data indicating the surface determined by the surface approximation analysis unit 212, and / or other information. The number of transformation coordinates reconstructed by the geometry reconstruction unit 216 may differ from the original number of points of the point cloud due to voxelization and surface approximation. This disclosure may refer to the obtained points as reconstructed points. The attribute transfer unit 208 may transfer attributes of the original points of the point cloud to the reconstructed points of the point cloud.

[0049]

[0058] Further, the RAHT unit 218 may apply RAHT coding to the attributes of the reconstructed points. Alternatively or additionally, the LOD generation unit 220 and the lifting unit 222 may apply LOD processing and lifting, respectively, to the attributes of the reconstructed points. The RAHT unit 218 and the lifting unit 222 may generate coefficients based on the attributes. The coefficient quantization unit 224 may quantize the coefficients generated by the RAHT unit 218 or the lifting unit 222. The arithmetic coding unit 226 may apply arithmetic coding to syntax elements representing the quantized coefficients. The G-PCC encoder 200 may output these syntax elements in the attribute bitstream 205. The attribute bitstream 205 may also include other syntax elements, including syntax elements that are not arithmetically coded.

[0050]

[0059] As described in more detail below, G-PCC encoder 200 is an example of a device configured to implement the quantization and / or scaling techniques of this disclosure. In one example, G-PCC encoder 200 may be configured to receive point cloud data, determine final quantization parameter (QP) values ​​for the point cloud data as a function of node QP offsets multiplied by a geometry QP multiplier, and encode the point cloud data using the final QP values ​​to create an encoded point cloud.

[0051]

[0060] In the example of FIG. 3, the G-PCC decoder 300 may include a geometry arithmetic decoding unit 302, an attribute arithmetic decoding unit 304, an octree synthesis unit 306, an inverse quantization unit 308, a surface approximation synthesis unit 310, a geometry reconstruction unit 312, a RAHT unit 314, an LOD generation unit 316, an inverse lifting unit 318, an inverse transform coordinate unit 320, and an inverse transform color unit 322.

[0052]

[0061] The G-PCC decoder 300 may obtain the geometry bitstream 203 and the attribute bitstream 205. The geometry arithmetic decoding unit 302 of the decoder 300 may apply arithmetic decoding (e.g., context-adaptive binary arithmetic coding (CABAC) or other types of arithmetic decoding) to the syntax elements in the geometry bitstream. Similarly, the attribute arithmetic decoding unit 304 may apply arithmetic decoding to the syntax elements in the attribute bitstream.

[0053]

[0062] The octree synthesis unit 306 may synthesize an octree based on syntax elements parsed from the geometry bitstream. In cases where surface approximation is used in the geometry bitstream, the surface approximation synthesis unit 310 may determine a surface model based on the syntax elements parsed from the geometry bitstream and based on the octree.

[0054]

[0063] Further, the geometry reconstruction unit 312 may perform the reconstruction to determine the coordinates of the points of the point cloud. The inverse transform coordinate unit 320 may apply an inverse transform to the reconstructed coordinates to convert the reconstructed coordinates (positions) of the points of the point cloud from the transformed domain back to the initial domain.

[0055]

[0064] 3, the inverse quantization unit 308 may inverse quantize the attribute values, which may be based on syntax elements obtained from the attribute bitstream (e.g., including syntax elements decoded by the attribute arithmetic decoding unit 304).

[0056]

[0065] Depending on how the attribute values ​​are encoded, the RAHT unit 314 may perform RAHT coding to determine color values ​​for the points of the point cloud based on the dequantized attribute values. Alternatively, the LOD generation unit 316 and the inverse lifting unit 318 may determine color values ​​for the points of the point cloud using a level-of-detail-based technique.

[0057]

[0066] 3, the inverse transform color unit 322 may apply an inverse color transform to the color values. The inverse color transform may be the inverse of the color transform applied by the color transform unit 204 of the encoder 200. For example, the color transform unit 204 may transform the color information from the RGB color space to the YCbCr color space. Thus, the inverse color transform unit 322 may transform the color information from the YCbCr color space to the RGB color space.

[0058]

[0067] As described in more detail below, the G-PCC decoder 300 is an example of a device configured to implement the quantization and / or scaling techniques of this disclosure. In one example, the G-PCC decoder 300 may be configured to receive encoded point cloud data, determine final quantization parameter (QP) values ​​for the point cloud data as a function of node QP offsets multiplied by a geometry QP multiplier, and decode the encoded point cloud data using the final QP values ​​to create a decoded point cloud.

[0059]

[0068] The various units in FIGS. 2 and 3 are shown to aid in understanding the operations performed by the encoder 200 and the decoder 300. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit refers to a circuit that provides a specific function and is pre-configured as to the operations that may be performed. A programmable circuit refers to a circuit that may be programmed to perform various tasks and to provide flexible functionality in the operations that may be performed. For example, a programmable circuit may execute software or firmware that causes the programmable circuit to operate in a manner defined by the software or firmware instructions. A fixed-function circuit may execute software instructions (e.g., to receive parameters or output parameters), but the types of operations that the fixed-function circuit performs are generally invariant. In some examples, one or more of the units may be separate circuit blocks (fixed function or programmable), and in some examples, one or more of the units may be an integrated circuit.

[0060]

[0069] Predictive Geometry Coding

[0070] Predictive geometry coding has been introduced as an alternative to octree geometry coding, in which nodes are arranged in a tree structure (which defines the prediction structure), and various prediction strategies are used to predict the coordinates of each node in the tree relative to its predictor. Figure 4 is a conceptual diagram showing an example of a prediction tree shown as a directed graph, with arrows pointing in the prediction direction. Node 400 is the root vertex and has no predictors; node 406 has two children; node 404 has three children; node 408 has one child; and node 402 is a leaf node and has no children. Every node has only one parent node.

[0061]

[0071] In one example, four prediction strategies are specified for each node based on its parent (p0), grandparent (p1) and great-grandparent (p2).

[0062] - No predictions - Delta forecast (p0) - Linear prediction (2*p0-p1) - Parallelogram prediction (2*p0+p1-p2)

[0072] The G-PCC encoder 200 may employ any algorithm to generate the predictive tree. The G-PCC encoder 200 may determine the algorithm based on the application / use case, and several strategies may be used. For each node, the G-PCC encoder 200 encodes the residual coordinate values ​​in the bitstream in a depth-first manner, starting from the root node. Predictive geometry coding is primarily useful for Category 3 (e.g., LIDAR-collected) point cloud data, e.g., for low-latency applications.

[0063]

[0073] Non-normative quantization and scaling

[0074] In some examples, the original point cloud may be represented in floating-point format or at a very high bit depth. The input point cloud is quantized and voxelized at a bit depth, as indicated by the voxelization unit 206 of the G-PCC encoder 200 in FIG. 2. Quantization may be applied in the voxelization unit 206 in the G-PCC encoder 200 for the purpose of voxelization, and scaling may be performed in the G-PCC decoder 300 in an application-specific physical space (i.e., in physical dimensions) primarily for mapping of the decoded point cloud (i.e., in voxel units). Scale values ​​that may be used by the G-PCC decoder 300 for this operation are signaled using the syntax elements sps_source_scale_factor_numerator_minus1 and sps_source_scale_factor_denominator_minus1.

[0064]

[0075] Quantization, which is a pre-processing step (before encoding), and the scaling process, which is a post-processing step (after decoding), do not affect the overall coding process. That is, quantization and scaling are inherently non-prescriptive. This operation outside the coding process is roughly similar to spatial downsampling to a lower spatial resolution for compression in traditional 2D video frames, and the subsequent upsampling before display. In this traditional 2D video case, downsampling and upsampling are non-prescriptive and do not affect the coding process. The syntax elements indicating the numerator (sps_source_scale_factor_numerator_minus1) and denominator (sps_source_scale_factor_denominator_minus1) of the signaled scale factor are shown in the table below.

[0065] [Table 1]

[0066]

[0076] Normative quantization for predicted geometry in G-PCC

[0077] Quantization / scaling of geometry coordinates / positions in a codec, or geometry scaling as it is referred to in G-PCC, is controlled by flags and quantization parameter (QP) values ​​in the Geometry Parameter Set (GPS). The QP value can be specified / modified at multiple levels. The syntax elements associated with geometry scaling in GPS are described below.

[0067]

[0078] Geometry Parameter Set (GPS)

[0068] [Table 2]

[0069]

[0079] Here, geom_base_qp is used to derive the base QP value applicable to all points referring to GPS. The QP multiplier, geom_qp_multiplier (1<<geom_qp_multiplier_log2), is used to multiply all QP values. For example, if base_qp is set equal to 1 and geom_qp_multiplier_log2 is 2, the actual QP value used is 1*(1<<2)=4. In practice, geom_qp_multiplier acts like a scale factor for QP and determines the minimum change in QP values. The slice QP delta, which is also multiplied by the QP multiplier before being applied, is also signaled. In octree coding, the node QP offset is signaled at a specific octree depth, and the QP multiplier is also applied to this node QP offset.

[0070]

[0080] For prediction geometry, the G-PCC encoder 200 signals an interval for indicating how frequently the QP offset is signaled in the prediction geometry tree. In addition to the syntax element geom_qp_offset_intvl_log2, the G-PCC encoder 200 signals another syntax element geom_qp_offset_intvl_log2_delta in the geometry slice header for updating the interval at which the QP offset is signaled in the prediction tree. For every N nodes where N = geom_qp_offset_intvl_log2 + geom_qp_offset_intvl_log2_delta, the G-PCC encoder 200 signals the QP offset in the prediction geometry tree. The G-PCC decoder 300 may determine the final QP value for prediction geometry as follows.

[0071]

Number

[0072] Therefore, the signaled value node_qp_offset is the same as the node QP offset applied to the node.

[0073]

[0081] Note that the final QP value (qpFinal) is obtained by a quantization process that is applied in the spatial domain and not in the transform domain like video compression. Thus, in point cloud compression, based on the size and density of the point cloud, the quantization of the geometry may be more noticeable in the decoded point cloud.

[0074]

[0082] The G-PCC encoder 200 and the G-PCC decoder 300 may use the final QP value (e.g., qpFinal) to derive the step size used by the geometry scaling process. The geometry scaling process is defined as follows: The inputs to this process are:

[0075] - variable val representing the unscaled position component value, - a variable cIdx that specifies the position component index, - A variable qP that specifies the quantization parameter. The output of this process is the scaled position component value pos.

[0076] (Note) When geom_scaling_enabled_flag is equal to 0, the output of this process is equal to the input value pos. The variable scalingExpansionLog2 is set equal to qP / 8. The variables highPart and lowPart, which represent the concatenated portions of the unscaled position component values, are derived as follows:

[0077]

number

[0078]

[0083] The scale factor sF is derived as follows:

[0079]

number

[0080]

[0084] The output variable pos is derived as follows:

[0081]

number

[0082]

[0085] In octree geometry coding, including the canonical quantization of geometry described above, the QP multiplier is applied to all of the QP values, including any signaled node QP offsets. The node QP multiplier is not applied to signaled node QP offsets (e.g., node_qp offsets) signaled in the prediction tree. In some cases, the node QP offset may be a larger number, which may require a large number of bits to be signaled for the node_qp_offset syntax element. Therefore, signaling overhead may increase with large values ​​of the node QP offset.

[0083]

[0086] In view of these shortcomings, this disclosure describes techniques for signaling node QP offsets and determining final QP values ​​in a manner that reduces signaling overhead and therefore increases coding efficiency. The techniques described herein may be implemented independently or combined with one or more other techniques. The terms step size, scale value, and scale step size all refer to the same value, i.e., the scale value used in G-PCC decoder 300.

[0084]

[0087] In one example of the present disclosure, the G-PCC encoder 200 and the G-PCC decoder 300 can be configured to determine the QP value (e.g., the final QP value) used to derive the step size to include a node QP offset multiplied by a QP multiplier. As an example, the G-PCC decoder 300 can be configured to determine the final QP value (qpFinal) using the following equation: qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2).

[0085]

[0088] In some examples, the G-PCC encoder 200 can also be configured to determine the final QP value (qpFinal) using the following equation: qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2). For example, the G-PCC encoder 200 can use that equation in the reconstruction loop. However, in other examples, the G-PCC encoder 200 can first determine the final QP value and then determine the value of the node QP offset to determine the values for signaling for node_qp_offset and geom_qp_multiplier_log2. In this example, the G-PCC encoder determines the values of node_qp_offset and geom_qp_multiplier_log2 such that the already determined final QP value, as well as base_qp and slice_qp, satisfy the equation qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2).

[0086]

[0089] In the above equation, the base QP (base_qp) and the slice QP (slice_qp) are summed and then left-shifted (e.g., multiplied by the value of the geometry QP multiplier derived from geom_qp_multiplier_log2). This resulting value is then added to the node QP offset (node_qp_offset) left-shifted (e.g., multiplied) by the geometry QP multiplier (derived from geom_qp_multiplier_log2). This equation is the same as the equation described above (i.e., qpFinal=(base_qp+slice_qp)<<geom_qp_multiplier_log2+node_qp_offset), except that the node QP offset is multiplied by the geometry QP multiplier. Such a technique can reduce the number of bits required to signal the node QP offset.

[0087]

[0090] For example, if the desired node QP offset was 20, the G-PCC encoder 200 would have signaled the node_qp_offset syntax element with a number of bits equal to the value 20. However, using the technique of the present disclosure, the G-PCC encoder 200 can signal the node_qp_offset syntax element with fewer bits because the node QP offset is multiplied by the geometry QP multiplier. For example, in some point clouds where the QP takes only values that are multiples of 4, signaling a node_qp_offset of 20 would, for example, consume a certain number of bits. However, if the G-PCC decoder 300 uses the geometry QP multiplier as described above, only a value of 5 needs to be signaled (20>>geom_qp_multiplier_log2 = 20>>2 = 5), which would consume fewer bits. Here, the geometry QP multiplier is 4 and geom_qp_multiplier_log2 is 2 since geom_qp_multiplier_log2 is signaled as the log2 of the final geometry multiplier value.

[0088]

[0091] Thus, in one example of the present disclosure, the G-PCC encoder 200 can determine a final QP value for encoding the geometry of the point cloud by applying a geometry QP multiplier to the node QP offset to determine a final node QP offset term (e.g., the final node QP offset term is node_qp_offset << geom_qp_multiplier_log2). In one example, the G-PCC encoder 200 can determine a final QP value (qpFinal) according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2).

[0089]

[0092] The G-PCC encoder 200 can encode and signal syntax elements indicating the node QP offset (node_qp_offset) and the geometry QP multiplier (geom_qp_multiplier_log2) such that the signaled node QP offset multiplied by the geometry QP multiplier is equal to the desired node QP offset term.

[0090]

[0093] In the reverse manner, the G-PCC decoder 300 can receive and decode syntax elements for the node QP offset (node_qp_offset) and the geometry QP multiplier (geom_qp_multiplier_log2). The G-PCC decoder can then determine the final QP value as a function of the node QP offset (e.g., node_qp_offset) multiplied by the geometry QP multiplier (geom_qp_multiplier_log2). In one example, the G-PCC decoder 300 can determine the final QP value (qpFinal) according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2). The G-PCC decoder 300 can then use the final QP value to perform canonical quantization of the geometry of the point cloud using one or more of the coding techniques described above.

[0091]

[0094] In another example, the G-PCC encoder 200 and the G-PCC decoder 300 can operate according to the constraint that the node_qp_offset (of the derived final QP) is a multiple of (1 << geom_qp_multiplier_log2). Such a constraint can be determined in advance or signaled in the bitstream.

[0092]

[0095] In another example, the derived final QP value can be rounded to a multiple of (1 << geom_qp_multiplier_log2).

[0093]

[0096] FIG. 5 is a flowchart showing an exemplary coding technique of the present disclosure. One or more structural components of the G-PCC encoder 200 can be configured to implement the technique of FIG. 5.

[0094]

[0097] In one example, the G-PCC encoder 200 may be configured to receive (500) point cloud data and determine (510) a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier. The G-PCC encoder 200 may then encode the point cloud data using the final QP value to create an encoded point cloud (520).

[0095]

[0098] In one example of the present disclosure, the G-PCC encoder 200 may encode a node QP offset syntax element indicating the node QP offset and encode a geometry QP multiplier syntax element indicating the geometry QP multiplier.

[0096]

[0099] In another example of the present disclosure, the G-PCC encoder 200 may determine the final QP value according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the signaled node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier.

[0097]

[0100] In one example, the node QP offset is a multiple of (1 << geom_qp_multiplier_log2).

[0098]

[0101] In another example of the present disclosure, the G-PCC encoder 200 may round the final QP value to (1 << geom_qp_multiplier_log2).

[0099]

[0102] FIG. 6 is a flowchart showing an exemplary decoding technique of the present disclosure. One or more structural components of the G-PCC decoder 300 may be configured to implement the technique of FIG. 6.

[0100]

[0103] In one example of the present disclosure, the G-PCC decoder 300 may be configured to receive (600) the encoded point cloud data and determine (610) the final quantization parameter (QP) value for the point cloud data as a function of the node QP offset multiplied by the geometry QP multiplier. The G-PCC decoder 300 may be further configured to decode (620) the encoded point cloud data using the final QP value to create the decoded point cloud.

[0101]

[0104] In one example, the G-PCC decoder 300 may be further configured to decode the node QP offset syntax element to determine the node QP offset and decode the geometry QP multiplier syntax element to determine the geometry QP multiplier.

[0102]

[0105] In another example, the G-PCC decoder 300 may be further configured to determine the final QP value according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the signaled node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier.

[0103]

[0106] In one example, the signaled or derived node QP offset is a multiple of (1 << geom_qp_multiplier_log2).

[0104]

[0107] In another example, the G-PCC decoder 300 may be further configured to round the final QP value to (1 << geom_qp_multiplier_log2).

[0105]

[0108] FIG. 7 is a conceptual diagram showing an exemplary ranging system 900 that may be used with one or more techniques of the present disclosure. In the example of FIG. 7, the ranging system 900 includes an illuminator 902 and a sensor 904. The illuminator 902 may emit light 906. In some examples, the illuminator 902 may emit the light 906 as one or more laser beams. The light 906 may be at one or more wavelengths, such as infrared wavelengths or visible light wavelengths. In other examples, the light 906 is not coherent laser light. When the light 906 encounters an object, such as the object 908, the light 906 results in return light 910. The return light 910 may include backscattered light and / or reflected light. The return light 910 may pass through a lens 911 that directs the return light 910 to provide an image 912 of the object 908 on the sensor 904. The sensor 904 generates a signal 914 based on the image 912. The image 912 may comprise a set of points (represented, for example, by dots in the image 912 of FIG. 7).

[0106]

[0109] In some examples, the illuminator 902 and the sensor 904 may be mounted on a rotating structure such that the illuminator 902 and the sensor 904 capture a 360-degree view of the environment. In other examples, the ranging system 900 may include one or more optical components (such as mirrors, collimators, diffraction gratings, etc.) that enable the illuminator 902 and the sensor 904 to detect objects within a particular range (e.g., up to 360 degrees). The example of FIG. 7 shows only a single illuminator 902 and sensor 904, but the ranging system 900 may include multiple sets of illuminators and sensors.

[0107]

[0110] In some examples, the illuminator 902 generates a structured light pattern. In such examples, the ranging system 900 may include multiple sensors 904 on which respective images of the structured light pattern are formed. The ranging system 900 may use the parallax between the images of the structured light pattern to determine the distance to an object 908 from which the structured light pattern is backscattered. Structured light-based ranging systems may have a high level of accuracy (e.g., accuracy in the sub-millimeter range) when the object 908 is relatively close to the sensor 904 (e.g., between 0.2 meters and 2 meters). This high level of accuracy may be useful in facial recognition applications, such as unlocking mobile devices (e.g., mobile phones, tablet computers, etc.), and for security applications.

[0108]

[0111] In some examples, the ranging system 900 is a time-of-flight (ToF)-based system. In some examples where the ranging system 900 is a ToF-based system, the illuminator 902 generates pulses of light. In other words, the illuminator 902 may modulate the amplitude of the emitted light 906. In such examples, the sensor 904 detects return light 910 from the pulses of light 906 generated by the illuminator 902. The ranging system 900 can then determine the distance to the object 908 from which the light 906 is backscattered based on the delay between when the light 906 is emitted and detected and the known speed of light in air. In some examples, instead of (or in addition to) modulating the amplitude of the emitted light 906, the illuminator 902 may modulate the phase of the emitted light 906. In such an example, the sensor 904 may detect the phase of the returning light 910 from the object 908 and determine the distance to a point on the object 908 using the speed of light and based on the time difference between when the illuminator 902 generated the light 906 at a particular phase and when the sensor 904 detected the returning light 910 at a particular phase.

[0109]

[0112] In other examples, the point cloud may be generated without the use of the illuminator 902. For example, in some examples, the sensor 904 of the ranging system 900 may include two or more optical cameras. In such examples, the ranging system 900 may use the optical cameras to capture stereo images of an environment including the object 908. The ranging system 900 (e.g., the point cloud generator 920) may then calculate the disparity between locations in the stereo images. The ranging system 900 may then use the disparity to determine distances to locations shown in the stereo images. From these distances, the point cloud generator 920 may generate a point cloud.

[0110]

[0113] The sensor 904 may also detect other attributes of the object 908, such as color and reflectance information. In the example of Figure 7, the point cloud generator 920 may generate a point cloud based on the signal 918 generated by the sensor 904. The ranging system 900 and / or the point cloud generator 920 may form part of the data source 104 (Figure 1). The techniques of this disclosure for deriving the final QP value may result in fewer bits being required to encode the point cloud using the system of Figure 7.

[0111]

[0114] FIG. 8 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of the present disclosure may be used. In the example of FIG. 8, vehicle 1000 includes a laser package 1002, such as a LIDAR system. Although not shown in the example of FIG. 8, vehicle 1000 may also include a data source, such as data source 104 (FIG. 1), and a G-PCC encoder, such as G-PCC encoder 200 (FIG. 1). In the example of FIG. 8, laser package 1002 emits a laser beam 1004 that reflects off a pedestrian 1006 or other objects in the road. The data source of vehicle 1000 may generate a point cloud based on a signal generated by laser package 1002. The G-PCC encoder of vehicle 1000 may encode the point cloud to generate a bitstream 1008, such as geometry bitstream 203 (FIG. 2) and attribute bitstream 205 (FIG. 2). Bitstream 1008 may include significantly fewer bits than the unencoded point cloud obtained by the G-PCC encoder. An output interface of vehicle 1000 (e.g., output interface 108 (FIG. 1)) may transmit bitstream 1008 to one or more other devices. Thus, vehicle 1000 may be able to transmit bitstream 1008 to other devices more quickly than unencoded point cloud data. Furthermore, bitstream 1008 may require less data storage capacity.

[0112]

[0115] In the example of FIG. 8, vehicle 1000 may transmit bitstream 1008 to another vehicle 1010. Vehicle 1010 may include a G-PCC decoder, such as G-PCC decoder 300 (FIG. 1). The G-PCC decoder of vehicle 1010 may decode bitstream 1008 to reconstruct a point cloud. Vehicle 1010 may use the reconstructed point cloud for various purposes. For example, vehicle 1010 may determine, based on the reconstructed point cloud, that pedestrian 1006 is in the road ahead of vehicle 1000 and therefore, for example, to begin slowing down even before the driver of vehicle 1010 realizes that pedestrian 1006 is in the road. Thus, in some examples, vehicle 1010 may perform autonomous navigation operations, generate notifications or warnings, or take another action based on the reconstructed point cloud.

[0113]

[0116] Additionally or alternatively, the vehicle 1000 may transmit the bitstream 1008 to the server system 1012. The server system 1012 may use the bitstream 1008 for various purposes. For example, the server system 1012 may store the bitstream 1008 for subsequent reconstruction of a point cloud. In this example, the server system 1012 may use the point cloud along with other data (e.g., vehicle telemetry data generated by the vehicle 1000) to train an autonomous driving system. In another example, the server system 1012 may store the bitstream 1008 for subsequent reconstruction for forensic crash investigations (e.g., if the vehicle 1000 collides with the pedestrian 1006). The techniques of this disclosure for deriving a final QP value may result in fewer bits being required to encode a point cloud using the system of FIG. 8.

[0114]

[0117] FIG. 9 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of this disclosure may be used. Extended reality (XR) is a term used to cover a range of technologies including augmented reality (AR), mixed reality (MR), and virtual reality (VR). In the example of FIG. 9, a first user 1100 is located at a first location 1102. The user 1100 is wearing an XR headset 1104. As an alternative to the XR headset 1104, the user 1100 may use a mobile device (e.g., a mobile phone, a tablet computer, etc.). The XR headset 1104 includes a depth-sensing sensor, such as a LIDAR system, that detects the position of a point on an object 1106 at the location 1102. A data source in the XR headset 1104 may use signals generated by the depth-sensing sensor to generate a point cloud representation of the object 1106 at the location 1102. The XR headset 1104 may include a G-PCC encoder (e.g., the G-PCC encoder 200 of FIG. 1) configured to encode the point cloud to generate a bitstream 1108.

[0115]

[0118] The XR headset 1104 may transmit the bitstream 1108 (e.g., over a network such as the Internet) to an XR headset 1110 worn by a user 1112 at a second location 1114. The XR headset 1110 may decode the bitstream 1108 to reconstruct a point cloud. The XR headset 1110 may use the point cloud to generate an XR visualization (e.g., an AR, MR, VR visualization) representing the object 1106 at the location 1102. Thus, in some examples, the user 1112 at the location 1114 may have a 3D immersive experience of the location 1102, such as when the XR headset 1110 generates a VR visualization. In some examples, the XR headset 1110 may determine the position of the virtual object based on the reconstructed point cloud. For example, the XR headset 1110 may determine, based on the reconstructed point cloud, that the environment (e.g., location 1102) includes a flat surface and then determine that a virtual object (e.g., a cartoon character) should be placed on the flat surface. The XR headset 1110 may generate an XR visualization with the virtual object in the determined position. For example, the XR headset 1110 may show the cartoon character sitting on the flat surface. The techniques of this disclosure for deriving a final QP value may result in fewer bits being required to encode the point cloud using the system of FIG. 9.

[0116]

[0119] FIG. 10 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of this disclosure may be used. In the example of FIG. 10, a mobile device 1200, such as a mobile phone or tablet computer, includes a depth-sensing sensor, such as a LIDAR system, that detects the location of points on an object 1202 in the environment of the mobile device 1200. A data source of the mobile device 1200 may use signals generated by the depth-sensing sensor to generate a point cloud representation of the object 1202. The mobile device 1200 may include a G-PCC encoder (e.g., G-PCC encoder 200 of FIG. 1) configured to encode the point cloud to generate a bitstream 1204. In the example of FIG. 10, the mobile device 1200 may transmit the bitstream to a remote device 1206, such as a server system or another mobile device. The remote device 1206 may decode the bitstream 1204 to reconstruct the point cloud. The remote device 1206 may use the point cloud for various purposes. For example, the remote device 1206 may use the point cloud to generate a map of the environment of the mobile device 1200. For example, the remote device 1206 may generate a map of the interior of a building based on the reconstructed point cloud. In another example, the remote device 1206 may generate imagery (e.g., computer graphics) based on the point cloud. For example, the remote device 1206 may use the points of the point cloud as vertices of a polygon and use the color attributes of the points as a basis for shading the polygon. In some examples, the remote device 1206 may perform facial recognition using the point cloud. The techniques of this disclosure for deriving a final QP value may result in fewer bits required to encode a point cloud using the system of FIG. 10.

[0117]

[0120] The following is a non-limiting list of aspects that may be in accordance with one or more techniques of the present disclosure.

[0118]

[0121] Aspect 1A - A method of coding a point cloud, the method comprising receiving point cloud data, determining a quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a QP multiplier, and coding the point cloud data using the QP value.

[0119]

[0122] Aspect 2A - Determining the QP value comprises determining the QP value according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the QP multiplier, the method according to Aspect 1A.

[0120]

[0123] Aspect 3A - The method according to Aspect 2A, wherein the node QP offset is a multiple of (1 << geom_qp_multiplier_log2).

[0121]

[0124] Aspect 4A - The method according to Aspect 2A, further comprising rounding the QP value to (1 << geom_qp_multiplier_log2).

[0122]

[0125] Aspect 5A - A device for processing a point cloud, the device comprising one or more means for implementing the method according to any of Aspects 1A to 4A.

[0123]

[0126] Aspect 6A - The device according to Aspect 5A, wherein the one or more means comprise one or more processors implemented in a circuit.

[0124]

[0127] Embodiment 7A - The device of any of embodiments 5A or 6A, further comprising a memory for storing data representing the point cloud.

[0125]

[0128] Embodiment 8A - A device according to any of embodiments 5A to 7A, wherein the device comprises a decoder.

[0126]

[0129] Embodiment 9A - A device according to any of embodiments 5A to 8A, wherein the device comprises an encoder.

[0127]

[0130] Embodiment 10A - The device of any of embodiments 5A to 9A, further comprising a device for generating a point cloud.

[0128]

[0131] Embodiment 11A - A device according to any of embodiments 5A to 10A, further comprising a display for presenting an image based on the point cloud.

[0129]

[0132] Aspect 12A - A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to perform a method according to any of aspects 1A to 4A.

[0130]

[0133] Aspect 1B - An apparatus configured to encode a point cloud, the apparatus comprising: a memory configured to store point cloud data; and one or more processors implemented in circuitry and in communication with the memory, the one or more processors configured to: receive the point cloud data; determine final quantization parameter (QP) values ​​for the point cloud data as a function of node QP offsets multiplied by a geometry QP multiplier; and encode the point cloud data using the final QP values ​​to create an encoded point cloud.

[0131]

[0134] Aspect 2B - The apparatus according to Aspect 1B, further configured such that one or more processors encode a node QP offset syntax element indicating a node QP offset and encode a geometry QP multiplier syntax element indicating a geometry QP multiplier.

[0132]

[0135] Aspect 3B - The apparatus according to Aspect 1B, further configured such that, to determine a final QP value, one or more processors determine the final QP value according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier.

[0133]

[0136] Aspect 4B - The apparatus according to Aspect 3B, wherein the node QP offset is a multiple of (1 << geom_qp_multiplier_log2).

[0134]

[0137] Aspect 5B - The apparatus according to Aspect 3B, further configured such that one or more processors round the final QP value to (1 << geom_qp_multiplier_log2).

[0135]

[0138] Aspect 6B - The apparatus according to Aspect 1B, further comprising a sensor configured to generate point cloud data.

[0136]

[0139] Aspect 7B - A method of encoding a point cloud, the method comprising receiving point cloud data, determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier, and encoding the point cloud data using the final QP value to create an encoded point cloud.

[0137]

[0140] The method according to aspect 7B, further comprising encoding a node QP offset syntax element indicating the node QP offset and encoding a geometry QP multiplier syntax element indicating the geometry QP multiplier.

[0138]

[0141] The method according to aspect 7B, wherein determining the final QP value comprises determining the final QP value according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier.

[0139]

[0142] The method according to aspect 9B, wherein the node QP offset is a multiple of (1 << geom_qp_multiplier_log2).

[0140]

[0143] The method according to aspect 9B, further comprising rounding the final QP value to (1 << geom_qp_multiplier_log2).

[0141]

[0144] The method according to aspect 7B, further comprising generating point cloud data.

[0142]

[0145] Aspect 13B - A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors of a device configured to encode a point cloud to receive point cloud data, determine final quantization parameter (QP) values ​​for the point cloud data as a function of node QP offsets multiplied by a geometry QP multiplier, and encode the point cloud data using the final QP values ​​to create an encoded point cloud.

[0143]

[0146] Aspect 14B - An apparatus configured to encode a point cloud, the apparatus comprising: means for receiving point cloud data; means for determining final quantization parameter (QP) values ​​for the point cloud data as a function of node QP offsets multiplied by a geometry QP multiplier; and means for encoding the point cloud data using the final QP values ​​to create an encoded point cloud.

[0144]

[0147] Aspect 15B - An apparatus configured to decode a point cloud, the apparatus comprising: a memory configured to store encoded point cloud data; and one or more processors implemented in circuitry and in communication with the memory, the one or more processors configured to: receive the encoded point cloud data; determine final quantization parameter (QP) values ​​for the point cloud data as a function of node QP offsets multiplied by a geometry QP multiplier; and decode the encoded point cloud data using the final QP values ​​to create a decoded point cloud.

[0145]

[0148] Aspect 16B - The apparatus according to Aspect 15B, further configured such that one or more processors decode a node QP offset syntax element to determine a node QP offset and decode a geometry QP multiplier syntax element to determine a geometry QP multiplier.

[0146]

[0149] Aspect 17B - The apparatus according to Aspect 15B, further configured such that one or more processors determine a final QP value according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier.

[0147]

[0150] Aspect 18B - The apparatus according to Aspect 17B, where the node QP offset is a multiple of (1 << geom_qp_multiplier_log2).

[0148]

[0151] Aspect 19B - The apparatus according to Aspect 17B, further configured such that one or more processors round the final QP value to (1 << geom_qp_multiplier_log2).

[0149]

[0152] Aspect 20B - The apparatus according to Aspect 15B, further comprising a display configured to display the decoded point cloud.

[0150]

[0153] Aspect 21B - A method for decoding a point cloud, the method comprising receiving encoded point cloud data, determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier, and decoding the encoded point cloud data using the final QP value to create a decoded point cloud.

[0151]

[0154] The method according to aspect 21B, further comprising decoding a node QP offset syntax element to determine a node QP offset and decoding a geometry QP multiplier syntax element to determine a geometry QP multiplier.

[0152]

[0155] The method according to aspect 21B, wherein determining the final QP value comprises determining the final QP value according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier.

[0153]

[0156] The method according to aspect 23B, wherein the node QP offset is a multiple of (1 << geom_qp_multiplier_log2).

[0154]

[0157] The method according to aspect 23B, further comprising rounding the final QP value to (1 << geom_qp_multiplier_log2).

[0155]

[0158] The method according to aspect 21B, further comprising displaying the decoded point cloud.

[0156]

[0159] Aspect 27B - A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors of a device configured to decode a point cloud to receive encoded point cloud data, determine final quantization parameter (QP) values ​​for the point cloud data as a function of node QP offsets multiplied by a geometry QP multiplier, and decode the encoded point cloud data using the final QP values ​​to create a decoded point cloud.

[0157]

[0160] Aspect 28B - An apparatus configured to decode a point cloud, the apparatus comprising: means for receiving encoded point cloud data; means for determining final quantization parameter (QP) values ​​for the point cloud data as a function of node QP offsets multiplied by a geometry QP multiplier; and means for decoding the encoded point cloud data using the final QP values ​​to create a decoded point cloud.

[0158]

[0161] Aspect 1C - An apparatus configured to encode a point cloud, the apparatus comprising: a memory configured to store point cloud data; and one or more processors implemented in circuitry and in communication with the memory, the one or more processors configured to: receive the point cloud data; determine final quantization parameter (QP) values ​​for the point cloud data as a function of node QP offsets multiplied by a geometry QP multiplier; and encode the point cloud data using the final QP values ​​to create an encoded point cloud.

[0159]

[0162] Aspect 2C - The apparatus according to Aspect 1C, further configured such that one or more processors encode a node QP offset syntax element indicating a node QP offset and encode a geometry QP multiplier syntax element indicating a geometry QP multiplier.

[0160]

[0163] Aspect 3C - The apparatus according to any one of Aspects 1C to 2C, further configured such that one or more processors determine a final QP value according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier.

[0161]

[0164] Aspect 4C - The apparatus according to Aspect 3C, where the node QP offset is a multiple of (1 << geom_qp_multiplier_log2).

[0162]

[0165] Aspect 5C - The apparatus according to Aspect 3C, further configured such that one or more processors round the final QP value to (1 << geom_qp_multiplier_log2).

[0163]

[0166] Aspect 6C - The apparatus according to any one of Aspects 1C to 5C, further comprising a sensor configured to generate point cloud data.

[0164]

[0167] Aspect 7C - A method of encoding a point cloud, the method comprising receiving point cloud data, determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier, and encoding the point cloud data using the final QP value to create an encoded point cloud.

[0165]

[0168] The method according to aspect 7C, further comprising encoding a node QP offset syntax element indicating the node QP offset and encoding a geometry QP multiplier syntax element indicating the geometry QP multiplier.

[0166]

[0169] The method according to any of aspects 7C to 8C, wherein determining the final QP value comprises determining the final QP value according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier.

[0167]

[0170] The method according to aspect 9C, wherein the node QP offset is a multiple of (1 << geom_qp_multiplier_log2).

[0168]

[0171] The method according to aspect 9C, further comprising rounding the final QP value to (1 << geom_qp_multiplier_log2).

[0169]

[0172] The method according to any of aspects 7C to 11C, further comprising generating point cloud data.

[0170]

[0173] Aspect 13C - An apparatus configured to decode a point cloud, the apparatus comprising a memory configured to store encoded point cloud data, and one or more processors implemented in a circuit and communicating with the memory, the one or more processors being configured to receive the encoded point cloud data, determine a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier, and decode the encoded point cloud data using the final QP value to create a decoded point cloud.

[0171]

[0174] Aspect 14C - The apparatus according to aspect 13C, further configured such that one or more processors decode a node QP offset syntax element to determine a node QP offset and decode a geometry QP multiplier syntax element to determine a geometry QP multiplier.

[0172]

[0175] Aspect 15C - The apparatus according to any of aspects 13C to 14C, further configured such that one or more processors determine a final QP value according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier.

[0173]

[0176] Aspect 16C - The apparatus according to aspect 15C, wherein the node QP offset is a multiple of (1 << geom_qp_multiplier_log2).

[0174]

[0177] Aspect 17C - The apparatus according to aspect 15C, wherein one or more processors are further configured to round the final QP value to (1<<geom_qp_multiplier_log2).

[0175]

[0178] Aspect 18C - The apparatus according to any one of aspects 13C to 17C, further comprising a display configured to display the decoded point cloud.

[0176]

[0179] Aspect 19C - A method of decoding a point cloud, the method comprising receiving encoded point cloud data, determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier, and decoding the encoded point cloud data using the final QP value to create a decoded point cloud.

[0177]

[0180] Aspect 20C - The method according to aspect 19C, further comprising decoding a node QP offset syntax element to determine a node QP offset and decoding a geometry QP multiplier syntax element to determine a geometry QP multiplier.

[0178]

[0181] Aspect 21C - Determining the final QP value comprises determining the final QP value according to the formula qpFinal=((base_qp+slice_qp)<<geom_qp_multiplier_log2)+(node_qp_offset<<geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier, the method according to any one of aspects 19C to 20C.

[0179]

[0182] Aspect 22C - The method according to Aspect 21C, wherein the node QP offset is a multiple of (1<<geom_qp_multiplier_log2).

[0180]

[0183] Aspect 23C - The method according to Aspect 21C, further comprising rounding the final QP value to (1<<geom_qp_multiplier_log2).

[0181]

[0184] Aspect 24C - The method according to any one of Aspects 19C to 23C, further comprising displaying the decoded point cloud.

[0182]

[0185] Examples in various aspects of the present disclosure can be used individually or in any combination.

[0183]

[0186] It should be recognized that, depending on the example, some of the acts or events of any of the techniques described herein can be performed in a different sequence, can be added, merged, or completely excluded (e.g., not all of the described acts or events are necessary for the practice of the technique). Moreover, in some examples, the acts or events can be performed not sequentially, for example, simultaneously through multi-threaded processing, interrupt processing, or multiple processors.

[0184]

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

[0185]

[0188] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included within the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but instead cover non-transitory tangible storage media. As used herein, disk and disc include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where disks typically reproduce data magnetically and discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0186]

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

[0187]

[0190] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chipsets). Although various components, modules, or units have been described in this disclosure to highlight functional aspects of devices configured to implement the disclosed techniques, those components, modules, or units do not necessarily require realization by different hardware units. Rather, as described above, the various units may be combined in a codec hardware unit or provided by a collection of interoperable hardware units, including one or more processors described above, along with suitable software and / or firmware.

[0188]

[0191] Various examples have been described. These and other examples are within the scope of the following claims. The invention described in the claims of the present application at the time of filing is appended below. [C1] An apparatus configured to decode a point cloud, the apparatus comprising: a memory configured to store encoded point cloud data; one or more processors implemented in a circuit and communicating with the memory; wherein the one or more processors are configured to: receive the encoded point cloud data; determine a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier; decode the encoded point cloud data using the final QP value to create a decoded point cloud; An apparatus configured to perform the above. [C2] The one or more processors are further configured to: decode a node QP offset syntax element to determine the node QP offset; decode a geometry QP multiplier syntax element to determine the geometry QP multiplier; The apparatus according to C1, further configured to perform the above. [C3] To determine the final QP value, the one or more processors are further configured to determine the final QP value according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier. The apparatus according to C1. [C4] The apparatus according to C3, wherein the node QP offset is a multiple of (1 << geom_qp_multiplier_log2). [C5] The apparatus according to C3, wherein the one or more processors are further configured to round the final QP value to (1 << geom_qp_multiplier_log2). [C6] The apparatus according to C1, further comprising a display configured to display the decoded point cloud. [C7] An apparatus configured to encode a point cloud, the apparatus comprising: a memory configured to store point cloud data; one or more processors implemented in a circuit and communicating with the memory; wherein the one or more processors are configured to: receive the point cloud data; determine a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier; encode the point cloud data using the final QP value to create an encoded point cloud; An apparatus configured to perform the above steps. [C8] The one or more processors are further configured to: encode a node QP offset syntax element indicating the node QP offset; encode a geometry QP multiplier syntax element indicating the geometry QP multiplier; The apparatus according to C7, further configured to perform the above steps. [C9] To determine the final QP value, the one or more processors are further configured to determine the final QP value according to the formula: qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier. The apparatus according to C7. [C10] The apparatus according to C9, wherein the node QP offset is a multiple of (1 << geom_qp_multiplier_log2). [C11] The apparatus according to C9, wherein the one or more processors are further configured to round the final QP value to (1 << geom_qp_multiplier_log2). [C12] The apparatus according to C7, further comprising a sensor configured to generate the point cloud data. [C13] A method for decoding a point cloud, comprising: receiving encoded point cloud data; Determining the final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier, Using the final QP value to decode the encoded point cloud data to create a decoded point cloud, A method comprising the steps of. [C14] Decoding a node QP offset syntax element to determine the node QP offset, Decoding a geometry QP multiplier syntax element to determine the geometry QP multiplier, The method according to C13, further comprising the steps of. [C15] Determining the final QP value comprises determining the final QP value according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier, the method according to C13. [C16] The method according to C15, wherein the node QP offset is a multiple of (1 << geom_qp_multiplier_log2). [C17] The method according to C15, further comprising rounding the final QP value to (1 << geom_qp_multiplier_log2). [C18] The method according to C13, further comprising displaying the decoded point cloud. [C19] A method for encoding a point cloud, comprising: Receiving point cloud data, Determining the final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier, Encoding the point cloud data using the final QP value to create an encoded point cloud, A method comprising the steps of. [C20] Encoding a node QP offset syntax element indicating the node QP offset, Encoding a geometry QP multiplier syntax element indicating the geometry QP multiplier, The method according to C19, further comprising the steps of. [C21] Determining the final QP value comprises determining the final QP value according to the formula qpFinal = ((base_qp + slice_qp) << geom_qp_multiplier_log2) + (node_qp_offset << geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is the base QP value, slice_qp is the slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier, the method described in C19. [C22] The node QP offset is a multiple of (1 << geom_qp_multiplier_log2), the method described in C21. [C23] Further comprising rounding the final QP value to (1 << geom_qp_multiplier_log2), the method described in C21. [C24] Further comprising generating the point cloud data, the method described in C19. [C25] A non - transient computer - readable storage medium storing instructions, which when executed, cause one or more processors of a device configured to encode a point cloud to receive point cloud data; determine a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier; encode the point cloud data using the final QP value to create an encoded point cloud; The non - transient computer - readable storage medium. [C26] An apparatus configured to encode a point cloud, comprising means for receiving point cloud data; means for determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier; means for encoding the point cloud data using the final QP value to create an encoded point cloud; The apparatus. [C27] A non - transient computer - readable storage medium storing instructions, which when executed, cause one or more processors of a device configured to decode a point cloud to receiving encoded point cloud data; determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier; decoding the encoded point cloud data using the final QP value to create a decoded point cloud; A non-transitory computer-readable storage medium that causes [C28] 1. An apparatus configured to decode a point cloud, comprising: means for receiving encoded point cloud data; means for determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier; means for decoding the encoded point cloud data using the final QP value to create a decoded point cloud; An apparatus comprising:

Claims

1. 1. An apparatus configured to decode a point cloud, the apparatus comprising: a memory configured to store the encoded point cloud data; one or more processors implemented in circuitry and in communication with said memory; wherein the one or more processors: receiving the encoded point cloud data; determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier; decoding the encoded point cloud data using the final QP value to create a decoded point cloud; configured to: The node QP offset is a multiple of (1<<geom_qp_multiplier_log2), where geom_qp_multiplier_log2 is the geometry QP multiplier. Device.

2. the one or more processors: decoding a node QP offset syntax element to determine the node QP offset; decoding a geometry QP multiplier syntax element to determine the geometry QP multiplier; The apparatus of claim 1 , further configured to:

3. 2. The apparatus of claim 1, wherein to determine the final QP value, the one or more processors are further configured to determine the final QP value according to the equation: qpFinal=((base_qp+slice_qp)<<geom_qp_multiplier_log2)+(node_qp_offset<<geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is a base QP value, slice_qp is a slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier.

4. The apparatus of claim 3 , wherein the one or more processors are further configured to round the final QP value to (1<<geom_qp_multiplier_log2).

5. The apparatus of claim 1 , further comprising a display configured to display the decoded point cloud.

6. 1. An apparatus configured to encode a point cloud, the apparatus comprising: a memory configured to store point cloud data; one or more processors implemented in circuitry and in communication with said memory; wherein the one or more processors: receiving the point cloud data; determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier; encoding the point cloud data using the final QP value to create an encoded point cloud; configured to: The node QP offset is a multiple of (1<<geom_qp_multiplier_log2), where geom_qp_multiplier_log2 is the geometry QP multiplier. Device.

7. the one or more processors: encoding a node QP offset syntax element that indicates the node QP offset; encoding a geometry QP multiplier syntax element that indicates the geometry QP multiplier; The apparatus of claim 6 , further configured to:

8. 7. The apparatus of claim 6, wherein to determine the final QP value, the one or more processors are further configured to determine the final QP value according to an equation: qpFinal=((base_qp+slice_qp)<<geom_qp_multiplier_log2)+(node_qp_offset<<geom_qp_multiplier_log2), where qpFinal is the final QP value, base_qp is a base QP value, slice_qp is a slice QP value, node_qp_offset is the node QP offset, and geom_qp_multiplier_log2 is the geometry QP multiplier.

9. The apparatus of claim 8 , wherein the one or more processors are further configured to round the final QP value to (1<<geom_qp_multiplier_log2).

10. The apparatus of claim 6 , further comprising a sensor configured to generate the point cloud data.

11. 1. A method for decoding a point cloud, comprising: receiving encoded point cloud data; determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier; decoding the encoded point cloud data using the final QP value to create a decoded point cloud; Equipped with The node QP offset is a multiple of (1<<geom_qp_multiplier_log2), where geom_qp_multiplier_log2 is the geometry QP multiplier. method.

12. 1. A method for encoding a point cloud, comprising: receiving point cloud data; determining a final quantization parameter (QP) value for the point cloud data as a function of a node QP offset multiplied by a geometry QP multiplier; encoding the point cloud data using the final QP value to create an encoded point cloud; Equipped with The node QP offset is a multiple of (1<<geom_qp_multiplier_log2), where geom_qp_multiplier_log2 is the geometry QP multiplier. method.

13. A non-transitory computer-readable storage medium storing instructions, comprising: The instructions, when executed, cause one or more processors of a device configured to encode a point cloud to perform the method of claim 12; or the instructions, when executed, cause one or more processors of a device configured to decode a point cloud to perform the method of claim 11. A non-transitory computer-readable storage medium.

Citation Information

Patent Citations

  • Point group decoding device, point group decoding method, and program

    JP2022056226A

  • Point cloud decoding device, point cloud decoding method, and program

    US20230222700A1