Inter-predictive coding for geometry point cloud compression
Patent Information
- Application Number
- JP2023534191
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-12-28
- Filing Date
- 2021-12-29
- Publication Date
- 2024-12-23
- Estimated Expiration
- 2041-12-29
AI Technical Summary
【0010】 1つまたは複数の例の詳細が、添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical field]
[0001] This application claims priority to U.S. Patent Application No. 17 / 646,217, filed December 28, 2021, as well as U.S. Provisional Application No. 63 / 131,716, filed December 29, 2020, U.S. Provisional Application No. 63 / 134,492, filed January 6, 2021, U.S. Provisional Application No. 63 / 170,907, filed April 5, 2021, U.S. Provisional Application No. 63 / 177,186, filed April 20, 2021, U.S. Provisional Application No. 63 / 179,892, filed April 26, 2021, and U.S. Provisional Application No. 63 / 218,170, filed July 2, 2021, the entire contents of which are incorporated by reference herein. U.S. Application No. 17 / 646,217, filed December 28, 2021, claims the benefit of U.S. Provisional Application No. 63 / 131,716, filed December 29, 2020, U.S. Provisional Application No. 63 / 134,492, filed January 6, 2021, U.S. Provisional Application No. 63 / 170,907, filed April 5, 2021, U.S. Provisional Application No. 63 / 177,186, filed April 20, 2021, U.S. Provisional Application No. 63 / 179,892, filed April 26, 2021, and U.S. Provisional Application No. 63 / 218,170, filed July 2, 2021.
[0002] This disclosure relates to point cloud encoding and decoding. [Prior art documents] [Non-patent literature]
[0003] [Non-Patent Document 1] G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19328, Brussels, Belgium, January 2020 [Non-Patent Document 2] G-PCC Codec Description v8, ISO / IEC JTC1 / SC29 / WG11 w19525, Brussels, Belgium, January 2020 [Brief description of the drawings]
[0004] [Figure 1] FIG. 1 is a block diagram illustrating an example encoding and decoding system that may implement the techniques of this disclosure. [Diagram 2] FIG. 1 is a block diagram illustrating an example geometry point cloud compression (G-PCC) encoder, in accordance with one or more aspects of the present disclosure. [Diagram 3] FIG. 2 is a block diagram illustrating an example G-PCC decoder, in accordance with one or more aspects of the present disclosure. [Figure 4] FIG. 1 is a conceptual diagram illustrating octree partitioning for geometry coding, in accordance with one or more aspects of the present disclosure. [Figure 5A] FIG. 1 is a conceptual diagram of a rotating LIDAR acquisition model, in accordance with one or more embodiments of the present disclosure. [Figure 5B] FIG. 1 is a conceptual diagram of a rotating LIDAR acquisition model, in accordance with one or more embodiments of the present disclosure. [Figure 6] FIG. 2 is a conceptual diagram of a prediction tree for predictive geometry coding, in accordance with one or more aspects of the present disclosure. [Figure 7] FIG. 2 is a conceptual diagram illustrating an example inter-prediction process for predicting points of a point cloud, in accordance with one or more aspects of the present disclosure. [Figure 8] 1 is a flow diagram illustrating an example technique for inter-predicting points of a point cloud, in accordance with one or more aspects of the present disclosure. [Figure 9] FIG. 1 is a conceptual diagram illustrating an example distance measurement system that may be used with one or more techniques of this disclosure. [Figure 10] 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 11] 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 12] 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. Summary of the Invention [Means for solving the problem]
[0005] In general, this disclosure describes techniques for coding nodes of a point cloud using inter prediction, such as for the currently developing Geometry Point Cloud Compression (G-PCC) standard. However, the example techniques are not limited to the G-PCC standard. In some examples of G-PCC, the coordinates of the location of a node (also called a point) of a point cloud may be converted to the (r, φ, i) domain, where the location of the node is represented by three parameters: radius r, azimuth angle φ, and laser index i (e.g., laser identifier). When using an angle mode for predictive geometry coding in G-PCC, the G-PCC coder may perform prediction in the (r, φ, i) domain. For example, to code a particular node of a particular frame of a point cloud, the G-PCC coder may determine a predicted radius r, azimuth angle φ, and laser index i of the particular node based on another node of the particular frame, and add the predicted radius r, azimuth angle φ, and laser index i of the node to the residual data (e.g., residual radius r, residual azimuth angle φ, and residual laser index i) to determine the reconstructed radius r, azimuth angle φ, and laser index i of the particular node. Since coding the residual data may account for a large portion of the coding overhead, the coding efficiency (e.g., the amount of bits used to code a point) may be a factor of how close the predicted radius r, azimuth angle φ, and laser index i of the particular node are to the reconstructed radius r, azimuth angle φ, and laser index i of the particular node. Thus, it may be desirable to enable generation of predicted parameters for a node that are as close as possible to the actual parameters of the node.
[0006] According to one or more techniques of the present disclosure, a G-PCC coder may predict a current point of a current frame of a point cloud using inter prediction. For example, to predict a current point using inter prediction, the G-PCC coder may identify a reference point in a frame different from the current frame and predict one or more parameters of the current point (e.g., radius r, azimuth angle φ, and laser index i) based on one or more parameters of the reference point. If the parameters of the reference point are closer to the parameters of the current point than the parent or other available points in the current frame, predicting the current point using inter prediction may reduce the size of the residual data. In this manner, the techniques of the present disclosure may enable a G-PCC coder to improve coding efficiency.
[0007] In one example, a method for processing a point cloud includes, in response to a decision to predict a current point in the point cloud using predictive geometry coding, selecting a prediction mode for the current point from a set of prediction modes, the set of prediction modes including at least an intra-prediction mode and an inter-prediction mode, and, in response to the selection of the inter-prediction mode for the current point, predicting the current point of the point cloud using inter-prediction.
[0008] In another example, a device for processing a point cloud comprises a memory configured to store at least a portion of the point cloud and one or more processors implemented in a circuit, the one or more processors configured to: in response to a determination to predict a current point in the point cloud using predictive geometry coding, select a prediction mode for the current point from a set of prediction modes, the set of prediction modes including at least an intra-prediction mode and an inter-prediction mode, and in response to a selection of the inter-prediction mode for the current point, predict the current point of the point cloud using inter prediction.
[0009] In another example, a computer-readable storage medium stores instructions that, when executed by one or more processors, cause the one or more processors to: in response to a determination to predict a current point in the point cloud using predictive geometry coding, select a prediction mode for the current point from a set of prediction modes, the set of prediction modes including at least an intra-prediction mode and an inter-prediction mode, and in response to selecting the inter-prediction mode for the current point, predict the current point of the point cloud using inter-prediction.
[0010] 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. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0011] When using the angle mode for predictive geometry coding in G-PCC, the G-PCC coder may perform prediction in the (r,φ,i) domain. For example, to code a particular node of a particular frame of a point cloud, the G-PCC coder may determine a predicted radius r, azimuth angle φ, and laser index i of the particular node based on another node of the particular frame, and add the predicted radius r, azimuth angle φ, and laser index i of the node to the residual data (e.g., residual radius r, residual azimuth angle φ, and residual laser index i) to determine the reconstructed radius r, azimuth angle φ, and laser index i of the particular node. Because coding the residual data may account for a large portion of the coding overhead, the coding efficiency (e.g., the amount of bits used to code a point) may be a factor of how close the predicted radius r, azimuth angle φ, and laser index i of the particular node are to the reconstructed radius r, azimuth angle φ, and laser index i of the particular node. It may therefore be desirable to enable the generation of predicted parameters for a node that are as close as possible to the node's actual parameters.
[0012] According to one or more techniques of the present disclosure, a G-PCC coder may predict a current point of a current frame of a point cloud using inter prediction. For example, to predict a current point using inter prediction, the G-PCC coder may identify a reference point in a frame different from the current frame and predict one or more parameters of the current point (e.g., radius r, azimuth angle φ, and laser index i) based on one or more parameters of the reference point. If the parameters of the reference point are closer to the parameters of the current point than the parent or other available points in the current frame, predicting the current point using inter prediction may reduce the size of the residual data. In this manner, the techniques of the present disclosure may enable a G-PCC coder to improve coding efficiency.
[0013] 1 is a block diagram illustrating an example encoding and decoding system 100 that may perform the techniques of this disclosure. The techniques of this disclosure are generally directed to coding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. In general, point cloud data includes any data for processing a point cloud. Coding may be useful for compressing and / or decompressing the point cloud data.
[0014] As shown in Figure 1, the system 100 includes a source device 102 and a destination device 116. The source device 102 provides encoded point cloud data to be decoded by the destination device 116. In particular, in the example of Figure 1, the source device 102 provides the point cloud data to the destination device 116 via a computer-readable medium 110. The source device 102 and the destination device 116 may comprise any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, terrestrial or marine vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, and the like. In some cases, the source device 102 and the destination device 116 may be equipped for wireless communication.
[0015] In the example of FIG. 1, the source device 102 includes a data source 104, a memory 106, a G-PCC encoder 200, and an output interface 108. The destination device 116 includes an input interface 122, a G-PCC decoder 300, a memory 120, and a data consumer 118. According to this disclosure, the G-PCC encoder 200 of the source device 102 and the G-PCC decoder 300 of the destination device 116 may be configured to apply techniques of this disclosure related to predictive geometry coding. Thus, the source device 102 represents an example of an encoding device, and the destination device 116 represents an example of a decoding device. In other examples, the source device 102 and the destination device 116 may include other components or arrangements. For example, the source device 102 may receive data (e.g., point cloud data) from an internal or external source. Similarly, the destination device 116 may interface with an external data consumer rather than including the data consumer within the same device.
[0016] The system 100 as shown in FIG. 1 is only an example. In general, other digital encoding and / or decoding devices may perform the techniques of this disclosure related to predictive geometry coding. The source device 102 and the destination device 116 are only examples of devices in which the source device 102 generates coded data for transmission to the destination device 116. This disclosure refers to devices that perform coding (encoding and / or decoding) of data as "coding" devices. Thus, the G-PCC encoder 200 and the G-PCC decoder 300 represent examples of coding devices, specifically, encoders and decoders, respectively. In some examples, the source device 102 and the destination device 116 may operate substantially symmetrically such that each of the source device 102 and the destination device 116 includes encoding and decoding components. Thus, the system 100 may support unidirectional or bidirectional transmission between the source device 102 and the destination device 116, for example, streaming, playback, broadcast, telephony, navigation, and other applications.
[0017] In general, the data source 104 represents a source of data (i.e., raw, unencoded point cloud data) and may provide a sequential series of "frames" of data to the G-PCC encoder 200, which encodes the data for the frames. The data source 104 of the source device 102 may include a point cloud capture device, such as any of a variety of cameras or sensors, e.g., a 3D scanner or light detection and ranging (LIDAR) device, one or more video cameras, an archive containing previously captured data, and / or a data feed interface for receiving data from a data content provider. Alternatively or additionally, the point cloud data may be computer-generated from a scanner, camera, sensor, or other data. For example, the data source 104 may generate computer graphics-based data as source data, or result in a combination of live data, archived data, and computer-generated data. In each case, the G-PCC encoder 200 encodes the captured data, the pre-captured data, or the computer-generated data. The G-PCC encoder 200 may reorder the frames from the order in which they were received (sometimes referred to as "display order") to a coding order for coding. The G-PCC encoder 200 may generate one or more bitstreams including the encoded data. The source device 102 may then output the encoded data onto a computer-readable medium 110 via an output interface 108, for receipt and / or retrieval by, for example, an input interface 122 of a destination device 116.
[0018] 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, e.g., the G-PCC encoder 200 and the G-PCC decoder 300, respectively. Although the memory 106 and the memory 120 are shown separately 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, e.g., encoded data 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., for storing raw decoded and / or encoded data. For example, memory 106 and memory 120 may store data representing a point cloud.
[0019] The computer-readable medium 110 may represent any type of medium or device capable of transporting encoded data from the source device 102 to the destination device 116. In one example, the computer-readable medium 110 represents a communication medium that allows the source device 102 to transmit encoded data directly to the destination device 116 in real time, for example, via a radio frequency network or a computer-based network. In accordance with a communication standard, such as a wireless communication protocol, the output interface 108 may modulate a transmission signal including the encoded data, and the input interface 122 may demodulate a received transmission signal. The communication medium may comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum, or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful to facilitate communication from the source device 102 to the destination device 116.
[0020] 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.
[0021] In some examples, the source device 102 may output the encoded data to a file server 114 or another intermediate storage device that may store the encoded data generated by the source device 102. The destination device 116 may access the stored data from the file server 114 via streaming or download. The file server 114 may be any type of server device capable of storing the encoded data and transmitting the encoded data to the destination device 116. The file server 114 may represent a web server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network attached storage (NAS) device. The destination device 116 may access the encoded data from the file server 114 through any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of both suitable for accessing the encoded data stored on the file server 114. The file server 114 and the input interface 122 may be configured to operate according to a streaming transmission protocol, a download transmission protocol, or a combination thereof.
[0022] The output interface 108 and the input interface 122 may represent a wireless transmitter / receiver, a modem, a wired networking component (e.g., an Ethernet card), a wireless communication component operating according to any of the various IEEE 802.11 standards, or other physical components. In examples in which the output interface 108 and the input interface 122 comprise wireless components, the output interface 108 and the input interface 122 may be configured to transfer data, such as data encoded according to a cellular communication standard, such as 4G, 4G-LTE (Long Term Evolution), LTE Advanced, 5G, etc. In some examples in which the output interface 108 comprises a wireless transmitter, the output interface 108 and the input interface 122 may be configured to transfer data, such as data encoded according to other wireless standards, such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee™), the Bluetooth™ standard, etc. In some examples, the source device 102 and / or the destination device 116 may include respective system-on-chip (SoC) devices. For example, the source device 102 may include a SoC device for performing functions attributed to the G-PCC encoder 200 and / or the output interface 108, and the destination device 116 may include a SoC device for performing functions attributed to the G-PCC decoder 300 and / or the input interface 122.
[0023] 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.
[0024] The input interface 122 of the destination device 116 receives the encoded bitstream from the computer-readable medium 110 (e.g., a communication medium, a storage device 112, a file server 114, etc.). The encoded bitstream may include signaling information defined by the G-PCC encoder 200 that is also used by the G-PCC decoder 300, such as syntax elements having values that describe characteristics and / or processing of a coded unit (e.g., a slice, a picture, a group of pictures, a sequence, etc.). The data consumer 118 uses the decoded data. For example, the data consumer 118 may use the decoded data to determine the location of a physical object. In some examples, the data consumer 118 may include a display for presenting an image based on the point cloud.
[0025] The G-PCC encoder 200 and the G-PCC decoder 300 may each be implemented as any of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the techniques are implemented partially in software, a device may store instructions for the software on a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of the present disclosure. Each of the G-PCC encoder 200 and the G-PCC decoder 300 may be included in one or more encoders or decoders, any of which may be integrated as part of a composite encoder / decoder (codec) in the respective device. A device including the G-PCC encoder 200 and / or the G-PCC decoder 300 may comprise one or more integrated circuits, microprocessors, and / or other types of devices.
[0026] The G-PCC encoder 200 and the G-PCC decoder 300 may operate according to a coding standard, such as the Video Point Cloud Compression (V-PCC) standard or the Geometry Point Cloud Compression (G-PCC) standard. This disclosure may generally refer to coding (e.g., encoding and decoding) a picture to include the process of encoding or decoding data. The encoded bitstream generally includes a set of values for syntax elements that represent coding decisions (e.g., coding modes).
[0027] This disclosure may generally refer to "signaling" some information, such as syntax elements. The term "signaling" may generally refer to communication of values for syntax elements and / or other data used to decode encoded data. That is, the G-PCC encoder 200 may signal values for syntax elements in a bitstream. In general, signaling refers to generating values in a bitstream. As mentioned above, the source device 102 may transport the bitstream to the destination device 116 substantially in real time or not in real time, such as may occur when storing syntax elements in the storage device 112 for later retrieval by the destination device 116.
[0028] ISO / IEC MPEG (JTC1 / SC29 / WG11) is investigating the potential need for, and aims to develop, a standard for, point cloud coding techniques with compression capabilities significantly beyond those of current methods. The group is working together on this research in a collaborative effort known as the 3-Dimensional Graphics Team (3DG) to evaluate compression design proposals proposed by experts in the field.
[0029] Point cloud compression activities are categorized into two different approaches. The first approach is "Video Point Cloud Compression" (V-PCC), which segments a 3D object and projects the segments into multiple 2D planes (represented as "patches" in a 2D frame), which are further coded by a legacy 2D video codec, such as the High Efficiency Video Coding (HEVC) (ITU-T H.265) codec. The second approach is "Geometry-Based Point Cloud Compression" (G-PCC), which directly compresses the 3D geometry, i.e., the positions of a set of points in 3D space and the associated attribute values (for each point associated with the 3D geometry). G-PCC addresses the compression of point clouds in both category 1 (static point clouds) and category 3 (dynamically acquired point clouds). A draft G-PCC standard is available at G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19328, Brussels, Belgium, January 2020, and the codec description is available at G-PCC Codec Description v8, ISO / IEC JTC1 / SC29 / WG11 w19525, Brussels, Belgium, January 2020.
[0030] A point cloud includes a set of points in 3D space and may have attributes associated with the points. The attributes may be color information such as R, G, B, or Y, Cb, Cr, or reflectance information, or other attributes. Point clouds may be captured by various cameras or sensors, such as LIDAR sensors and 3D scanners, or may be computer generated. Point cloud data is used in a variety of applications, including but not limited to construction (modeling), graphics (3D models for visualization and animation), and the automotive industry (LIDAR sensors used to aid navigation).
[0031] The 3D space occupied by the point cloud data may be enclosed by a virtual bounding box. The positions of the points in the bounding box may be represented with a certain precision, and thus the positions of one or more points may be quantized based on the precision. At the smallest level, the bounding box is divided into voxels, which are the smallest units of space represented by a unit cube. A voxel in the bounding box may be associated with zero, one, or multiple points. The bounding box may be divided into multiple cubic / rectangular regions, which may be called tiles. Each tile may be coded into one or multiple slices. The partitioning of the bounding box into slices and tiles may be based on the number of points in each partition or based on other considerations (e.g., a particular region may be coded as a tile). The slice regions may be further partitioned using partitioning decisions similar to those in video codecs.
[0032] Figure 2 provides an overview of a G-PCC encoder 200. Figure 3 provides an overview of a G-PCC decoder 300. The modules shown are logical and do not necessarily correspond one-to-one to the code implemented in the reference implementation of the G-PCC codec, i.e., the TMC13 test model software studied by ISO / IEC MPEG (JTC1 / SC29 / WG11).
[0033] In both the G-PCC encoder 200 and the G-PCC decoder 300, the point cloud location is coded first. The attribute coding depends on the decoded geometry. In Figures 2 and 3, modules 212, 218, 310, and 314 are options typically used for category 1 data. Modules 220, 222, 316, and 318 are options typically used for category 3 data. All other modules are common between categories 1 and 3.
[0034] For category 3 data, the compressed geometry is typically represented as an octree from the root to the leaf level of individual voxels. For category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree from the root down to the leaf level of a block larger than a voxel) plus a model that approximates the surface in each leaf of the pruned octree. In this way, both category 1 and category 3 data share the octree coding mechanism, and category 1 data may additionally approximate the voxels in each leaf with a surface model. The surface model used is a triangulation involving 1-10 triangles per block, resulting in a triangle soup. Thus, category 1 geometry codecs are known as Trisoup geometry codecs, and category 3 geometry codecs are known as Octree geometry codecs.
[0035] FIG. 4 is a conceptual diagram illustrating an example octree partitioning for geometry coding according to the techniques of this disclosure. In the example shown in FIG. 4, the octree 400 may be partitioned into a series of nodes. For example, each node may be a cubic node. At each node of the octree, for one or more of the node's child nodes, which may include up to eight nodes, when the occupancy is not inferred by the G-PCC decoder 300, the G-PCC encoder 200 may signal the occupancy of the node by the points of the point cloud to the G-PCC decoder 300. A number of neighborhoods are specified, including (a) nodes that share faces with the current octree node, (b) nodes that share faces, edges, or vertices with the current octree node, etc. Within each neighborhood, the occupancy of the node and / or its children may be used to predict the occupancy of the current node or its children. For sparse points at some nodes of the octree, the codec also supports a direct coding mode in which the 3D position of the point is directly coded. A flag may be signaled to indicate that the direct mode is signaled. In direct mode, the positions of the points in the point cloud can be coded directly without any compression. At the lowest level, the number of the point associated with an octree node / leaf node can also be coded.
[0036] 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.
[0037] There are three attribute coding methods in G-PCC: Region Adaptive Hierarchical Transform (RAHT) coding, Interpolation-based Hierarchical Nearest Neighbor Prediction (Predictive Transform), and Interpolation-based Hierarchical Nearest Neighbor Prediction with Update / Lifting Steps (Lifting Transform). RAHT and Lifting Transform are typically used for Category 1 data, and Predictive Transform is typically used for Category 3 data. However, either method may be used for any data, just as with geometry codecs in G-PCC, the attribute coding method used to code the point cloud is specified in the bitstream.
[0038] The coding of attributes may be performed at a certain level of detail (LOD), where each level of detail may be used to obtain a more precise representation of the point cloud attributes, which may be specified based on a distance metric from neighboring nodes or based on a sampling distance.
[0039] In the G-PCC encoder 200, the residual obtained as the output of the coding method for the attribute is quantized (e.g., by one of the arithmetic coding units 214 and / or 226). The quantized residual may be coded using context-adaptive arithmetic coding.
[0040] 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.
[0041] As shown in the example of Figure 2, the G-PCC encoder 200 may receive a set of locations and a set of attributes. The locations may include coordinates of points in the point cloud. The attributes may include information about the points in the point cloud, such as a color associated with the points in the point cloud.
[0042] The coordinate transformation unit 202 may apply a transformation to the coordinates of the points to convert the coordinates from an initial domain to a transformation domain. This disclosure may refer to the transformed coordinates as transformed coordinates. The color transformation unit 204 may apply a transformation to convert color information of the attribute to a different domain. For example, the color transformation unit 204 may convert the color information from an RGB color space to a YCbCr color space.
[0043] Further, in the example of FIG. 2, the voxelization unit 206 may voxelize the transformed coordinates. The voxelization of the transformed coordinates may include quantization and removing some points of the point cloud. In other words, multiple points of the point cloud may be contained within a single "voxel", which may then be treated as one point in some respects. Further, the octree analysis unit 210 may generate an octree based on the voxelized transformed coordinates. Additionally, in the example of FIG. 2, the surface approximation analysis unit 212 may analyze the points to potentially determine a surface representation of the set of points. The arithmetic coding unit 214 may entropy code syntax elements that represent the octree and / or surface information determined by the surface approximation analysis unit 212. The G-PCC encoder 200 may output these syntax elements in a geometry bitstream.
[0044] The geometry reconstruction unit 216 may reconstruct transformation coordinates of points in the point cloud based on the octree, the 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 be different 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. As shown in FIG. 2, the attribute transfer unit 208 may transfer attributes to one or both of the RAHT unit 218 and the LOD generation unit 220.
[0045] Further, the RAHT unit 218 may apply RAHT coding to the attributes of the reconstructed points. Alternatively or additionally, the LOD generation unit 220 and the lifting unit 222 may apply LOD processing and lifting, respectively, to the attributes of the reconstructed points. The RAHT unit 218 and the lifting unit 222 may generate coefficients based on the attributes. The coefficient quantization unit 224 may quantize the coefficients generated by the RAHT unit 218 or the lifting unit 222. The arithmetic coding unit 226 may apply arithmetic coding to syntax elements representing the quantized coefficients. The G-PCC encoder 200 may output these syntax elements in an attribute bitstream.
[0046] In the example of FIG. 3, the G-PCC decoder 300 may include a geometry arithmetic decoding unit 302, an attribute arithmetic decoding unit 304, an octree synthesis unit 306, an inverse quantization unit 308, a surface approximation synthesis unit 310, a geometry reconstruction unit 312, a RAHT unit 314, a LoD generation unit 316, an inverse lifting unit 318, an inverse coordinate transformation unit 320, and an inverse color transformation unit 322.
[0047] The G-PCC decoder 300 may obtain a geometry bitstream and an attribute bitstream. A 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 syntax elements in the geometry bitstream. Similarly, an attribute arithmetic decoding unit 304 may apply arithmetic decoding to syntax elements in the attribute bitstream.
[0048] The octree synthesis unit 306 may synthesize an octree based on syntax elements parsed from the geometry bitstream. In cases where surface approximations are 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.
[0049] Further, the geometry reconstruction unit 312 may perform the reconstruction to determine coordinates of points in the point cloud. The inverse coordinate transformation unit 320 may apply an inverse transformation to the reconstructed coordinates to convert the reconstructed coordinates (positions) of the points in the point cloud from the transformed domain back to the original domain.
[0050] Further, in the example of Figure 3, the inverse quantization unit 308 may inverse quantize the attribute value. The attribute value may be based on a syntax element obtained from the attribute bitstream (e.g., including a syntax element decoded by the attribute arithmetic decoding unit 304). As shown in Figure 3, the inverse quantization unit 308 may forward the attribute value to one or both of the RAHT unit 314 and the LOD generation unit 316.
[0051] 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 use level-of-detail based techniques to determine color values for the points of the point cloud.
[0052] 3, the inverse color transformation unit 322 may apply an inverse color transformation to the color values. The inverse color transformation may be the inverse of the color transformation applied by the color transformation unit 204 of the encoder 200. For example, the color transformation unit 204 may transform the color information from the RGB color space to the YCbCr color space. Accordingly, the inverse color transformation unit 322 may transform the color information from the YCbCr color space to the RGB color space.
[0053] The various units in FIG. 2 and FIG. 3 are shown to aid in understanding the operations performed by the encoder 200 and the decoder 300. The units may be implemented as fixed-function circuits, programmable circuits, or a combination thereof. A fixed-function circuit refers to a circuit that provides a specific function and is preset for the operations that may be performed. A programmable circuit refers to a circuit that may be programmed to perform various tasks and provides flexible functionality in the operations that may be performed. For example, a programmable circuit may execute software or firmware that causes the programmable circuit to operate in a manner defined by the software or firmware instructions. A fixed-function circuit may execute software instructions (e.g., to receive parameters or output parameters), but the type of operations that the fixed-function circuit performs is generally invariant. In some examples, one or more of the units may be different circuit blocks (fixed function or programmable), and in some examples, one or more of the units may be an integrated circuit.
[0054] Predictive geometry coding is introduced as an alternative to octree geometry coding, where nodes are arranged in a tree structure (defining the prediction structure) and various prediction strategies are used to predict the coordinates of each node in the tree associated with its predictor. Figure 6 shows a prediction tree 600, an example of a directed graph, conceptually with arrows pointing in the prediction direction. Horizontally shaded nodes are root vertices and have no predictors, lattice shaded nodes have two children, diagonal shaded nodes have three children, unshaded nodes have one child, and vertically shaded nodes are leaf nodes and have no children. Each node has only one parent node.
[0055] Four prediction strategies can be specified for each node based on its parent (p0), grandfather (p1) and great-grandfather (p2). The prediction strategies include no prediction, delta prediction (p0), linear prediction (2*p0-p1), and parallelogram prediction (2*p0+p1-p2).
[0056] The encoder (e.g., G-PCC encoder 200) may employ any algorithm to generate the predictive tree, and the algorithm used may be determined based on the application / use case, and several strategies may be used. The encoder may encode, for each node, the residual coordinate value in the bitstream starting from the root node in a depth-first manner. Predictive geometry coding may be particularly useful for category 3 (LIDAR-acquired) point cloud data, e.g., for low latency applications.
[0057] Angle mode may be used in predictive geometry coding, where the characteristics of the LIDAR sensor can be exploited in coding the prediction tree more efficiently. The position coordinates are converted to (r,φ,i) (radius, azimuth, and laser index) and prediction is performed in this domain (residuals are coded in the r,φ,i domain). Due to errors in rounding, coding in r,φ,i is not lossless, so a second set of residuals corresponding to Cartesian coordinates may be coded. The description of the encoding and decoding strategy used for the angle mode for predictive geometry coding is reproduced below. The description is based on Fig. 5A and Fig. 5B, which are conceptual diagrams of a rotating LIDAR acquisition model.
[0058] The techniques of this disclosure may be applicable at least to point clouds acquired using a rotating Lidar model, where the Lidar 502 has N lasers (e.g., N=16, 32, 64) that rotate around the Z axis according to an azimuth angle φ (see FIGS. 5A and 5B). Each laser is rotated at a different elevation angle θ(i). i=1...N and height σ(i) i=1...N Laser i strikes a point M with Cartesian integer coordinates (x, y, z) defined according to coordinate system 500 illustrated in FIG.
[0059] The position of M can be modeled with three parameters (r, φ, i) and calculated as follows:
[0060]
number
[0061] The coding process is
[0062]
number
[0063] One may use a quantized version of (r,φ,i), denoted by
[0064]
number
[0065] ,
[0066]
number
[0067] and i may be calculated as follows:
[0068]
number
[0069] however, (q r ,o r ) and (q φ ,o φ )teeth,
[0070]
number
[0071] and
[0072]
number
[0073] is a quantization parameter that controls the precision of each of the · sign(t) is a function that returns 1 if t is positive, and (-1) otherwise. |t| is the absolute value of t.
[0074] To avoid reconstruction inconsistencies due to the use of floating-point arithmetic, σ(i)i=1...N and tan(θ(i)) i=1...N may be precomputed and quantized as follows:
[0075]
number
[0076] however, (q σ ,o σ ) and (q θ ,o θ )teeth,
[0077]
number
[0078] and
[0079]
number
[0080] is a quantization parameter that controls the precision of each of the The reconstructed Cartesian coordinates are obtained as follows:
[0081]
number
[0082] where app_cos(.) and app_sin(.) are approximations of cos(.) and sin(.). The calculations can use fixed-point representations, lookup tables, and linear interpolation.
[0083] In some instances,
[0084]
number
[0085] teeth, - Quantization - Approximate value - Model inaccuracies - Inaccuracies in model parameters The coordinate system may differ from (x,y,z) for various reasons, including:
[0086] In some cases, the reconstruction residual (r x ,r y ,r z ) can be defined as follows:
[0087]
number
[0088] In this method, an encoder (eg, G-PCC encoder 200) may proceed as follows. Model parameters
[0089]
number
[0090] and
[0091]
number
[0092] and the quantization parameter q r , q σ , q θ , and q φ Encode Represents the geometry prediction scheme described in G-PCC DIS
[0093]
number
[0094] Apply to ○ New predictors can be introduced that exploit the properties of lidar. For example, the rotation speed of a lidar scanner around the z-axis is typically constant. Therefore, the G-PCC decoder can be
[0095]
number
[0096] can be predicted as follows:
[0097]
number
[0098] however, ○ (δ φ (k) k=1...K is the set of possible rates from which the encoder can choose. The index k may be explicitly written into the bitstream or may be inferred from the context based on a deterministic strategy applied by both the encoder and the decoder. o n(j) is the number of skipped points, which may be explicitly written in the bitstream or inferred from the context based on a deterministic strategy applied by both the encoder and the decoder. For each node, the reconstruction residual (r x ,r y ,r z )
[0099] A decoder (eg, the G-PCC decoder 300) may proceed as follows. Model parameters
[0100]
number
[0101] and
[0102]
number
[0103] and the quantization parameter q r , q σ , q θ , and q φ Decrypt The geometry prediction scheme described in the G-PCC Draft International Standard (DIS) is used to predict the geometry associated with the node.
[0104]
number
[0105] Decrypt the parameters The reconstructed coordinates as explained above
[0106]
number
[0107] Calculate · Residual (r x ,r y ,r z ) ○ As we will see in the next section, lossy compression reduces the reconstruction residual (r x ,r y ,r z ) can be supported by quantizing Calculate the original coordinates (x,y,z) as follows:
[0108]
number
[0109] Lossy compression reduces the reconstruction residual (r x ,r y ,r z ) or by dropping points.
[0110] The quantized reconstruction residual is calculated as follows:
[0111]
number
[0112] where (q x, o x ), (q y, o y ) and (q z, o z )teeth,
[0113]
number
[0114] ,
[0115]
number
[0116] and
[0117]
number
[0118] is a quantization parameter that controls the precision of each of the
[0119] In some examples, the G-PCC encoder 200 and / or the G-PCC decoder 300 may use trellis quantization to further improve RD (rate-distortion) performance results. The quantization parameters may vary at the sequence / frame / slice / block level to achieve region adaptive quality and for rate control purposes.
[0120] The above techniques may result in one or more drawbacks. Predictive geometry coding utilizes the mechanism of rotating LIDAR to predict the position of a point from another point in the point cloud. However, this mechanism is limited to points within the same point cloud frame. Information from points in previously coded frames (i.e., reference frames) may not be used for prediction.
[0121] According to one or more techniques of the present disclosure, a G-PCC coder (e.g., the G-PCC encoder 200 and / or the G-PCC decoder 300) may use inter prediction to perform point cloud compression. By using inter prediction, the G-PCC coder may use point redundancy across frames to provide additional bitrate savings. Examples in various aspects of the present disclosure may be used individually or in any combination.
[0122] Although this description is primarily directed to a polar coordinate system, the methods disclosed in this application may also be applied to other coordinate systems, such as Cartesian, spherical, or any custom coordinate system that may be used to represent / code point cloud locations and attributes.
[0123] The G-PCC coder may determine whether to code a point using inter prediction or intra prediction. For example, the G-PCC encoder may perform an analysis to determine whether it would be beneficial (e.g., in terms of bit rate or other criteria) to code a particular point using inter prediction or intra prediction. In some examples, the G-PCC coder may perform this determination in one of the following ways:
[0124] 1. Using a first set of conditions in the encoder and a second set of conditions in the decoder.
[0125] 2. Using the first set of conditions at the encoder, signaling a syntax element indicating an inter-prediction mode, and the decoder determining the mode based on the signaled syntax element.
[0126] The first set of conditions may be derived using one or more characteristics of the points, such as Cartesian position, angular coordinates (radius, azimuth, elevation), prediction modes of neighboring nodes, etc. Some examples of conditions included in the first set of conditions are as follows:
[0127] 1. The point belongs to a frame that is not an intra-coded frame or does not correspond to a random access point.
[0128] 2. The azimuth angle of the current point is different from the azimuth angle of a previously decoded point of the current frame, or the delta azimuth angle between the current point and the previous point is non-zero. In some examples, an approximation of the delta azimuth angle, or a quantized version of the delta azimuth angle, may be used to determine the inter prediction mode of the current node.
[0129] 3: The point belongs to a slice that is of a particular type (i.e., a P slice or a B slice, indicating inter prediction may be applied).
[0130] 4: A flag is signaled to indicate whether inter prediction is enabled for a particular frame. This flag may be signaled in a syntax element associated with the frame (e.g., slice / slice header, frame header, etc.) or in a parameter set that the frame references. For example, inter_prediction_enabled_flag may be signaled in a geometry parameter set (GPS) to specify whether inter prediction is enabled for a point cloud frame / slice that references the GPS. When inter_prediction_enabled_flag indicates that inter prediction is not enabled, inter prediction indications for points in the point cloud may not be signaled.
[0131] In some alternatives, the inter prediction mode for a point may be determined based on an azimuth angle residual, or a phi multiplier, associated with the point.
[0132] In some alternatives, inter prediction (or one or more inter prediction modes) may be enabled only when the angular mode is enabled (i.e., inter prediction may be disabled if the angular mode is not enabled).
[0133] The G-PCC coder may choose a reference frame. In some examples, the G-PCC coder may use a previously decoded frame (or possibly a preceding frame in the decoding order) as a reference frame. In other examples, a frame number indication (using an LSB value or a delta frame number value) may be used to specify the reference frame. More generally, two or more frames may be designated as reference frames, and a point may be coded with inter prediction from any of the reference frames (an indication of the reference frame associated with the point may be signaled or derived).
[0134] In another example, prediction may be performed from two or more frames (e.g., bi-prediction). Thus, the G-PCC coder may predict a point of a current frame based on a reference point in a first reference frame and a reference point in a second reference frame.
[0135] The G-PCC coder may utilize multiple inter-prediction modes. When a point is inter-predicted, there may be one or more ways to predict the point from a reference frame. A different mode value may be used to specify each type of prediction (e.g., the G-PCC coder may signal a syntax element indicating the inter-prediction mode used for the current point). As one exemplary inter-prediction mode, the point may be predicted from a zero-motion candidate from a reference frame (e.g., a reference point in a reference frame may be a zero-motion candidate). As another exemplary inter-prediction mode, the point may be predicted from a global motion candidate from a reference frame. As another exemplary inter-prediction mode, the point may be predicted from a candidate point from a reference frame, and other parameters (e.g., a motion vector, etc.) may be used to specify the candidate point.
[0136] Some details about exemplary different types of inter prediction are provided below.
[0137] The G-PCC coder may utilize partial inter prediction modes. In one example, inter prediction may be applied to predict only a subset of the characteristics of the points in the point cloud. One or more of the characteristics for which intra prediction is not applied may be coded using intra prediction or by other techniques. Some examples of partial inter prediction modes are as follows:
[0138] 1. When a point is indicated to be inter-predicted, the radius of the point may be predicted from a reference point (or reference frame) when angle mode is enabled, and the azimuth angle and laser ID (or elevation angle) may be derived based on intra-prediction or other techniques.
[0139] 2. If a point is indicated to be inter-predicted, both the radius and azimuth of the point are predicted from a reference point (or reference frame) when angle mode is enabled, and the G-PCC coder may derive the laser ID (or elevation angle) based on intra-prediction or other techniques.
[0140] The G-PCC coder may perform signaling of inter-prediction modes. In some examples, the inter-prediction mode associated with a point may be signaled in the bitstream. This may be signaled as a flag or as a mode value. Some exemplary inter-prediction mode signaling techniques are as follows:
[0141] 1. An inter-pred-flag equal to 0 may indicate that the point is predicted using intra prediction, and an inter-pred-flag equal to 1 may indicate that the point is predicted using inter prediction. In some examples, based on an indication that the point is predicted using inter prediction, a mode value may be signaled to specify a method for performing inter prediction of the point.
[0142] 2. When a point is predicted using inter prediction, a mode value may be signaled, where a mode value of 0 specifies that zero motion candidates are used for prediction, and a mode value of 1 specifies that global motion candidates are used for prediction.
[0143] In this disclosure, inter prediction mode may be used interchangeably with an indication of whether a point is coded with inter prediction, and with the particular inter prediction technique used.
[0144] Some conditions may affect how the G-PCC coder signals the inter-prediction mode. In some cases, the inter-prediction mode may be signaled only when a second set of conditions applies. The second set of conditions may be derived using one or more characteristics of the point, such as the Cartesian position, the angular coordinates (radius, azimuth, elevation), the prediction modes of neighboring nodes, etc. Some examples of conditions included in the second set of conditions are as follows:
[0145] 1. The point belongs to a frame that is not an intra-coded frame or does not correspond to a random access point.
[0146] 2. The azimuth angle of the current point is different from the azimuth angle of the previously decoded point, or the delta azimuth angle between the current point and the previous point is non-zero. In some examples, an approximation of the delta azimuth angle, or a quantized version of the delta azimuth angle, may be used to determine the inter prediction mode of the current node.
[0147] 3. The delta azimuth angle between the current point and the previous point is greater than a threshold, the value of which may be fixed or signaled in the bitstream or derived based on a syntax element signaled in the bitstream.
[0148] More generally, the second set of conditions may include one or more criteria, including but not limited to a delta azimuth value, a delta radius value, a delta laserID value, a delta elevation value. This delta value of the characteristic may be indicated by a corresponding residual value signaled in the bitstream for the point. The second set of conditions may also include delta coordinate values in the Cartesian domain (delta x, delta y, delta z).
[0149] When the inter-prediction mode is not signaled for a particular point, the inter-prediction mode may be inferred to be a fixed value for the point.
[0150] 4. When inter-prediction mode is not signaled for a point, the value is assumed to be 0 (or a value that specifies intra-prediction).
[0151] Signaling Optimization: In some cases, the inter-prediction mode may not be signaled for all points; instead, the inter-prediction mode may be derived from a syntax element signaled in the bitstream.
[0152] 1. An inter-prediction mode may be signaled for a prediction tree, and the inter-prediction mode may be applied to all points in the prediction tree.
[0153] 2. The inter prediction mode may be signaled in the geometry slice, and the inter prediction mode may be applied to all points in the slice.
[0154] 3. An inter-prediction mode may be signaled for a predictive block (specified as a fixed number of points, or a signaled number of points, etc.), and the inter-prediction mode may apply to all points in the predictive block.
[0155] In some examples, the inter-prediction mode may be signaled only to some nodes as specified by the tree depth.
[0156] 4. Inter prediction mode can only be signaled for the root node of the prediction tree.
[0157] In one example, when inter prediction is applied for some characteristics of a point (e.g., radius) and intra prediction is applied for other characteristics of a point (e.g., azimuth angle, laserID), only a subset of intra prediction modes may be enabled (e.g., only mode 0 of intra prediction may be enabled for azimuth angle, laserID). In some examples, if only one intra prediction mode is enabled, the mode value is not signaled and is inferred at the decoder. In some examples, if a subset of intra prediction modes (two or more) is enabled, a more optimized coding of the mode syntax element may be applied (e.g., fewer bits may be sufficient to code an index into the subset of modes).
[0158] For each point and corresponding to each prediction mode, the G-PCC coder may derive a predicted value of one or more characteristics of the current point based on the position of the one or more points in the reference frame. An exemplary prediction process is as follows.
[0159] 1a. When a zero motion candidate is selected, the predicted candidate may be selected as the point with the closest azimuth angle and laser ID that corresponds to a particular value of azimuth angle and laser ID (e.g., the reconstructed azimuth angle value and laserID of the current point), and the radius value of the predicted candidate is selected as the predicted value of the radius of the current node.
[0160] 1b. When a zero motion candidate is selected, the prediction candidate may be selected as the point with the closest azimuth angle and laser ID that corresponds to a particular value of azimuth angle and laser ID (e.g., the reconstructed azimuth angle value and laserID of a previously decoded and reconstructed point), and the radius, azimuth angle, and laserID values of the prediction candidate are selected as the predicted values of the radius, azimuth angle, and laserID of the current node.
[0161] 2a. When a global motion candidate is selected, a prediction candidate may be selected as the point with the closest azimuth angle and laser ID corresponding to a particular value of azimuth angle and laser ID after application of global motion compensation to the prediction candidate, and the radius value of the prediction candidate is selected as the predicted value of the radius of the current node.
[0162] 2b. When a global motion candidate is selected, the prediction candidate after application of global motion compensation to the prediction candidate may be selected as the point with the closest azimuth angle and laser ID corresponding to a particular value of azimuth angle and laser ID (e.g., the reconstructed azimuth angle value and laserID of a previously decoded and reconstructed point), and the radius, azimuth angle, and laserID values of the prediction candidate are selected as the predicted values of the radius, azimuth angle, and laserID of the current node.
[0163] 3a. When a generic candidate is selected, the predicted candidate may be selected as the point with the closest azimuth angle and laser ID that corresponds to a particular value of azimuth angle and laser ID after application of a motion vector (associated with the current point) to the predicted candidate, and the radius value of the predicted candidate is selected as the predicted value of the radius of the current node.
[0164] 3b. When a generic candidate is selected, the prediction candidate after application of the motion vector to the prediction candidate may be selected as the point with the closest azimuth angle and laser ID corresponding to a particular value of azimuth angle and laser ID (e.g., the reconstructed azimuth angle value and laserID of a previously decoded and reconstructed point), and the radius, azimuth angle, and laserID values of the prediction candidate are selected as the predicted values of the radius, azimuth angle, and laserID of the current node.
[0165] In some examples, the motion vector may be used to derive the radius, azimuth, and laser ID (or elevation) of the current point, or a point that is used to derive a prediction of these values. In some examples, the motion vector may be used to derive a prediction of the x, y, z coordinates, or a prediction of these values.
[0166] In some examples, two or more points in a reference frame may be used to derive a prediction value. The number of points may be signaled in the slice header or in the GPS. In some examples, an index to two or more points in a reference frame may be signaled to specify a particular point to be used for inter prediction.
[0167] 4. When a zero motion candidate is selected, two prediction candidates are selected as the two points with the two closest azimuth angles and laser IDs corresponding to a particular value of azimuth angle and laser ID, and the average value of the radii of the two prediction candidates is selected as the predicted value of the radius of the current node.
[0168] 5. When two or more prediction candidates are selected as candidates for inter prediction (e.g., based on laser ID and / or azimuth closeness), a prediction candidate may be selected by signaling an index into a list comprising two or more prediction candidates. In some alternatives, a weighted average (weight calculated based on the difference in the laser ID values of the current point and the predictor and / or the difference between the azimuth of the current point and the predictor) may also be used as a prediction candidate.
[0169] The G-PCC coder may perform reference frame preparation. In some examples, the reference frame may be motion compensated before inter prediction. For example, one or more points of the reference frame may be associated with a motion (e.g., global motion), and a prediction for a subsequent frame may be obtained by compensating the position of the point with the associated motion. This motion may be estimated or obtained from external information (such as GPS information). Thus, the "reference frame" used for inter prediction may be a "compensated reference frame". In other words, the reference frame may be a motion compensated reference frame.
[0170] In some examples, one or more points in the compensated reference frame may be considered as zero motion candidates for the current frame. In some examples, the points in the reference frame for which motion compensation is applied may belong to a particular feature (e.g., object) in the point cloud or may be labeled (e.g., ground, non-ground) by some estimation algorithm. Global motion parameters (e.g., rotation, translation) may be signaled in the bitstream.
[0171] In some examples, in addition to the global motion parameters, additional adjustment values may be signaled for one or more of the following: x, y, z, radius, azimuth, laserID. For example, when a predictor frame is prepared by applying motion compensation (e.g., using the motion parameters), one or more additional adjustment values of x, y, z may be applied in the Cartesian domain, and one or more additional adjustment values of radius, azimuth, laserID may be applied in the spherical domain.
[0172] In some examples, adjustment values may be specified for the entire sequence (representing a "global" adjustment), and these values may also be incorporated into the global motion parameters.
[0173] In some examples, adjustment values may be specified for a group of frames (representing a "group" adjustment), and these values may also be incorporated into the global motion parameters.
[0174] In some examples, adjustment values may be specified on a frame-by-frame basis (representing a "frame" adjustment), and these values may also be incorporated into the global motion parameters.
[0175] In some examples, adjustment values may be specified for different regions of the point cloud (representing "local" adjustments), and these values may also be incorporated into the global motion parameters or signaled as modifications to the global motion applicable to the frame.
[0176] One or more of the global, frame, and local adjustments may be signaled, and when more than one of these parameters are present, the corresponding adjustments may be applied sequentially or together (e.g., global, frame, and local x-adjustments xg, xf, xl may be applied as xg+xf+xl, respectively, to points belonging to a region). In other examples, all adjustments at one level (e.g., global) may be applied before applying adjustments at a different level (e.g., frame).
[0177] The motion vector associated with the inter prediction mode of a point may be signaled in the bitstream. In some cases, multiple points may share the same motion vector and may be signaled in the slice or in a parameter set (e.g., GPS, or a parameter set used specifically for motion parameters). In some cases, the motion vector associated with a particular point may be predicted from spatially or temporally inter predicted neighboring points and only the difference between the actual motion vector and the predicted motion vector may be signaled.
[0178] The G-PCC coder may perform context selection. For example, the G-PCC coder may determine the context to be used for a predicted geometry parameter / syntax element based on one or more syntax elements signaled in the bitstream, or their derived variables. The use of additional contexts may improve the compression efficiency of the codec.
[0179] In some examples, the G-PCC coder may utilize the first parameter associated with the point to determine a context for other syntax elements associated with the point. For example, the context of one or more syntax elements associated with the phi multiplier (e.g., ptn_phi_mult_abs_gt0_flag, ptn_phi_mult_sign_flag, ptn_phi_mult_abs_gt1_flag, ptn_phi_mult_abs_minus2, ptn_phi_mult_abs_minus9) may be selected based on the inter flag.
[0180] In one example, the inter flag indicates whether a first set of contexts is selected if inter prediction is used, or whether a second set of contexts is selected if intra prediction is used. This may apply to coding of the phi multiplier, first and second order residuals in case of prediction geometry with angle mode enabled (spherical position coding: azimuth, radius, elevation, or laserID).
[0181] When the context for a syntax element depends on a first set of conditions, one context may be selected when the first set of conditions are true and a first parameter associated with the point takes a first value, and a second context may be selected when the first set of conditions are true and a first parameter associated with the point takes a second value that is different from the first value.
[0182] Different choices for the first parameter are described below, each of which may result in a different trade-off between compression efficiency and storage (more context may require more storage associated with the context state).
[0183] 1. In one example, the first parameter may be an interflag associated with the point.
[0184] 2. In another example, the first parameter may be a prediction mode associated with the point (eg, a prediction mode used in the predicted geometry).
[0185] 3. In a further example, the first parameter may be a tuple consisting of an inter flag and a prediction mode associated with the point, eg, (interFlag, predMode).
[0186] 4. When there are two or more inter prediction candidates (e.g., zero motion candidate, global motion candidate, etc.), let interPredMode represent the various inter prediction candidates (e.g., 0 for intra, 1 for zero motion candidate, 2 for global motion candidate, etc.). The first parameter may be interPredMode.
[0187] In some examples, the G-PCC coder may use different conditions / parameters for different types of frames. For example, for frames that are intra-coded (have no references to other frames in the sequence for prediction), a second parameter may be selected to determine the context as described in this disclosure, and for other frames (e.g., inter-coded frames), a third parameter may be selected to determine the context as described in this disclosure. The second and third parameters may be different (e.g., for intra frames, a prediction mode may be selected as the second parameter, and for inter frames, a tuple of prediction mode and inter flag may be selected as the third parameter). The G-PCC coder may extend similar context selection to one or more syntax elements / components (first order residual, second order residual, etc.).
[0188] FIG. 7 is a conceptual diagram illustrating an example inter-prediction process for predicting a point of a point cloud according to one or more aspects of the present disclosure. As shown in FIG. 7, a current frame 750 may include a number of points 752A-752L (collectively, "points 752") and a reference frame 754 may include a number of points 756A-756L (collectively, "points 756"). The reference frame 754 may be a frame that is encoded and / or reconstructed before the current frame 750 is decoded and / or reconstructed (e.g., the reference frame 754 may precede the current frame 750 in coding order). The G-PCC coder may utilize intra prediction to predict one or more of the points 752 of the current frame 750 based on one or more of the points 756 of the reference frame 754. For example, the G-PCC decoder (or the reconstruction loop of the G-PCC encoder) may predict one or more parameters (e.g., r, φ, i) of a current point 752A of the points 752 based on one or more of the points 756.
[0189] To perform intra prediction to predict a current point in a current frame, the G-PCC coder may determine a reference point in a reference frame different from the current frame and predict one or more parameters of the current point based on the reference point. For example, to predict the current point 752A, the G-PCC coder may determine a reference point 756A and predict one or more parameters of the current point 752A based on one or more parameters of the reference point 756A. The determined reference point may be referred to as an identified reference point.
[0190] The G-PCC coder may determine the reference point using any suitable technique. As an example, the G-PCC coder may determine a pivot point in the current frame that precedes the current point in the coding order, and determine the reference point based on one or more parameters of the pivot point. For example, if the coding order is counterclockwise, the G-PCC coder may determine that point 752B is a point before the current point 752A (e.g., a point that comes immediately before the current point in the coding order) (i.e., determine that point 752B is a pivot point), and determine the reference point based on one or more parameters of the pivot point 752B.
[0191] To determine a reference point based on one or more parameters of the pivot point, the G-PCC coder may determine a reference pivot point based on the azimuth angle of the pivot point in a reference frame and may determine a reference point based on the reference pivot point. For example, the G-PCC coder may determine a point in the reference frame 754 that has the same azimuth angle (or the same azimuth angle and the same laser ID) as the pivot point 752B. In the example of FIG. 7, the G-PCC coder may determine that the point 756B is the reference pivot point because the point 756B has the same azimuth angle as the pivot point 752B. Although the reference pivot point in the example of FIG. 7 corresponds to an actual point (e.g., an actual point in the frame 754), the techniques of this disclosure are not necessarily so limited. For example, in some examples, the reference pivot point may be a virtual point that does not correspond to a reconstructed point in the reference frame 754.
[0192] In some examples, the G-PCC coder may determine the reference pivot point based on the actual (e.g., unscaled) azimuth angle of the pivot point. In other examples, the G-PCC coder may determine the reference pivot point based on a scaled azimuth angle of the pivot point. For example, the G-PCC coder may determine the scaled azimuth angle by scaling the azimuth angle of the pivot point by a constant value.
[0193] To determine a reference point based on the reference pivot point, the G-PCC coder may identify a point in the reference frame that has an azimuth angle greater than that of the reference pivot point as a reference point. For example, the G-PCC coder may determine which of the points 756 have an azimuth angle value greater than that of the reference pivot point, and select a point that has a minimum azimuth angle value (from the set of points 756 that have azimuth angle values greater than that of the reference pivot point). In this example of FIG. 7, the point 756A may be a point in the reference frame 754 that has a minimum azimuth angle greater than that of the reference pivot point 756B. Thus, the G-PCC coder may identify the point 756A as a reference point for performing intra prediction of the current point 752A.
[0194] In some examples, the G-PCC coder may determine the reference point based on the actual (e.g., unscaled) azimuth angle of the reference pivot point. In other examples, the G-PCC coder may determine the reference point based on the scaled azimuth angle of the reference pivot point. For example, the G-PCC coder may determine the scaled azimuth angle of the reference pivot point by scaling the azimuth angle of the pivot point by a constant value. Thus, in some examples, the G-PCC coder may determine the reference point by identifying as the reference point a point (e.g., point 756A) having the smallest scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point. In some examples, the G-PCC coder may utilize a point with the second smallest azimuth angle greater than the scaled azimuth angle. For example, the G-PCC coder may determine the reference point by identifying as the reference point a point (e.g., point 756L) having the second smallest scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point.
[0195] The G-PCC coder may predict parameters of the current point 752A based on parameters of the reference point 756A. For example, the G-PCC coder may signal residual data representing a difference between parameters of the current point 752A and the reference point 756A. The G-PCC decoder may add the residual data to the parameters of the reference point 756A to reconstruct the parameters of the current point 752A.
[0196] Although described above as using a single reference point in a single reference frame, the techniques of this disclosure are not so limited. As an example, multiple reference points in a single reference frame may be used together to predict a current point. For example, a G-PCC coder may determine multiple reference points in a reference frame and based on a reference pivot point. The G-PCC coder may predict one or more parameters of a current point in a current frame based on multiple reference points. As another example, reference points from multiple reference frames may be used to predict a current point.
[0197] As explained above, the G-PCC coder may perform azimuth prediction. Let (r, phi, laserID) be the three coordinates of the pivot point in a spherical coordinate system (called radius, azimuth, and laserID). The techniques disclosed herein may also be applied to other coordinate systems.
[0198] In some examples, the G-PCC coder may code points in the current point cloud frame in an ordered manner, as follows:
[0199] 1. For a current point in a current frame, the G-PCC coder may select a pivot point in the current frame that precedes the first point in decoding order. In some examples, the pivot point is a preceding point in the current frame in decoding order. In some examples, the pivot point is a second preceding point in the current frame in decoding order. More generally, two or more preceding points may be selected as the pivot point of the current point. In some examples, the pivot point may be a hypothetical point derived based on a previously decoded point in the current frame and an azimuth displacement that is a multiple of the azimuth quantization scale value (predetermined or derived from a signaled syntax element).
[0200] 2. The G-PCC coder may select a point in the reference frame, the reference pivot point, associated with the pivot point. The reference pivot point may be selected as a point in the reference frame that has the same azimuth angle and laser ID as the pivot point. In some examples, points with other laser ID values may also be candidates for the reference pivot point (e.g., the reference pivot point may be selected as a point in the reference frame that has the same azimuth angle as the pivot point and a laser ID within the range of [LaserID - M, LaserID + M], where LaserID is the laser ID of the pivot point, and M is a fixed value (e.g., 1) or is selected based on the distance of the pivot point from the origin, or is derived as a function of LaserID (e.g., for smaller values of LaserID, M may be smaller and for larger values of LaserID, M may be larger)). In some examples, a distance metric may be defined using the azimuth angle and laser ID, and the reference pivot point is selected as the point that has the minimum distance from the azimuth angle and laser ID of the pivot point using the distance metric. The normalized azimuth angle value may be obtained by scaling the azimuth angle by a first constant value, the normalized laser ID may be obtained by scaling the laser ID by a second constant value, and the distance metric may be obtained by calculating a norm (e.g., L2 norm, L1 norm) on the normalized laser ID and azimuth angle values of the pivot point and the reference point. More generally, the reference pivot point may be chosen as a point in the reference frame that is in the neighborhood of a point with the same azimuth angle and laser ID as the pivot point. In some examples, the reference pivot point may be a virtual point in the reference frame derived from the pivot point that has the same azimuth angle and laser ID as the pivot point.
[0201] 3. The G-PCC coder may select a reference point in the reference frame associated with the reference pivot point. The reference point may be selected as a point in the reference frame that has a minimum azimuth angle greater than that of the reference pivot point and the same laser ID as the reference pivot point. The reference point may be selected as a point in the reference frame that has a second minimum azimuth angle greater than that of the reference pivot point and the same laser ID as the reference pivot point. In some examples, when a reference point is not available, inter prediction may be disabled for the current point. In some examples, a reference point may be selected as the reference pivot point.
[0202] 4. The G-PCC coder may calculate a first residual between the reference point and the reference pivot point.
[0203] 5. The G-PCC coder may use the first residual to derive a first prediction for the current value. The prediction may be derived by adding a component of the first residual to a respective component of the pivot point (e.g., a radial prediction may be obtained by adding a radial component of the first residual to a radial component of the pivot point (similarly for the azimuth angle)). In some examples, the first prediction may be set equal to the reference point.
[0204] 6. The G-PCC coder may code a second residual between the first prediction and the position of the current point.
[0205] 7. Components of Residuals: The one or more residuals disclosed in this disclosure may include one or more of the following: The residual may comprise a radial residual between the reference pivot point and the reference point. The residual may comprise an azimuth residual between the reference pivot point and the reference point.
[0206] 8. The G-PCC coder may derive the current point based on the first prediction and the second residual. In some examples, the G-PCC coder may derive the current point from the second residual (e.g., not based on the first prediction).
[0207] The G-PCC coder may apply one or more techniques described above to the quantized azimuth angle value, and the scale value used for quantization may be derived from a signaled value or may be predetermined. The quantized azimuth angle value and the laserID may be used to search for an inter-predicted point in the reference. For example, the azimuth angle of a previously decoded and reconstructed point may be quantized, and the inter-predicted point with the quantized azimuth angle and laserID closest to the quantized azimuth angle and laserID of the previous point may be selected as the predictor for the azimuth angle, radius, and laserID of the current point, either as a quantized / dequantized predictor or as a non-quantized predictor.
[0208] The G-PCC coder may apply one or more techniques described above to the quantized laserID value, and the scale value used for quantization may be derived from the signaled value or may be predetermined. The azimuth angle and the quantized laserID value may be used to search for an inter-predicted point in the reference. For example, the laserID of a previously decoded and reconstructed point may be quantized, and the inter-predicted point with the azimuth angle and quantized laserID closest to the azimuth angle and quantized laserID of the previous point may be selected as the predictor for the azimuth angle, radius, and laserID of the current point, either as the quantized / dequantized predictor or as the unquantized predictor.
[0209] The G-PCC coder may apply one or more techniques described above to the quantized azimuth angle and quantized laserID value, and the scale value used for quantization may be derived from the signaled value or may be predetermined. The quantized azimuth angle and quantized laserID value may be used to search for an inter-predicted point in the reference. For example, the azimuth angle and laserID of a previously decoded and reconstructed point may be quantized, and the inter-predicted point with the quantized azimuth angle and quantized laserID closest to the quantized azimuth angle and quantized laserID of the previous point may be selected as the predictor for the azimuth angle, radius, and laserID of the current point, either as a quantized / dequantized predictor or as a dequantized predictor.
[0210] In some examples, a reference frame may refer to a set of (radius, azimuth, laserID) tuples derived from the reference frame. For example, for each point in the reference frame, if there is no other point in the set with the same azimuth and laserID, the G-PCC coder may add the radius, azimuth, and laserID to the set. In some cases, a quantized value of the azimuth may be added. In some cases, even if there is another tuple in the set with the same phi and laserID, e.g., (r1, phi, laserID), (r, phi, laserID) may be added if the value of r is less than the value of r1 (in which case the existing tuple (r1, phi, laserId) may be replaced by the new (r, phi, laserID)). In some cases, the points in the reference frame may be in the x, y, z domain, and the points may be stored for reference as is or by converting to the spherical domain. In some cases, a motion-compensated position may be added to the reference frame. The compensation may be based on signaled motion vectors (eg, global motion vectors with rotation and / or translation) associated with the current frame and the reference frame.
[0211] The G-PCC coder may perform context selection for inter-prediction modes. As described above, the G-PCC coder may signal an inter-prediction flag and an inter-prediction mode. A context to be used by the G-PCC coder for coding an inter-prediction flag or an inter-prediction mode may be selected as follows: The G-PCC coder may set b1, b2, b3, ... bN to be the inter-prediction flag values for N previously decoded points (b1 is the previous node, b2 is the node immediately before b1, etc.). The G-PCC coder may select a context index as a number generated by using b1, b2, ... bN, as follows: ctxIdx=b1+b2<<1+b3<<2+...bN<<(N-1). In another example, the G-PCC coder may select a context index as b1+b2+...+bN. In some examples, the values of b1, b2, .. bN may also be used to select the context of other syntax elements, such as inter prediction modes, motion vectors, etc. In some examples, N may be fixed as 5.
[0212] The G-PCC coder may perform improved radius residual coding. The radius, azimuth, and laserID associated with each point may be coded in the predictive geometry coding. The residual of the radius component of each point may be coded with an "equal_to_zero" flag, a sign bit, a number of bits for the residual, and / or the residual. The number of bits may be an indicator of the relative value of the radius residual. When points captured by the LIDAR are close to each other in the point cloud (e.g., points of an object or building captured by one of the lasers), the radius may not vary significantly across the points. Since the object (most likely solid) is contiguous, consecutive LIDAR scan points may be returned to the sensor, where the azimuth angle difference between consecutive points is close to the sampling frequency of the azimuth angle. The difference in azimuth angle or azimuth angle residual for adjacent points (of the same laser) on the object is close to 0.
[0213] The context of the number of bits for the radius residual is chosen based on the azimuth residual of the current point. For example, based on the absolute value of the azimuth residual, the context may be switched as follows, where N is a fixed value (signaled or predetermined): Table 1 below provides an example of a context index for the number of bits used in the number of bits for the radius residual N.
[0214] [Table 1]
[0215] It should be noted that other methods for selecting the context index based on the radius residual may also be used.
[0216] The following examples illustrate implementations of some of the techniques of this disclosure.
[0217] (Example) Example A For each point in the entire non-intracoded point cloud frame (random access point), a flag may be used to specify whether the point is coded using inter prediction. When inter prediction is applied, a "zero motion vector" candidate is chosen to predict the radius of the predicted point from the point in the reference frame that has the same laser ID value as the current point and has the closest quantized azimuth value from the current point. The changes to the syntax structure are provided below ( <add> ...< / add> The tag indicates the addition <delete> ...< / delete> The tag indicates the deletion.
[0218] [Table 2A]
[0219] [Table 2B]
[0220] <add> A ptn_inter_flag[nodeIdx] equal to 0 specifies that the radial residual of the current node is coded using intra prediction. A ptn_inter_flag[nodeIdx] equal to 1 specifies that the radial residual of the current node is coded using inter prediction. When a value for ptn_inter_flag[nodeIdx] is not present, the value of ptn_inter_flag[nodeIdx] is inferred to be equal to 0. < / add>
[0221] The value of InterEnableFlag is set to 0 when the current point cloud frame is a random access point or an all-intra frame, and is set to 1 otherwise.
[0222] In some alternatives, when ptn_inter_flag is equal to 1, the syntax element ptn_pred_mode[ ] is not signaled and is inferred to be a default value (eg, equal to 0, corresponding to predicted geometry mode 0).
[0223] The changes to the location prediction process are as follows: Location Prediction Process The inputs to this process are: - the variable predMode indicating the prediction mode of the current node, - arrays aPos0, aPos1, and aPos2, with values aPosX[k], k = 0..2, and X = 0..2, each containing the position associated with an ancestor node of the Xth generation in the depth-first tree traversal order; a variable curDepth, which indicates the distance in nodes between the current node and the root node of the current prediction tree; <add> - A variable interFlag indicating whether the radius of the current node is coded using inter prediction. < / add> The output from this process is an array predPos with values predPos[k], k = 0..2, indicating the predicted point position associated with the nodeIdx-th tree node. When predMode is equal to 0, the predicted point location is calculated as follows: for (k = 0; k < 3; k++) predPos[k] = 0 if (geometry_angular_enabled_flag) { predPos[0] = ptn_radius_min_value if (curDepth > 0) { predPos[1] = aPos0[1] predPos[2] = aPos0[2] } } When predMode is equal to 1, the predicted point location is the location associated with the first ancestor. for (k = 0; k < 3; k++) predPos[k] = aPos0[k] When predMode is equal to 2, the predicted point location is a linear combination of the locations associated with the first two ancestors. for (k = 0; k < 3; k++) predPos[k] = aPos0[k] + aPos0[k] - aPos1[k] Otherwise, predMode is equal to 3 and the predicted point location is a linear combination of the locations associated with all three ancestors. for (k = 0; k < 3; k++) predPos[k] = aPos0[k] + aPos1[k] - aPos2[k] <add> When interFlag is equal to 1, predPos
[0000] is derived as follows: Let refFramePos[k], for k=0..2, be the position of the point in the reference frame, and let refFramePos
[0002] = predPos
[0002] , and let the absolute difference between the value of refFramePos
[0001] and predPos
[0001] be the smallest among the points in the reference frame. predPos
[0000] is set equal to refFramePos
[0000] . < / add> In one alternative, the quantized values of refFramePos
[0001] and predPos
[0001] are used to measure the absolute difference in values, where the quantization scale may be a fixed number (eg, geom_angular_azimuth_step_minus1 + 1).
[0224] Example B In embodiment B, the prediction mode may not be signaled when inter prediction is used. For example, when inter prediction is used, the prediction mode is inferred to be equal to 0. Changes to the syntax structure are provided below ( <add> ...< / add> The tag indicates the addition <delete> ...< / delete> The tag indicates the deletion.
[0225] [Table 3]
[0226] When ptn_pred_mode[nodeIdx] is not signaled, ptn_pred_mode[nodeIdx] may be inferred to be equal to 0. In some examples, the following inference may be added: When ptn_inter_flag[nodeIdx] is equal to 1, ptn_pred_mode[nodeIdx] is inferred to be equal to 0.
[0227] Example C In embodiment C, the order of the signaling of phi and prediction mode may not be changed. The signaling of prediction mode may be conditioned on the signaling of the inter flag. The signaling of ptn_phi_mult_abs_gt0_flag may also be conditioned on the inter flag. Changes to the syntax structure are provided below ( <add> ...< / add> The tag indicates the addition <delete> ...< / delete> The tag indicates the deletion.
[0228] [Table 4]
[0229] When ptn_inter_flag[nodeIdx] is not signaled, ptn_inter_flag[nodeIdx] is inferred to be equal to 0.
[0230] When ptn_phi_mult_abs_gt0_flag[nodeIdx] is not signaled, ptn_phi_mult_abs_gt0_flag[nodeIdx] is inferred to be equal to 0. In another example, the following inference is added: When ptn_inter_flag[nodeIdx] is equal to 1, ptn_phi_mult_abs_gt0_flag[nodeIdx] is inferred to be equal to 1.
[0231] Example D In embodiment D, the order of the pred mode and phi syntax elements may not be changed. For example, the inter flag may be signaled after the pred mode but before the phi syntax elements.
[0232] [Table 5]
[0233] When ptn_pred_mode[nodeIdx] is greater than 0 and InterEnableFlag is equal to 1 (ptn_inter_flag[] is not signaled), ptn_inter_flag[nodeIdx] is inferred to be 0.
[0234] Example E Example E is similar to example A with the modification that the signaling of the interflag also depends on the value of pred_mode. The following syntax is added in its entirety:
[0235] [Table 6]
[0236] When InterEnableFlag is equal to 1 and PtnPhiMult[nodeIdx] is equal to 0 or ptn_pred_mode[nodeIdx] is not equal to 0, ptn_inter_flag[nodeIdx] is inferred to be equal to 0.
[0237] Example F In this example, the prediction for the radius, predPos
[0000] , is obtained by comparing not only the azimuth angles of points with the same laser ID as the current point, but also points with neighboring laser IDs.
[0238] When interFlag is equal to 1, the G-PCC coder may derive predPos
[0000] as follows: The G-PCC coder may set refFramePos[k], for k = 0..2, to be the position of the point in the reference frame, such that refFramePos
[0002] takes one of the values in {predPos
[0002] - 1, predPos
[0002] , predPos
[0002] + 1}, such that the absolute difference between the value of refFramePos
[0001] and predPos
[0001] is the smallest among the points in the reference frame. The G-PCC coder may set predPos
[0000] equal to refFramePos
[0000] .
[0239] In some cases, points from more laser IDs within the reference frame may be considered to obtain the reference point.
[0240] Alternatively, rather than comparing the azimuth angles (ie, refFramePos
[0001] and predPos
[0001] ), a weighted cost function may be specified as follows: J (refPos) = w1 * f1(refPos[1], predPos[1]) + w2 * f2 (refPos[2], predPos[2])
[0241] The point in the reference frame with position refPos[k], for k = 0..2, chosen to predict the radius is the point with the minimum value of J(refPos).
[0242] In some cases, the value of f1(x, y) may be the square of the difference between x and y, or more generally, any function that indicates the distance between the current point and a reference point in the azimuth (or second) dimension.
[0243] In some cases, the value of f2(x, y) may be the square of the difference / absolute difference between x and y, or more generally, any function indicating the distance between the current point and a reference point in the laser ID (or third) dimension.
[0244] In other cases, more than one reference candidate may be selected for a point, and an inter-pred candidate index may be signaled to specify which reference candidate is selected for that point.
[0245] For example, for a current point, three points in the reference frame may be chosen as follows: - predPos
[0002] with the azimuth value closest to predPos[1] - the point with laser ID equal to 1 - The point with laser ID equal to predPos
[0002] that has the azimuth value closest to predPos[1] - The point with laser ID equal to predPos
[0002] + 1 that has the azimuth value closest to predPos[1]
[0246] An index into this set / list may be signaled to specify the point selected for prediction.
[0247] More generally, for each current point coded using inter prediction for a radius, - The reference frame is chosen based on a pre-determined decision (e.g., a previous decoded frame) or based on one or more signaled indications (e.g., frame index / counter value). The set RefCandSuperSet is selected among points in the reference frame based on a first set of conditions (e.g., based on laser ID range and / or azimuth range, one or more methods disclosed in this application). - A subset, RefCandSubset, is selected from the RefCandSuperSet based on a second set of criteria (e.g., the closest azimuth angle from the current point for a particular laser ID). - If RefCandSubset has more than one entry, arrange the entries in the list RefCandList based on a third set of conditions (e.g., arrange the entries based on increasing laser ID difference from the current point), otherwise (only one candidate in RefCandSubset), one candidate in RefCandSubset is used for prediction. - Signals the index to the entry in the RefCandList used for the prediction. - Use the prediction entry to predict the radius of the current point.
[0248] In some examples, when a point in a reference frame is not present in the RefCandSubset, inter prediction may be disabled, and an inter flag may or may not be signaled in this case.
[0249] Example G According to one or more aspects of the present disclosure, the G-PCC coder may signal in the bitstream parameters for deriving the azimuth quantization / scale. In some examples, the G-PCC coder may inter-predict all three components using previously decoded points in the current point cloud frame.
[0250] The azimuth angle scale value (used in deriving the inter-prediction candidates) may be signaled in the GPS as follows:
[0251] [Table 7]
[0252] In some examples, inter_azim_scale_log2 may be signaled independently of inter_prediction_enabled_flag.
[0253] In another example, the angle mode may also be used to adjust the signaling of inter_azim_scale_log2.
[0254] [Table 8]
[0255] The following are example semantics for the above syntax elements:
[0256] inter_prediction_enabled_flag equal to 1 specifies that inter prediction may be used for GPS referenced point cloud frames. inter_prediction_enabled_flag equal to 0 specifies that inter prediction is not used for GPS referenced point cloud frames.
[0257] inter_azim_scale_log2 is used to scale azimuth points that may be used in the derivation of inter prediction references. The value of inter_azim_scale_log2 shall be in the range of 0 to numAzimBits, inclusive. (The variable numAzimBits may specify the maximum number of bits used to represent the azimuth angle.)
[0258] In some examples, an inter_azim_scale_log2 syntax element may be an example of a syntax element that specifies a log base 2 value of a scaling factor. The G-PCC coder may determine a scaled azimuth angle (e.g., a scaled azimuth angle of the pivot point) based on the scaling factor.
[0259] When a frame is coded, the reconstructed spherical positions of one or more points in the frame may be stored in a reference frame that may be used as an inter-prediction reference by future frames. The reconstructed spherical positions may be stored in a hash table as follows: The G-PCC coder may obtain a spherical coordinate representation for the reconstructed points. The G-PCC coder may obtain the derived azimuth angle and laser index from the reconstructed point and use the tuple of derived azimuth angle and laser index as an index into a hash table. For example, the derived quantized azimuth angle, denoted as quantized(val), may be derived by the G-PCC coder as follows: int offset = azimScaleLog2 ? (1 << (azimScaleLog2 - 1)) : 0; quantized(val) = val >= 0 ? (val + offset) >> azimScaleLog2 : -((-val + offset) >> azimScaleLog2);
[0260] In some cases, azimScaleLog2 is not signaled and can be inferred to one of the following: - A value of 0 (i.e. no quantization). - The smallest power of two that is less than or equal to the azimuth rate signaled in the bit stream. - The smallest power of 2 that is less than or equal to (azimuth rate / 2) signaled in the bit stream. Different sequences may have different azimuth scale values. Each entry in the hash table may be derived from one or more reconstructed points. In one alternative, the hash table entry for a frame may be the first point in decoding order within the reconstructed frame that has a particular value of the derived azimuth angle and laser index. In one alternative, the hash table entry for a frame may be the point in the reconstructed frame that has the smallest radius among points having a particular value of the derived azimuth angle and laser index. - In yet another alternative, the hash table entry for the frame may be a point value that corresponds to the average, mean, median, weighted average, geometric mean, etc., calculated using points having particular values of derived azimuth angle and laser index.
[0261] In some examples, a reconstructed point position (r, phi, laserID) in the spherical domain may be entered into the azimuth table as follows: table index=(quantized(Phi), laserID), table entry=(r, phi, laserId).
[0262] When coding the current point (in the current frame), the following steps may be performed: The G-PCC coder may set prevNode = (r1, phi1, laserID1) to be the previous node in the current frame in decoding order. In some alternatives, prevNode may be chosen as the parent node of the current node. In the table associated with the reference frame, the G-PCC coder may check whether there exists an index (quantized(phi), laserID1) where quantized(phi) is greater than quantized(phi1). If no such index exists, the G-PCC coder may not apply inter prediction for the current node. If at least one such index exists, the G-PCC coder may choose the index with the smallest quantized(phi) (greater than quantized(phi1)). · The G-PCC coder may use the entry associated with the above selected indices (r_inter, phi_inter, laserId_inter) as the inter predictor for the current point.
[0263] In some examples, the following code may be used to implement the above technique with a combination of an array of hash tables (instead of a 2D hash table), where computePhiQuantized() corresponds to the quantize() function described previously. In the following, refPointVals is a vector of hash tables that store reference points, refPointVals[currLaserId] is a hash table that corresponds to index laserID = currLaserId, and all entries in refPointVals[currLaserId] are stored with increasing values of quantized(phi). Since this table is stored with increasing quantized(phi), the upper_bound function is used to search for the first quantized(phi) laser that is greater than the current quantized azimuth angle quantize(currAzim). In the following example, idx is equal to refPointVals[currLaserId].end(), there is no such table index, and therefore inter prediction is not used. When present, idx->second specifies the inter prediction candidate (r_inter, phi_inter, laserID_inter).
[0264] In some alternatives, the hash table may not store points with increasing values of quantized(phi), and instead may use a hash function to parse and recover the table entries. In another alternative, a generic table / data structure may be used to store points from the reference frame. As mentioned above, the following code may be used to implement the above technique: auto quantizedPhi = computePhiQuantized(currAzim); if (refPointVals[currLaserId].size()) { auto idx = refPointVals[currLaserId].upper_bound(quantizedPhi); if (idx == refPointVals[currLaserId].end()) return std::pair<bool, point_t> (false, 0); else return std::pair<bool, point_t> (true, idx->second); } return std::pair<bool, point_t> (false, 0); If inter prediction is used, the G-PCC coder may signal a flag indicating that inter prediction is used. Use the inter prediction candidate derived above to code the residual (at the decoder, the prediction candidate is used to add the residual and to derive the reconstructed spherical coordinate position of the current point).
[0265] 8 is a flow diagram illustrating an example technique for inter-predicting points of a point cloud according to one or more aspects of the present disclosure. Although described with respect to the G-PCC encoder 200 (FIGS. 1 and 2), it should be understood that other devices may be configured to perform a method similar to that of FIG.
[0266] The G-PCC encoder 200 may determine whether to predict a current point in a current point cloud frame using predictive geometry coding (850). In response to the decision to predict the current point using predictive geometry coding ("Yes" branch of 850), the G-PCC encoder 200 may select a prediction mode for the current point from a set of prediction modes (852). The set of prediction modes may include at least an intra-prediction mode and an inter-prediction mode. The G-PCC encoder 200 may select a prediction mode for the current point using various techniques, but may generally select a prediction mode that results in minimizing the number of bits that need to be signaled. In response to the decision not to predict the current point using predictive geometry coding ("No" branch of 850), the G-PCC encoder 200 may predict the current point using a different technique, such as octree geometry coding (860).
[0267] The G-PCC encoder 200 may determine whether an inter prediction mode is selected for the current point (854). In response to a selection of an inter prediction mode for the current point ("Yes" branch of 854), the G-PCC encoder 200 may predict the current point of the point cloud using inter prediction (856). In response to a non-selection of an inter prediction mode for the current point ("No" branch of 854), the G-PCC encoder 200 may predict the current point of the point cloud using a different technique of predictive geometry coding, such as intra prediction (858).
[0268] To predict the current point of the point cloud using inter prediction (856), the G-PCC encoder 200 may perform the techniques described above with reference to Figure 7. For example, the G-PCC encoder 200 may determine a pivot point in the current point cloud frame (i.e., the current point cloud or the current frame), determine a reference point cloud frame (i.e., the reference point cloud or the reference frame), determine a reference pivot point in the reference point cloud frame based on the pivot point in the current point cloud frame, determine a reference point in the reference point cloud frame based on the reference pivot point, and encode (e.g., in the bitstream) residual data representing a difference between parameters of the reference point (e.g., the radius r, the azimuth angle φ, and the laser index i) and parameters of the current point.
[0269] In some examples, the G-PCC encoder 200 may encode in the bitstream a first syntax element indicating whether the current point is coded using inter prediction. For example, the G-PCC encoder 200 may encode an inter prediction flag with a value indicating whether the current point is coded using inter prediction (e.g., a value of 0 may indicate that the current point is coded using intra prediction, while a value of 1 may indicate that the current point is coded using inter prediction). The G-PCC decoder may determine whether the current point is coded using inter prediction based on the value of the first syntax element.
[0270] The signaling of the first syntax element (e.g., indicating whether the current point is coded using inter prediction) may be conditional. As a first exemplary condition, the G-PCC encoder 200 may encode a second syntax element indicating whether inter prediction is enabled (e.g., for the current point cloud frame). If the G-PCC encoder 200 encodes the second syntax element with a value indicating that inter prediction is enabled, the G-PCC encoder 200 may encode the first syntax element. On the other hand, if the G-PCC encoder 200 encodes the second syntax element with a value indicating that inter prediction is not enabled, the G-PCC encoder 200 may not encode the first syntax element. As another exemplary condition, the G-PCC encoder may signal (e.g., encode) the first syntax element if the current point cloud frame is not an intra-coded frame (e.g., do not encode the first syntax element if the current point cloud frame is an intra-coded frame). As another exemplary condition, the G-PCC encoder may signal (e.g., encode) the first syntax element if the current point cloud frame does not correspond to a random access point (e.g., do not encode the first syntax element if the current point cloud frame corresponds to a random access point). As another exemplary condition, the G-PCC encoder may signal (e.g., encode) the first syntax element if the slice that includes the current point is of a particular type (e.g., a type of slice that will enable inter-prediction, such as a P slice or a B slice). As another example condition, the G-PCC encoder may signal (e.g., encode) the first syntax element if the angle mode is enabled (e.g., do not encode the first syntax element if the angle mode is not enabled).
[0271] The G-PCC encoder 200 may encode one or more syntax elements using context-adaptive binary arithmetic coding (CABAC). In some examples, the G-PCC encoder 200 may select a context based on a value of an inter-prediction element (e.g., a first syntax element). As an example, the G-PCC encoder 200 may select a context for CABAC coding one or more syntax elements representing a phi multiplier (e.g., ptn_phi_mult_abs_gt0_flag, ptn_phi_mult_sign_flag, ptn_phi_mult_abs_gt1_flag, ptn_phi_mult_abs_minus2, ptn_phi_mult_abs_minus9) based on a value of the inter-prediction syntax element. As another example, the G-PCC encoder 200 may select a context for CABAC coding one or more syntax elements representing first-order residual data (e.g., ptn_residual_abs_gt0_flag, ptn_residual_sign_flag, ptn_residual_abs_log2, ptn_residual_abs_remaining) based on the value of the inter-prediction syntax element. As another example, the G-PCC encoder 200 may select a context for CABAC coding an instance of an inter-prediction syntax element based on the values of N previous instances (e.g., 2, 3, 4, 5, 6, 7, 8) of the inter-prediction syntax element (e.g., instances of the inter-prediction syntax element coded for a previous point).
[0272] FIG. 9 is a conceptual diagram illustrating an example distance measurement system 700 that may be used with one or more techniques of the present disclosure. In the example of FIG. 9, the distance measurement system 700 includes an illuminator 702 and a sensor 704. The illuminator 702 may emit light 706. In some examples, the illuminator 702 may emit the light 706 as one or more laser beams. The light 706 may be in one or more wavelengths, such as infrared wavelengths or visible light wavelengths. In other examples, the light 706 is not a coherent laser light. When the light 706 encounters an object, such as an object 708, the light 706 produces return light 710. The return light 710 may include backscattered light and / or reflected light. The return light 710 may pass through a lens 711 that directs the return light 710 to produce an image 712 of the object 708 on the sensor 704. The sensor 704 generates a signal 714 based on the image 712. Image 712 may include a set of points (eg, as represented by the dots in image 712 of FIG. 9).
[0273] In some examples, the illuminator 702 and sensor 704 may be mounted on a rotating structure (e.g., a rotating LIDAR sensor) such that the illuminator 702 and sensor 704 capture a 360-degree view of the environment. In other examples, the distance measurement system 700 may include one or more optical components (e.g., mirrors, collimators, diffraction gratings, etc.) that enable the illuminator 702 and sensor 704 to detect the distance of an object within a certain range (e.g., up to 360 degrees). Although the example of FIG. 9 shows only a single illuminator 702 and sensor 704, the distance measurement system 700 may include multiple sets of illuminators and sensors.
[0274] In some examples, the illuminator 702 generates a structured light pattern. In such examples, the distance measurement system 700 may include multiple sensors 704 on which respective images of the structured light pattern are formed. The distance measurement system 700 may use the parallax between the images of the structured light pattern to determine a distance to an object 708 from which the structured light pattern is backscattered. The structured light based distance measurement system may have a high level of accuracy (e.g., accuracy in the sub-millimeter range) when the object 708 is relatively close (e.g., 0.2 meters to 2 meters) to the sensor 704. This high level of accuracy may be useful in facial recognition applications, such as unlocking a mobile device (e.g., a mobile phone, a tablet computer, etc.), and for security applications.
[0275] In some examples, the distance measurement system 700 is a time-of-flight (ToF) based system. In some examples where the distance measurement system 700 is a ToF based system, the illuminator 702 generates a pulse of light. In other words, the illuminator 702 may modulate the amplitude of the emitted light 706. In such examples, the sensor 704 detects the return light 710 from the pulse of light 706 generated by the illuminator 702. The distance measurement system 700 may then determine the distance to the object 708 from which the light 706 is backscattered based on the delay between when the light 706 is emitted and when it is detected and the known speed of light in air. In some examples, rather than (or in addition to) modulating the amplitude of the emitted light 706, the illuminator 702 may modulate the phase of the emitted light 706. In such an example, the sensor 704 may detect the phase of the returning light 710 from the object 708 and determine the distance to a point on the object 708 using the speed of light and based on the time difference between when the illuminator 702 generates the light 706 at a particular phase and when the sensor 704 detects the returning light 710 at that particular phase.
[0276] In other examples, the point cloud may be generated without the use of the illuminator 702. For example, in some examples, the sensor 704 of the distance measurement system 700 may include two or more optical cameras. In such examples, the distance measurement system 700 may use the optical cameras to capture a stereo image of an environment including the object 708. The distance measurement system 700 may include a point cloud generator 716 that may calculate disparity between locations in the stereo image. The distance measurement system 700 may then use the disparity to determine distances to locations shown in the stereo image. From these distances, the point cloud generator 716 may generate a point cloud.
[0277] The sensor 704 may also detect other attributes of the object 708, such as color and reflectance information. In the example of Figure 9, the point cloud generator 716 may generate a point cloud based on the signal 714 generated by the sensor 704. The distance measurement system 700 and / or the point cloud generator 716 may form part of the data source 104 (Figure 1). Thus, the point cloud generated by the distance measurement system 700 may be encoded and / or decoded according to any of the techniques of this disclosure.
[0278] FIG. 10 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. 10, a vehicle 800 includes a distance measurement system 802. The distance measurement system 802 may be implemented in the manner described with respect to FIG. 9. Although not shown in the example of FIG. 10, the vehicle 800 may also include a data source, such as the data source 104 (FIG. 1), and a G-PCC encoder, such as the G-PCC encoder 200 (FIG. 1). In the example of FIG. 10, the distance measurement system 802 emits a laser beam 804 that reflects off a pedestrian 806 or other object in a road. The data source of the vehicle 800 may generate a point cloud based on a signal generated by the distance measurement system 802. The G-PCC encoder of the vehicle 800 may encode the point cloud to generate a bit stream 808, such as a geometry bit stream (FIG. 2) and an attribute bit stream (FIG. 2). The bit stream 808 may include much fewer bits than the uncoded point cloud obtained by the G-PCC encoder.
[0279] An output interface of the vehicle 800 (e.g., output interface 108 (FIG. 1)) may transmit the bitstream 808 to one or more other devices. The bitstream 808 may include many fewer bits than the unencoded point cloud obtained by the G-PCC encoder. Thus, the vehicle 800 may be able to transmit the bitstream 808 to other devices more quickly than the unencoded point cloud data. Additionally, the bitstream 808 may require less data storage capacity.
[0280] In the example of FIG. 10, a vehicle 800 may transmit a bitstream 808 to another vehicle 810. The vehicle 810 may include a G-PCC decoder, such as the G-PCC decoder 300 (FIG. 1). The G-PCC decoder of the vehicle 810 may decode the bitstream 808 to reconstruct a point cloud. The vehicle 810 may use the reconstructed point cloud for various purposes. For example, the vehicle 810 may determine that a pedestrian 806 is on the road ahead of the vehicle 800 based on the reconstructed point cloud, and thus begin to slow down, for example, even before the driver of the vehicle 810 recognizes that the pedestrian 806 is on the road. Thus, in some examples, the vehicle 810 may perform autonomous navigation operations based on the reconstructed point cloud.
[0281] Additionally or alternatively, vehicle 800 may transmit bitstream 808 to server system 812. Server system 812 may use bitstream 808 for various purposes. For example, server system 812 may store bitstream 808 for subsequent reconstruction of a point cloud. In this example, server system 812 may use the point cloud along with other data (e.g., vehicle telemetry data generated by vehicle 800) to train an autonomous driving system. In other examples, server system 812 may store bitstream 808 for subsequent reconstruction for forensic crash investigation.
[0282] FIG. 11 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of the present disclosure may be used. Extended reality (XR) is a term used to cover a variety of technologies including augmented reality (AR), mixed reality (MR), and virtual reality (VR). In the example of FIG. 11, a user 900 is located at a first location 902. The user 900 is wearing an XR headset 904. As an alternative to the XR headset 904, the user 900 may use a mobile device (e.g., a mobile phone, a tablet computer, etc.). The XR headset 904 includes a depth detection sensor, such as a distance measurement system, that detects the position of a point on an object 906 at the location 902. A data source of the XR headset 904 may use a signal generated by the depth detection sensor to generate a point cloud representation of the object 906 at the location 902. The XR headset 904 may include a G-PCC encoder (e.g., the G-PCC encoder 200 of FIG. 1) configured to encode the point cloud to generate a bitstream 908.
[0283] The XR headset 904 may transmit the bitstream 908 (e.g., over a network such as the Internet) to an XR headset 910 worn by a user 912 at a second location 914. The XR headset 910 may decode the bitstream 908 to reconstruct the point cloud. The XR headset 910 may use the point cloud to generate an XR visualization (e.g., AR, MR, VR visualization) representing the object 906 at the location 902. Thus, in some examples, the user 912 may have a 3D immersive experience of the location 902, for example, when the XR headset 910 generates the VR visualization. In some examples, the XR headset 910 may determine a position of a virtual object based on the reconstructed point cloud. For example, the XR headset 910 may determine, based on the reconstructed point cloud, that an environment (e.g., location 902) 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 910 may generate an XR visualization of the virtual object in the determined position. For example, the XR headset 910 may show a cartoon character sitting on a flat surface.
[0284] FIG. 12 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of the present disclosure may be used. In the example of FIG. 12, a mobile device 1000 (e.g., a wireless communication device), such as a mobile phone or tablet computer, includes a distance measurement system, such as a LIDAR system, that detects the location of points on an object 1002 in an environment of the mobile device 1000. A data source of the mobile device 1000 may generate a point cloud representation of the object 1002 using signals generated by a depth detection sensor. The mobile device 1000 may include a G-PCC encoder (e.g., the G-PCC encoder 200 of FIG. 1) configured to encode the point cloud to generate a bitstream 1004. In the example of FIG. 12, the mobile device 1000 may transmit the bitstream to a remote device 1006, such as a server system or another mobile device. The remote device 1006 may decode the bitstream 1004 to reconstruct the point cloud. The remote device 1006 may use the point cloud for various purposes. For example, the remote device 1006 may use the point cloud to generate a map of the environment of the mobile device 1000. For example, the remote device 1006 may generate a map of the interior of a building based on the reconstructed point cloud. In another example, the remote device 1006 may generate imagery (e.g., computer graphics) based on the point cloud. For example, the remote device 1006 may use the points of the point cloud as vertices of a polygon and use color attributes of the points as a basis for shading the polygon. In some examples, the remote device 1006 may use the reconstructed point cloud for facial recognition or other security applications.
[0285] The following numbered clauses may represent one or more aspects of the disclosure.
[0286] Clause 1A. A method of processing a point cloud, the method comprising selectively coding points of the point cloud using inter prediction.
[0287] Clause 2A. The method of clause 1A, wherein coding the point using inter prediction includes coding a value of a radial residual of the point using inter prediction.
[0288] Clause 3A. The method of clause 2A, further comprising coding, via the bitstream, a first syntax element indicating whether the point is coded using inter prediction.
[0289] Clause 4A. The method of clause 3A, wherein the method further includes coding, via the bitstream, a second syntax element indicating whether inter prediction is enabled, and wherein coding the first syntax element includes coding the first syntax element in response to the second syntax element indicating that inter prediction is enabled.
[0290] Clause 5A. The method of clause 3A or clause 4A, wherein the first syntax element comprises a ptn_inter_flag syntax element.
[0291] Clause 6A. The method of clause 4A or 5A, wherein the second syntax element comprises an InterEnableFlag syntax element.
[0292] Clause 7A. The method of clause 4A, wherein the second syntax element indicates whether inter prediction is enabled for a particular frame that contains the point.
[0293] Clause 8A. The method of any of clauses 1A to 7A, further comprising: determining that the angular mode is enabled; and, in response to determining that the angular mode is enabled, determining that inter prediction is enabled.
[0294] Clause 9A. The method of any of clauses 1A to 8A, wherein the step of coding the point using inter prediction includes the step of coding a first subset of characteristics of the point using inter prediction, and the method further includes the step of coding a second subset of characteristics of the point using intra prediction.
[0295] Clause 10A. The method of any of clauses 1A to 9A, wherein coding the point using inter prediction includes determining a value of the point based on a reference frame.
[0296] Clause 11A. The method of any of clauses 1A to 10A, further comprising coding, in the bitstream, one or more syntax elements for predicted geometry parameters.
[0297] Clause 12A. The method of clause 11A, further comprising determining a context for context-adaptive coding of one or more syntax elements for the predicted geometry parameters based on values of one or more other syntax elements coded in the bitstream.
[0298] Clause 13A. The method of any of clauses 1A to 12A, further comprising coding, in the bitstream, one or more syntax elements having values representing global motion parameters.
[0299] Clause 14A. The method of any of clauses 1A to 13A, further comprising: coding, in the bitstream, a first syntax element that specifies whether inter prediction is enabled; and coding, in response to the first syntax element that specifies that inter prediction is enabled, a second syntax element that specifies a scale for the azimuth point, in the bitstream.
[0300] Clause 15A. The method of any of clauses 1A to 13A, further comprising: coding, in the bitstream, a first syntax element that specifies whether inter prediction is enabled; and coding, in the bitstream, a second syntax element that specifies a scale for the azimuth point, regardless of whether the first syntax element specifies that inter prediction is enabled.
[0301] Clause 16A. The method of clause 14A or clause 15A, wherein the first syntax element specifying whether inter prediction is enabled comprises an inter_prediction_enabled_flag syntax element, and the second syntax element specifying a scale for the azimuth point comprises an inter_azim_scale_log2 syntax element.
[0302] Clause 17A. A device for processing point clouds, comprising one or more means for carrying out the methods of any of clauses 1A to 16A.
[0303] Clause 18A. The device of clause 17A, wherein the one or more means comprise one or more processors implemented in circuitry.
[0304] Clause 19A. The device of any of clauses 17A or 18A, further comprising a memory for storing data representing the point cloud.
[0305] Clause 20A. A device of any of clauses 17A to 19A, where the device comprises a decoder.
[0306] Clause 21A. A device of any of clauses 17A to 20A, wherein the device comprises an encoder.
[0307] Clause 22A. The device of any of clauses 17A to 21A, further comprising a device for generating a point cloud.
[0308] Clause 23A. The device of any of clauses 17A to 22A, further comprising a display for presenting an image based on the point cloud.
[0309] Clause 24A. A computer-readable storage medium having instructions stored thereon which, when executed, cause one or more processors to perform the method of any of clauses 1A to 16A.
[0310] Clause 1B. A method for processing a point cloud, comprising: in response to a decision to predict a current point in the point cloud using predictive geometry coding, selecting a prediction mode for the current point from a set of prediction modes, the set of prediction modes including at least an intra-prediction mode and an inter-prediction mode; and in response to the selection of the inter-prediction mode for the current point, predicting the current point of the point cloud using inter-prediction.
[0311] Clause 2B. The method of clause 1B, wherein the step of selecting a prediction mode includes the steps of: coding, via the bitstream, a first syntax element indicating whether the current point is coded using inter prediction; and selecting the inter prediction mode as the prediction mode for the current point in response to the first syntax element indicating that the current point is coded using inter prediction.
[0312] Clause 3B. The method of clause 2B, wherein the method further includes coding, via the bitstream, a second syntax element indicating whether inter prediction is enabled, and wherein coding the first syntax element includes coding the first syntax element in response to the second syntax element indicating that inter prediction is enabled.
[0313] Clause 4B. The method of clause 3B, wherein the second syntax element indicates whether inter prediction is enabled for a particular frame that includes the current point.
[0314] Clause 5B. The method of clause 1B, wherein the current point is within a current frame, and predicting the current point using inter prediction includes determining a reference point in a reference frame different from the current frame, and predicting one or more parameters of the current point based on the reference point.
[0315] Clause 6B. The method of clause 5B, wherein the reference frame is a motion compensated reference frame.
[0316] Clause 7B. The method of clause 5B, wherein predicting one or more parameters includes predicting one or more of an azimuth angle, a laser identifier, and a radius of the current point.
[0317] Clause 8B. The method of clause 5B, wherein determining the reference point includes determining a pivot point in the current frame that precedes the current point in coding order, and determining the reference point based on one or more parameters of the pivot point.
[0318] Clause 9B. The method of clause 8B, wherein determining the reference point based on one or more parameters of the pivot point includes determining the reference pivot point based on an azimuth angle of the pivot point in a reference frame, and determining the reference point based on the reference pivot point.
[0319] Clause 10B. The method of clause 9B, wherein determining the reference pivot point further comprises determining the reference pivot point based on a laser identifier of the pivot point.
[0320] Clause 11B. The method of clause 9B, wherein the reference pivot point is a virtual point within the reference frame.
[0321] Clause 12B. The method of clause 9B, wherein determining the reference pivot point based on an azimuth angle of the pivot point includes determining the reference pivot point based on a scaled azimuth angle of the pivot point.
[0322] Clause 13B. The method of clause 12B, further comprising: coding a syntax element that specifies a base 2 logarithm value of the scaling factor; and determining a scaled azimuth angle of the pivot point based on the scaling factor.
[0323] Clause 14B. The method of clause 9B, wherein determining the reference point based on the reference pivot point includes identifying as the reference point in the reference frame a point having an azimuth angle greater than an azimuth angle of the reference pivot point.
[0324] Clause 15B. The method of clause 14B, wherein identifying a point in the reference frame having an azimuth angle greater than the azimuth angle of the reference pivot point includes identifying as the reference point in the reference frame a point having a scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point.
[0325] Clause 16B. The method of clause 15B, wherein identifying a point having a scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point includes identifying as the point a point having a smallest scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point.
[0326] Clause 17B. The method of clause 15B, wherein identifying a point having a scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point includes identifying as the point a point having a second smallest scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point.
[0327] Clause 18B. The method of clause 9B, wherein determining the reference point comprises determining a plurality of reference points within the reference frame and based on the reference pivot point, and predicting one or more parameters of the current point based on the reference points comprises predicting one or more parameters of the current point based on the plurality of reference points.
[0328] Clause 19B. The method of clause 5B, wherein the identified reference points comprise zero motion candidates.
[0329] Clause 20B. The method of clause 1B, wherein the method further includes coding, via the bitstream, a third syntax element indicating an inter prediction mode for the current point, and wherein predicting the current point of the point cloud using inter prediction includes predicting the current point using the inter prediction mode.
[0330] Clause 21B. The method of clause 1B, wherein the step of selecting a prediction mode includes the steps of coding, via the bitstream, an inter-prediction syntax element indicating whether the current point is coded using inter-prediction, and selecting the inter-prediction mode as the prediction mode for the current point when the inter-prediction syntax element indicates that the current point is coded using inter-prediction, the method further including the step of selecting a context for context-adaptive binary arithmetic coding (CABAC) of one or more syntax elements based on a value of the inter-prediction syntax element.
[0331] Clause 22B. The method of clause 21B, wherein the one or more syntax elements comprise one or more of one or more syntax elements representing a phi multiplier and one or more syntax elements representing first order residual data.
[0332] Clause 23B. The method of clause 21B, further comprising selecting a context for CABAC coding the inter-prediction syntax element based on values of the inter-prediction syntax element for N previous points of the point cloud.
[0333] Clause 24B. The method of clause 23B, wherein N is 5.
[0334] Clause 25B. A device for processing a point cloud, comprising: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in a circuit, wherein the one or more processors are configured to: in response to a determination to predict a current point in the point cloud using predictive geometry coding, select a prediction mode for the current point from a set of prediction modes, the set of prediction modes including at least an intra-prediction mode and an inter-prediction mode; and in response to the selection of the inter-prediction mode for the current point, predict the current point of the point cloud using inter prediction.
[0335] Clause 26B. The device of clause 25B, wherein to select a prediction mode, the one or more processors are configured to code, via the bitstream, a first syntax element indicating whether the current point is coded using inter prediction, and in response to the first syntax element indicating that the current point is coded using inter prediction, select the inter prediction mode as the prediction mode for the current point.
[0336] Clause 27B. The device of clause 26B, wherein the one or more processors are further configured to code, via the bitstream, a second syntax element indicating whether inter prediction is enabled, and wherein, for coding the first syntax element, the one or more processors are configured to code the first syntax element in response to the second syntax element indicating that inter prediction is enabled.
[0337] Clause 28B. The device of clause 27B, wherein the second syntax element indicates whether inter prediction is enabled for a particular frame that includes the current point.
[0338] Clause 29B. The device of clause 25B, wherein the current point is within a current frame, and to predict the current point using inter prediction, the one or more processors are configured to determine a reference point in a reference frame different from the current frame, and predict one or more parameters of the current point based on the reference point.
[0339] Clause 30B. The device of clause 29B, wherein the reference frame is a motion compensated reference frame.
[0340] Clause 31B. The device of clause 29B, wherein to predict the one or more parameters, the one or more processors are configured to predict one or more of an azimuth angle, a laser identifier, and a radius of the current point.
[0341] Clause 32B. The device of clause 29B, wherein to determine the reference point, the one or more processors are configured to: determine a pivot point in a current frame that precedes a current point in coding order; and determine the reference point based on one or more parameters of the pivot point.
[0342] Clause 33B. The device of clause 32B, wherein to determine a reference point based on one or more parameters of the pivot point, the one or more processors are configured to: determine a reference pivot point based on an azimuth angle of the pivot point, within a reference frame; and determine a reference point based on the reference pivot point.
[0343] Clause 34B. The device of clause 33B, wherein to determine the reference pivot point, the one or more processors are configured to determine the reference pivot point based on a laser identifier of the pivot point.
[0344] Clause 35B. The device of clause 33B, wherein the reference pivot point is a virtual point within the reference frame.
[0345] Clause 36B. The device of clause 33B, wherein to determine a reference pivot point based on an azimuth angle of the pivot point, the one or more processors are configured to determine the reference pivot point based on a scaled azimuth angle of the pivot point.
[0346] Clause 37B. The device of clause 36B, wherein the one or more processors are further configured to: code a syntax element specifying a base 2 logarithm of the scaling factor; and determine a scaled azimuth angle of the pivot point based on the scaling factor.
[0347] Clause 38B. The device of clause 33B, wherein to determine the reference point based on the reference pivot point, the one or more processors are configured to identify as reference points in the reference frame points having an azimuth angle greater than the azimuth angle of the reference pivot point.
[0348] Clause 39B. The device of clause 38B, wherein to identify points in the reference frame having azimuth angles greater than the azimuth angle of the reference pivot point, the one or more processors are configured to identify as reference points in the reference frame points having scaled azimuth angles greater than the scaled azimuth angle of the reference pivot point.
[0349] Clause 40B. The device of clause 39B, wherein to identify a point having a scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point, the one or more processors are configured to identify as the point a point having a smallest scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point.
[0350] Clause 41B. The device of clause 39B, wherein to identify a point having a scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point, the one or more processors are configured to identify as the point a point having a second smallest scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point.
[0351] Clause 42B. The device of clause 33B, wherein, to determine the reference points, the one or more processors are configured to determine a plurality of reference points in the reference frame and based on the reference pivot point, and, to predict, based on the reference points, one or more parameters of the current point, the one or more processors are configured to predict, based on the plurality of reference points, one or more parameters of the current point.
[0352] Clause 43B. The device of clause 29B, wherein the identified reference points comprise zero motion candidates.
[0353] Clause 44B. The device of clause 25B, wherein the one or more processors are further configured to code, via the bitstream, a third syntax element indicating an inter prediction mode for the current point, and wherein the one or more processors are configured to predict the current point using the inter prediction mode to predict a current point of the point cloud using inter prediction.
[0354] Clause 45B. The device of clause 25B, wherein to select a prediction mode, the one or more processors are configured to code, via the bitstream, an inter-prediction syntax element indicating whether the current point is coded using inter-prediction, and when the inter-prediction syntax element indicates that the current point is coded using inter-prediction, select the inter-prediction mode as the prediction mode for the current point, and the one or more processors are further configured to select a context for context-adaptive binary arithmetic coding (CABAC) of the one or more syntax elements based on a value of the inter-prediction syntax element.
[0355] Clause 46B. The device of clause 45B, wherein the one or more syntax elements comprise one or more of one or more syntax elements representing a phi multiplier and one or more syntax elements representing first order residual data.
[0356] Clause 47B. The device of clause 45B, wherein the one or more processors are further configured to select a context for CABAC coding the inter-prediction syntax element based on values of the inter-prediction syntax element for N previous points of the point cloud.
[0357] Clause 48B. A device according to clause 47B, where N is 5.
[0358] Clause 49B. The device of clause 25B, wherein the device further comprises a rotating LIDAR sensor, and the one or more processors are configured to generate a point cloud based on data generated by the rotating LIDAR sensor.
[0359] Clause 50B. The device of clause 25B, wherein the device is a vehicle that includes a rotating LIDAR sensor.
[0360] Clause 51B. A device under clause 25B where the device is a wireless communications device.
[0361] Clause 52B. A computer-readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to: in response to a determination to predict a current point in a point cloud using predictive geometry coding, select a prediction mode for the current point from a set of prediction modes, the set of prediction modes including at least an intra-prediction mode and an inter-prediction mode, and in response to selecting the inter-prediction mode for the current point, predict the current point of the point cloud using inter-prediction.
[0362] Clause 1C. A method for processing a point cloud, comprising: in response to a decision to predict a current point in the point cloud using predictive geometry coding, selecting a prediction mode for the current point from a set of prediction modes, the set of prediction modes including at least an intra-prediction mode and an inter-prediction mode; and in response to the selection of the inter-prediction mode for the current point, predicting the current point of the point cloud using inter-prediction.
[0363] Clause 2C. The method of clause 1C, wherein the step of selecting a prediction mode includes the steps of: coding, via the bitstream, a first syntax element indicating whether the current point is coded using inter prediction; and selecting the inter prediction mode as the prediction mode for the current point in response to the first syntax element indicating that the current point is coded using inter prediction.
[0364] Clause 3C. The method of clause 2C, wherein the method further includes coding, via the bitstream, a second syntax element indicating whether inter prediction is enabled, and wherein coding the first syntax element includes coding the first syntax element in response to the second syntax element indicating that inter prediction is enabled.
[0365] Clause 4C. The method of clause 3C, wherein the second syntax element indicates whether inter prediction is enabled for a particular frame that includes the current point.
[0366] Clause 5C. Any of the methods of clauses 1C to 4C, wherein the current point is within a current frame, and predicting the current point using inter prediction includes determining a reference point in a reference frame different from the current frame, and predicting one or more parameters of the current point based on the reference point.
[0367] Clause 6C. The method of clause 5C, wherein the reference frame is a motion compensated reference frame.
[0368] Clause 7C. The method of clause 5C or 6C, wherein predicting one or more parameters includes predicting one or more of an azimuth angle, a laser identifier, and a radius of the current point.
[0369] Clause 8C. The method of any of clauses 5C to 7C, wherein determining the reference point includes determining a pivot point in the current frame that precedes the current point in coding order, and determining the reference point based on one or more parameters of the pivot point.
[0370] Clause 9C. The method of clause 8C, wherein determining the reference point based on one or more parameters of the pivot point includes determining the reference pivot point based on an azimuth angle of the pivot point in a reference frame, and determining the reference point based on the reference pivot point.
[0371] Clause 10C. The method of clause 9C, wherein determining the reference pivot point further comprises determining the reference pivot point based on a laser identifier of the pivot point.
[0372] Clause 11C. The method of clause 9C or 10C, wherein the reference pivot point is a virtual point within the reference frame.
[0373] Clause 12C. The method of clause 9C, wherein determining the reference pivot point based on an azimuth angle of the pivot point includes determining the reference pivot point based on a scaled azimuth angle of the pivot point.
[0374] Clause 13C. The method of clause 12C, further comprising: coding a syntax element that specifies a base 2 logarithm value of the scaling factor; and determining a scaled azimuth angle of the pivot point based on the scaling factor.
[0375] Clause 14C. The method of any of clauses 9C to 13C, wherein determining the reference point based on the reference pivot point includes identifying as the reference point in the reference frame a point having an azimuth angle greater than the azimuth angle of the reference pivot point.
[0376] Clause 15C. The method of clause 14C, wherein identifying a point in the reference frame having an azimuth angle greater than the azimuth angle of the reference pivot point includes identifying as the reference point in the reference frame a point having a scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point.
[0377] Clause 16C. The method of clause 15C, wherein identifying a point having a scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point includes identifying as the point a point having a smallest scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point.
[0378] Clause 17C. The method of clause 15C, wherein identifying a point having a scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point includes identifying as the point a point having a second smallest scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point.
[0379] Clause 18C. The method of any of clauses 9C to 17C, wherein determining the reference point comprises determining a plurality of reference points within the reference frame and based on the reference pivot point, and predicting one or more parameters of the current point based on the reference points comprises predicting one or more parameters of the current point based on the plurality of reference points.
[0380] Clause 19C. The method of any of clauses 5C to 18C, wherein the identified reference points comprise zero motion candidates.
[0381] Clause 20C. The method of any of clauses 1C to 19C, wherein the method further includes coding via the bitstream a third syntax element indicating an inter prediction mode for the current point, and wherein predicting the current point of the point cloud using inter prediction includes predicting the current point using the inter prediction mode.
[0382] Clause 21C. The method of any of clauses 1C to 20C, wherein the step of selecting a prediction mode includes the steps of coding, via the bitstream, an inter-prediction syntax element indicating whether the current point is coded using inter-prediction, and selecting the inter-prediction mode as the prediction mode for the current point when the inter-prediction syntax element indicates that the current point is coded using inter-prediction, the method further including the step of selecting a context for context-adaptive binary arithmetic coding (CABAC) of one or more syntax elements based on a value of the inter-prediction syntax element.
[0383] Clause 22C. The method of clause 21C, wherein the one or more syntax elements comprise one or more of one or more syntax elements representing a phi multiplier and one or more syntax elements representing first order residual data.
[0384] Clause 23C. The method of clause 21C or 22C, further comprising selecting a context for CABAC coding the inter-prediction syntax element based on values of the inter-prediction syntax element for N previous points of the point cloud.
[0385] Clause 24C. The method of clause 23C, where N is 5.
[0386] Clause 25C. A device for processing a point cloud, comprising: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in a circuit, the one or more processors configured to, in response to a determination to predict a current point in the point cloud using predictive geometry coding, select a prediction mode for the current point from a set of prediction modes, the set of prediction modes including at least an intra-prediction mode and an inter-prediction mode, and in response to selecting the inter-prediction mode for the current point, predict the current point of the point cloud using inter prediction.
[0387] Clause 26C. The device of clause 25C, wherein to select a prediction mode, the one or more processors are configured to: code, via the bitstream, a first syntax element indicating whether the current point is coded using inter prediction, and in response to the first syntax element indicating that the current point is coded using inter prediction, select the inter prediction mode as the prediction mode for the current point.
[0388] Clause 27C. The device of clause 26C, wherein the one or more processors are further configured to code, via the bitstream, a second syntax element indicating whether inter prediction is enabled, and wherein, for coding the first syntax element, the one or more processors are configured to code the first syntax element in response to the second syntax element indicating that inter prediction is enabled.
[0389] Clause 28C. The device of clause 27C, wherein the second syntax element indicates whether inter prediction is enabled for a particular frame that includes the current point.
[0390] Clause 29C. The device of any of clauses 25C to 28C, wherein the current point is in a current frame, and to predict the current point using inter prediction, the one or more processors are configured to determine a reference point in a reference frame different from the current frame, and predict one or more parameters of the current point based on the reference point.
[0391] Clause 30C. The device of clause 29C, wherein the reference frame is a motion compensated reference frame.
[0392] Clause 31C. The device of clause 29C or 30C, wherein to predict the one or more parameters, the one or more processors are configured to predict one or more of an azimuth angle, a laser identifier, and a radius of the current point.
[0393] Clause 32C. The device of any of clauses 29C to 31C, wherein to determine the reference point, the one or more processors are configured to: determine a pivot point in the current frame that precedes the current point in coding order; and determine the reference point based on one or more parameters of the pivot point.
[0394] Clause 33C. The device of clause 32C, wherein to determine the reference point based on one or more parameters of the pivot point, the one or more processors are configured to: determine a reference pivot point based on an azimuth angle of the pivot point, within a reference frame; and determine a reference point based on the reference pivot point.
[0395] Clause 34C. The device of clause 33C, wherein to determine the reference pivot point, the one or more processors are configured to determine the reference pivot point based on a laser identifier of the pivot point.
[0396] Clause 35C. A device of clause 33C or 34C, wherein the reference pivot point is a virtual point within the reference frame.
[0397] Clause 36C. The device of any of clauses 33C to 35C, wherein to determine a reference pivot point based on an azimuth angle of the pivot point, the one or more processors are configured to determine the reference pivot point based on a scaled azimuth angle of the pivot point.
[0398] Clause 37C. The device of clause 36C, wherein the one or more processors are further configured to: code a syntax element specifying a base 2 logarithm of the scaling factor; and determine a scaled azimuth angle of the pivot point based on the scaling factor.
[0399] Clause 38C. The device of any of clauses 33C to 37C, wherein to determine the reference point based on the reference pivot point, the one or more processors are configured to identify as the reference point in the reference frame a point having an azimuth angle greater than the azimuth angle of the reference pivot point.
[0400] Clause 39C. The device of clause 38C, wherein to identify points in the reference frame having azimuth angles greater than the azimuth angle of the reference pivot point, the one or more processors are configured to identify as reference points in the reference frame points having scaled azimuth angles greater than the scaled azimuth angle of the reference pivot point.
[0401] Clause 40C. The device of clause 39C, wherein to identify points having scaled azimuth angles greater than the scaled azimuth angle of the reference pivot point, the one or more processors are configured to identify as points a point having a smallest scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point.
[0402] Clause 41C. The device of clause 39C, wherein to identify a point having a scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point, the one or more processors are configured to identify as the point a point having a second smallest scaled azimuth angle greater than the scaled azimuth angle of the reference pivot point.
[0403] Clause 42C. The device of any of clauses 33C to 41C, wherein, for determining the reference points, the one or more processors are configured to determine a plurality of reference points in the reference frame and based on the reference pivot point, and, for predicting one or more parameters of the current point based on the reference points, the one or more processors are configured to predict one or more parameters of the current point based on the plurality of reference points.
[0404] Clause 43C. The device of any of clauses 29C to 42C, wherein the identified reference points comprise zero motion candidates.
[0405] Clause 44C. The device of any of clauses 25C to 43C, wherein the one or more processors are further configured to code, via the bitstream, a third syntax element indicating an inter prediction mode for the current point, and wherein the one or more processors are configured to predict the current point using the inter prediction mode to predict a current point of the point cloud using inter prediction.
[0406] Clause 45C. The device of any of clauses 25C to 44C, wherein to select a prediction mode, the one or more processors are configured to code, via the bitstream, an inter prediction syntax element indicating whether the current point is coded using inter prediction, and when the inter prediction syntax element indicates that the current point is coded using inter prediction, select the inter prediction mode as the prediction mode for the current point, the one or more processors are further configured to select a context for context-adaptive binary arithmetic coding (CABAC) of the one or more syntax elements based on a value of the inter prediction syntax element.
[0407] Clause 46C. The device of clause 45C, wherein the one or more syntax elements comprise one or more of one or more syntax elements representing a phi multiplier and one or more syntax elements representing first order residual data.
[0408] Clause 47C. The device of clause 45C or 46C, wherein the one or more processors are further configured to select a context for CABAC coding the inter-prediction syntax element based on values of the inter-prediction syntax element for N previous points of the point cloud.
[0409] Clause 48C. A device according to clause 47C, where N is 5.
[0410] Clause 49C. The device of any of clauses 25C to 48C, wherein the device further comprises a rotating LIDAR sensor, and the one or more processors are configured to generate a point cloud based on data generated by the rotating LIDAR sensor.
[0411] Clause 50C. A device of any of clauses 25C to 49C, where the device is a vehicle that includes a rotating LIDAR sensor.
[0412] Clause 51C. Any device of clauses 25C to 49C where the device is a wireless communications device.
[0413] Clause 52C. A computer-readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to: in response to a determination to predict a current point in a point cloud using predictive geometry coding, select a prediction mode for the current point from a set of prediction modes, the set of prediction modes including at least an intra-prediction mode and an inter-prediction mode, and in response to selecting the inter-prediction mode for the current point, predict the current point of the point cloud using inter-prediction.
[0414] It should be appreciated that, depending on the example, some acts or events of any of the techniques described herein may be performed in a different sequence and may be added, combined, or omitted entirely (e.g., not all acts or events described are necessary to the practice of the techniques). Moreover, in some examples, acts or events may be performed in parallel rather than sequentially, for example, through multithreaded processing, interrupt processing, or multiple processors.
[0415] In one or more examples, the functions described may be implemented as 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. A computer-readable medium may include a computer-readable storage medium corresponding to a tangible medium, such as a data storage medium, or a communication medium including any medium that facilitates transfer of a computer program from one place to another, for example according to a communication protocol. As such, a computer-readable medium may generally correspond to (1) a non-transitory tangible computer-readable storage medium, or (2) a communication medium such as a signal or carrier wave. A data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[0416] 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 accessed by a computer. Also, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of media. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but instead cover non-transitory tangible storage media. As used herein, disk and disc include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks typically reproduce data magnetically and discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer readable media.
[0417] The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Thus, the terms "processor" and "processing circuitry" as used herein may refer to any of the above structures or any other structures suitable for implementing the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or may be incorporated into a composite codec. Also, the techniques may be fully implemented in one or more circuits or logic elements.
[0418] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chipsets). Various components, modules, or units have been described in this disclosure to highlight functional aspects of devices configured to perform the disclosed techniques, but they do not necessarily require realization by different hardware units. Rather, as described above, the various units may be combined in a codec hardware unit or may be provided by a collection of interoperable hardware units including one or more processors as described above, along with suitable software and / or firmware.
[0419] Various examples have been described. These and other examples are within the scope of the following claims. [Explanation of symbols]
[0420] 100 Encoding and Decoding System, System 102 Source Device 104 Data Sources 106 Memory 108 Output Interface 110 Computer-readable medium 112 Storage Devices 116 Destination Device 114 File Server 118 Data Consumer 120 Memory 122 Input Interface 200 G-PCC Encoder, Encoder 202 Coordinate Transformation Unit 204 Color Conversion Unit 206 Voxelization Unit 208 Attribute Transfer Unit 210 8-tree analysis unit 212 Module, Surface Approximation Analysis Unit 214, 226 Arithmetic Coding Unit 216, 312 Geometry Reconstruction Unit 218, 314 modules, RAHT units 220 modules, LOD generation units 222 Module, Lifting Unit 224 Coefficient Quantization Unit 300 G-PCC Decoder, Decoder 302 Geometry Arithmetic Decoding Unit 304 Attribute Arithmetic Decoding Unit 306 8th Tree Synthesis Unit 308 Inverse Quantization Unit 310 Module, Surface Approximation Synthesis Unit 316 Module, LoD Generation Unit, LOD Generation Unit 318 Module, Reverse Lifting Unit 320 Inverse Coordinate Transformation Unit 322 Inverse Color Conversion Unit 400 8th Tree 500 Coordinate System 502 Rider 600 Prediction Trees 700, 802 Distance Measuring System 702 Illuminator 704 Sensor 706 Light, Synchrotron Radiation 708, 906, 1002 objects 710 Return light 711 Lens 712 images 714 Signal 716 Point Cloud Generator 750 Current Frame 752, 752A~752L, 756, 756A~756L points 752A Current point 752B pivot point 754 Reference Frame, Frame 756A Reference Point 756B Reference Pivot Point 800, 810 Vehicles 804 Laser Beam 806 Pedestrians 808, 908, 1004 bitstream 812 Server System 900, 912 users 902 1st Location, Location 904, 910 XR Headset 914 Second Location 1000 Mobile Devices 1006 Remote Device
Claims
1. 1. A method for processing a point cloud, comprising the steps of: in response to a decision to predict a current point in the cloud of points using predictive geometry coding, selecting a prediction mode for the current point from a set of prediction modes, the set of prediction modes including at least an intra prediction mode and an inter prediction mode; predicting the current point of the point cloud using inter prediction in response to a selection of the inter prediction mode for the current point; Including, The step of selecting a prediction mode comprises: coding, via a bitstream, a first syntax element indicating whether the current point is coded using inter prediction; in response to the first syntax element indicating that the current point is coded using inter prediction, selecting the inter prediction mode as the prediction mode for the current point; Including, method.
2. The method, Coding via the bitstream a second syntax element indicating whether inter prediction is enabled. Further comprising:
2. The method of claim 1, wherein coding the first syntax element comprises coding the first syntax element in response to the second syntax element indicating that inter prediction is enabled.
3. The method of claim 2 , wherein the second syntax element indicates whether inter prediction is enabled for a particular frame that includes the current point.
4. The current point is within a current frame, and predicting the current point using inter prediction comprises: determining a reference point in a reference frame different from the current frame; predicting one or more parameters of the current point based on the reference point; 2. The method of claim 1, comprising:
5. The method of claim 4 , wherein the reference frame is a motion compensated reference frame.
6. predicting the one or more parameters comprises: predicting one or more of an azimuth angle, a laser identifier, and a radius of the current point; 5. The method of claim 4, comprising:
7. The step of determining the reference point further comprises: determining a pivot point within the current frame that precedes the current point in coding order; determining the reference point based on one or more parameters of the pivot point; 5. The method of claim 4, comprising:
8. determining the reference point based on the one or more parameters of the pivot point, determining a reference pivot point within the reference frame based on an azimuth angle of the pivot point; determining the reference point based on the reference pivot point; 8. The method of claim 7, comprising:
9. The method of claim 8 , wherein determining the reference pivot point further comprises determining the reference pivot point based on a laser identifier of the pivot point.
10. The method of claim 8 , wherein the reference pivot point is a virtual point in the reference frame.
11. determining the reference pivot point based on the azimuth angle of the pivot point, determining the reference pivot point based on a scaled azimuth angle of the pivot point; The method of claim 8 , comprising:
12. coding a syntax element that specifies the base 2 logarithm of the scaling factor; determining the scaled azimuth angle of the pivot point based on the scaling factor; 12. The method of claim 11, further comprising:
13. A device for processing point clouds, comprising: a memory configured to store at least a portion of the point cloud; and one or more processors implemented in a circuit, the one or more processors comprising: in response to determining to predict a current point in the cloud of points using predictive geometry coding, selecting a prediction mode for the current point from a set of prediction modes, the set of prediction modes including at least an intra prediction mode and an inter prediction mode; and predicting the current point of the point cloud using inter prediction in response to selecting the inter prediction mode for the current point. configured to: To select the prediction mode, the one or more processors: coding, via the bitstream, a first syntax element indicating whether the current point is coded using inter prediction; and selecting the inter prediction mode as the prediction mode for the current point in response to the first syntax element indicating that the current point is coded using inter prediction. configured to: device.
14. The device of claim 13, further comprising means for performing a method according to any one of claims 2 to 12.
15. 13. A computer readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to perform a method according to any one of claims 1 to 12.
