Method and device of encoding point cloud data

TWI938374BActive Publication Date: 2026-09-11QUALCOMM INC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
TW111136113
Authority / Receiving Office
TW · TW
Patent Type
Patents
Current Assignee / Owner
Priority Date
2022-09-21
Filing Date
2022-09-23
Publication Date
2026-09-11
Estimated Expiration
2042-09-22

AI Technical Summary

Technical Problem

Existing point cloud compression techniques in Geometric Point Cloud Compression (G-PCC) suffer from redundant or inefficient signaling of planar modes, particularly when angular mode is enabled, leading to suboptimal bandwidth utilization and increased computational intensity.

Method used

The proposed technique restricts signaling of planar mode values based on the enablement of angular mode, using syntax elements to bypass unnecessary signaling of planar mode when angular mode is enabled, and employs inferred direct decoding mode (IDCM) to optimize encoding and decoding processes.

Benefits of technology

This approach enhances bandwidth efficiency and reduces computational burden by minimizing redundant signaling of planar mode information, thereby improving the overall efficiency of point cloud data transmission and processing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure TWG2TB001909934_001
    Figure TWG2TB001909934_001
  • Figure TWG2TB001909934_002
    Figure TWG2TB001909934_002
  • Figure TWG2TB001909934_003
    Figure TWG2TB001909934_003
Patent Text Reader

Abstract

A method for encoding point cloud data includes: signaling at least one of the following: a first syntax element indicating that planar mode is disabled for the current node when corner mode is enabled; or a second syntax element indicating that corner mode is enabled for the current node; bypassing the signaling of planar mode values ​​for the current node under the condition that the first syntax element indicates that planar mode is disabled for the current node when corner mode is enabled, or under the condition that the second syntax element indicates that corner mode is enabled for the current node; and encoding the current node in a mode different from planar mode.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application claims the benefits of U.S. Provisional Application No. 63 / 252,080, filed October 4, 2021, and U.S. Provisional Application No. 63 / 266,759, filed January 13, 2022, and the entire contents of each of these applications are incorporated herein by reference.

[0002] This disclosure pertains to point cloud encoding and decoding. Prior Technology

[0003] A point cloud is a collection of points in three-dimensional space. These points can correspond to points on objects in three-dimensional space. Therefore, point clouds can be used to represent entity content in three-dimensional space. Point clouds can be useful in a wide variety of situations. For example, in the context of autonomous vehicles, point clouds can be used to represent the position of objects on a road. In another instance, in the context of representing entity content in an environment, point clouds can be used to locate virtual objects in augmented reality (AR) or mixed reality (MR) applications. Point cloud compression is the process of encoding and decoding point clouds. Encoding point clouds can reduce the amount of data required to store and transmit them. Summary of the Invention

[0004] This disclosure typically describes techniques related to signal transmission of planar and direct modes in the Geometric Point Cloud Compression (G-PCC) standard. This disclosure describes instances of signal transmission of planar modes using Inference-Based Direct Decoding Mode (IDCM), such as the number of points in an IDCM mode or node. The limitations of planar modes on IDCM modes may apply to instances where corner modes are enabled.

[0005] For example, in one or more instances, when angular mode is enabled, flat mode can be disabled (e.g., for nodes that meet the criteria for decoding in IDCM). As one example, a G-PCC encoder or decoder can disable flat mode in all cases where angular mode is enabled. For instance, if a syntax element (e.g., the first syntax element) indicates that angular mode is enabled, then flat mode needs to be disabled. As another example, a G-PCC encoder can signal a syntax element (e.g., the second syntax element) indicating whether flat mode is enabled or disabled when angular mode is enabled. In this instance, enabling angular mode is possible, but the syntax element also indicates that flat mode is enabled.

[0006] In this way, the signal transmission of flat mode values ​​can be restricted based on whether corner mode is enabled, or, if corner mode is enabled, whether the syntax element indicates that flat mode is enabled. In some instances, flat mode can be enabled for the entire stream, but another flag at the node level can indicate whether flat mode is enabled for a specific node.

[0007] For example, if the first syntax element indicates a condition for disabling planar mode for the current node when corner mode is enabled, and / or the second syntax element indicates a condition for disabling corner mode for the current node is met, then the G-PCC encoder may not transmit the planar mode value as a signal. Therefore, the example technique promotes more efficient bandwidth utilization by limiting when the planar mode value is transmitted as a signal.

[0008] In one instance, this disclosure describes a method for encoding point cloud data, the method comprising: signaling at least one of the following: a first syntax element indicating that a planar mode is disabled for the current node when an angle mode is enabled; or a second syntax element indicating that the angle mode is enabled for the current node; bypassing the signaling of the planar mode value for the current node under the following conditions: the first syntax element indicating that the planar mode is disabled for the current node when the angle mode is enabled, or the second syntax element indicating that the angle mode is enabled for the current node; and encoding the current node in a mode different from the planar mode.

[0009] In one example, this disclosure describes a method for decoding point cloud data, the method comprising: parsing from a bitstream at least one of the following: a first syntax element indicating that a planar mode is disabled for the current node when corner mode is enabled; or a second syntax element indicating that the corner mode is enabled for the current node; bypassing the parsing of the planar mode value for the current node in response to the following: the first syntax element indicating that the planar mode is disabled for the current node when corner mode is enabled, or the second syntax element indicating that the corner mode is enabled for the current node; and decoding the current node in a mode different from the planar mode.

[0010] In one example, this disclosure describes an apparatus for encoding point cloud data, the apparatus comprising: a memory configured to store the point cloud data; and processing circuitry coupled to the memory, the processing circuitry being configured to: signal at least one of the following: instructing a first syntax element to disable planar mode for the current node when corner mode is enabled; or instructing a second syntax element to enable the corner mode for the current node; bypassing the signaled value of planar mode for the current node under the following conditions: when the first syntax element instructs that the planar mode is disabled for the current node when corner mode is enabled, or when the second syntax element instructs that the corner mode is enabled for the current node; and encoding the current node in a mode different from the planar mode.

[0011] In one example, this disclosure describes an apparatus for decoding point cloud data, the apparatus including a memory configured to store the point cloud data; and processing circuitry coupled to the memory, the processing circuitry being configured to: parse from a bitstream at least one of the following: a first syntax element indicating that a planar mode is disabled for the current node when corner mode is enabled; or a second syntax element indicating that the corner mode is enabled for the current node; bypass the parsing of the planar mode value for the current node in response to: the first syntax element indicating that the planar mode is disabled for the current node when corner mode is enabled, or the second syntax element indicating that the corner mode is enabled for the current node; and decode the current node in a mode different from the planar mode.

[0012] 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. Simple Explanation of the Diagram

[0013] Figure 1 is a block diagram illustrating an example encoding and decoding system that can perform the techniques disclosed herein.

[0014] Figure 2 is a block diagram illustrating an example geometric point cloud compression (G-PCC) encoder.

[0015] Figure 3 is a block diagram illustrating an example G-PCC decoder.

[0016] Figure 4 is a flowchart illustrating an example of the octree encoding process.

[0017] Figure 5 is a flowchart illustrating an example of the octree decoding process.

[0018] Figure 6 is a flowchart illustrating an instance in which the plane mode and plane position are set to 0 for the inferred direct decoding mode (IDCM) without signal transmission.

[0019] Figure 7 is a flowchart illustrating an example technique for encoding point cloud data.

[0020] Figure 8 is a flowchart illustrating an example technique for decoding point cloud data.

[0021] Figure 9 is a conceptual diagram showing a laser package (such as a LiDAR sensor or other system) including one or more lasers, wherein the one or more lasers scan points in three-dimensional space.

[0022] Figure 10 is a conceptual diagram illustrating an example ranging system that can be used with one or more technologies disclosed herein.

[0023] Figure 11 is a conceptual diagram illustrating an example vehicle-based scenario where one or more technologies can be used, as disclosed herein.

[0024] Figure 12 is a conceptual diagram illustrating an example extended reality system that can use one or more of the techniques disclosed herein.

[0025] Figure 13 is a conceptual diagram illustrating an example mobile device system that can use one or more technologies disclosed herein. Implementation

[0026] The example techniques described in this disclosure relate to point cloud compression, such as geometric point cloud compression (G-PCC). As described in more detail, this disclosure describes example techniques for signal transmission in planar and direct modes in G-PCC. For example, some techniques used in G-PCC for signal transmission in planar and direct modes may result in redundant or inefficient signal transmission. Using the example techniques described in this disclosure, G-PCC encoders can transmit more bandwidth-efficient information for both planar and direct modes by avoiding redundant signal transmission and / or reducing the management burden of transmitting planar information.

[0027] The G-PCC encoder can encode the current node based on coordinate information or angle information. For encoding position information, the G-PCC encoder determines the root coordinate (e.g., the lower left front corner of the current node) and the offset of points within the current node relative to the root coordinate.

[0028] To reduce the magnitude of the offset, the G-PCC encoder can utilize a planar mode. For example, the current node can be split into eight child nodes, with four child nodes above the first plane, four below the first plane, four to the left of the second plane, four to the right of the second plane, four in front of the third plane, and four behind the third plane. If the points in the point cloud are clustered, in planar mode, the G-PCC encoder can signal values ​​indicating such clustering. The G-PCC encoder can adjust the position of the root coordinates to minimize the offset. For example, the G-PCC encoder can determine that all points are located in the upper half of the current node and signal information indicating that there are no points in the lower half of the current node. The G-PCC encoder can adjust the position of the root coordinates to the lower-left front corner of one of the child nodes in the upper half of the current node.

[0029] In angular mode, the G-PCC encoder can determine the angle of the laser beam used to determine the position of a specific point. The G-PCC encoder can use this information as context to encode the position information of points in the point cloud. Compared to planar mode, angular mode often requires fewer bits to convey position information as a signal, but often involves greater computation.

[0030] If corner mode is enabled, signal transmission of information for planar mode may be unnecessary and unnecessarily utilizes bandwidth. It should be understood that there may be instances where corner mode is enabled and sufficient to bypass signal transmission of values ​​for planar mode. However, there may be instances where corner mode is enabled but may not actually be used. In such cases, signal transmission of values ​​for planar mode may be beneficial. This disclosure describes instances of bypassing signal transmission of values ​​for planar mode when corner mode is enabled, instances of bypassing signal transmission of values ​​for planar mode when corner mode is enabled and planar mode is disabled, and instances of enabling planar mode when corner mode is enabled.

[0031] As mentioned above, for planar mode, the G-PCC encoder can signal values ​​used to identify which planes points in the point cloud cluster along. It may not be necessary to signal such values ​​(e.g., in some instances, when corner mode is enabled). However, there are instances where, even when corner mode is enabled, the G-PCC encoder will still signal values ​​for planar mode. For example, there is the possibility that corner mode is enabled for the current node, but it is not applied (e.g., the current node is not actually encoded in corner mode). In such instances (e.g., corner mode is enabled but not applied to the current node), the G-PCC encoder can signal values ​​for planar mode.

[0032] This disclosure describes an example of how planar mode can be disabled for the current node when corner mode is enabled. For example, the G-PCC encoder can signal a syntax element (e.g., `geometry_angular_enabled_flag`) indicating that corner mode is enabled for the current node (e.g., `geometry_angular_enabled_flag` is true). If corner mode is enabled (e.g., `geometry_angular_enabled_flag` is true), the G-PCC encoder can bypass signaling values ​​for planar mode. That is, if `geometry_angular_enabled_flag` indicates that corner mode is enabled for the current node, the G-PCC encoder can bypass signaling values ​​for planar mode for the current node. In other words, the G-PCC encoder can only signal values ​​for planar mode when corner mode is not enabled.

[0033] To give another example, this disclosure describes a syntax element that indicates whether planar mode is disabled for the current node when corner mode is enabled. This syntax element can be called "geom_disable_planar_idcm_angular". If this syntax element (e.g., geom_disable_planar_idcm_angular) indicates that planar mode is disabled when corner mode is enabled, the G-PCC encoder can bypass signaling the value for planar mode. That is, the G-PCC encoder can bypass signaling the value for planar mode for the current node if the geom_disable_planar_idcm_angular flag indicates that planar mode is disabled when corner mode is enabled. In other words, the G-PCC encoder can only signal the value for planar mode if this syntax element indicates that planar mode is not disabled when corner mode is enabled (e.g., geom_disable_planar_idcm_angular is false).

[0034] For convenience, `geom_disable_planar_idcm_angular` can be referred to as the first syntax element, and `geometry_angular_enabled_flag` can be referred to as the second syntax element. For example, the G-PCC encoder can bypass the condition that planar mode is disabled for the current node when angular mode is enabled, or that angular mode is enabled for the current node when the first syntax element indicates that planar mode is disabled for the current node, or that angular mode is enabled for the current node when the second syntax element indicates that angular mode is enabled for the current node. Combinations of these conditions are also possible. For example, the G-PCC encoder can bypass the condition that planar mode is disabled for the current node when angular mode is enabled, and that angular mode is enabled for the current node when the second syntax element indicates that angular mode is enabled for the current node.

[0035] In some instances, the techniques described in this disclosure can be applied to the current node conforming to Inferred Direct Decoding Mode (IDCM) or Direct Mode only. In IDCM mode, the node's occupancy information (i.e., the occupancy of one or more child nodes) may not be encoded. When decoding a node using IDCM mode, the relative coordinates of points within the node are transmitted via signals instead of occupancy information. Although the current node may conform to IDCM conditions, it may not be necessary to encode the current node under IDCM. For example, in some instances, occupancy information may be transmitted via signals even if the current node conforms to IDCM mode, but the current node is not encoded using IDCM mode.

[0036] Figure 1 is a block diagram illustrating an example encoding and decoding system 100 capable of implementing the techniques disclosed herein. The techniques disclosed herein are generally aimed at decoding (encoding and / or decoding) point cloud data, i.e., supporting point cloud compression. Typically, point cloud data includes any data used for processing the point cloud. Such decoding can efficiently compress and / or decompress point cloud data.

[0037] As shown in Figure 1, system 100 includes a source device 102 and a destination device 116. Source device 102 provides encoded point cloud data to be decoded by destination device 116. Specifically, in the example of Figure 1, source device 102 provides point cloud data to destination device 116 via computer-readable media 110. Source device 102 and destination device 116 can include any of a wide range of devices, including desktop computers, laptops (e.g., tablets), set-top boxes, handset phones (such as smartphones), televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, land or sea vehicles, spacecraft, aircraft, robots, lidar equipment, satellites, etc. In some cases, source device 102 and destination device 116 can be configured for wireless communication.

[0038] In the example of Figure 1, source device 102 includes a data source 104, memory 106, a G-PCC encoder 200, and an output interface 108. Destination device 116 includes an input interface 122, a G-PCC decoder 300, memory 120, and a data consumer 118. According to this disclosure, the G-PCC encoder 200 of source device 102 and the G-PCC decoder 300 of destination device 116 can be configured to apply the techniques of this disclosure related to inference-dependent direct decoding mode (IDCM) processing of planar point cloud data. Therefore, source device 102 represents an instance of an encoding device, and destination device 116 represents an instance of a decoding device. In other instances, source device 102 and destination device 116 may include other components or arrangements. For example, source device 102 may receive data (e.g., point cloud data) from an internal or external source. Similarly, destination device 116 may interface with an external data consumer, rather than including the data consumer in the same device.

[0039] The system 100 shown in Figure 1 is merely one example. Typically, other digital encoding and / or decoding devices can perform the techniques described herein related to the Inference-Based Direct Decoding Mode (IDCM) for processing planar point cloud data. Source device 102 and destination device 116 are merely examples of such devices, where source device 102 generates decoded data for transmission to destination device 116. This disclosure refers to a "decoding" device as a device that performs the decoding (encoding and / or decoding) of data. Therefore, G-PCC encoder 200 and G-PCC decoder 300 represent instances of decoding devices (specifically, encoder and decoder), respectively. In some instances, source device 102 and destination device 116 can operate in a substantially symmetrical manner, such that each of source device 102 and destination device 116 includes encoding and decoding components. Therefore, system 100 can support unidirectional or bidirectional transmission between source device 102 and destination device 116, for example, for streaming, replay, broadcasting, telephone, navigation, and other applications.

[0040] Typically, data source 104 represents the source of data (i.e., raw, unencoded point cloud data) and can provide a continuous sequence of "frames" of data to G-PCC encoder 200, which encodes the data in the frames. Data source 104 of source device 102 may include point cloud capturing devices, such as any of a variety of cameras or sensors (e.g., 3D scanners or light detection and ranging (LIDAR) devices), one or more video cameras, files containing previously captured data, and / or data feed interfaces for receiving data from data content providers. Alternatively or additionally, the point cloud data may be computer-generated or other data from scanners, cameras, sensors, etc. For example, data source 104 may generate computer-graphics-based data as source data, or a combination of real-time data, archived data, and computer-generated data. In each case, G-PCC encoder 200 encodes the captured, pre-captured, or computer-generated data. The G-PCC encoder 200 can rearrange the frames from the received order (sometimes referred to as the "display order") to a decoding order for decoding. The G-PCC encoder 200 can generate one or more bitstreams including encoded data. Subsequently, the source device 102 can output the encoded data to a computer-readable medium 110 via the output interface 108 for reception and / or retrieval via, for example, the input interface 122 of the destination device 116.

[0041] The memory 106 of the source device 102 and the memory 120 of the destination device 116 can represent general-purpose memory. In some instances, memory 106 and memory 120 can store raw data, such as raw data from data source 104 and raw decoded data from G-PCC decoder 300. Alternatively or additionally, memory 106 and memory 120 can store software instructions that can be executed by, for example, G-PCC encoder 200 and G-PCC decoder 300 respectively. Although in this example, memory 106 and memory 120 are illustrated separately from G-PCC encoder 200 and G-PCC decoder 300, it should be understood that G-PCC encoder 200 and G-PCC decoder 300 may also include internal memory to achieve functionally similar or equivalent purposes. Furthermore, memory 106 and memory 120 can store encoded data (e.g., output from G-PCC encoder 200 and input to G-PCC decoder 300). In some instances, portions of memory 106 and memory 120 may be allocated as one or more buffers, for example, to store raw, decoded, and / or encoded data. For instance, memory 106 and memory 120 may store data representing point clouds.

[0042] Computer-readable media 110 can refer to any type of media or device capable of transmitting encoded data from source device 102 to destination device 116. In one example, computer-readable media 110 refers to a communication medium that enables source device 102 to transmit encoded data directly to destination device 116 in real time, for example, via a radio frequency network or a computer-based network. Output interface 108 can modulate the transmitted signal, including encoded data, according to a communication standard such as a wireless communication protocol, and input interface 122 can demodulate the received transmitted signal. Communication media can include any wireless or wired communication media, such as radio frequency (RF) spectrum or one or more physical transmission lines. Communication media can form part of a packet-based network such as a local area network, wide area network, or global network (such as the Internet). Communication media can include routers, switches, base stations, or any other device used to facilitate communication from source device 102 to destination device 116.

[0043] In some instances, source device 102 can output encoded data from output interface 108 to storage device 112. Similarly, destination device 116 can access encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally accessible data storage media (such as hard drives, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory) or any other suitable digital storage media for storing encoded data.

[0044] In some instances, source device 102 may output encoded data to file server 114 or to another intermediate storage device that may store the encoded data generated by source device 102. Destination device 116 may access the stored data from file server 114 via streaming or downloading. File server 114 may be any type of server device capable of storing encoded data and sending it to destination device 116. File server 114 may represent a network server (e.g., for a website), a File Transfer Protocol (FTP) server, a Content Delivery Network (CDN) device, or a Network Attached Storage (NAS) device. Destination device 116 may access the encoded data from file server 114 via any standard data connection, including an Internet connection. This may include a wireless channel (e.g., Wi-Fi connection), a wired connection (e.g., Digital Subscriber Line (DSL), cable modem, etc.), or a combination of both, suitable for accessing encoded data stored on file server 114. The file server 114 and the input interface 122 can be configured to operate according to a streaming protocol, a download protocol, or a combination thereof.

[0045] Output interface 108 and input interface 122 can 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 instances where output interface 108 and input interface 122 include wireless components, output interface 108 and input interface 122 can be configured to transmit data such as encoded data according to cellular communication standards such as 4G, 4G-LTE (Long Term Evolution), Advanced LTE, 5G, etc. In some instances where output interface 108 includes a wireless transmitter, output interface 108 and input interface 122 can be configured to transmit data such as encoded data according to other wireless standards (e.g., the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee™), the Bluetooth™ standard, etc.). In some instances, source device 102 and / or destination device 116 can include corresponding system-on-chip (SoC) devices. For example, source device 102 may include a SoC device to perform functions belonging to G-PCC encoder 200 and / or output interface 108, while destination device 116 may include a SoC device to perform functions belonging to G-PCC decoder 300 and / or input interface 122.

[0046] The techniques disclosed herein can be applied to encoding and decoding to support any of a variety of applications, such as communication between autonomous vehicles, communication between scanners, cameras, sensors and processing devices (such as local or remote servers), geographic mapping, or other applications.

[0047] The input interface 122 of the destination device 116 receives an encoded bitstream from computer-readable media 110 (e.g., communication media, storage device 112, file server 114, etc.). The encoded bitstream may include signal transmission information defined by the G-PCC encoder 200 and used by the G-PCC decoder 300, such as syntax elements having characteristics and / or processed values ​​describing the decoding units (e.g., segments, images, image sets, sequences, etc.). The data consumer 118 uses the decoded data. For example, the data consumer 118 may use the decoded data to determine the position of physical objects. In some instances, the data consumer 118 may include a display to present images based on point clouds.

[0048] The G-PCC encoder 200 and G-PCC decoder 300 can 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 these technologies are implemented in part in software, the device can store instructions for the software in a suitable non-transitory computer-readable medium and use one or more processors to execute these instructions in hardware to perform the technologies disclosed herein. Each of the G-PCC encoder 200 and G-PCC decoder 300 can be included in one or more encoders or decoders, any of which can be integrated as part of a combined encoder / decoder (CODEC) in the respective device. Devices including the G-PCC encoder 200 and / or G-PCC decoder 300 can include one or more integrated circuits, microprocessors, and / or other types of devices.

[0049] The G-PCC encoder 200 and G-PCC decoder 300 can operate according to decoding standards such as the Video Point Cloud Compression (V-PCC) standard or the Geometric Point Cloud Compression (G-PCC) standard. This disclosure typically relates to the decoding (e.g., encoding and decoding) of images, including the process of encoding or decoding data. The encoded bitstream typically includes a series of values ​​for syntax elements used to represent decoding decisions (e.g., decoding modes).

[0050] This disclosure generally refers to the "signal transmission" of certain information (such as syntax elements). The term "signal transmission" can generally refer to transmitting values ​​for syntax elements and / or other data used to decode encoded data. That is, the G-PCC encoder 200 can signal-transmit values ​​for syntax elements in a bitstream. Typically, signal transmission involves generating values ​​in a bitstream. As described above, the source device 102 can transmit the bitstream to the destination device 116 substantially immediately or not immediately, such as when storing syntax elements in storage device 112 for later retrieval by the destination device 116.

[0051] ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) is investigating the potential need to standardize point cloud decoding techniques given their significantly greater compression capabilities compared to current methods, and is working towards establishing a standard. This group is collaborating on this exploration within a joint effort called the 3D Graphics Group (3DG) to evaluate compression technology designs proposed by their experts in the field.

[0052] Point cloud compression activities can be categorized into two distinct methods. The first is "Video Point Cloud Compression" (V-PCC), which segments a 3D object and projects these segments onto multiple 2D planes (represented as "patches" in a 2D frame). These 2D planes are then further decoded using a traditional 2D video transcoder, such as an High-Efficiency Video Decoder (HEVC) (ITU-T H.265) transcoder. The second method is "Geometry-Based Point Cloud Compression" (G-PCC), which directly compresses 3D geometry (i.e., the positions of a set of points in 3D space) and associated attribute values ​​(for each point associated with the 3D geometry). G-PCC addresses point cloud compression in both Category 1 (static point clouds) and Category 3 (dynamically acquired point clouds). The latest draft of the G-PCC standard is available in the G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, presented at the November 2020 conference call, and a description of the transcoder is available in the G-PCC transcoder description, ISO / IEC JTC1 / SC29 / WG11 N0011, presented at the October 2020 conference call. Another draft of the G-PCC standard is available in ISO / IEC JTC1 / SC28 / WG7 N00348, presented at the April 2022 conference call, and a description of the transcoder is available in the G-PCC transcoder description, ISO / IEC JTC1 / SC28 / WG7 N00271, presented at the January 2022 conference call.

[0053] A point cloud contains a set of points in 3D space and may have attributes associated with those points. These attributes may be color information such as R, G, B or Y, Cb, Cr, or reflectance information, or other attributes. Point clouds can be captured by various cameras or sensors (such as LiDAR sensors and 3D scanners) and may also be generated by computers. Point cloud data is used in a wide variety of applications, including but not limited to: construction (modeling), graphics (3D models for visualization and animation), and the automotive industry (LiDAR sensors for navigation aids).

[0054] The 3D space occupied by point cloud data can be enclosed by a virtual bounding box. The positions of points within the bounding box can be represented with a specific precision; therefore, the positions of one or more points can be quantized based on this precision. At the smallest level, the bounding box is separated into voxels, the smallest spatial unit represented by a unit cube. A voxel within the bounding box can be associated with zero, one, or more points. The bounding box can be separated into multiple cubic / cuboid regions, which can be called tiles. Each tile can be encoded into one or more slices. Dividing the bounding box into slices and tiles can be based on the number of points in each division, or on other considerations (e.g., encoding specific regions as tiles). Slice regions can be further subdivided using a separation decision similar to that in a video transcoder.

[0055] Figure 2 provides an overview of the G-PCC encoder 200. Figure 3 provides an overview of the G-PCC decoder 300. The units shown are logical and do not necessarily correspond one-to-one with the implementation code in the reference implementation of the G-PCC transcoder (i.e., the TMC13 test model software studied by ISO / IEC MPEG (JTC 1 / SC 29 / WG 11)).

[0056] In both the G-PCC encoder 200 and the G-PCC decoder 300, the point cloud positions are decoded first. Attribute decoding depends on the geometry being decoded. In Figures 2 and 3, units 212, 218, 310, and 314 can be options typically used for Category 1 data. Units 220, 222, 316, and 318 can be options typically used for Category 3 data. All other units are common between Category 1 and Category 3.

[0057] For Category 3 data, the compressed geometry is typically represented as an octree at the leaf level, descending from the root down to individual voxels. For Category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree at the leaf level, descending from the root down to blocks larger than voxels) plus a model that approximates the surface within each leaf of the pruned octree. In this way, both Category 1 and Category 3 data share the octree decoding mechanism, and Category 1 data can also be approximated by voxels within each leaf with a surface model. The surface model used is a triangulation of 1-10 triangles per block, resulting in a triangular soup. Therefore, the Category 1 geometry transcoder is called a Trisoup geometry transcoder, and the Category 3 geometry transcoder is called an octree geometry transcoder.

[0058] At each node of the octree, occupancy is signaled for one or more (up to eight) of its child nodes (when not inferred). Multiple neighborhoods are specified, including: (a) nodes sharing faces with the current octree node, (b) nodes sharing faces, edges, or vertices with the current octree node, etc. Within each neighborhood, the occupancy of a node and / or its child nodes can be used to predict the occupancy of the current node or its child nodes. For points sparsely filled in some nodes of the octree, the transcoder also supports direct decoding modes (e.g., IDCM), where the 3D position of the point is directly encoded. A signaled flag can be used to indicate the signaled direct mode. At the lowest level, the number of points associated with an octree node / leaf node can also be decoded.

[0059] Once the geometry is decoded, the attributes corresponding to the geometric points are also decoded. When a reconstructed / decoded geometric point corresponds to multiple attribute points, the attribute values ​​representing the reconstructed point can be derived.

[0060] G-PCC employs three attribute decoding methods: Region Self-Adjusting Hierarchical Transformation (RAHT) decoding, interpolation-based hierarchical nearest neighbor prediction (prediction transform), and interpolation-based hierarchical nearest neighbor prediction with update / lifting steps (lifting transform). RAHT and Lifting are typically used for Class 1 data, while prediction is typically used for Class 3 data. However, any method can be used for any data, and as with the geometry transcoder in G-PCC, the attribute decoding method used for decoding the point cloud is specified in the bitstream.

[0061] Attribute decoding can be performed at the level of detail (LOD), where a more refined representation of the point cloud attributes can be obtained for each LOD. Each LOD can be specified based on a distance metric to neighboring nodes or based on sampling distance.

[0062] At the G-PCC encoder 200, the residual obtained from the output of the decoding method as an attribute is quantized. The residual can be obtained by subtracting the attribute value from the prediction derived from the attribute values ​​based on the points in the neighborhood of the current point and the attribute values ​​based on the previously encoded points. The quantized residual can be decoded using context-adjusted arithmetic decoding.

[0063] In the example of Figure 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 geometric reconstruction unit 216, a RAHT unit 218, a LOD generation unit 220, a lifting unit 222, a coefficient quantization unit 224, and an arithmetic coding unit 226.

[0064] As shown in the example of Figure 2, the G-PCC encoder 200 can obtain the location set and attribute set of points in a point cloud. The G-PCC encoder 200 can obtain the location set and attribute set of points in the point cloud from data source 104 (Figure 1). These locations can include the coordinates of the points in the point cloud. These attributes can include information about the points in the point cloud, such as the color associated with the points. The G-PCC encoder 200 can generate a geometric bitstream 203, which includes an encoded representation of the locations of the points in the point cloud. The G-PCC encoder 200 can also generate an attribute bitstream 205, which includes an encoded representation of the attribute set.

[0065] The coordinate transformation unit 202 can apply transformations to the coordinates of points to transform the coordinates from the initial domain to the transformation domain. In this disclosure, the transformed coordinates can be referred to as transformed coordinates. The color transformation unit 204 can apply transformations to transform the color information of attributes to different domains. For example, the color transformation unit 204 can transform color information from the RGB color space to the YCbCr color space.

[0066] Furthermore, in the example of Figure 2, the voxelization unit 206 can voxelize the transformed coordinates. Voxelization of the transformed coordinates can include quantization and removal of some points in the point cloud. In other words, multiple points in the point cloud can be grouped into a single "voxel," which can then be treated as a single point in some respects. Additionally, the octree analysis unit 210 can generate an octree based on the voxelized transformed coordinates. Furthermore, in the example of Figure 2, the surface approximation analysis unit 212 can analyze the points to potentially determine the surface representation of the point set. The arithmetic encoding unit 214 can entropy encode the syntax elements representing the information of the octree and / or surface determined by the surface approximation analysis unit 212. The G-PCC encoder 200 can output these syntax elements in the geometric bitstream 203. The geometric bitstream 203 may also include other syntax elements, including those not arithmetically encoded.

[0067] As shown, the surface approximation analysis unit 212 may include a planar mode / corner mode unit 213. In one or more instances, the planar mode / corner mode unit 212 may be configured to perform one or more example techniques described in this disclosure, such as those described with reference to FIG. 7. The inclusion of the planar mode / corner mode unit 213 is provided as an example and should not be considered limiting. Although example techniques are shown with respect to the planar mode / corner mode unit 213, in some instances, such example techniques may be performed by the arithmetic coding unit 214.

[0068] The geometric reconstruction unit 216 can reconstruct the transformed coordinates of points in the point cloud based on an octree, data indicating the surface determined by the surface approximation analysis unit 212, and / or other information. Due to voxelization and surface approximation, the number of transformed coordinates reconstructed by the geometric reconstruction unit 216 may differ from the number of original points in the point cloud. The resulting points can be referred to as reconstructed points in this disclosure. The attribute transfer unit 208 can transfer attributes of the original points in the point cloud to the reconstructed points.

[0069] Furthermore, RAHT unit 218 can apply RAHT decoding to the attributes of the reconstructed points. In some instances, under RAHT, the attributes of a 2x2x2 point location block are obtained and transformed along one direction to obtain four low-frequency (L) and four high-frequency (H) nodes. Subsequently, the four low-frequency nodes (L) are transformed in a second direction to obtain two low-frequency (LL) and two high-frequency (LH) nodes. The two low-frequency nodes (LL) are transformed along a third direction to obtain one low-frequency (LLL) and one high-frequency (LLH) node. The low-frequency node LLL corresponds to the DC coefficients, and the high-frequency nodes H, LH, and LLH correspond to the AC coefficients. The transformation in each direction can be a one-dimensional transformation with two coefficient weights. The low-frequency coefficients can be regarded as the coefficients of the 2x2x2 block for use in the next higher-level RAHT transformation, and the AC coefficients are encoded without change; this transformation continues until the top root node. The tree traversal used for encoding is from top to bottom to calculate the weights used for the coefficients; the transformation order is from bottom to top. Subsequently, the coefficients can be quantized and decoded.

[0070] Alternatively or additionally, LOD generation unit 220 and lifting unit 222 can apply LOD processing and lifting to the attributes of the reconstructed points, respectively. LOD generation is used to separate attributes into different refinement levels. Each refinement level provides a refinement of the point cloud's attributes. The first refinement level provides a coarse approximation and contains a few points; subsequent refinement levels typically contain more points, and so on. Refinement levels can be constructed using distance-based metrics, or they can use one or more other classification criteria (e.g., subsampling in a specific order). Therefore, all reconstructed points can be included in a refinement level. Each refinement level is generated by merging all points into a specific refinement level: for example, LOD1 is obtained based on refinement level RL1, LOD2 is obtained based on RL1 and RL2, ..., LODN is obtained by merging RL1, RL2, ..., RLN. In some cases, the LOD can be followed by a prediction scheme (e.g., a prediction transform), where the attributes associated with each point in the LOD are predicted based on a weighted average of the previous points, and the residuals are quantized and entropy-decoded. Improvement schemes build upon the prediction transform mechanism, where update operators are used to update the coefficients, and the coefficients are self-adjustingly quantized.

[0071] RAHT unit 218 and lifting unit 222 can generate coefficients based on attributes. Coefficient quantization unit 224 can quantize the coefficients generated by RAHT unit 218 or lifting unit 222. Arithmetic coding unit 226 can apply arithmetic decoding to the syntax elements representing the quantized coefficients. G-PCC encoder 200 can output these syntax elements in attribute bitstream 205. Attribute bitstream 205 may also include other syntax elements, including non-arithmically coded syntax elements.

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

[0073] The G-PCC decoder 300 can obtain a geometric bitstream 203 and an attribute bitstream 205. The geometric arithmetic decoding unit 302 of the G-PCC decoder 300 can apply arithmetic decoding (e.g., context-adjusted binary arithmetic decoding (CABAC) or other types of arithmetic decoding) to the syntax elements in the geometric bitstream 203. Similarly, the attribute arithmetic decoding unit 304 can apply arithmetic decoding to the syntax elements in the attribute bitstream 205.

[0074] Octree synthesis unit 306 can synthesize octrees based on syntax elements parsed from geometric bitstream 203. Starting from the root node of the octree, the occupancy of each of the eight child nodes at each octree level is signaled in the bitstream. When a signal indicates that a child node at a specific octree level is occupied, the occupancy of that child node's child nodes is signaled. Signaling of nodes at each octree level is signaled before proceeding to subsequent octree levels. At the last level of the octree, each node corresponds to a voxel position; when a leaf node is occupied, one or more points can be specified to occupy that voxel position. In some instances, due to quantization, some branches of the octree may terminate before the final level. In this case, leaf nodes are considered occupied nodes without child nodes. In instances where surface approximation is used in geometric bitstream 203, surface approximation synthesis unit 310 can determine the surface model based on syntax elements parsed from geometric bitstream 203 and based on the octree.

[0075] Furthermore, the geometric reconstruction unit 312 can perform reconstruction to determine the coordinates of points in the point cloud. For each location at a leaf node of the octree, the geometric reconstruction unit 312 can reconstruct the node position using the binary representation of the leaf node in the octree. At each corresponding leaf node, the number of points at the corresponding leaf node is signaled; this indicates the number of repeated points at the same voxel location. When geometric quantization is used, the point positions are scaled to determine the reconstructed point position values.

[0076] As shown, the geometric reconstruction unit 312 may include a planar mode / corner mode unit 313. In one or more instances, the planar mode / corner mode unit 313 may be configured to perform one or more example techniques described in this disclosure, such as those described with reference to FIG8. The inclusion of the planar mode / corner mode unit 313 is provided as an example and should not be considered limiting. Although example techniques are shown with respect to the planar mode / corner mode unit 313, in some instances, such example techniques may be performed by the geometric arithmetic decoding unit 302.

[0077] The inverse transform coordinate unit 320 can apply an inverse transform to the reconstructed coordinates to transform the reconstructed coordinates (positions) of points in the point cloud from the transform domain back to the initial domain. The positions of points in the point cloud can be in the floating-point domain, but the point positions in the G-PCC transcoder are decoded in the integer domain. An inverse transform can be used to convert the positions back to the original domain.

[0078] Furthermore, in the example of Figure 3, the inverse quantization unit 308 can inverse quantize the attribute values. These attribute values ​​can be based on syntactic elements obtained from the attribute bitstream 205 (e.g., including syntactic elements decoded by the attribute arithmetic decoding unit 304).

[0079] Depending on how the attribute values ​​are encoded, RAHT unit 314 can perform RAHT decoding to determine the color values ​​of the points in the point cloud based on the inverse-quantized attribute values. RAHT decoding is performed from the top to the bottom of the tree. At each level, low-frequency and high-frequency coefficients derived from the inverse-quantization process are used to derive the component value. At the leaf nodes, the derived value corresponds to the attribute value of the coefficient. The weight derivation process for these points is similar to the process used at the G-PCC encoder 200. Alternatively, LOD generation unit 316 and inverse lifting unit 318 can use level-of-detail techniques to determine the color values ​​of the points in the point cloud. LOD generation unit 316 decodes each LOD, thereby progressively providing a finer representation of the point's attributes. By means of a prediction transform, LOD generation unit 316 derives a prediction of the points based on a weighted sum of points reconstructed in previous LODs or previously in the same LOD. LOD generation unit 316 can add the prediction to the residual (obtained after inverse-quantization) to obtain the reconstructed attribute values. When using an enhancement scheme, the LOD generation unit 316 may also include update operators to update the coefficients used to derive attribute values. In this case, the LOD generation unit 316 may also apply inverse self-adjusting quantization.

[0080] Furthermore, in the example of Figure 3, the inverse color transformation unit 322 can apply an inverse color transformation to the color value. The inverse color transformation can be the inverse operation of the color transformation applied by the color transformation unit 204 of the encoder 200. For example, the color transformation unit 204 can transform color information from the RGB color space to the YCbCr color space. Therefore, the inverse color transformation unit 322 can transform color information from the YCbCr color space to the RGB color space.

[0081] The various units of Figures 2 and 3 are illustrated to aid in understanding the operations performed by the G-PCC encoder 200 and the G-PCC decoder 300. These units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Fixed-function circuits represent circuits that provide specific functions and are pre-configured for the operations they can perform. Programmable circuits represent circuits that can be programmed to perform various tasks and provide flexible functionality in the operations they can perform. For example, a programmable circuit can execute software or firmware that causes it to operate in a manner defined by software or firmware instructions. Fixed-function circuits can execute software instructions (e.g., for receiving or outputting parameters), but the type of operation performed by a fixed-function circuit is typically immutable. In some instances, one or more of these units may be different circuit blocks (fixed-function or programmable), and in some instances, one or more of these units may be integrated circuits.

[0082] The following describes the planar, angular, and orientation decoding modes in G-PCC. As an introduction, the planar decoding mode was first proposed in July 2019 in Gothenburg, Sweden, by Sébastien Lasserre and David Flynn in "[GPCC] Planar mode in octree-based geometry coding", ISO / IEC JTC1 / SC29 / WG11 MPEG / m48906. It was adopted in October 2019 at the 128th MPEG meeting in Geneva, Switzerland, in "[GPCC] CE 13.22 report on planar coding mode", ISO / IEC JTC1 / SC29 / WG11 MPEG / m50008 (Geneva, Switzerland).

[0083] The angular coding mode was first proposed in Geneva, Switzerland in October 2019 by Sébastien Lasserre and Jonathan Taquet in "[GPCC][CE 13.22 related] An improvement of the planar coding mode", ISO / IEC JTC1 / SC29 / WG11 MPEG / m50642. It was adopted in January 2020 at the 129th MPEG meeting in Brussels, Belgium in Sébastien Lasserre and Jonathan Taquet's "[GPCC] CE 13.22 report on angular mode", ISO / IEC JTC1 / SC29 / WG11 MPEG / m51594 (Brussels, Belgium). Furthermore, by utilizing the sensor characteristics of a typical LiDAR sensor, the decoding efficiency of the planar mode was improved. The angular decoding mode can be used in conjunction with the planar mode and improves the decoding of vertical (z) plane position syntax elements by employing knowledge of the position and angle of the sensed laser beam in a typical LiDAR sensor. Furthermore, the angular decoding mode can be selectively used to improve the decoding of vertical z-position bits in the inferred direct decoding mode (IDCM).

[0084] Among their individual contributions, in April 2020, Geert Van der Auwera, Bappaditya Ray, Louis Kerofsky, Adarsh ​​K. Ramasubramonian, and Marta Karczewicz, in their proposal "[GPCC][New Proposal] Angular mode simplifications and HLS refinements," presented at the ISO / IEC JTC1 / SC29 / WG11 MPEG / m53693 teleconference (previously the Alpbach meeting), simplified the context derivation of angular decoding modes and improved the efficiency of HLS (High-Level Syntax) decoding of sensor data parameters. The angular mode description below is based on the original MPEG contribution files (e.g., in Geneva, Switzerland, October 2019, Sébastien Lasserre and Jonathan Taquet, “[GPCC][CE 13.22 related] An improvement of the planar coding mode”, ISO / IEC JTC1 / SC29 / WG11 MPEG / m50642, and in Brussels, Belgium, January 2020, Sébastien Lasserre and Jonathan Taquet, “[GPCC] CE 13.22 report on angular mode”, ISO / IEC JTC1 / SC29 / WG11 MPEG / m51594, and GPCC DIS texts (e.g., in November 2020, G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, teleconference).

[0085] The azimuthal coding mode was first proposed in January 2020 in Brussels, Belgium, by Sébastien Lasserre and Jonathan Taquet in "[GPCC][CE 13.22 related] The azimuthal coding mode", ISO / IEC JTC1 / SC29 / WG11 MPEG / m51596. It was adopted in April 2020 at the 130th MPEG teleconference (formerly the Alpbach conference) in "[GPCC][CE 13.22] Report on azimuthal coding mode", ISO / IEC JTC1 / SC29 / WG11 MPEG / m52958 (teleconference). The azimuthal coding mode is similar to the angular mode, extending it to the decoding of (x) and (y) plane position syntax elements in the planar mode, and improving the decoding of x or y position bits in IDCM.

[0086] Among the individual contributions, in July 2020 at the 131st MPEG teleconference, Geert Van der Auwera, Bappaditya Ray, Adarsh ​​K. Ramasubramonian, and Marta Karczewicz, "[GPCC][New Proposal] Planar and azimuthal coding mode simplifications", ISO / IEC JTC1 / SC29 / WG11 MPEG / m54694, teleconference, significantly reduced the number of contexts used in azimuthal coding modes. Another contribution was in June 2020, Wei Zhang, Zexing Sun, and Mary Luc Champel, "[G-PCC] EE13.37 report on planar coding improvement", ISO / IEC JTC1 / SC29 / WG11 MPEG / m53693, teleconference (previously the Geneva meeting). The phrase "azimuthal coding mode" can also refer to the azimuthal coding mode in this description.

[0087] The following describes the planar decoding mode in the November 2020 teleconference G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637. For example, the specifications related to the planar decoding mode in the November 2020 teleconference G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637 are summarized below: 8.2.3.1 Qualification of nodes for planar decoding mode Explicit decoding of the occupied plane is conditional on the probability of XXX. An array PlanarRate with elements PlanarRate[k] (where k = 0…2) is a probability estimate of the number of nodes that occupy a single plane perpendicular to the k-th axis. The variable LocalDensity is an estimate of the average number of child nodes occupied by a node. The variable NumNodesUntilPlanarUpdate counts the number of nodes to be resolved before updating PlanarRate and LocalDensity. [XXX entropy state continuation] When parsing the geometry_octree syntax structure, PlanarRate and LocalDensity are initialized as follows: for (k=0;k<3; k++) PlanarRate[k] = 1024 LocalDensity = 4096 NumNodesUntilPlanarUpdate=0 When parsing each geometry_octree_node syntax structure begins, NumNodesUntilPlanarUpdate is decremented. If NumNodesUntilPlanarUpdate is less than zero, PlanarRate and LocalDensity are updated as follows: - Determine the number of sibling nodes to occupy and use them to update the LocalDensity estimate: Make numSiblings=NodeNumChildren[depth-1][sNp][tNp][vNp] LocalDensity=(255×LocalDensity+1024×numSiblings)>>8 - The number of nodes until the next update is: NumNodesUntilPlanarUpdate = numSiblings - 1 XXX - Use the occupancy information of the parent node to determine the existence of a single occupancy plane along each axis and update the corresponding plane probability estimate PlanarRate[k]. Make parentOccupancy=GeometryNodeOccupancy[depth-1][sNp][tNp][vNp] Make planeMasks0={0xf0,0xcc,0xaa} Make planeMasks1={0x0f,0x33,0x55} for (k = 0; k < 3; k++) { Let plane0 = (parentOccupancy & planeMaks0[k]) != 0 Let plane1 = (parentOccupancy & planeMaks1[k]) != 0 make hasSinglePlane = plane0 ^ plane1 PlanarRate[k] = (255 × PlanarRate[k] + 8 × 256 × hasSinglePlane + 128) >> 8 } When parsing the syntax structure of each geometry_octree_node, it determines for each axis whether the current node is eligible to transmit planar information via signaling. The output of this process is an array PlanarEligible with elements PlanarEligible[k], k=0…2. First, based on Table 18, PlanarRate is used to determine the order of the three planes from most likely to least likely, planeOrder[k]. Subsequently, PlanarEligible is set as follows: for (k = 0; k < 3; k++) { if (EffectiveNodeSizeLog2[k] <= 0) PlanarEligible[k] = 0 else if (!geom_tree_coded_axis_flag[depth][k]) PlanarEligible[k] = 0 else if (!geometry_planar_enabled_flag) PlanarEligible[k] = 0 else if (XXX angular mode linkage XXX) PlanarEligible[k] = XXX else if (LocalDensity >= 3 × 1024) PlanarEligible[k] = 0 else PlanarEligible[k] = PlanarRate[k] > geom_planar_th[planeOrder[k]] } Table 18 - Determine the value of planeOrder[k] according to planarRate[k] Condition planeOrder[0] planeOrder[1] planeOrder[2] PlanarRate[0]≥PlanarRate[1]≥PlanarRate[2] 0 1 2 PlanarRate[0]≥PlanarRate[2]>PlanarRate[1] 0 2 1 PlanarRate[1]>PlanarRate[0]≥PlanarRate[2] 1 0 2 PlanarRate[1]≥PlanarRate[2]>PlanarRate[0] 1 2 0 PlanarRate[2]>PlanarRate[0]≧PlanarRate[1] 2 0 1 PlanarRate[2]>PlanarRate[1]>PlanarRate[0] 2 1 0 Pass syntax elements as signals into a bitstream: `is_planar_flag[axisIdx]` equal to 1 indicates that the positions of the current node's child nodes form a single plane perpendicular to the `axisIdx`-th axis. `is_planar_flag[axisIdx]` equal to 0 (when present) indicates that the positions of the current node's child nodes occupy two planes perpendicular to the `axisIdx`-th axis. The context index (ctxIdx) used for decoding is_planar_flag is specified in Table 37 of the November 2020 teleconference G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, where it is set to equal axisIdx. 8.2.3.2 Buffer for Tracing Nearest Node Along the Axis The arrays PlanarPrevPos, PlanarPlane, and IsPlanarNode record information about previously decoded geometry tree nodes, used to determine the ctxIdx of the syntax element plane_position. These arrays are not used during the decoding process when geometry_planar_enabled_flag is equal to 0 or planar_buffer_disabled_flag is equal to 1. In this process, the variable axisIdx is used to represent one of the three decoding axes, and the variable axisPos represents the position of the node along the axisIdx-th axis. The value of axisPos is in the range of 0...0x3fff. An array IsPlanarNode with the value IsPlanarNode[axisIdx][axisPos] indicates whether the most recently decoded node (where the axisIdx position component is equal to axisPos) is planar in a plane perpendicular to the axisIdx axis. The array PlanarPrevPos, with the value PlanarPrevPos[axisIdx][axisPos], stores the maximum position component of the most recently decoded node, where the x-th position component is equal to axisPos. The array PlanarPlane, with values ​​PlanarPlane[axisIdx][axisPos], indicates the value of plane_position[axisIdx] of the most recently decoded node, where the axisIdx position component is equal to axisPos. At the beginning of each geometric tree level, each element of the arrays PlanarPrevPos and IsPlanarNode is initialized to 0. After decoding each geometry_planar_mode_data syntax structure using the parameters childIdx and axisIdx, the arrays PlanarPrevPos, PlanarPlane, and IsPlanarNode will be updated as follows: The derivation of the variable axisPos, representing the position along the x-th axisId, is as follows: if (axisIdx == 0) axisPos = sN & 0x3fff if (axisIdx == 1) axisPos = tN & 0x3fff if (axisIdx == 2) axisPos = vN & 0x3fff - The array entries corresponding to the nodes are updated as follows: if (axisIdx == 0) maxPos = Max(tN & 0x7c0, vN & 0x7c0) >> 3 if (axisIdx == 1) maxPos = Max(sN & 0x7c0, vN & 0x7c0) >> 3 if (axisIdx == 2) maxPos = Max(sN & 0x7c0, tN & 0x7c0) >> 3 PlanarPrevPos[axisIdx][axisPos] = maxPos if (is_planar_flag[axisPos]) PlanarPlane[axisIdx][axisPos] = plane_position[axisIdx] IsPlanarNode[axisIdx][axisPos] = is_planar_flag[axisIdx] 8.2.3.3 Determines the ctxIdx of the syntax element plane_position The input to this process is: - Identify the variable axisIdx that is normal to the plane, and - The position of the current node in the geometric tree level (sN, tN, vN). The output of this process is the variable ctxIdx. The variable `neighOccupied` indicates whether there is a node adjacent to the current node along the `axisIdx`-th axis. Its derivation is as follows: XXX neighOccupied = (NeighbourPattern >> 2 × axisIdx) & 3 adjPlaneCtxInc = neighOccupied == 3 ? 0 : neighOccupied if (axisIdx == 0 && neighOccupied == 3) adjPlaneCtxInc = ((neighOccupied & 1) << 1) | (neighOccupied >> 1) When planar_buffer_disabled_flag equals 1, the value of ctxIdx is set to equal adjPlaneCtxInc, and no further processing is performed. Otherwise, the remainder of this clause applies. The variable axisPos indicates the 14 least significant bits of the current node along the axisIdx-th axis: if (axisIdx == 0) axisPos = sN & 0x3fff if (axisIdx == 1) axisPos = tN & 0x3fff if (axisIdx == 2) axisPos = vN & 0x3fff The variable `dist` represents the distance between the current node and the most recently decoded node, and has the same value as `axisPos` along the `axisIdx`-th axis. Its derivation is as follows: a = PlanarPrevPos[axisIdx][axisPos] if (axisIdx == 0) b = Max(tN & 0x7c0, vN & 0x7c0) >> 3 if (axisIdx == 1) b = Max(sN & 0x7c0, vN & 0x7c0) >> 3 if (axisIdx == 2) b = Max(sN & 0x7c0, tN & 0x7c0) >> 3 dist = Abs(a - b) The context index ctxIdx is derived as follows: if (!IsPlanarNode[axisIdx][axisPos]]) ctxIdx = adjPlaneCtxInc else { prevPlane = PlanarPlane[axisIdx][axisPos] distCtxInc = (dist > 1) ctxIdx = 12 × axisIdx + 4 × adjPlaneCtxInc + 2 × distCtxInc + prevPlane + 3 } 8.2.3.4 Determine planePosIdxAzimuthalS and planePosIdxAzimuthalT for decoding the horizontal plane position. The method for determining planePosIdxAngularS for the arithmetic decoding of plane_position[0] and the method for determining PlanePosIdxAngularT for the arithmetic decoding of plane_position[1] are as follows. When `geometry_angular_enabled_flag` equals 0, both `planePosIdxAzimuthalS` and `planePosIdxAzimuthalT` are set to equal `planePosIdx`. Otherwise, the following applies: if (contextAzimuthalS == -1) planePosIdxAzimuthalS = planePosIdx else planePosIdxAzimuthalS = 39 + contextAzimuthalS if (contextAzimuthalT == -1) planePosIdxAzimuthalT = planePosIdx else planePosIdxAzimuthalT = 39 + contextAzimuthalT As described in XREF, the contextAngular decision is performed for the arithmetic decoding of plane_position[2]. 8.2.3.5 Determine planePosIdxAngular for decoding the vertical plane position. The method for determining planePosIdxAngular for the arithmetic decoding of plane_position[2] is as follows. When `geometry_angular_enabled_flag` equals 0, the value of `planePosIdxAngular` is set to equal `planePosIdx`. Otherwise, the following applies: if (contextAngular == -1) planePosIdxAngular = planePosIdx else planePosIdxAngular = 47 + contextAngular As described in Section 8.2.5.3, the contextAngular decision is performed for the arithmetic decoding of plane_position[2].

[0088] The following describes the angle and azimuth modes as described in the November 2020 teleconference G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637. For the angle mode syntax, see Table 2.<ANGULAR CODING MODE> …< / ANGULAR CODING MODE> The syntax elements displayed here contain the Lidar laser sensor information required to carry the corner decoding mode for any decoding efficiency benefit. The semantics of these syntax elements were specified in the November 2020 teleconference G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, as follows: A `geometry_planar_enabled_flag` value of 1 indicates that planar decoding mode is enabled. A `geometry_planar_enabled_flag` value of 0 indicates that planar decoding mode is not enabled. If it does not exist, `geometry_planar_enabled_flag` is presumed to be 0. geom_planar_th[i] (where i ranges from 0 to 2) specifies the threshold for activating the planar coding mode along the i-th most likely direction. geom_idcm_rate_minus1 specifies the rate at which a node is eligible for direct decoding. If it does not exist, geom_idcm_rate_minus1 is inferred to be 31. The array IdcmEnableMask is derived as follows: for (i = 0, acc = 0; i < 32; i++) { acc += geom_idcm_rate_minus1 + 1 IdcmEnableMask[i] = acc >= 32 acc &= 0x1f } A `geometry_angular_enabled_flag` value of 1 indicates that angle decoding mode is enabled. A `geometry_angular_enabled_flag` value of 0 indicates that angle decoding mode is not enabled. A `geom_slice_angular_origin_present_flag` value of 1 indicates that a slice relative to the origin exists within the geometric data cell. A `geom_slice_angular_origin_present_flag` value of 0 indicates that no origin exists within the geometric data cell. When no origin exists, `geom_slice_angular_origin_present_flag` is assumed to be 0. geom_angular_origin_bits_minus1 plus 1 is the bit length of the syntax element geom_angular_origin_xyz[k]. geom_angular_origin_xyz[k] specifies the k-th component of the (x,y,z) coordinates of the origin used in the processing of the angle decoding mode. When it does not exist, the value of geom_angular_origin_xyz[k] is inferred to be 0, where k=0…2. geom_angular_azimuth_scale_log2_minus11 and geom_angular_radius_scale_log2 specify the factors used to scale the positions during conversion to Cartesian coordinates when decoding using the spherical coordinate system. The increment of 1 in geom_angular_azimuth_step_minus1 specifies the unit variation of the azimuth angle. The differential prediction residuals used in angular prediction tree decoding can be partially represented as multiples of geom_angular_azimuth_step_minus1 plus 1. The value of geom_angular_azimuth_step_minus1 should be less than (1 << (geom_angular_azimuth_scale_log2_minus11 + 12)). The increment of number_lasers_minus1 by 1 specifies the number of lasers used in corner decoding mode. laser_angle_init and laser_angle_diff[i] (where i = 0..number_lasers_minus1) specify the tangent of the elevation angle of the i-th laser relative to the horizontal plane defined by the first and second decoding axes. The array LaserAngle[i] (where i = 0..number_lasers_minus1) is derived as follows: LaserAngle[0] = laser_angle_init if (number_lasers_minus1 > 0) LaserAngle[1] = laser_angle_init + laser_angle_diff[1] for (i = 2; i <= number_lasers_minus1; i++) LaserAngle[i] = 2 × LaserAngle[i–1] – LaserAngle[i-2] + laser_angle_diff[i] The bitstream consistency requirement is that the value of LaserAngle[i] (where i = 1..number_lasers_minus1) should be greater than or equal to LaserAngle[i–1]. laser_correction_init and laser_correction_diff[i] (where i=1..number_lasers_minus1) specify the correction of the i-th laser position relative to GeomAngularOrigin[2] along the second inner axis. laser_phi_per_turn_init_minus1 and laser_phi_per_turn_diff[i] (where i=1..number_lasers_minus1) specify the number of samples generated by the i-th laser of the rotation sensing system located at the origin used in the corner decoding mode processing. The arrays LaserCorrection[i] and LaserPhiPerTurn[i] are derived as follows, where i = 1..number_lasers_minus1: LaserCorrection[0] = laser_correction_init LaserPhiPerTurn[0] = laser_phi_per_turn_init_minus1 + 1 for (i = 1; i <= number_lasers_minus1; i++) { LaserCorrection[i] = LaserCorrection[i-1] + laser_correction_diff[i] LaserPhiPerTurn[i] = LaserPhiPerTurn[i–1] + laser_phi_per_turn_diff[i] } The bitstream consistency requirement is that the value of LaserPhiPerTurn[i] must not be 0, where i = 0..number_lasers_minus1. The arrays DeltaPhi[i] and InvDeltaPhi[i] are derived as follows, where i = 0..number_lasers_minus1: for (i = 0; i <= number_lasers_minus1; i++) { DeltaPhi[i] = 6588397 / LaserPhiPerTurn[i] InvDeltaPhi[i] = (LaserPhiPerTurn[i] << 30) / 6588397 } A `planar_buffer_disabled_flag` value of 1 indicates that a buffer is not used to track the nearest node during the decoding of the planar mode flag and the planar positions in the planar mode. A `planar_buffer_disabled_flag` value of 0 indicates that a buffer is used to track the nearest node. If it does not exist, `planar_buffer_disabled_flag` is inferred to be `!geometry_planar_enabled_flag`. Table 2. Geometric parameter set syntax. Angle pattern syntax elements are highlighted in yellow. geometry_parameter_set() { descriptor gps_geom_parameter_set_id u(4) gps_seq_parameter_set_id u(4) gps_gsh_box_log2_scale_present_flag u(1) if(!gps_gsh_box_log2_scale_present_flag) gps_gs_box_log2_scale ue(v) duplicate_points_enabled_flag u(1) geom_tree_type u(1) if( geom_tree_type == 0 ) { geom_num_points_list_present_flag u(1) inferred_direct_coding_mode u(2) if( inferred_direct_coding_mode ) joint_2point_idcm_enabled_flag u(1) geom_tree_coded_axis_list_present_flag u(1) log2_neighbour_avail_boundary_minus1 u(3) if(log2_neighbour_avail_boundary_minus1 > 0 ) { adjacent_child_contextualization_enabled_flag u(1) log2_intra_pred_max_node_size ue(v) } bitwise_occupancy_coding_flag u(1) geometry_planar_enabled_flag u(1) if( geometry_planar_enabled_flag ){ for( i = 0; i < 3; i++) geom_planar_th[ i ] ue(v) if(inferred_direct_coding_mode==1 ) geom_idcm_rate_minus1 u(5) } } <ANGULAR CODING MODE> geometry_angular_enabled_flag u(1) if( geometry_angular_enabled_flag ){ geom_slice_angular_origin_present_flag u(1) if(!geom_slice_angular_origin_present_flag) { geom_angular_origin_bits_minus1 ue(v) for( k = 0; k < 3; k++ ) geom_angular_origin_xyz[k] s(v) } if( geom_tree_type == 1 ) { geom_angular_azimuth_scale_log2_minus11 ue(v) geom_angular_azimuth_step_minus1 ue(v) geom_angular_radius_scale_log2 ue(v) } number_lasers_minus1 ue(v) laser_angle_init laser_correction_init se(v) se(v) if( geom_tree_type = = 0 ) laser_phi_per_turn_init_minus1 ue(v) for( i = 1; i <= number_lasers_minus1; i++ ) { laser_angle_diff[ i ] se(v) laser_correction_diff[i] se(v) if( geom_tree_type = = 0 ) laser_phi_per_turn_diff[i] < / ANGULAR CODING MODE> se(v) } if( geometry_planar_enabled_flag ) planar_buffer_disabled_flag u(1) } geom_scaling_enabled_flag u(1) if( geom_scaling_enabled_flag ) { geom_base_qp ue(v) geom_qp_multiplier_log2 u(2) if( geom_tree_type = = 1 ) geom_qp_offset_intvl_log2 ue(v) else if( inferred_direct_coding_mode ) geom_direct_coding_mode_qp_offset se(v) } gps_extension_flag u(1) if( gps_extension_flag ) while( more_data_in_data_unit( ) ) gps_extension_data_flag u(1) byte_alignment() } Tables 3 and 4 contain the data syntax for the planar mode and the direct mode, respectively. Table 3. Syntax of Geometric Octree Pattern Data geometry_node(depth, nodeIdx, sN, tN, vN) { descriptor if( geom_node_qp_offset_present_flag ) { geom_node_qp_offset_abs_gt0_flag ae(v) if( geom_node_qp_offset_abs_gt0_flag ) { geom_node_qp_offset_abs_minus1 ae(v) geom_node_qp_offset_sign_flag ae(v) } } <ANGULAR CODING MODE> if(geometry_planar_enabled_flag) for( k = 0; k < 3; k++ ) if( PlanarEligible[k] ) { is_planar_flag[k] ae(v) if( is_planar_flag[k] ) plane_position [k] ae(v) } < / ANGULAR CODING MODE> if( DirectModeFlagPresent) direct_mode_flag ae(v) if( direct_mode_flag ) geometry_direct_mode_data( ) else { if( OccupancyIdxMaybePresent ) single_child_flag ae(v) if( single_child_flag ) for( k = 0; k < 3; k++ ) if( ! isPlanar[k] ) occupancy_idx[k] ae(v) if( OccupancyMapPresent ) if ( bitwise_occupancy_flag ) occupancy_map ae(v) else occupancy_byte de(v) if(LeafNode&&duplicate_points_enabled_flag) for( child = 0; child < NumChildren; child++ ) { [Ed: There are two instances of dup_point_cnt_gt0_flag, which have the same flag, but are transmitted as signals at different locations...] dup_point_cnt_gt0_flag[child] ae(v) if(dup_point_cnt_gt0_flag[child] ) dup_point_cnt_minus1[child] ae(v) } } } Table 4. Syntax of Direct Pattern Data geometry_direct_mode_data() { descriptor direct_point_cnt_eq2_flag ae(v) if( duplicate_points_enabled_flag && !direct_point_cnt_eq2_flag) { dup_point_cnt_gt0_flag ae(v) if( dup_point_cnt_gt0_flag ) { dup_point_cnt_gt1_flag ae(v) if( dup_point_cnt_gt1_flag ) dup_point_cnt_minus2 ae(v) } } if( joint_2point_idcm_enabled_flag && direct_point_cnt_eq2_flag ) geometry_direct_mode_joint_2points() for( i = 0; i <= direct_point_cnt_eq2_flag; i++ ) { if( geometry_angular_enabled_flag ) geometry_direct_mode_angular( i ) else for( k = 0; k < 3; k++ ) geometry_direct_mode_offset( i, k ) } } 8.2.4.1 Derivation of the angular compliance of nodes If geometry_angular_enabled_flag equals 0, then angular_eligible is set to equal to 0. Otherwise, the following applies: The variable deltaAngle, which specifies the minimum angular distance between lasers, is derived as follows: deltaAngle = 128 << 18 for(i=0; i <number_lasers_minus1; i++){ delta = LaserAngle[i + 1] – LaserAngle[i] if (deltaAngle > delta) deltaAngle = delta } Finally, angular_eligible is derived as follows: midNodeS = 1 << (Max(1, ChildNodeSizeLog2[0]) - 1) midNodeT = 1 << (Max(1, ChildNodeSizeLog2[1]) - 1) sLidar = Abs(((sNchild - GeomAngularOrigin[0] + midNodeS) << 8) – 128) tLidar = Abs(((tNchild - GeomAngularOrigin[1] + midNodeT) << 8) – 128) rL1 = (sLidar + tLidar) >> 1 deltaAngleR = deltaAngle × rL1 midNodeV = 1 << (Max(1, ChildNodeSizeLog2[2]) - 1) if ( number_lasers_minus1 > 0 && deltaAngleR <= (midNodeV << 26)) angular_eligible = 0 else angular_eligible = 1 8.2.4.2 Derivation of the laser index associated with the node XXX Input / Output If the angular_eligible property is equal to 0, then the laserIndex is set to the default value UNKOWN_LASER. Otherwise, if the angular_eligible property is equal to 1, the following applies to the continuation of the procedure described in 8.2.5.1. First, the inverse rInv of the radial distance between the current node and the LiDAR is determined as follows: r2 = sLidar × sLidar + tLidar × tLidar rInv = IntRecipSqrt(r2) Then, the angle theta32 is determined as follows: vLidar = ((vNchild - GeomAngularOrigin[2] + midNodeT) << 1) - 1 theta = vLidar × rInv theta32 = theta >= 0 ? theta >> 15 : -((-theta) >> 15) Finally, based on the parent node, the angular qualification and related laser are determined as follows. laserIndex = UNKOWN_LASER if (!number_lasers_minus1) laserIndex = 0 else if (laserIndex[Parent] == ​​UNKOWN_LASER || deltaAngleR <= (midNodeV << (26 + 2))) { for (i = 1; i < number_lasers_minus1; i++) if (LaserAngle[i] > theta32) break if (theta32 - LaserAngle[i-1] <= LaserAngle[i] - theta32) i-- laserIndex = LaserAngle[i] } 8.2.4.3 Derivation of contextAzimuthalS and contextAzimuthalT for planar decoding modes XXX Input / Output The following applies to the continuation of the process described in 8.2.5.2. First, determine the positions of the two angles relative to the origin. sPos = sNchild - GeomAngularOrigin[0] XXX tPos = tNchild - GeomAngularOrigin[1] phiNode = IntAtan2(tPos + midNodeT, sPos + midNodeS) phiNode0 = IntAtan2(tPos, sPos) Secondly, the azimuth predictor is obtained from the array phiBuffer. predPhi = phiBuffer[laserIndex] if (predPhi == 0x80000000) predPhi = phiNode The two orientation contexts are initialized as shown below. contextAzimuthalS = -1 contextAzimuthalT = -1 Subsequently, if the predictor predPhi is not equal to 0x80000000, the following is applied to refine the two azimuth contexts. Nshift = ((predPhi - phiNode) * InvDeltaPhi[laserIndex] + 536870912) >> 30 predPhi -= DeltaPhi[laserIndex] * Nshift angleL = phiNode0 - predPhi angleR = phiNode - predPhi contextAnglePhi = (angleL >= 0 && angleR >= 0) || (angleL < 0 && angleR < 0) ? 2 : 0 angleL = Abs(angleL) angleR = Abs(angleR) if (angleL > angleR) { contextAnglePhi++ int temp = angleL angleL = angleR angleR = temp } if (angleR > (angleL << 2)) contextAnglePhi += 4 if (Abs(sPos) <= Abs(tPos)) contextAzimuthalS = contextAnglePhi else contextAzimuthalT = contextAnglePhi 8.2.4.4 Derivation of the context Angular for planar decoding mode XXX Input / Output If the laser index laserIndex is equal to UNKOWN_LASER, then contextAngular is set to the default value UNKOWN_CONTEXT. Otherwise, if the laser index laserIndex is not equal to UNKOWN_LASER, then the following applies as a continuation of the procedure described in 8.2.5.2. First, determine the two angular differences, thetaLaserDeltaBot and thetaLaserDeltaTop, relative to the lower and upper planes, respectively. thetaLaserDelta = LaserAngle[laserIndex] - theta32 Hr = LaserCorrection[laserIndex] × rInv; thetaLaserDelta += Hr >= 0 ? -(Hr >> 17) : ((-Hr) >> 17) vShift = (rInv << ChildNodeSizeLog2[2]) >> 20 XXX thetaLaserDeltaTop = thetaLaserDelta - vShift thetaLaserDeltaBot = thetaLaserDelta + vShift Then, the context of the angle is inferred based on the two angle differences. contextAngular = thetaLaserDelta < 0 if (thetaLaserDeltaTop >= 0 || thetaLaserDeltaBot < 0) contextAngular += 2 When tree-level quantization and corner mode are jointly enabled, scaled versions of one or more of the valid node size, point position, and offset can be used in context derivation in planar mode to ensure that the position / offset / node size and corner origin are used in the same proportion; this is useful, for example, in the correct derivation of laser indices and context derivations. In some cases, not using scaling values ​​may lead to incorrect derivation of laser indices or context.

[0089] The following describes the Inferred Direct Decoding Mode (IDCM). The syntax related to the IDCM mode is defined in the November 2020 teleconference G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, as follows: A value greater than 0 inferred_direct_coding_mode indicates that the direct_mode_flag exists in the geometry node syntax. A value equal to 0 inferred_direct_coding_mode indicates that the direct_mode_flag does not exist in the geometry node syntax. A value of 1 for `joint_2point_idcm_enabled_flag` indicates that joint decoding of the two points is enabled in direct decoding mode. A value of 0 for `joint_2point_idcm_enabled_flag` indicates that joint decoding of the two points is not enabled. geom_idcm_rate_minus1 specifies the rate at which a node is eligible for direct decoding. If it does not exist, geom_idcm_rate_minus1 is inferred to be 31. The array IdcmEnableMask is derived as follows: for (i = 0, acc = 0; i < 32; i++) { acc += geom_idcm_rate_minus1 + 1 IdcmEnableMask[i] = acc >= 32 acc &= 0x1f } `direct_point_cnt_eq2_flag` equal to 1 indicates that the current node contains two `point_offset` values, representing the residuals of the two decoding points. `direct_point_cnt_eq2_flag` equal to 0 indicates that the current node contains a single `point_offset` value, representing the residuals of a single point position repeated zero or more times. The flags `dup_point_cnt_gt0_flag`, `dup_point_cnt_gt1_flag`, and `dup_point_cnt_minus2` together specify the number of times a single `point_offset` value is repeated to represent multiple points with the same location in the reconstructed point cloud. Any missing value in `dup_point_cnt_gt0_flag`, `dup_point_cnt_gt1_flag`, or `dup_point_cnt_minus2` is inferred as 0. The variable DirectDupPointCnt represents the number of times a point is repeated, and its derivation is as follows: DirectDupPointCnt= dup_point_cnt_gt0_flag+dup_point_cnt_gt1_flag+dup_point_cnt_minus2 The array PointOffset (with elements PointOffset[i][k], where i = 0...NumDirectPoints–1 and k = 0...2) represents the position of the k-th dimension of the i-th point relative to the full resolution position of the current node. PointOffset[i][k] consists of EffectiveNodeSizeLog2[k] bits, and its derivation is as follows. The variable NodeSizeLog2Rem[k] indicates the number of remaining bits derived from PointOffset[i][k] independently of i. For each value of i, NodeSizeLog2Rem and the array PointOffset are initialized. NodeSizeLog2Rem[k]=EffectiveNodeSizeLog2[k] for (k = 0; k < 3; k++) PointOffset[i][k] = 0 If is_planar_flag[k] equals 1, then the most significant bit of PointOffset[i][k] is derived from plane_position[k]. for (k = 0; k < 3; k++) if (is_planar_flag[k]) { for (i = 0; i < NumDirectPoints; i++) PointOffset[i][k] = plane_position[k] NodeSizeLog2Rem[k]-- } `same_bit[k][j]` equal to 1 indicates that the corresponding j-th bits of `PointOffset[0][k]` and `PointOffset[1][k]` are equal. `same_bit[k][j]` equal to 0 indicates that these two j-th bits are not equal. value_bit[k][j] indicates the value of the j-th bit of PointOffset[0][k]. When value_bit[k][j] does not exist, its value is inferred to be 0. The variable EligTwoPoints[k] equal to 1 indicates that the k-th component of the points contained in the node is eligible for joint decoding of the two points. EligTwoPoints[k] equal to 0 indicates that the k-th component of the points contained in the node is not eligible for joint decoding of the two points. The variable `samePrecComp[k]` equals 1, indicating that the components 0 to k-1 of the two points contained in the node are equal. Otherwise, `samePrecComp[k]` equals 0, indicating that one of the components 0 to k-1 of the two points is different. Initialize `samePrecComp[k]` to 1. for (k = 0; k < 3; k++) samePrecComp[k] = 1 If joint decoding of two points is initiated, if there are two points in the node, and if the k-th component is eligible for joint decoding, then joint two-point decoding is performed on that component. if (joint_2point_idcm_enabled_flag && direct_point_cnt_eq2_flag) for (k = 0; k < 3; k++){ if (EligTwoPoints[k]){ for (j = NodeSizeLog2Rem[k]-1; j>=0; j--) { PointOffset[0][k] << 1 PointOffset[1][k] << 1 PointOffset[0][k] += bit_value[k][j] PointOffset[1][k] += !same_bit[k][j] ^ bit_value[k][j] NodeSizeLog2Rem[k]-- if (!same_bit[k][j]){ for (k2 = k + 1; k2 < 3; k2++) samePrecComp[k2] = 0 break } } } } point_offset[i][k][j] is the j-th bit of the k-th component of the corresponding s, t, and v coordinates of the i-th point of the current node relative to the origin of the current node. Set the remaining bits of NodeSizeLog2Rem[k] for each point offset as follows: for (k = 0; k < 3; k++) for (j = NodeSizeLog2Rem[k] - 1; j > 0; j--) PointOffset[i][k] = (PointOffset[i][k] << 1) + point_offset[i][k][j] The laser_residual_abs_gt0_flag[ptIdx], laser_residual_sign[ptIdx], laser_residual_abs_gt1_flag[ptIdx], laser_residual_abs_gt2_flag[ptIdx], and laser_residual_abs_minus3[ptIdx] together specify the residual laser index value associated with the ptIdx-th point of the current node, using the inferred direct decoding mode when geometry_angular_enabled_flag equals 1. Any non-existent item in laser_residual_abs_gt0_flag[ptIdx], laser_rersidual_sign[ptIdx], laser_residual_abs_gt1_flag[ptIdx], laser_residual_abs_gt2_flag[ptIdx], and laser_residual_minus3[ptIdx] is inferred to be 0.

[0090] The following describes the resolution process of the IDCM schema, as defined in Section 10.8 of the November 2020 teleconference G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, as follows: 10.8 The direct decoding mode parsing process of inference 10.8.1 General Process The parsing and reverse binarization of the syntax elements same_bit[k][j], value_bit[k][j], and point_offset[i][k][j] used for point index i, component index k, and bit index j are described in sub-clauses 9.8.2 to 9.8.5. For a point belonging to the current node, if the value of direct_point_cnt_eq2_flag is 0, the output of this process is offset 1; if the value of direct_point_cnt_eq2_flag is 0, the output of this process is offset 2. When it exists, the offset for the first point is PointOffset[0][k], and the offset for the second point is PointOffset[1][k]. Each offset PointOffset[i][k] consists of EffectiveNodeSizeLog2[k] bits, which are decoded from the most significant bit to the least significant bit for each component k and each point i. For this purpose, the IDCM process uses the following variables: - Independent of the point index, for an offset of component k, the remaining number of bits to be decoded is NodeSizeLog2Rem[k]. - Partially decode the partialOffset[i][k] of the k-th component at point i. At any step of this process, the value of partialOffset[i][k] represents the most significant bit of EffectiveNodeSizeLog2[k] - NodeSizeLog2Rem[k] in PointOffset[i][k]. During this process, partialOffset bits are determined one by one, and for each determined bit, NodeSizeLog2Rem[k] is decremented by one to reach the final state, at which point NodeSizeLog2Rem[k] equals 0 and partialOffset[i][k] equals PointOffset[i][k]. The IDCM process shall be carried out in the following order and under the following conditions via sub-clauses 9.8.2 to 9.8.5: Sub-clause 9.8.2 is used for the initialization of process variables and for inferring the most significant bit of the point offset from the plane pattern. - Subsequently, if joint decoding of two points is initiated (joint_2point_idcm_enabled_flag equals 1), and there are two points in the current node (direct_point_cnt_eq2_flag equals 1), then sub-clause 9.8.3 - Subsequently, if angular mode is enabled (geometry_angular_enabled_flag equals 1), then it is sub-clause 9.8.4; otherwise, it is sub-clause 9.8.4 (geometry_angular_enabled_flag equals 0). 10.8.2 Initialization and Plane Inference For all components k and point i, initialize the remaining number of bits and the partial offset. for (k = 0; k < 3; k++){ NodeSizeLog2Rem[k]=EffectiveNodeSizeLog2[k] for (i = 0; i < direct_point_cnt_eq2_flag; i++) partialOffset[i][k] = 0 } The most significant bit of the point offset is inferred from the planar pattern. If it is available (is_planar_flag[k] equals 1), then it is as follows: for (k = 0; k < 3; k++) if(NodeSizeLog2Rem[k]>0&&is_planar_flag[k]) { for (i = 0; i < direct_point_cnt_eq2_flag; i++) partialOffset[i][k] = plane_position[k] NodeSizeLog2Rem[k]-- } If corner decoding mode is enabled, the variable byPassSorT is determined by the horizontal position of the current node in the coordinates used in corner decoding mode processing. This variable indicates which of the S or T components is allowed to be bypassed and decoded. if (geometry_angular_enabled_flag){ posNode2LidarS = (sN << EffectiveNodeSizeLog2[0]) - GeomAngularOrigin[0] posNode2LidarT = (tN << EffectiveNodeSizeLog2[1]) - GeomAngularOrigin[1] byPassSorT = Abs(posNode2LidarS) <= Abs(posNode2LidarT) } 10.8.3 Joint decoding of offsets between two points The procedures in this section only apply when joint_2point_idcm_enabled_flag equals 1 and direct_point_cnt_eq2_blag equals 1. First, the value of EligTwoPoints[k] indicates whether the k-th component of the two points is eligible for joint decoding, and this value is initialized as follows: for (k = 0; k < 3; k++) EligTwoPoints[k]=!geometry_angular_enabled_flag Subsequently, if corner decoding mode is activated, the byPassSorT variable is used to further determine eligibility: if (geometry_angular_enabled_flag){ EligTwoPoints[0] = !byPassSorT EligTwoPoints[1] = byPassSorT } The array samePrecComp[k] indicates that the components of two points contained in a node are equal from 0 to k-1, and it is initialized as follows: for (k = 0; k < 3; k++) samePrecComp[k] = 1 Subsequently, the joint decoding process is applied to the qualified components in ascending order. for (k = 0; k < 3; k++){ if (NodeSizeLog2Rem[k]>=1 && EligTwoPoints[k]){ idcmIdxJoint[k][NodeSizeLog2Rem[k]-1] = 0 same_bit = 1 for (j = NodeSizeLog2Rem[k]-1; j>=0; j--) { partialOffset[0][k] <<= 1 partialOffset[1][k] <<= 1 NodeSizeLog2Rem[k]-- sameBit = same_bit[k][j] / / same_bit[k][j] is decoded using the context idcmIdxJoint[k][j] idcmIdxJoint[k][j-1] = Min(4, idcmIdxJoint[k][j] + 1) bit = 0; if (!(samePrecComp[k] && !sameBit)) bit = value_bit[k][j] / / value_bit[k][j] uses bypass decoding partialOffset[0][k] |= bit; partialOffset[1][k] |= sameBit ? bit : !bit; if (!sameBit) { for (k2 = k+1; k2 < 3; k2++) samePrecComp[k2] = 0 break } } } } 10.8.4 Decoding the angle and azimuth of point offset 10.8.4.1 Overview The procedure in this section applies only when geometry_angular_enabled_flag equals 1. This procedure applies to the sub-procedures described in the following sections. Section 9.8.4.2 is applied once, followed by sections 9.8.4.3 through 9.8.4.6 for each point i belonging to the current node. 10.8.4.2 Estimation of the laser index associated with the current node Based on the best knowledge of the position of the first point belonging to the current node (after planar inference and joint decoding), estimate the laserIndexEstimate of the index of the laser that detected that point. First, the best known 3D position of the first point is obtained using the following method: bestKnownPos[0]=sN< <EffectiveNodeSizeLog2[0] bestKnownPos[1]=tN< <EffectiveNodeSizeLog2[1] bestKnownPos[2]=vN< <EffectiveNodeSizeLog2[2] bestKnownPos[0]+=partialOffset[0][0]< <EffectiveNodeSizeLog2[0]-NodeSizeLog2Rem[0] bestKnownPos[1]+=partialOffset[0][1]< <EffectiveNodeSizeLog2[1]-NodeSizeLog2Rem[1] bestKnownPos[2]+=partialOffset[0][2]< <EffectiveNodeSizeLog2[2]-NodeSizeLog2Rem[2] Secondly, the bestKnownPos2Lidar[0] position in the coordinates used in the corner decoding mode processing is derived as follows: for (k = 0; k < 3; k++) { bestKnownPos2Lidar[k] = posNode2Lidar[k] - GeomAngularOrigin[k] if (NodeSizeLog2Rem[k]) bestKnownPos2Lidar[k] += 1 << (nodeSizeLog2Rem[k] - 1) } Third, the angle value bestKnownAngle associated with this position is determined by the following: sPoint = bestKnownPos2Lidar[0] << 8 tPoint = bestKnownPos2Lidar[1] << 8 r2 = sPoint × sPoint + tPoint × tPoint rInvPoint = IntRecipSqrt(r2) bestKnownAngle = bestKnownPos2Lidar [2] * rInvPoint >> 14 The laser index estimate, laserIndexEstimate, is obtained as the laser index with the angle closest to the bestKnownAngle, as shown below: for (n = 1; n <= number_lasers_minus1; n++) if (LaserAngle[n] > bestKnownAngle) break if (bestKnownAngle - LaserAngle[n-1] <= LaserAngle[n] - bestKnownAngle) n-- laserIndexEstimate = number_lasers_minus1 ? n : 0 10.8.4.3 Bypassing the decoding of the first component S or T of point_offset Bypass decoding the component belonging to the i-th point of the current node via SorT (whose value is 0 for S and 1 for T). for (j = NodeSizeLog2Rem[byassSorT] - 1; j > 0; j--){ partialOffset[i][bypassSorT] <<= 1 partialOffset[i][bypassSorT] |= point_offset[i][bypassSorT][j] NodeSizeLog2Rem[bypassSorT]-- } At the end of this sub-process, NodeSizeLog2Rem[bypasseSorT] equals 0. For the bypasseSorT-th component of the point offset, no more bits will be decoded, and partialOffset[i][bypassSorT] equals the full point offset PointOffset[i][byrasseSorT]. 10.8.4.4 Determination of the laser index associated with a point Based on the decoded value, infer the laser index residual laserIndexResidual[i] associated with the i-th point belonging to the current node. laserIndexResidual[i] = (1 - 2 × laser_residual_sign_flag) × (laser_residual_abs_gt0_flag + laser_residual_abs_gt1_flag + laser_residual_abs_gt2_flag + laser_residual_abs_minus3_flag) Then, by summing, the laser index laserIndex[i] associated with the i-th point belonging to the current node is obtained. laserIndex[i]=laserIndexEstimate+laserIndexResidual[i] The requirement for bitstream consistency is that laserIndex[i] should be in the range of 0...number_lasers_minus1. 10.8.4.5 Azimuth decoding of the second component S or T of the point offset The directional decoding mode is used to decode the component 1-bypassSorT (which is 0 for S and 1 for T) belonging to the i-th point of the current node. Using partially offset decoded bits, the optimal known horizontal position of point i in the coordinates used in corner decoding mode processing is calculated as follows: posPoint2LidarS[i] = (sN << EffectiveNodeSizeLog2[0]) - GeomAngularOrigin[0] posPoint2LidarT[i] = (tN << EffectiveNodeSizeLog2[1]) - GeomAngularOrigin[1] posPoint2LidarS[i] += partialOffset[i][0] << NodeSizeLog2Rem[0] posPoint2LidarT[i] += partialOffset[i][1] << NodeSizeLog2Rem[1] Subsequently, the initial value of the orientation predictor predPhi is determined based on the buffer phiBuffer. phiNode = IntAtan2(posPoint2LidarT[i], posPoint2LidarS[i]) predph = phiBuffer[laserIndex[i]] if (predPhi == 0x80000000) predPhi = phiNode nShift = ((predPhi - phiNode) * InvDeltaPhi[laserIndex[i]] + 536870912) >> 30 predPhi -= DeltaPhi[laserIndex[i]] * nShift In loop j concerning the remaining bits, the remaining offset of the point, partialOffset[i][1-bypassSorT], is iteratively decoded to decode the partial offset of component 1-bypassSorT. Within this loop, the orientation context idcmIdxAzimuthal[i][j] is determined and used to decode the syntax element point_offset[i][1-bypassSorT][j]. The position of the point (posPoint2LidarS[i] or posPoint2Lidart[i], depending on the components involved in orientation decoding) is also iteratively updated. mask = NodeSizeLog2Rem[1-bypassSorT] > 0 ? 1 << NodeSizeLog2Rem[1-bypassSorT] - 1) : 0 for (j = NodeSizeLog2Rem[1-bypassSorT]-1; mask; j--, mask >>= 1){ phiR = bypassSorT ? IntAtan2(posPoint2LidarT[i], posPoint2LidarS[i] + mask) : IntAtan2(posPoint2LidarT[i] + mask, posPoint2LidarS[i]) phiL = phiNode angleL = phiL - predPhi angleR = phiR - predPhi contextAnglePhi = (angleL >= 0 && angleR >= 0) || (angleL < 0 && angleR < 0)? 2 : 0 angleL = Abs(angleL) angleR = Abs(angleR) if (angleL > angleR) { contextAnglePhi++ int temp = angleL angleL = angleR angleR = temp } if (angleR > (angleL << 1)) contextAnglePhi += 4 idcmIdxAzimuthal[i][j] = contextAnglePhi / / Use idcmIdxAzimuthal[i][j] to decode bin point_offset[i][1 - bypassSorT][j] partialOffset[i][1 - bypassSorT] <<= 1 partialOffset[i][1 - bypassSorT] |= point_offset[i][1 - bypassSorT][j] if (point_offset[i][1 - bypassSorT][j]) { if (bypassSorT) posPoint2LidarS[i] += mask else posPoint2LidarT[i] += mask phiNode = phiR predphi = phiBuffer[laserIndex[i]] if (predPhi == 0x80000000) predPhi = phiNode nShift = ((predPhi - phiNode) * InvDeltaPhi[laserIndex[i]] + 536870912) >> 30 predPhi -= DeltaPhi[laserIndex[i]] * nShift } } Then update the buffer phiBuffer[] phiBuffer[laserIndex[i]]=phiNode 10.8.4.6 Angular Decoding of the Component V of Point Offset Using the corner decoding mode, the last component V of the i-th point belonging to the current node is decoded. The horizontal positions posPoint2LidarS[i] and posPoint2LidarT[i] are obtained through orientation decoding, and the reverse horizontal radial distance rInv is decoded as follows: sLidar = (posPoint2LidarS[i] << 8) - 128 tLidar = (posPoint2LidarT[i] << 8) - 128 r2 = sLidar × sLidar + tLidar × tLidar rInv = IntRecipSqrt(r2) Using partially offset decoded bits, the optimal known vertical position of point i is calculated in the coordinates used in corner decoding mode processing, as follows: posPoint2LidarV[i] = (vN << EffectiveNodeSizeLog2[2]) - GeomAngularOrigin[2] posPoint2LidarV[i] += partialOffset[i][2] << NodeSizeLog2Rem[2] The corrected laser angle ThetaLaser associated with this point is: Hr=LaserCorrection[laserIndex[i]] × rInv ThetaLaser = LaserAngle[laserIndex[i]] + (Hr >= 0 ? -(Hr >> 17) : ((-Hr) >> 17)) In loop j concerning the remaining bits, the remaining offset of the point, partialOffset[i][2], is iteratively decoded to decode the partial offset of component V. Within this loop, the angular context idcmIdxAngular[i][j] is determined and used to decode the syntax element point_offset[i][2][j]. The position of the point, posPoint2LidarV[i], is also iteratively updated. mask = NodeSizeLog2Rem[2] > 0 ? 1 << NodeSizeLog2Rem[2] - 1) : 0 halfInterval = (rInv << NodeSizeLog2Rem [2]) >> 18 if (mask) for (j = NodeSizeLog2Rem[2]-1; j>=0; j--, mask >>= 1, halfInterval >>= 1){ vLidar = ((posPoint2LidarV[i] + mask) << 1) - 1 theta = vLidar × rInv theta32 = theta >= 0 ? theta >> 15 : -((-theta) >> 15) thetaLaserDeltaVirtualInterval = ThetaLaser - theta32 deltaVirtualIntervalTop = thetaLaserDeltaVirtualInterval - halfInterval deltaVirtualIntervalBot = thetaLaserDeltaVirtualInterval + halfInterval idcmIdxAngular[i][j] = thetaLaserDeltaVirtualInterval < 0 if (deltaVirtualIntervalTop >= 0) idcmIdxAngular[i][j] += 2 else if (deltaVirtualIntervalBot < 0) idcmIdxAngular[i][j] += 2 / / Use idcmIdxAngular[i][j] to decode bin point_offset[i][2][j] partialOffset[i][2] <<= 1 partialOffset[i][2] |= point_offset[i][2][j] if (point_offset[i][2][j]) posPoint2LidarV[i] += mask } 10.8.5 Decoding of all components around the point offset The procedures in this section only apply when geometry_angular_enabled_flag equals 0. In this process, the remaining bits of the point offset are determined by bypassing the decoding of point_offset[i][k][j]. For each point index i and each component k, the following operations are performed: for (i = 0; i < direct_point_cnt_eq2_flag; i++) for (k = 0; k < 3; k++) for (j = NodeSizeLog2Rem[k] - 1; j > 0; j--){ partialOffset[i][k] <<= 1 partialOffset[i][k] |= point_offset[i][k][j] NodeSizeLog2Rem[k]-- } At the end of this process, NodeSizeLog2Rem[k] is equal to 0 for all k. For the point offset, no more bits need to be decoded, and partialOffset[i][k] is equal to the full point offset PointOffset[i][k]. When in-tree quantization, corner mode, and IDCM are enabled together, scaled versions of one or more of the effective node size, point position, and offset can be used during IDCM decoding to ensure that the position / offset / node size and corner origin are used in the same proportion; this is useful, for example, in correctly deriving laser indexes and context derivations. Failure to use scaling values ​​may result in incorrect derivation of laser indexes or contexts.

[0091] The octree encoding and decoding are described below. An overview of the octree encoding for a node is provided in Figure 4, and an overview of the corresponding decoding process is provided in Figure 5. In the encoder (e.g., G-PCC encoder 200), the node occupancy is obtained based on the number of points in each child node of the current node (400). Subsequently, plane qualification is derived for each axis based on the node size, plane buffer, and plane rate (402). If an axis is plane qualified (Yes in 404), the plane pattern and plane position are obtained using the occupancy (406). Subsequently, IDCM qualification is derived, or if the axis is not plane qualified (No in 404), IDCM qualification is derived (408). If the node is IDCM qualified (Yes in 408), the IDCM node can be signaled (410). If the node is not IDCM qualified or the node is not IDCM (No in 408), the occupancy is encoded using context-based decoding (416). Subsequently, the node is split into several child nodes, which are added to the node buffer, and the process moves to the next node in the node buffer (418). It can be determined whether IDCM is applied (412). If IDCM is not applied (No in 412), occupancy is encoded using context-based decoding (416). For IDCM nodes (Yes in 412), the number of points and the number of repeating points are encoded, and the position of points within the node is encoded using planar information (414). IDCM nodes are not further split, and the encoding process moves to the next node in the node buffer (418). The above process is performed iteratively until the node buffer is empty.

[0092] As shown in Figure 5, the decoder (e.g., G-PCC decoder 300) can perform the reverse process of the example technique shown in Figure 4. For example, the planar aptitude of each axis is derived based on the node size, planar buffer, and planar rate (500). If an axis is planar aptitude (Yes in 502), the planar pattern and planar position are decoded using the occupancy rate (504). Subsequently, IDCM aptitude is derived, or if the axis is not planar aptitude (No in 404), IDCM aptitude is derived (506). If the node is IDCM aptitude (Yes in 506), the IDCM node can be decoded (e.g., parsed) (508). If the node is not IDCM aptitude or the node is not IDCM (No in 408), the occupancy rate is decoded (e.g., parsed) using context-based decoding (514). The node is then split into several child nodes, which are added to the node buffer, and the process moves to the next node in the node buffer (516). It can be decided whether to apply IDCM (510). If IDCM is not applied (No in 510), then context-based decoding is used to decode the occupancy rate (514). For IDCM nodes (Yes in 510), the number of points and the number of duplicate points are decoded, and the position of the points in the node is decoded using planar information (512). IDCM nodes are not further separated, and the decoding process moves to the next node in the node buffer (516). The above process is performed iteratively until the node buffer is empty.

[0093] The following describes some potential problems in G-PCC decoding technology. This disclosure describes example techniques that can solve such problems; however, these techniques should not be considered limited to solving only these problems. For example, these example techniques can reduce the administrative burden of transmitting planar information via signals.

[0094] For example, for a node with only one point, there may be redundancy in the planar pattern decoding. As described in octree encoding and decoding (such as in Figures 4 and 5), the planar information of the node across the three axes is encoded before the IDCM information (which includes the number and position of points in the node) is signaled. It should be noted that for a node with only one point, the planar pattern is true for all three axes. Therefore, signaling the planar pattern along with the number of points in the node may be redundant for such nodes.

[0095] To illustrate further, signaling a plane might be inefficient for nodes with only a few points. For nodes with many points, plane information can help reduce the signaling cost of point positions within the node. For example, if a node is planar on an axis, it would store one bit to signal the position of each point in the planar direction. However, for nodes with only a few points, the reduction in signaling cost might not be true because the node still needs to signal two bits for the node's planar pattern and planar position. In some cases, the cost savings from signaling a bit using a plane can be more significant than signaling the planar pattern and position, because for IDCM, signaling of that bit can be significantly improved by using joint position decoding and angle information. Therefore, signaling a plane might not be efficient for nodes with only a few points or when angle information is available.

[0096] In one or more instances, the example techniques described herein can modify the planar signal transmission mode based on IDCM information (such as IDCM pattern or the number of points in a node). In some instances, when corner mode is enabled, the limitations of the planar mode on the IDCM pattern in the following example techniques can be applied. In some instances, this limitation can be controlled by flags at the SPS (Sequence Parameter Set) or GBH (Geometry Block Header) level. The Geometry Block Header (GBH) can also be referred to as the Geometry Parameter Set (GPS).

[0097] In one instance, for a node with only one point, the signaled plane mode may not be required. For example, when an IDCM node has only one point, the signaled plane mode can be implicitly passed. Implicit signaling can mean that some instances of syntax elements or information are not actually passed via signaling, but rather inferred. For example, in implicit signaling, the G-PCC encoder 200 can bypass signaling (e.g., avoid signaling), and the G-PCC decoder 300 can choose not to parse syntax elements that are "implicitly" signaled.

[0098] After signaling the IDCM mode flag and the number of points in the node, planar information can be signaled. If the number of points in the node is 1, only the planar position can be signaled, and the planar mode is implicitly signaled as 1.

[0099] Therefore, in one instance, the G-PCC encoder 200 can be configured to signal-transmit the inferred Direct Decoding Mode (IDCM) flag and the number of points in the nodes of the point cloud data in the bitstream, and based on the number of points in the nodes being one, and after signal-transmitting the IDCM flag, signal-transmit the planar position in the bitstream, bypassing the signal-transmitted planar mode. The G-PCC decoder 300 can be configured to parse the inferred Direct Decoding Mode (IDCM) flag and the number of points in the nodes of the point cloud data from the bitstream, based on the number of points in the nodes being one, and after parsing the IDCM flag, parse the planar position from the bitstream based on the number of points in the nodes being one, determine from the bitstream that the parsed bit of the node is a syntax element other than the syntax element used to indicate the planar mode (e.g., avoid parsing the planar mode), and reconstruct the point cloud based on the parsed IDCM flag and planar position. For example, since the bitstream may not contain information indicating a planar mode, the G-PCC decoder 300 can determine that the syntax elements of a node do not contain information indicating a planar mode.

[0100] In one instance, planar mode might be disabled for nodes with only one point. For example, planar mode could be disabled for an IDCM node with only one point. In this instance, planar information could be signaled after the IDCM mode flag and the number of points in the node are signaled. If the number of points in the node is 1, the planar information (including the planar mode and planar position) can be ignored.

[0101] In one instance, plane mode can be disabled for IDCM nodes with fewer than a threshold number of points. In this instance, plane mode can be disabled for IDCM nodes with fewer than a threshold number of points. Plane information can be signaled after the IDCM mode flag and the number of points in the node are signaled. If the number of points in the node is less than the threshold, the signaling of plane information (including plane mode and plane position) can be ignored.

[0102] Therefore, in one instance, the G-PCC encoder 200 can be configured to signal the inferred Direct Decoding Mode (IDCM) flags and the number of points in the nodes of the point cloud data in the bitstream, and bypass the signal transmission of planar position and planar mode based on the number of points in the node being less than or equal to a threshold. The G-PCC decoder 300 can be configured to parse the inferred Direct Decoding Mode (IDCM) flags and the number of points in the nodes of the point cloud data from the bitstream, and determine from the bitstream, based on the number of points in the node being less than or equal to a threshold, whether the parsed bits for that node are syntax elements other than those used to indicate planar position or planar mode (e.g., avoiding parsing planar position and planar mode), and reconstruct the point cloud data based on the parsed IDCM flags.

[0103] For example, the threshold is 1. For another example, the threshold is greater than 1.

[0104] In one instance, for an IDCM node, plane mode can be disabled. Plane information can be signaled after the IDCM mode flag is signaled. Plane information (including plane mode and plane position) can be ignored, and plane information is not used in the position decoding of the IDCM node.

[0105] Figure 6 is a flowchart illustrating such an example. In the example of Figure 6, after determining whether a node meets IDCM eligibility, planar information is transmitted via signaling. The node occupancy rate is obtained based on the number of points in each child node of the current node (600). Subsequently, planar eligibility is derived for each axis based on the node size, planar buffer, and planar rate (602). Then, IDCM eligibility is derived (604). If the node meets IDCM eligibility (Yes in 604), the IDCM node can be transmitted via signaling (606). It can be determined whether IDCM is applied (608). For the IDCM node (Yes in 608), the number of points and the number of duplicate points are encoded (610). The IDCM node is not further separated, and the encoding process moves to the next node in the node buffer (618).

[0106] If a node is not IDCM qualified (No in 604) or does not apply IDCM (No in 608), then plane qualification can be determined (612). If an axis is plane qualified (Yes in 612), then occupancy is used to obtain the plane pattern and plane position (614). If a node is not IDCM qualified or the node is not IDCM (No in 612), then occupancy is encoded using context-based decoding (616). The node is then split into child nodes, which are added to the node buffer, and the process moves to the next node in the node buffer (618). The above process is performed iteratively until the node buffer is empty.

[0107] Therefore, with Inferential Direct Decoding Mode (IDCM) disabled, the G-PCC encoder 200 can encode point cloud data without using the planar patterns and planar positions of the nodes. Similarly, with Inferential Direct Decoding Mode (IDCM) disabled, the G-PCC decoder 300 can decode point cloud data without using the planar patterns and planar positions of the nodes.

[0108] During the November 2020 teleconference, the corresponding specification text in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637 can be modified as follows. (The following text can be deleted.) <delete> ...< / delete> The text between, and can be added <add> ...< / add> The text between them. geometry_node(depth, nodeIdx, sN, tN, vN) { descriptor if( geom_node_qp_offset_present_flag ) { geom_node_qp_offset_abs_gt0_flag ae(v) if( geom_node_qp_offset_abs_gt0_flag ) { geom_node_qp_offset_abs_minus1 ae(v) geom_node_qp_offset_sign_flag ae(v) } } <delete>if(geometry_planar_enabled_flag ) for( k = 0; k < 3; k++ ) if( PlanarEligible[ k ] ) { is_planar_flag[ k ] ae(v) if( is_planar_flag[ k ] ) plane_position[ k ] ae(v) }< / delete> if( DirectModeFlagPresent ) direct_mode_flag ae(v) if( direct_mode_flag ) geometry_direct_mode_data( ) else { <add>if( geometry_planar_enabled_flag ) for( k = 0; k < 3; k++ ) if( PlanarEligible[k] ) { is_planar_flag[k] ae(v) if( is_planar_flag[k] ) plane_position[k] ae(v) }< / add> single_child_flag ae(v) if( single_child_flag ) for( k = 0; k < 3; k++ ) if( ! isPlanar[k] ) occupancy_idx[k] ae(v) if( OccupancyMapPresent ) if( bitwise_occupancy_flag ) occupancy_map ae(v) else occupancy_byte de(v) if( LeafNode && duplicate_points_enabled_flag ) for( child = 0; child < NumChildren; child++ ) { dup_point_cnt_gt0_flag[child] ae(v) if(dup_point_cnt_gt0_flag[child]) dup_point_cnt_minus1[child] ae(v) } } }

[0109] When corner mode is enabled, planar mode may be disabled for IDCM nodes. For example, G-PCC encoder 200 may bypass signal transmission of planar mode values ​​for the current node (e.g., for a node encoded in direct mode) under the following conditions: when corner mode is enabled, and / or when planar mode is disabled when corner mode is enabled. Bypassing signal transmission means that G-PCC encoder 200 does not signal transmission of planar mode values, and in the G-PCC compliant bitstream, other values ​​will be used instead of planar mode values ​​at their positions.

[0110] The signaling of plane information can be performed after the IDCM mode flag is signaled. In one instance, if corner mode is enabled, the signaling of plane information (such as the plane mode value, which includes the plane mode and plane position) can be ignored (e.g., bypassed), and plane information can be omitted in the position decoding of the IDCM node.

[0111] During the November 2020 teleconference, the corresponding specification text in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637 can be modified as follows. In the following text, [the following text can be deleted]. <delete> ...< / delete> The text between can be added <add> ...< / add> The text between them. geometry_node(depth, nodeIdx, sN, tN, vN) { descriptor if( geom_node_qp_offset_present_flag ) { geom_node_qp_offset_abs_gt0_flag ae(v) if( geom_node_qp_offset_abs_gt0_flag ) { geom_node_qp_offset_abs_minus1 ae(v) geom_node_qp_offset_sign_flag ae(v) } } <delete>if(geometry_planar_enabled_flag ) for( k = 0; k < 3; k++ ) if( PlanarEligible[k] ) { is_planar_flag[k] ae(v) if( is_planar_flag[k] ) plane_position[k] ae(v) }< / delete> if(DirectModeFlagPresent) direct_mode_flag ae(v) <add>if( geometry_planar_enabled_flag && (!geometry_angular_enabled_flag || !direct_mode_flag)) for( k = 0; k < 3; k++ ) if( PlanarEligible[k] ) { is_planar_flag[k] if( is_planar_flag[k] ) plane_position[k] }< / add> if( direct_mode_flag ) geometry_direct_mode_data( ) else { single_child_flag ae(v) if( single_child_flag ) for( k = 0; k < 3; k++ ) if( ! isPlanar[k] ) occupancy_idx[k] ae(v) if( OccupancyMapPresent ) if( bitwise_occupancy_flag ) occupancy_map ae(v) Else occupancy_byte de(v) if( LeafNode && duplicate_points_enabled_flag ) for( child = 0; child < NumChildren; child++ ) { [Ed:dup_point_cnt_gt0_flag has two instances, which are the same flag, but are transmitted as signals in different locations...] dup_point_cnt_gt0_flag[child] ae(v) if(dup_point_cnt_gt0_flag[child] ) dup_point_cnt_minus1[ child ] ae(v) } } }

[0112] The following content was added to the pseudocode above: <add>if(geometry_planar_enabled_flag &&(!geometry_angular_enabled_flag || !direct_mode_flag)) for( k = 0; k < 3; k++ ) if( PlanarEligible[k] ) { is_planar_flag[k] if( is_planar_flag[k] ) plane_position[k] }< / add>

[0113] In this pseudocode, if `geometry_angular_enabled_flag` is true, then the values ​​of the planar mode (such as `is_planar_flag[k]` and `plane_position[k]`) are not signaled. For example, the G-PCC encoder 200 can signal a syntax element (e.g., `geometry_angular_enabled_flag`) that indicates that angular mode is enabled for the first node (e.g., the current node). In this instance, the G-PCC encoder 200 can bypass signaling the values ​​of the planar mode (e.g., `is_planar_flag[k]` and `plane_position[k]`) under the condition that the syntax element indicates that angular mode is enabled for the first node (e.g., `geometry_angular_enabled_flag` is true). In this instance, signaling `geometry_angular_enabled_flag` can be considered as the first instance of this syntax element.

[0114] However, for the second node, the G-PCC encoder 200 can signal a second instance of `geometry_angular_enabled_flag`, which indicates that angular mode is disabled for the second node. In this instance, the G-PCC encoder 200 signals the values ​​of planar mode (e.g., `is_planar_flag[k]` and `plane_position[k]`) for the second node only under the condition that a second instance of the syntax element (e.g., a second instance of `geometry_angular_enabled_flag`) indicates that angular mode is enabled for the second node.

[0115] Furthermore, in the pseudocode above, `direct_mode_flag` may be required to be true for the G-PCC encoder 200 to signal the value of the planar mode. The G-PCC encoder 200 may determine that IDCM is enabled for the current node and apply IDCM to the current node (e.g., `direct_mode_flag` is true). Therefore, in some instances, the G-PCC encoder 200 may bypass signaling the value of the planar mode for the current node under the following conditions: when corner mode is enabled for the current node, and when IDCM is applied to the current node. That is, in some instances, the G-PCC encoder 200 may bypass signaling the value of the planar mode for the current node when the following two conditions are met: (1) corner mode is enabled for the current node, and (2) IDCM (e.g., direct mode) is applied to the current node. If neither of these two conditions is met, the G-PCC encoder 200 may signal the value of the planar mode. If both of these conditions are met, the G-PCC encoder 200 can bypass the value of the signal transmission plane mode.

[0116] In some instances, if angular mode is enabled (e.g., geometry_angular_enabled_flag is true), such as for nodes encoded in IDCM, this may be sufficient to bypass the value of planar mode being signaled. However, in some instances, it is possible to enable angular mode but still enable planar mode, and it may be useful to signal the value of planar mode. To accommodate such instances, when angular mode is enabled, the planar mode restriction for IDCM nodes can be controlled at the GBH (Geometry Block Header) level via a flag called geom_disable_planar_idcm_angular. The geom_disable_planar_idcm_angular flag is provided as an instance in the GBH, and it can reside in other parameter sets (such as the geometry parameter set (GPS)).

[0117] That is, when geom_disable_planar_idcm_angular is true, planar mode can be disabled when corner mode is enabled. In this instance, when geom_disable_planar_idcm_angular is true, if corner mode is enabled, the G-PCC encoder 200 can bypass the signal transmission of planar mode values. However, when geom_disable_planar_idcm_angular is false, even if corner mode is enabled, the G-PCC encoder 200 may still transmit planar mode values ​​via signal transmission.

[0118] During the November 2020 teleconference, the corresponding specification text in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637 can be modified as follows. In the following text, [the following text can be deleted]. <delete> ...< / delete> The text between, and can be added <add> ...< / add> The text between them.

[0119] Add the syntax element geom_disable_planar_idcm_angular to the geometry parameter set semantics.

[0120] <add>A value of 1 for geom_disable_planar_idcm_angular specifies that planar mode is disabled for IDCM nodes when corner mode is enabled.< / add> geometry_node(depth, nodeIdx, sN, tN, vN) { descriptor if( geom_node_qp_offset_present_flag ) { geom_node_qp_offset_abs_gt0_flag ae(v) if( geom_node_qp_offset_abs_gt0_flag ) { geom_node_qp_offset_abs_minus1 ae(v) geom_node_qp_offset_sign_flag ae(v) } } if( geometry_planar_enabled_flag <add> && ! geom_disable_planar_idcm_angular< / add> ) for( k = 0; k < 3; k++ ) if( PlanarEligible[ k ] ) { is_planar_flag[ k ] ae(v) if( is_planar_flag[ k ] ) plane_position[ k ] ae(v) } if( DirectModeFlagPresent ) direct_mode_flag ae(v) <add>if( geometry_planar_enabled_flag && geom_disable_planar_idcm_angular && (!geometry_angular_enabled_flag || !direct_mode_flag)) for( k = 0; k < 3; k++ ) if( PlanarEligible[k] ) { is_planar_flag[k] if( is_planar_flag[k] ) plane_position[k] }< / add> if( direct_mode_flag ) geometry_direct_mode_data( ) else { single_child_flag ae(v) if( single_child_flag ) for( k = 0; k < 3; k++ ) if( ! isPlanar[k] ) occupancy_idx[k] ae(v) if( OccupancyMapPresent ) if( bitwise_occupancy_flag ) occupancy_map ae(v) else occupancy_byte de(v) if(LeafNode&&duplicate_points_enabled_flag ) for( child = 0; child < NumChildren; child++ ) { [Ed:dup_point_cnt_gt0_flag has two instances, which are the same flag, but are transmitted as signals in different locations...] dup_point_cnt_gt0_flag[child] ae(v) if(dup_point_cnt_gt0_flag[child] ) dup_point_cnt_minus1[child] ae(v) } } }

[0121] Therefore, in the example above, the G-PCC encoder 200 can signal syntax elements indicating whether planar mode is disabled or enabled for the current node when corner mode is enabled. For example, the G-PCC encoder 200 can signal `geom_disable_planar_idcm_angular` to indicate that planar mode is disabled for the current node when corner mode is enabled. In this case, given that `geom_disable_planar_idcm_angular` indicates that planar mode is disabled for the current node when corner mode is enabled, the G-PCC encoder 200 can bypass signaling the planar mode value for the current node.

[0122] Assuming the current node is the first node, and in the example above, the signaling of `geom_disable_planar_idcm_angular` is the first instance of the signaling of `geom_disable_planar_idcm_angular`. The G-PCC encoder 200 can signal a second instance of `geom_disable_planar_idcm_angular`, indicating that planar mode is not disabled for the second node when corner mode is enabled. In this example, the G-PCC encoder 200 can only signal the value of planar mode for the second node if the second instance of `geom_disable_planar_idcm_angular` indicates that planar mode is not disabled when corner mode is enabled for the second node.

[0123] Furthermore, similar to the example techniques described above, if the current node (e.g., the first node) is an IDCM (e.g., direct mode), the G-PCC encoder 200 can bypass the value of the signal-transmitted planar mode. That is, if direct_mode_flag is true and geom_disable_planar_idcm_angular is true, the G-PCC encoder 200 can bypass the value of the signal-transmitted planar mode.

[0124] For convenience, the syntax element geom_disable_planar_idcm_angular is referred to as the first syntax element, and the syntax element geometry_angular_enabled_flag is referred to as the second syntax element. For example, the G-PCC encoder 200 can signal at least one of the first syntax element (e.g., geom_disable_planar_idcm_angular) or the second syntax element (e.g., geometry_angular_enabled_flag), where the first syntax element indicates whether planar mode is disabled for the current node when angular mode is enabled, and the second syntax element indicates whether angular mode is enabled for the current node. Whether to signal (e.g., bypass) the values ​​of planar mode (e.g., is_planar_flag[k] and plane_position[k]) can be based on the conditions indicated by the first and second syntax elements.

[0125] For example, the G-PCC encoder 200 can signal at least one of a first syntax element (e.g., geom_disable_planar_idcm_angular) or a second syntax element (e.g., geometry_angular_enabled_flag), where the first syntax element indicates whether planar mode is disabled for the current node when angular mode is enabled (e.g., geom_disable_planar_idcm_angular is true), and the second syntax element indicates that angular mode is enabled for the current node (e.g., geometry_angular_enabled_flag is true). The G-PCC encoder 200 can bypass signaling the planar mode value for the current node under the following conditions: when the first syntax element indicates that planar mode is disabled for the current node when angular mode is enabled; or when the second syntax element indicates that angular mode is enabled for the current node.

[0126] Combinations of the above methods are also possible. For example, the G-PCC encoder 200 can signal both a first syntax element and a second syntax element, wherein the first syntax element indicates that plane mode is disabled for the current node when corner mode is enabled, and the second syntax element indicates that corner mode is enabled for the current node. In this example, the G-PCC encoder 200 can bypass signaling the plane mode value for the current node under the following conditions: the first syntax element indicates that plane mode is disabled for the current node when corner mode is enabled; and the second syntax element indicates that corner mode is enabled for the current node.

[0127] Additional conditions may exist for when the G-PCC encoder 200 bypasses the value of the signal-transmitting plane mode. For example, the G-PCC encoder 200 may determine that IDCM (e.g., direct mode) is applied to the current node. The G-PCC encoder 200 may bypass the value of the signal-transmitting plane mode for the current node under the following conditions: when the first syntax element indicates that the plane mode is disabled for the current node when corner mode is enabled; when the second syntax element indicates that corner mode is enabled for the current node; and when IDCM is applied to the current node.

[0128] The above describes instances where the first and second syntax elements determine when to bypass the signaled plane mode value for the current node. In some instances, the first and second syntax elements can determine when to signal the plane mode value.

[0129] For example, suppose the current node is the first node, and the signaling of the first syntax element and / or the second syntax element is a first instance of the signaling of the first syntax element and / or the second syntax element. In some instances, the G-PCC encoder 200 may signal at least one of a second instance of the first syntax element (which indicates that the planar mode is not disabled for the second node when corner mode is enabled) or a second instance of the second syntax element (which indicates that corner mode is disabled for the second node). In such an instance, the G-PCC encoder 200 may signal the value of the planar mode for the second node only if the second instance of the first syntax element indicates that the planar mode is disabled for the second node when corner mode is enabled; or only if the second instance of the second syntax element indicates that corner mode is enabled for the second node. Typically, for IDCM nodes, the planar mode is not signaled when corner mode is enabled, while for non-IDCM nodes, the planar mode is signaled when corner mode is enabled.

[0130] In some instances, the set of geometric parameters (GPS) used for the second node is different from the GPS used for the first node, and when the GPS used for the second node is different from the GPS used for the first node, the first instance of the first and second syntax elements and the second instance of the first and second syntax elements can have different values. However, the example technique is not limited to this, and in some instances, it is possible for the same GPS to have different values ​​for the first instance of the first and second syntax elements and the second instance of the first and second syntax elements.

[0131] In another example, during a November 2020 conference call, the corresponding specification text in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637 could be modified as follows. In the following text, [the following text can be deleted]. <delete> ...< / delete> The text between, and can be added <add> ...< / add> The text between them. geometry_node(depth, nodeIdx, sN, tN, vN) { descriptor if( geom_node_qp_offset_present_flag ) { geom_node_qp_offset_abs_gt0_flag ae(v) if( geom_node_qp_offset_abs_gt0_flag ) { geom_node_qp_offset_abs_minus1 ae(v) geom_node_qp_offset_sign_flag ae(v) } } <add>if( DirectModeFlagPresent && geom_disable_planar_idcm_angular) direct_mode_flag< / add> ae(v) if( geometry_planar_enabled_flag <add> && (!geom_disable_planar_idcm_angular ||!geometry_angular_enabled_flag || !direct_mode_flag)< / add> ) for( k = 0; k < 3; k++ ) if( PlanarEligible[k] ) { is_planar_flag[k] ae(v) if( is_planar_flag[k] ) plane_position[k] ae(v) } if( DirectModeFlagPresent <add> && ! geom_disable_planar_idcm_angular< / add> ) direct_mode_flag ae(v) if( direct_mode_flag ) geometry_direct_mode_data() else { single_child_flag ae(v) if( single_child_flag ) for( k = 0; k < 3; k++ ) if (!isPlanar[k]) occupancy_idx[k] ae(v) if( OccupancyMapPresent ) if ( bitwise_occupancy_flag ) occupancy_map ae(v) Else occupancy_byte de(v) if( LeafNode && duplicate_points_enabled_flag ) for( child = 0; child < NumChildren; child++ ) { [Ed:dup_point_cnt_gt0_flag has two instances that are the same flag, but are transmitted as signals in different locations…] dup_point_cnt_gt0_flag[child] ae(v) if(dup_point_cnt_gt0_flag[child] ) dup_point_cnt_minus1[child] ae(v) } } }

[0132] In some instances, the condition (!geom_disable_planar_idcm_angular||!geometry_angular_enabled_flag||!direct_mode_flag) may be included in the planar eligibility described below regarding the eligibility of planar decoding modes for nodes (also referred to as Section 8.2.3.1). In some instances, PlanarEligible[k] is false if the condition (!geom_disable_planar_idcm_angular||!geometry_angular_enabled_flag||!direct_mode_flag) is not satisfied. For example, PlanarEligible[k] is false if it is false (geom_disable_planar_idcm_angular is false, or geometry_angular_enabled_flag is false, or direct_mode_flag is false).

[0133] During the November 2020 conference call, the G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637 specifications could be modified accordingly as shown below. (The following text can be deleted.) <delete> ...< / delete> The text between, and can be added <add> ...< / add> The text between them. 8.2.3.1 Qualification of nodes used in planar decoding mode Explicit decoding of the occupied plane is conditional on the probability of XXX. An array PlanarRate with elements PlanarRate[k] (where k = 0…2) is a probability estimate of the number of nodes that occupy a single plane perpendicular to the k-th axis. The variable LocalDensity is an estimate of the average number of child nodes occupied by a node. The variable NumNodesUntilPlanarUpdate counts the number of nodes to be resolved before updating PlanarRate and LocalDensity. <add> If the condition (!geom_disable_planar_idcm_angular||!geometry_angular_enabled_flag||!direct_mode_flag) is false, then PlanarEligible[k] is set to false (where k=0…2), and the process stops.< / add> When parsing the geometry_octree syntax structure, PlanarRate and LocalDensity are... geometry_node(depth, nodeIdx, sN, tN, vN) { descriptor if( geom_node_qp_offset_present_flag ) { geom_node_qp_offset_abs_gt0_flag ae(v) if( geom_node_qp_offset_abs_gt0_flag ) { geom_node_qp_offset_abs_minus1 ae(v) geom_node_qp_offset_sign_flag ae(v) } } <add>if( DirectModeFlagPresent && geom_disable_planar_idcm_angular) direct_mode_flag< / add> ae(v) if(geometry_planar_enabled_flag) for( k = 0; k < 3; k++ ) if( PlanarEligible[k] ) { is_planar_flag[k] ae(v) if( is_planar_flag[k] ) plane_position[k] ae(v) } if( DirectModeFlagPresent <add> && ! geom_disable_planar_idcm_angular< / add> ) direct_mode_flag ae(v) if( direct_mode_flag ) geometry_direct_mode_data() else { single_child_flag ae(v) if( single_child_flag ) for( k = 0; k < 3; k++ ) if( ! isPlanar[k] ) occupancy_idx[k] ae(v) if( OccupancyMapPresent ) if ( bitwise_occupancy_flag ) occupancy_map ae(v) Else occupancy_byte de(v) if( LeafNode && duplicate_points_enabled_flag ) for( child = 0; child < NumChildren; child++ ) { [In some cases, dup_point_cnt_gt0_flag has two instances that are the same flag, but are signaled at different locations...] dup_point_cnt_gt0_flag[child] ae(v) if(dup_point_cnt_gt0_flag[child] ) dup_point_cnt_minus1[child] ae(v) } } }

[0134] In the example pseudocode above, the definition of PlanarEligible[k] is updated, and the value of PlanarElizible[k] is based on the values ​​of the first syntax element (e.g., geom_disable_planar_idcm_angular), the second syntax element (e.g., geometry_angular_enabled_flag), and whether IDCM is applied (e.g., the value of direct_mode_flag). From the perspective of the G-PCC decoder 300, the G-PCC decoder 300 can implement the for loop of the above pseudocode, and for each iteration of the value of the signal transmission planar mode, the G-PCC decoder 300 can determine the value of PlanarEligible[k]. Since the value of PlanarElizible[k] is based on the first and second syntax elements, the G-PCC decoder 300 can parse the syntax elements based on the first and second syntax elements.

[0135] For example, in each iteration of the loop, the G-PCC decoder 300 determines at least one of the following: a first syntax element indicates that planar mode is disabled for the current node when corner mode is enabled, or a second syntax element indicates that corner mode is enabled for the current node (e.g., based on the value of PlanarEligible[k]). Based on this determination, the G-PCC decoder 300 can bypass the parsing of the planar mode value in each iteration of the loop. For example, the G-PCC decoder 300's parsing of is_planar_flag or plane_position can be based on the value of PlanarEligible[k], and the G-PCC decoder 300 can determine the value of PlanarEligible[k] in each iteration of the loop (e.g., on the value of "k").

[0136] The examples above can contribute to backward compatibility. For instance, according to one or more examples described in this disclosure, an example technique that allows the G-PCC encoder 200 and G-PCC decoder 300 to perform values ​​in the signal transmission plane mode can be implemented without requiring changes to the hardware of the G-PCC encoder 200 or G-PCC decoder 300 that is compatible with earlier versions of the G-PCC standard.

[0137] The following describes a simplified approach to context angle derivation and rate update for planar patterns in G-PCC. In one instance, when the node is a leaf node, the context angle derivation can be omitted. In another instance, when the node is a leaf node, the rate update can be omitted.

[0138] In some instances, the plane qualification of an IDCM decoding node may depend on the availability of angles. For example, position decoding for an IDCM decoding node can only be improved if angle information is available. The angle qualification of a node can be derived according to Section 8.2.4.1 of the following applicable document: November 2020 Teleconference, G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637 (Derivation Procedure for Node Angle Qualification). In some instances, if an angle is qualified for an IDCM decoding node, a plane can be disabled for that node. Otherwise, the plane can be enabled for that node.

[0139] In some instances, when corner mode is enabled, flat mode eligibility can depend on both IDCM mode and contextAngular. ContextAngular can be derived using 8.2.4.4. In some instances, when corner mode is enabled, a plane can be applied to nodes that are not IDCM decoded or IDCM decoded when contextAngular is -1. For example, the plane eligibility related to disabling the plane for IDCM nodes when corner mode is enabled in the above example can be modified as follows: 8.2.3.1 Qualification of nodes used in planar decoding mode An array PlanarRate with elements PlanarRate[k] (where k = 0…2) is a probability estimate of the number of nodes that occupy a single plane perpendicular to the k-th axis. The variable LocalDensity is an estimate of the average number of child nodes occupied by a node. The variable NumNodesUntilPlanarUpdate counts the number of nodes to be resolved before updating PlanarRate and LocalDensity. <add> If the condition (!geom_disable_planar_idcm_angular||!geometry_angular_enabled_flag||(!direct_mode_flag||contextAngular==-1)) is false, then PlanarEligible[k] is set to false (where k=0…2), and the process will stop.< / add> When parsing the geometry_octree syntax structure, PlanarRate and LocalDensity are... geometry_node(depth, nodeIdx, sN, tN, vN) { descriptor if( geom_node_qp_offset_present_flag ) { geom_node_qp_offset_abs_gt0_flag ae(v) if( geom_node_qp_offset_abs_gt0_flag ) { geom_node_qp_offset_abs_minus1 ae(v) geom_node_qp_offset_sign_flag ae(v) } } <add>if( DirectModeFlagPresent && geom_disable_planar_idcm_angular) direct_mode_flag< / add> ae(v) if( geometry_planar_enabled_flag) for( k = 0; k < 3; k++ ) if( PlanarEligible[k] ) { is_planar_flag[k] ae(v) if( is_planar_flag[k] ) plane_position[k] ae(v) } if( DirectModeFlagPresent <add> && ! geom_disable_planar_idcm_angular< / add> ) direct_mode_flag ae(v) if( direct_mode_flag ) geometry_direct_mode_data() else { single_child_flag ae(v) if( single_child_flag ) for( k = 0; k < 3; k++ ) if( ! isPlanar[k] ) occupancy_idx[k] ae(v) if( OccupancyMapPresent ) if( bitwise_occupancy_flag ) occupancy_map ae(v) Else occupancy_byte de(v) if( LeafNode && duplicate_points_enabled_flag ) for( child = 0; child < NumChildren; child++ ) { [Ed:dup_point_cnt_gt0_flag can have two instances, which are the same flag, but are transmitted as signals in different locations...] dup_point_cnt_gt0_flag[child] ae(v) if(dup_point_cnt_gt0_flag[child] ) dup_point_cnt_minus1[child] ae(v) } } }

[0140] Figure 7 is a flowchart illustrating an example technique for encoding point cloud data. For convenience, examples of the G-PCC encoder 200 are described, such as a combination of planar mode / corner mode unit 213 and arithmetic coding unit 214.

[0141] The G-PCC encoder 200 can be configured to signal at least one of a first syntax element (e.g., geom_disable_planar_idcm_angular) or a second syntax element (e.g., geometry_angular_enabled_flag), wherein the first syntax element indicates that planar mode is disabled for the current node when angular mode is enabled (e.g., geom_disable_planar_idcm_angular is true), and the second syntax element indicates that angular mode is enabled for the current node (e.g., geometry_angular_enabled_flag is true) (700). In some instances, the first syntax element is signaled within a geometry parameter set (GPS). In some instances, both the first and second syntax elements can be signaled.

[0142] For example, the planar mode / angular mode unit 213 can be configured to cause the arithmetic coding unit 214 to signal at least one of a first syntax element (e.g., geom_disable_planar_idcm_angular) or a second syntax element (e.g., geometry_angular_enabled_flag), wherein the first syntax element indicates that planar mode is disabled for the current node when angular mode is enabled (e.g., geom_disable_planar_idcm_angular is true), and the second syntax element indicates that angular mode is enabled for the current node (e.g., geometry_angular_enabled_flag is true). That is, the arithmetic coding unit 214 can be configured to signal at least one of a first syntax element (e.g., geom_disable_planar_idcm_angular) or a second syntax element (e.g., geometry_angular_enabled_flag), wherein the first syntax element indicates that planar mode is disabled for the current node when angular mode is enabled (e.g., geom_disable_planar_idcm_angular is true), and the second syntax element indicates that angular mode is enabled for the current node (e.g., geometry_angular_enabled_flag is true) (700).

[0143] Although it is described that one of the first syntax element or the second syntax element is transmitted by signal, it is also possible to transmit only one of them by signal, or to transmit both the first syntax element and the second syntax element by signal. For example, the G-PCC encoder 200 can transmit the first syntax element by signal, transmit the second syntax element by signal, or transmit both the first syntax element and the second syntax element by signal.

[0144] The G-PCC encoder 200 can bypass the signal transmission of planar mode values ​​(e.g., is_planar_flag and plane_position) for the current node under the following conditions: when the first syntax element indicates that planar mode is disabled for the current node when corner mode is enabled; or when the second syntax element indicates that corner mode is enabled for the current node (702). For example, the planar mode / corner mode unit 213 can cause the arithmetic encoding unit 214 not to signal the planar mode values ​​(e.g., is_planar_flag and plane_position) for the current node under the following conditions: when the first syntax element indicates that planar mode is disabled for the current node when corner mode is enabled; or when the second syntax element indicates that corner mode is enabled for the current node. That is, the arithmetic encoding unit 214 can bypass the signal transmission of planar mode values ​​(e.g., is_planar_flag and plane_position) for the current node under the following conditions: when the first syntax element indicates that planar mode is disabled for the current node when corner mode is enabled; or when the second syntax element indicates that corner mode is enabled for the current node.

[0145] For example, if `geom_disable_planar_idcm_angular` (e.g., the first syntax element) is true, the G-PCC encoder 200 can bypass the signal-transmitted planar mode value. If `geometry_angular_enabled_flag` (e.g., the second syntax element) is true, the G-PCC encoder 200 can bypass the signal-transmitted planar mode value. To give another example, if both `geom_disable_planar_idcm_angular` and `geometry_angular_enabled_flag` are true, the G-PCC encoder 200 can bypass the signal-transmitted planar mode value.

[0146] Bypassing the signal transmission of plane mode values ​​can mean that the G-PCC encoder 200 includes different syntax elements in the bitstream compared to the syntax elements it would include if it were transmitting plane mode values. For example, instead of signaling is_planar_flag and plane_position at specific positions in the bitstream, it includes other syntax elements. In this way, the G-PCC encoder 200 can be considered to bypass the signal transmission of plane mode values.

[0147] When bypassing the signal-transmitted plane mode value, the G-PCC encoder 200 may also need to consider additional conditions. As an example, the G-PCC encoder 200 may decide to apply an inferred direct decoding mode (IDCM) to the current node (e.g., direct_mode_flag is true). In this example, to bypass the signal-transmitted value, the G-PCC encoder 200 can bypass the signal-transmitted plane mode value for the current node under the following conditions: when the first syntax element indicates that the plane mode is disabled for the current node when corner mode is enabled; when the second syntax element indicates that corner mode is enabled for the current node; and when IDCM is applied to the current node. For example, in this example, if IDCM is not applied to the node, it is possible to signal-transmit the plane value even if the first syntax element indicates that the plane mode is disabled for the current node when corner mode is enabled, or the second syntax element indicates that corner mode is enabled for the current node.

[0148] The G-PCC encoder 200 can encode the current node in a mode different from the planar mode (704). For example, instead of transmitting the value used in the planar mode, the G-PCC encoder 200 can use some other technique to select the encoding of the current node (such as directly transmitting occupied bits).

[0149] In the example above, the current node can be considered the first node. In this example, signaling at least one of the first syntax element or the second syntax element can mean signaling a first instance of the first syntax element or a first instance of the second syntax element. The G-PCC encoder 200 can be configured to signal at least one of the second instance of the first syntax element (which indicates that the planar mode is not disabled for the second node when corner mode is enabled) or the second instance of the second syntax element (which indicates that corner mode is disabled for the second node).

[0150] In this example, the G-PCC encoder 200 signals the plane mode value for the second node only under the following conditions: only when a second instance of the first syntax element indicates that plane mode is disabled for the second node when corner mode is enabled; or only when a second instance of the second syntax element indicates that corner mode is enabled for the second node. The G-PCC encoder 200 can encode the second node using plane mode.

[0151] In some instances, the set of geometric parameters (GPS) used for the second node is different from the GPS used for the first node, and when the GPS used for the second node is different from the GPS used for the first node, the first instance of the first and second syntax elements and the second instance of the first and second syntax elements can have different values. However, the example technique is not limited to this, and in some instances, it is possible for the same GPS to have different values ​​for the first instance of the first and second syntax elements and the second instance of the first and second syntax elements.

[0152] Figure 8 is a flowchart illustrating an example technique for decoding point cloud data. For convenience, examples of the G-PCC decoder 300 are described, such as a combination of a planar mode / corner mode unit 313 and a geometric arithmetic decoding unit 302.

[0153] The G-PCC decoder 300 can be configured to parse at least one of a first syntax element (e.g., geom_disable_planar_idcm_angular) or a second syntax element (e.g., geometry_angular_enabled_flag), wherein the first syntax element indicates that planar mode is disabled for the current node when angular mode is enabled (e.g., geom_disable_planar_idcm_angular is true), and the second syntax element indicates that angular mode is enabled for the current node (e.g., geometry_angular_enabled_flag is true) (800). In some instances, the first syntax element is parsed in a geometry parameter set (GPS). In some instances, both the first and second syntax elements can be parsed.

[0154] For example, the geometry arithmetic decoding unit 302 can be configured to parse the value of at least one of a first syntax element (e.g., geom_disable_planar_idcm_angular) or a second syntax element (e.g., geometry_angular_enabled_flag), where the first syntax element indicates that planar mode is disabled for the current node when angle mode is enabled (e.g., geom_disable_planar_idcm_angular is true), and the second syntax element indicates that angle mode is enabled for the current node (e.g., geometry_angular_enabled_flag is true). The planar mode / angle mode unit 313 can be configured to parse the value decoded by the geometry arithmetic decoding unit 302.

[0155] Although the parsing of either the first or the second syntax element is described, it is also possible to parse only one syntax element or both the first and second syntax elements. For example, the G-PCC decoder 300 can parse the first syntax element, parse the second syntax element, or parse both the first and second syntax elements.

[0156] The G-PCC decoder 300 can bypass the parsing of values ​​for the planar mode (e.g., is_planar_flag and plane_position) for the current node in response to either a first syntax element indicating that planar mode is disabled for the current node when corner mode is enabled, or a second syntax element indicating that corner mode is enabled for the current node (802). As an example, the geometric arithmetic decoding unit 302 can bypass the parsing of values ​​for the planar mode for the current node in response to either a first syntax element indicating that planar mode is disabled for the current node when corner mode is enabled, or a second syntax element indicating that corner mode is enabled for the current node, and the planar mode / corner mode unit 313 can determine the values ​​located in the bitstream, where values ​​such as is_planar_flag and plane_position should be located in other syntax elements.

[0157] For example, if `geom_disable_planar_idcm_angular` (e.g., the first syntax element) is true, the G-PCC decoder 300 can bypass parsing the value of the planar mode. If `geometry_angular_enabled_flag` (e.g., the second syntax element) is true, the G-PCC decoder 300 can bypass parsing the value of the planar mode. To give another example, if both `geom_disable_planar_idcm_angular` and `geometry_angular_enabled_flag` are true, the G-PCC decoder 300 can bypass parsing the value of the planar mode.

[0158] Bypassing the parsing of planar mode values ​​can mean that the G-PCC decoder 300 decodes different syntax elements in the bitstream than the syntax elements that would be decoded if the G-PCC encoder 200 transmitted the planar mode values ​​as signals. For example, instead of parsing is_planar_flag and plane_position at specific positions in the bitstream, it parses some other syntax elements. In this way, the G-PCC decoder 300 can be considered to have bypassed the parsing of planar mode values.

[0159] To give another example, in order to bypass the parsing of the planar mode value, the G-PCC decoder 300 can be configured to determine at least one of the following in each iteration of the loop: a first syntax element indicates that the planar mode is disabled for the current node when corner mode is enabled, or a second syntax element indicates that corner mode is enabled for the current node. For example, the G-PCC decoder 300 can define the value of PlanarEligible[k] based on the first syntax element, the second syntax element, or whether one or more of IDCM are applied. In the loop of [k] values, the G-PCC decoder 300 can determine the value of PlanarEligible[k] in each iteration. Based on the value of PlanarEligible[k], the G-PCC decoder 300 can bypass the parsing of the planar mode value in each iteration of the loop based on this determination.

[0160] When bypassing the parsing of values ​​for the planar mode, the G-PCC decoder 300 may also need to consider additional conditions. For example, the G-PCC decoder 300 may determine that an inferred direct decoding mode (IDCM) has been applied to the current node (e.g., direct_mode_flag is true). In this instance, to bypass the parsing of values, the G-PCC decoder 300 may bypass the parsing of values ​​for the planar mode for the current node in response to the following: a first syntax element indicating that the planar mode is disabled for the current node when corner mode is enabled; a second syntax element indicating that corner mode is enabled for the current node; and an IDCM being applied to the current node. For example, in this instance, if the IDCM is not applied to the node, parsing the planar value is possible even if the first syntax element indicates that the planar mode is disabled for the current node when corner mode is enabled, or even if the second syntax element indicates that corner mode is enabled for the current node.

[0161] The G-PCC decoder 300 may decode the current node in a mode different from the planar mode (804). For example, the G-PCC decoder 300 may not parse the value used for the planar mode, but instead uses some other technique to parse the syntax elements used to decode the current node (such as directly signaling the occupied bits).

[0162] In the example above, the current node can be considered the first node. In this example, parsing at least one of the first syntax element or the second syntax element can mean: parsing a first instance of the first syntax element or a first instance of the second syntax element. The G-PCC decoder 300 can be configured to parse at least one of the following: a second instance of the first syntax element (which indicates that the planar mode is not disabled for the second node when corner mode is enabled) or a second instance of the second syntax element (which indicates that corner mode is disabled for the second node).

[0163] In this instance, the G-PCC decoder 300 may parse the flat mode value for the second node only in response to: only in response to a second instance of the first syntax element indicating that the flat mode is disabled for the second node when corner mode is enabled; or only in response to a second instance of the second syntax element indicating that corner mode is enabled for the second node. The G-PCC decoder 300 can then decode the second node using the flat mode.

[0164] In some instances, the set of geometric parameters (GPS) used for the second node is different from the GPS used for the first node, and when the GPS used for the second node is different from the GPS used for the first node, the first instance of the first and second syntax elements and the second instance of the first and second syntax elements can have different values. However, the example technique is not limited to this, and in some instances, it is possible for the same GPS to have different values ​​for the first instance of the first and second syntax elements and the second instance of the first and second syntax elements.

[0165] Figure 9 is a conceptual diagram illustrating a laser package 900 (such as a LiDAR sensor or other system containing one or more lasers) that scans points in three-dimensional space. Source 104 (Figure 1) may include the laser package 900.

[0166] As shown in Figure 9, a laser package 900 can be used to capture point clouds, that is, the sensor scans points in 3D space. However, it should be understood that some point clouds are not generated by the actual LiDAR sensor, but can be encoded as if they were generated. In the example of Figure 9, the laser package 900 includes a LiDAR head 902, which includes multiple lasers 904A-904E (collectively referred to as "lasers 904") arranged at different angles relative to the origin in a vertical plane. The laser package 900 can rotate about a vertical axis 908. The laser package 900 can use the returned laser light to determine the distance and position of points in the point cloud. The laser beams 906A-906E (collectively referred to as "laser beams 906") emitted by the lasers 904 of the laser package 900 can be characterized by a set of parameters. The distances indicated by arrows 910 and 912 represent example laser correction values ​​used for lasers 904B and 904A, respectively.

[0167] Figure 10 is a conceptual diagram illustrating an example ranging system that can be used with one or more techniques disclosed herein. In the example of Figure 10, the ranging system 1000 includes an illuminator 1002 and a sensor 1004. The illuminator 1002 can emit light 1006. In some instances, the illuminator 1002 can emit light 1006 as one or more laser beams. Light 1006 can have one or more wavelengths, such as infrared wavelengths or visible light wavelengths. In other instances, light 1006 is not a coherent laser beam. When light 1006 encounters an object such as object 1008, light 1006 produces reflected light 1010. The reflected light 1010 can include backscattered and / or reflected light. The reflected light 1010 can pass through a lens 1011, which guides the reflected light 1010 to establish an image 1012 of object 1008 on sensor 1004. Sensor 1004 generates a signal 1014 based on the image 1012. Image 1012 may include a set of points (e.g., as represented by the points in image 1012 of Figure 10).

[0168] In some instances, the illuminator 1002 and sensor 1004 can be mounted on a rotating structure, allowing the illuminator 1002 and sensor 1004 to capture a 360-degree view of the environment. In other instances, the ranging system 1000 may include one or more optical components (e.g., mirrors, collimators, diffraction gratings, etc.) that enable the illuminator 1002 and sensor 1004 to detect objects within a specific range (e.g., up to 360 degrees). Although the example in Figure 10 illustrates only a single illuminator 1002 and sensor 1004, the ranging system 1000 may include multiple sets of illuminators and sensors.

[0169] In some instances, the illuminator 1002 generates a structured light pattern. In such instances, the ranging system 1000 may include a plurality of sensors 1004 on which corresponding images of the structured light pattern are formed. The ranging system 1000 can use the differences between the images of the structured light patterns to determine the distance to an object 1008 from which the structured light pattern is backscattered. When the object 1008 is relatively close to the sensor 1004 (e.g., 0.2 meters to 2 meters), the structured light-based ranging system can have a high level of accuracy (e.g., sub-millimeter accuracy). This high level of accuracy may be useful in facial recognition applications, such as for unlocking mobile devices (e.g., mobile phones, tablets, etc.) and security applications.

[0170] In some instances, the ranging system 1000 is a time-of-flight (ToF) based system. In some instances where the ranging system 1000 is a ToF based system, an illuminator 1002 generates a light pulse. In other words, the illuminator 1002 can modulate the amplitude of the emitted light 1006. In this instance, a sensor 1004 detects the return light 1010 from the pulse of light 1006 generated by the illuminator 1002. The ranging system 1000 can then determine the distance to an object 1008 from which the light 1006 is backscattered, based on the time delay between the emission and detection of the light 1006 and the known speed of light in the air. In some instances, instead of modulating the amplitude of the emitted light 1006 (or otherwise), the illuminator 1002 can modulate the phase of the emitted light 1006. In this example, sensor 1004 can detect the phase of the return light 1010 from object 1008, and use the speed of light and the time difference between the time when illuminator 1002 produces light 1006 at a specific phase and the time when sensor 1004 detects the return light 1010 at a specific phase to determine the distance to a point on object 1008.

[0171] In other instances, point clouds can be generated without using illuminator 1002. For example, in some instances, the sensor 1004 of the ranging system 1000 may include two or more optical cameras. In such an instance, the ranging system 1000 can use optical cameras to capture a stereo image of the environment including object 1008. The ranging system 1000 (e.g., point cloud generator 1020) can then calculate the differences between positions in the stereo image. The ranging system 1000 can then use this difference to determine the distance to the position depicted in the stereo image. Based on this distance, the point cloud generator 1020 can generate a point cloud.

[0172] Sensor 1004 can also detect other properties of object 1008, such as color and reflectance information. In the example of Figure 10, point cloud generator 920 can generate a point cloud based on the signal 1018 generated by sensor 1004. Ranging system 1000 and / or point cloud generator 1020 can form part of data source 104 (Figure 1).

[0173] Figure 11 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques disclosed herein can be used. In the example of Figure 11, vehicle 1100 includes a laser package 1102 (such as a LiDAR system). The laser package 1102 can be implemented in the same manner as laser package 900 (Figure 9). Although not illustrated in the example of Figure 11, vehicle 1100 may also include a data source (such as data source 104 (Figure 1)) and a G-PCC encoder (such as G-PCC encoder 200 (Figure 1)). In the example of Figure 11, laser package 1102 emits a laser beam 1104, which is reflected by a pedestrian 1106 or other objects in the road. The data source of vehicle 1100 can generate a point cloud based on the signal generated by laser package 1102. The G-PCC encoder of vehicle 1100 can encode the point cloud to generate a bitstream 1108 (such as the geometric bitstream and attribute bitstream of FIG. 2). The bitstream 1108 can include significantly fewer bits than the undecoded point cloud obtained by the G-PCC encoder. The output interface of vehicle 1100 (e.g., output interface 108 (FIG. 1)) can send the bitstream 1108 to one or more other devices. Therefore, vehicle 1100 can send the bitstream 1108 to other devices much faster than uncoded point cloud data. Additionally, the bitstream 1108 may require less data storage capacity.

[0174] In the example of Figure 11, vehicle 1100 may send a bitstream 1108 to another vehicle 1110. Vehicle 1110 may include a G-PCC decoder (such as G-PCC decoder 300 (Figure 1)). The G-PCC decoder of vehicle 1110 may decode the bitstream 1108 to reconstruct a point cloud. Vehicle 1110 may use the reconstructed point cloud for various purposes. For example, vehicle 1110 may, based on the reconstructed point cloud, determine that there is a pedestrian 1106 in the road ahead of vehicle 1100 and therefore begin to decelerate (e.g., even before the driver of vehicle 1110 becomes aware of the pedestrian 1106 in the road). Thus, in some instances, vehicle 1110 may, based on the reconstructed point cloud, perform autonomous navigation operations, generate notifications or warnings, or perform another action.

[0175] Alternatively, vehicle 1100 may send bitstream 1108 to server system 1112. Server system 1112 may use bitstream 1108 for various purposes. For example, server system 1112 may store bitstream 1108 for subsequent reconstruction of the point cloud. In this example, server system 1112 may use the point cloud along with other data (e.g., vehicle telemetry data generated by vehicle 1100) to train an autonomous driving system. In other instances, server system 1112 may store bitstream 1108 for subsequent reconstruction in forensic collision investigations (e.g., if vehicle 1100 hits pedestrian 1106).

[0176] Figure 12 is a conceptual diagram illustrating an example extended reality system in which one or more technologies disclosed herein can be used. Extended reality (XR) is a term used to encompass a range of technologies including augmented reality (AR), mixed reality (MR), and virtual reality (VR). In the example of Figure 12, a first user 1200 is located at a first position 1202. User 1200 wears an XR headset 1204. Alternatively, user 1200 may use a mobile device (e.g., a mobile phone, tablet, etc.). The XR headset 1204 includes a depth sensor (such as a LiDAR system) that detects the position of a point on an object 1206 at position 1202. The data source for the XR headset 1204 may use the signals generated by the depth sensor to generate a point cloud representation of the object 1206 at position 1202. XR headset 1204 may include a G-PCC encoder (e.g., G-PCC encoder 200 of FIG1) configured to encode point clouds to produce bitstream 1208.

[0177] XR headset 1204 can send bitstream 1208 to XR headset 1210 worn by user 1212 at a second location 1214 (e.g., via a network such as the Internet). XR headset 1210 can decode bitstream 1208 to reconstruct a point cloud. XR headset 1210 can use the point cloud to generate an XR visualization (e.g., AR, MR, VR visualization) representing object 1206 at location 1202. Thus, in some instances, such as when XR headset 1210 generates a VR visualization, user 1212 at location 1214 can have a 3D immersive experience at location 1202. In some instances, XR headset 1210 can determine the position of virtual objects based on the reconstructed point cloud. For example, XR headset 1210 can determine, based on the reconstructed point cloud, that the environment (e.g., location 1202) includes a flat surface, and subsequently determine that virtual objects (e.g., cartoon characters) should be placed on that flat surface. The XR headset 1210 can produce XR visualizations in which virtual objects are positioned in a predetermined location. For example, the XR headset 1210 can display a cartoon character sitting on a flat surface.

[0178] Figure 13 is a conceptual diagram illustrating an example mobile device system that can utilize one or more technologies disclosed herein. In the example of Figure 13, mobile device 1300 (such as a mobile phone or tablet) includes a depth sensing sensor (such as a LiDAR system) that detects the location of points on object 1302 in the environment of mobile device 1300. The data source for mobile device 1300 can use signals generated by the depth sensing sensor to generate a point cloud representation of object 1302. Mobile device 1300 may include a G-PCC encoder (e.g., G-PCC encoder 200 of Figure 1) configured to encode the point cloud to generate a bitstream 1304. In the example of Figure 13, mobile device 1300 can send the bitstream to a remote device 1306 (such as a server system or other mobile device). Remote device 1306 can decode the bitstream 1304 to reconstruct the point cloud. Remote device 1306 can use the point cloud for various purposes. For example, remote device 1306 can use point clouds to generate an environmental map of mobile device 1300. For example, remote device 1306 can generate a map of the interior of a building based on the reconstructed point cloud. In another instance, remote device 1306 can generate an image (e.g., computer graphics) based on the point cloud. For example, remote device 1306 can use points from the point cloud as vertices of polygons and use the color attributes of these points as the basis for coloring the polygons. In some instances, remote device 1306 can use point clouds to perform face recognition.

[0179] Instances of the various forms of this disclosure may be used individually or in any combination.

[0180] Clause 1. A method for processing point cloud data, the method comprising: signaling an inferred direct decoding mode (IDCM) flag and the number of points in a node of the point cloud data in a bit stream; and, based on the number of points in the node being 1, and after signaling the IDCM flag, signaling a planar position in the bit stream and bypassing the signaled planar mode.

[0181] Clause 2. A method for processing point cloud data, the method comprising: parsing an inferred Direct Decoding Mode (IDCM) flag from a bitstream and the number of points in a node of the point cloud data; based on the fact that the number of points in the node is 1, and after parsing the IDCM flag, parsing a planar position from the bitstream; based on the fact that the number of points in the node is 1, determining from the bitstream that the parsed bits of the node are syntax elements for syntax elements different from the indicative planar mode; and reconstructing the point cloud based on the parsed IDCM flag and the planar position.

[0182] Clause 3. A method for processing point cloud data, the method comprising: signaling an inferred direct decoding mode (IDCM) flag and the number of points in a node of the point cloud data in a bit stream; and bypassing signaling a planar position and planar mode based on the fact that the number of points in the node is less than or equal to a threshold.

[0183] Clause 4. A method for processing point cloud data, the method comprising: parsing an inferred Direct Decoding Mode (IDCM) flag and the number of points in a node of the point cloud data from a bit stream; determining from the bit stream, based on the fact that the number of points in the node is less than or equal to a threshold, that the parsed bits of the node are syntax elements for syntax elements different from those indicating planar positions or planar modes; and reconstructing the point cloud data based on the parsed IDCM flag.

[0184] Clause 5, the method described in any of Clauses 3 and 4, wherein the threshold is 1.

[0185] Clause 6, the method described in any of Clauses 3 and 4, wherein the threshold is greater than 1.

[0186] Clause 7. A method for processing point cloud data, the method comprising: encoding the point cloud data without using the planar pattern and planar position of the nodes of the point cloud, while disabling inferred direct decoding mode (IDCM).

[0187] Clause 8. A method for processing point cloud data, the method comprising: decoding the point cloud data without using the planar pattern and planar position of the nodes of the point cloud, while disabling inferred direct decoding mode (IDCM).

[0188] Clause 9. An apparatus for processing point cloud data, the apparatus comprising: a memory configured to store point cloud data; and processing circuitry configured to perform the method described in any one of Clauses 1-8.

[0189] Clause 10. The device as described in Clause 9, wherein the device includes a decoder.

[0190] Clause 11. The device as described in Clause 9, wherein the device includes an encoder.

[0191] Clause 12, the device as described in any one of Clauses 9-11, further includes: a device for generating the point cloud.

[0192] Clause 13, the device as described in any one of Clauses 9-12, further includes: a display for presenting an image based on the point cloud.

[0193] Clause 14. A computer-readable storage medium having instructions stored thereon, which, when executed, cause one or more processors to perform the method described in any one of Clauses 1-8.

[0194] Clause 15. An apparatus for processing point cloud data, the apparatus comprising: a component for performing the method described in any one of Clauses 1-8.

[0195] Clause 1A, a method for encoding point cloud data, the method comprising: signaling at least one of the following: a first syntax element indicating that a planar mode is disabled for the current node when an angle mode is enabled; or a second syntax element indicating that the angle mode is enabled for the current node; bypassing the signaling of a planar mode value for the current node under the following conditions: the first syntax element indicating that the planar mode is disabled for the current node when the angle mode is enabled, or the second syntax element indicating that the angle mode is enabled for the current node; and encoding the current node in a mode different from the planar mode.

[0196] Clause 2A, the method of Clause 1A, wherein the current node includes a first node, wherein signaling at least one of the first syntax element or the second syntax element comprises: signaling a first instance of the first syntax element or a first instance of the second syntax element, the method further comprising: signaling at least one of the following: a second instance of the first syntax element indicating that the plane mode is not disabled for the second node when the corner mode is enabled; or a second instance of the second syntax element indicating that the corner mode is disabled for the second node; signaling a value of the plane mode for the second node only under the following conditions: only under the condition that the second instance of the first syntax element indicates that the plane mode is disabled for the second node when the corner mode is enabled, or only under the condition that the second instance of the second syntax element indicates that the corner mode is enabled for the second node; and encoding the second node using the plane mode.

[0197] The method described in Clause 3A, or any of Clauses 1A and 2A, further comprises: determining to apply an inferred direct decoding mode (IDCM) to the current node, wherein bypassing the signal transmission of values ​​includes bypassing the signal transmission of the plane mode for the current node under the following conditions: when the first syntax element indicates that the plane mode is disabled for the current node when the corner mode is enabled, when the second syntax element indicates that the corner mode is enabled for the current node, and when IDCM is applied to the current node.

[0198] Clause 4A, the method of any one of Clauses 1A-3A, wherein signaling at least one of the first syntax element or the second syntax element comprises: signaling the first syntax element, and wherein bypassing signaling a value comprises: bypassing signaling a value provided that the first syntax element indicates that the plane mode is disabled for the current node when the corner mode is enabled.

[0199] The method described in Clause 5A, or any of Clauses 1A-4A, wherein signaling at least one of the first syntax element or the second syntax element comprises: signaling the second syntax element, and wherein bypassing signaling a value comprises: bypassing signaling a value provided that the second syntax element indicates that the corner mode is enabled for the current node.

[0200] The method described in Clause 6A, or any of Clauses 1A-5A, wherein signaling at least one of the first syntax element or the second syntax element comprises: signaling both the first syntax element and the second syntax element, and wherein bypassing signaling a value comprises bypassing signaling a value under the following conditions: when the first syntax element indicates that the plane mode is disabled for the current node when the corner mode is enabled, and when the second syntax element indicates that the corner mode is enabled for the current node.

[0201] The method described in Clause 7A, or any of Clauses 1A-6A, wherein transmitting the first syntax element by signaling comprises: transmitting the first syntax element by signaling in a set of geometric parameters (GPS).

[0202] Clause 8A, a method for decoding point cloud data, the method comprising: parsing from a bitstream at least one of the following: a first syntax element indicating that a planar mode is disabled for the current node when corner mode is enabled; or a second syntax element indicating that the corner mode is enabled for the current node; bypassing the parsing of the planar mode value for the current node in response to the following: the first syntax element indicating that the planar mode is disabled for the current node when corner mode is enabled, or the second syntax element indicating that the corner mode is enabled for the current node; and decoding the current node in a mode different from the planar mode.

[0203] Clause 9A, the method of Clause 8A, wherein the current node includes a first node, wherein parsing at least one of the first syntax element or the second syntax element comprises: parsing a first instance of the first syntax element or the first instance of the second syntax element, the method further comprising: parsing at least one of the following: a second instance of the first syntax element indicating that the plane mode is not disabled for the second node when the corner mode is enabled; or a second instance of the second syntax element indicating that the corner mode is disabled for the second node; and parsing the value of the plane mode for the second node only in response to: only in response to the second instance of the first syntax element indicating that the plane mode is disabled for the second node when the corner mode is enabled, or only in response to the second instance of the second syntax element indicating a condition for enabling the corner mode for the second node; and decoding the second node using the plane mode.

[0204] The method described in Clause 10A, or any of Clauses 8A and 9A, further comprises: deciding to apply an inferred direct decoding mode (IDCM) to the current node, wherein bypassing the parsing of the value comprises: bypassing the parsing of the value of the plane mode for the current node in response to the following: in response to the first syntax element indicating that the plane mode is disabled for the current node when the corner mode is enabled, in response to the second syntax element indicating that the corner mode is enabled for the current node, and in response to the application of IDCM to the current node.

[0205] The method described in Clause 11A, or any of Clauses 8A-10A, wherein parsing at least one of the first syntax element or the second syntax element comprises: parsing the first syntax element, and wherein bypassing the parsing of the value comprises: in response to the first syntax element indicating that, when the corner mode is enabled, the planar mode is disabled for the current node, bypassing the parsing of the value.

[0206] The method described in Clause 12A, or any of Clauses 8A-11A, wherein parsing at least one of the first syntax element or the second syntax element comprises: parsing the second syntax element, and wherein bypassing the parsing of the value comprises: bypassing the parsing of the value in response to the second syntax element indicating that the corner mode is enabled for the current node.

[0207] The method described in Clause 13A, or any of Clauses 8A-12A, wherein parsing at least one of the first syntax element or the second syntax element comprises: parsing both the first syntax element and the second syntax element, and wherein bypassing the parsing of a value comprises bypassing the parsing of a value in response to: the first syntax element indicating that the plane mode is disabled for the current node when the corner mode is enabled, and in response to the second syntax element indicating that the corner mode is enabled for the current node.

[0208] The method described in Clause 14A, or any of Clauses 8A-13A, wherein parsing the first syntax element comprises: parsing the first syntax element in the set of geometric parameters (GPS).

[0209] The method described in Clause 15A, or any of Clauses 8A-14A, wherein bypassing the parsing of the value of the plane mode comprises: in each iteration of the loop, determining at least one of the following: the first syntax element indicates that the plane mode is disabled for the current node when the corner mode is enabled, or the second syntax element indicates that the corner mode is enabled for the current node; and based on the determination, bypassing the parsing of the value of the plane mode in each iteration of the loop.

[0210] Clause 16A. An apparatus for encoding point cloud data, the apparatus comprising: a memory configured to store the point cloud data; and processing circuitry coupled to the memory, configured to: signal at least one of the following: a first syntax element indicating that a planar mode is disabled for the current node when an angle mode is enabled; or a second syntax element indicating that the angle mode is enabled for the current node; bypassing the signaled planar mode value for the current node under the following conditions: the first syntax element indicating that the planar mode is disabled for the current node when the angle mode is enabled, or the second syntax element indicating that the angle mode is enabled for the current node; and encoding the current node in a mode different from the planar mode.

[0211] Clause 17A, the apparatus as described in Clause 16A, wherein the current node includes a first node, wherein, in order to signal at least one of the first syntax element or the second syntax element, the processing circuitry is configured to signal a first instance of the first syntax element or a first instance of the second syntax element, and wherein the processing circuitry is configured to signal at least one of: a second instance of the first syntax element indicating that the plane mode is not disabled for the second node when the corner mode is enabled; or a second instance of the second syntax element indicating that the corner mode is disabled for the second node; to signal a value of the plane mode for the second node only under the following conditions: only under the condition that the second instance of the first syntax element indicates that the plane mode is disabled for the second node when the corner mode is enabled, or only under the condition that the second instance of the second syntax element indicates that the corner mode is enabled for the second node; and to encode the second node using the plane mode.

[0212] The device as described in any of Clauses 16A and 17A, wherein the processing circuitry is configured to: determine to apply an inferred direct decoding mode (IDCM) to the current node, wherein, in order to bypass the signal transmission of values, the processing circuitry is configured to bypass the signal transmission of values ​​in the plane mode for the current node under the following conditions: when the first syntax element indicates that the plane mode is disabled for the current node when the corner mode is enabled, when the second syntax element indicates that the corner mode is enabled for the current node, and when IDCM is applied to the current node.

[0213] The device described in any of Clauses 16A-18A, wherein, in order to signal at least one of the first syntax element or the second syntax element, the processing circuitry is configured to signal the first syntax element, and wherein, in order to bypass signaling a value, the processing circuitry is configured to bypass signaling a value provided that the first syntax element indicates that the planar mode is disabled for the current node when the corner mode is enabled.

[0214] The device described in any of Clauses 20A and 16A-19A, wherein, in order to signal at least one of the first syntax element or the second syntax element, the processing circuitry is configured to signal the second syntax element, and wherein, in order to bypass signaling a value, the processing circuitry is configured to bypass signaling a value provided that the second syntax element indicates that the corner mode is enabled for the current node.

[0215] Clause 21A, the device as described in any of Clauses 16A-20A, wherein, in order to signal at least one of the first syntax element or the second syntax element, the processing circuitry is configured to signal both the first syntax element and the second syntax element, and wherein, in order to bypass signaled values, the processing circuitry is configured to bypass signaled values ​​under the following conditions: when the first syntax element indicates that the plane mode is disabled for the current node when the corner mode is enabled, and when the second syntax element indicates that the corner mode is enabled for the current node.

[0216] The device described in any of the provisions of Clause 22A, 16A-21A, wherein, in order to transmit the first syntax element in a signal, the processing circuitry is configured to transmit the first syntax element in a set of geometric parameters (GPS).

[0217] Clause 23A. An apparatus for decoding point cloud data, the apparatus comprising: a memory configured to store the point cloud data; and processing circuitry coupled to the memory, configured to: parse from a bitstream at least one of the following: a first syntax element indicating that a planar mode is disabled for the current node when corner mode is enabled; or a second syntax element indicating that the corner mode is enabled for the current node; bypass the parsing of the planar mode value for the current node in response to: the first syntax element indicating that the planar mode is disabled for the current node when corner mode is enabled, or the second syntax element indicating that the corner mode is enabled for the current node; and decode the current node in a mode different from the planar mode.

[0218] Clause 24A, the apparatus as described in Clause 23A, wherein the current node includes a first node, wherein, in order to parse at least one of the first syntax element or the second syntax element, the processing circuitry is configured to: parse a first instance of the first syntax element or the first instance of the second syntax element, and wherein the processing circuitry is configured to: parse at least one of the following: a second instance of the first syntax element indicating that the plane mode is not disabled for the second node when the corner mode is enabled; or a second instance of the second syntax element indicating that the corner mode is disabled for the second node; and parse the value of the plane mode for the second node only in response to: only in response to the second instance of the first syntax element indicating that the plane mode is disabled for the second node when the corner mode is enabled, or only in response to the second instance of the second syntax element indicating a condition for enabling the corner mode for the second node; and decode the second node using the plane mode.

[0219] The device as described in any of Clauses 25A, 23A, and 24A, wherein the processing circuitry is configured to: determine to apply an inferred direct decoding mode (IDCM) to the current node, wherein, in order to bypass the parsing of values, the processing circuitry is configured to bypass the parsing of values ​​for the current node in response to: a first syntax element indicating that the plane mode is disabled for the current node when the corner mode is enabled, a second syntax element indicating that the corner mode is enabled for the current node, and an application of IDCM to the current node.

[0220] The device described in any of Clauses 26A, 23A-25A, wherein, in order to parse the first syntax element or at least one of the second syntax elements, the processing circuitry is configured to parse the first syntax element, and wherein, in order to bypass the parsing of the value, the processing circuitry is configured to: in response to the first syntax element indicating that, when the corner mode is enabled, disable the plane mode for the current node, thereby bypassing the parsing of the value.

[0221] The device described in any of Clauses 27A, 23A-26A, wherein in order to parse the first syntax element or at least one of the second syntax elements, the processing circuitry is configured to parse the second syntax element, and wherein in order to bypass the parsing of the value, the processing circuitry is configured to bypass the parsing of the value in response to the second syntax element indicating that the corner mode is enabled for the current node.

[0222] Clause 28A, the apparatus as described in Clauses 23A-27A, wherein, in order to parse at least one of the first syntax element or the second syntax element, the processing circuitry is configured to parse both the first syntax element and the second syntax element, and wherein, in order to bypass the parsing of the value, the processing circuitry is configured to bypass the parsing of the value in response to: the first syntax element indicating that the planar mode is disabled for the current node when the corner mode is enabled, and in response to the second syntax element indicating that the corner mode is enabled for the current node.

[0223] The device described in any of Clauses 23A-28A, wherein, in order to parse the first syntax element, the processing circuitry is configured to parse the first syntax element in a set of geometric parameters (GPS).

[0224] The device described in any of the provisions of Clause 30A or Clauses 23A-29A, wherein, in order to bypass the parsing of the value of the plane mode, the processing circuitry is configured to: in each iteration of the loop, determine at least one of the following: the first syntax element indicates that the plane mode is disabled for the current node when the corner mode is enabled, or the second syntax element indicates that the corner mode is enabled for the current node; and based on the determination, bypass the parsing of the value of the plane mode in each iteration of the loop.

[0225] It should be recognized that, depending on the instance, certain actions or events of any technique described herein may be performed in a different sequence, may be added, combined, or omitted entirely (e.g., not all described actions or events are necessary for practicing such techniques). Furthermore, in some instances, actions or events may be performed concurrently rather than sequentially, for example, via multithreading, interrupt handling, or multiple processors.

[0226] In one or more instances, the described functionality may be implemented using hardware, software, firmware, or any combination thereof. When implemented in software, such functionality may be stored on a computer-readable medium, or transmitted as one or more instructions or codes on a computer-readable medium and executed by a hardware-based processing unit. A computer-readable medium may include a computer-readable storage medium, which corresponds to tangible media such as data storage media or communication media, wherein communication media includes any media that facilitates, for example, the transfer of a computer program from one place to another according to a communication protocol. In this way, 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 accessible to one or more computers or one or more processors to obtain instructions, code, and / or data structures for implementing the techniques described in this disclosure. Computer program products may include computer-readable media.

[0227] For example, but not limitingly, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disc storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other media capable of storing desired program code having an instruction or data structure that can be accessed by a computer. Furthermore, any connection may be appropriately referred to as computer-readable media. 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, then such 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 transient media, but rather refer to non-transient tangible storage media. As used herein, magnetic disks and optical disks include CDs, laser discs, optical discs, DVDs, floppy disks, and Blu-ray discs, where magnetic disks typically copy data magnetically, while optical discs use lasers to copy data optically. Combinations of these should also be included within the scope of protection for computer-readable media.

[0228] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other equivalent integrated or individual logic circuits. Therefore, as used herein, the terms "processor" and "processing circuit" can refer to any of the foregoing structures or any other structures suitable for implementing the techniques described herein. Furthermore, in some cases, the functionality described herein can be provided in dedicated hardware and / or software modules configured to implement encoding and decoding, or incorporated into a combined transcoder. Moreover, these techniques can be fully implemented in one or more circuit or logic elements.

[0229] The techniques disclosed herein can be implemented using a wide variety of devices or apparatuses, including wireless handheld devices, integrated circuits (ICs), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in this disclosure to emphasize the functional characteristics of a device configured to perform the disclosed techniques, but they do not necessarily need to be implemented by different hardware units. Rather, as described above, the individual units can be combined in a transcoder hardware unit, or provided by a coordinated set of hardware units (including one or more processors as described above) combined with appropriate software and / or firmware.

[0230] The individual instances are described. These and other instances fall within the protection scope of the attached request.

[0231] 100: Encoding and Decoding Systems 102: Source device 104: Source of information 106: Memory 108: Output Interface 110: Computer-readable media 112: Input Interface 114: Archive Server 116: Destination Equipment 118: Data Consumption Device 120: Memory 122: Input Interface 200:G-PCC Encoder 202: Coordinate Transformation Unit 203: Geometric Bit Stream 204: Color Conversion Unit 205: Attribute Bit Stream 206: Voxelization Unit 208: Attribute Transmission Unit 210: Octree Analysis Unit 212: Surface approximation analysis unit 213: Planar / Corner Mode Units 214: Arithmetic coding unit 216: Geometric Reconstruction Unit 218: RAHT unit 220: LOD generation unit 222: Lifting Unit 224: Coefficient Quantization Unit 226: Arithmetic coding unit 300: G-PCC Decoder 302: Geometric Arithmetic Decoding Unit 304: Attribute Arithmetic Decoding Unit 306: Octree Synthesis Unit 308: Inverse quantization unit 310: Surface approximation synthesis unit 312: Geometric Reconstruction Unit 313: Planar / Corner Mode Unit 314: RAHT unit 316: LOD generation unit 318: Inverse Lifting Unit 320: Inverse Transform Coordinate Unit 322: Inverse Transform Color Unit 400: Steps 402: Steps 404: Steps 406: Steps 408: Steps 410: Steps 412: Steps 414: Steps 416: Steps 418: Steps 500: Steps 502: Steps 504: Steps 506: Steps 508: Steps 510: Steps 512: Steps 514: Steps 516: Steps 600: Steps 602: Steps 604: Steps 606: Steps 608: Steps 610: Steps 612: Steps 614: Steps 616: Steps 618: Steps 700: Steps 702: Steps 704: Steps 800: Steps 802: Steps 804: Steps 900: Laser encapsulation 902:LIDAR head 904A: Laser 904B: Laser 904C: Laser 904D: Laser 904E: Laser 906A: Laser Beam 906B: Laser Beam 906C: Laser Beam 906D: Laser Beam 906E: Laser Beam 910: Arrow 912: Arrow 1000: Distance measuring system 1002:Illuminator 1004: Sensor 1006: Light 1008: Object 1010: Return to Light 1011: Lens 1012: Image 1018: Signal 1020: Point Cloud Generator 1100: Vehicles 1102: Laser encapsulation 1104: Laser Beam 1106: Pedestrian 1108: Bit Stream 1110: Vehicles 1112: Server System 1200: First User 1202: First position 1204: XR Headphones 1206: Object 1208: Bit Stream 1210: XR Headphones 1212: User 1214: Second position 1300: Mobile Devices 1302: Object 1304: Bit Stream 1306: Remote device

[0232] Domestic storage information (please note in order of storage institution, date, and number) none Overseas storage information (please note in the order of storage country, institution, date, and number) none

Claims

1. A method for encoding point cloud data, the method comprising the steps of: transmitting at least one of the following by signal: a first syntax element indicating that a planar mode is disabled for a current node when an angle mode is enabled; or a second syntax element indicating that the angle mode is enabled for the current node; bypassing the transmission of a planar mode value for the current node under the condition that the first syntax element indicates that the planar mode is disabled for the current node when the angle mode is enabled, or under the condition that the second syntax element indicates that the angle mode is enabled for the current node; and encoding the current node in a mode different from the planar mode.

2. The method as described in claim 1, wherein the current node includes a first node, wherein signaling at least one of the first syntax element or the second syntax element includes: The method further includes the steps of: signaling at least one of the following: a second instance of the first syntax element indicating that the plane mode is not disabled for the second node when the corner mode is enabled; or a second instance of the second syntax element indicating that the corner mode is disabled for the second node; signaling a value of the plane mode for the second node only if the second instance of the first syntax element indicates that the plane mode is disabled for the second node when the corner mode is enabled, or only if the second instance of the second syntax element indicates that the corner mode is enabled for the second node; and encoding the second node using the plane mode.

3. The method as described in claim 1 further includes the following steps: determining to apply an inferred direct decoding mode (IDCM) to the current node, wherein bypassing the signal-transmitted value includes: The first syntax element indicates that the plane mode is disabled for the current node when the corner mode is enabled; the second syntax element indicates that the corner mode is enabled for the current node; and the value of the plane mode is bypassed for the current node when IDCM is applied to the current node.

4. The method of claim 1, wherein signaling at least one of the first syntax element or the second syntax element comprises the step of: signaling the first syntax element, and wherein bypassing signaling a value comprises the step of: bypassing signaling a value under the condition that the first syntax element indicates that the planar mode is disabled for the current node when the corner mode is enabled.

5. The method of claim 1, wherein signaling at least one of the first syntax element or the second syntax element comprises the step of: signaling the second syntax element, and wherein bypassing signaling a value comprises the step of: bypassing signaling a value under the condition that the second syntax element indicates that the corner mode is enabled for the current node.

6. The method of claim 1, wherein signaling at least one of the first syntax element or the second syntax element comprises the steps of: signaling both the first syntax element and the second syntax element, and wherein bypassing signaling a value comprises the steps of: bypassing signaling a value under the condition that the first syntax element indicates that the plane mode is disabled for the current node when the corner mode is enabled, and under the condition that the second syntax element indicates that the corner mode is enabled for the current node.

7. The method as described in claim 1, wherein transmitting the first syntax element by signal comprises the step of: transmitting the first syntax element by signal in a set of geometric parameters (GPS).

8. A method for decoding point cloud data, the method comprising the steps of: parsing at least one of the following from a one-bit string stream: a first syntax element indicating that a planar mode is disabled for a current node when corner mode is enabled; or a second syntax element indicating that the corner mode is enabled for the current node; bypassing the parsing of a value of a planar mode for the current node in response to the first syntax element indicating that the planar mode is disabled for the current node when corner mode is enabled, or in response to the second syntax element indicating that the corner mode is enabled for the current node; and decoding the current node in a mode different from the planar mode.

9. The method as described in claim 8, wherein the current node includes a first node, and parsing at least one of the first syntax element or the second syntax element includes: Parsing a first instance of the first syntax element or a first instance of the second syntax element, the method further includes the following steps: parsing at least one of the following: a second instance of the first syntax element indicating that the flat mode is not disabled for the second node when the corner mode is enabled; or a second instance of the second syntax element indicating that the corner mode is disabled for the second node; parsing the value of the flat mode for the second node in response only to a condition in which the second instance of the first syntax element indicates that the flat mode is disabled for the second node when the corner mode is enabled, or in response only to a condition in which the second instance of the second syntax element indicates that the corner mode is enabled for the second node; and decoding the second node using the flat mode.

10. The method as described in claim 8, further comprising the steps of: determining to apply an inferred direct decoding mode (IDCM) to the current node, wherein bypassing the parsing of the value includes: In response to the first syntax element indicating that the corner mode is enabled, the plane mode is disabled for the current node; in response to the second syntax element indicating that the corner mode is enabled for the current node; and in response to applying IDCM to the current node, the parsing of the plane mode value is bypassed for the current node.

11. The method of claim 8, wherein parsing at least one of the first syntax element or the second syntax element comprises the step of: parsing the first syntax element, and wherein bypassing the parsing of the value comprises the step of: in response to the first syntax element indicating that, when the corner mode is enabled, the planar mode is disabled for the current node, bypassing the parsing of the value.

12. The method of claim 8, wherein parsing at least one of the first syntax element or the second syntax element comprises the step of: parsing the second syntax element, and wherein bypassing the parsing of the value comprises the step of: bypassing the parsing of the value in response to the second syntax element indicating that the corner mode is enabled for the current node.

13. The method of claim 8, wherein parsing at least one of the first syntax element or the second syntax element comprises the steps of: parsing both the first syntax element and the second syntax element, and wherein bypassing the parsing of the value comprises the steps of: disabling the planar mode for the current node in response to an instruction from the first syntax element that the corner mode is enabled, and bypassing the parsing of the value in response to an instruction from the second syntax element that the corner mode is enabled for the current node.

14. The method as described in claim 8, wherein parsing the first syntax element comprises the following steps: parsing the first syntax element in a set of geometric parameters (GPS).

15. The method of claim 8, wherein bypassing the parsing of the value of the plane mode comprises the steps of: in each iteration of a loop, determining at least one of the following: the first syntax element indicates that the plane mode is disabled for the current node when the corner mode is enabled, or the second syntax element indicates that the corner mode is enabled for the current node; and based on the determination, in each iteration of the loop, bypassing the parsing of the value of the plane mode.

16. An apparatus for encoding point cloud data, the apparatus comprising: The memory configured to store the point cloud data; The processing circuitry coupled to the memory is configured to: signal at least one of the following: a first syntax element indicating that plane mode is disabled for the current node when corner mode is enabled; or a second syntax element indicating that corner mode is enabled for the current node; under the condition that the first syntax element indicates that plane mode is disabled for the current node when corner mode is enabled, or under the condition that the second syntax element indicates that corner mode is enabled for the current node, bypass signaling a plane mode value for the current node; and encode the current node in a mode different from the plane mode.

17. The device of claim 16, wherein the current node includes a first node, wherein, in order to signal at least one of the first syntax element or the second syntax element, the processing circuitry is configured to signal a first instance of the first syntax element or a first instance of the second syntax element, and wherein the processing circuitry is configured to: signal at least one of the following: a second instance of the first syntax element indicating that the plane mode is not disabled for the second node when the corner mode is enabled; or a second instance of the second syntax element indicating that the corner mode is disabled for the second node; signal a value of the plane mode for the second node only if the second instance of the first syntax element indicates that the plane mode is disabled for the second node when the corner mode is enabled, or only if the second instance of the second syntax element indicates that the corner mode is enabled for the second node; and encode the second node using the plane mode.

18. The device of claim 16, wherein the processing circuitry is configured to: determine to apply an inferred direct decoding mode (IDCM) to the current node, wherein, in order to bypass the signal transmission of values, the processing circuitry is configured to: disable the plane mode for the current node when the first syntax element indicates that the corner mode is enabled, enable the corner mode for the current node when the second syntax element indicates that the corner mode is enabled for the current node, and apply IDCM to the current node, bypass the signal transmission of values ​​in the plane mode for the current node.

19. The device of claim 16, wherein, in order to signal at least one of the first syntax element or the second syntax element, the processing circuitry is configured to signal the first syntax element, and wherein, in order to bypass signaling a value, the processing circuitry is configured to bypass signaling a value under the condition that the first syntax element indicates that the planar mode is disabled for the current node when the corner mode is enabled.

20. The device of claim 16, wherein, in order to signal at least one of the first syntax element or the second syntax element, the processing circuitry is configured to signal the second syntax element, and wherein, in order to bypass signaling a value, the processing circuitry is configured to bypass signaling a value under the condition that the second syntax element indicates that the corner mode is enabled for the current node.

21. The device of claim 16, wherein, in order to signal at least one of the first syntax element or the second syntax element, the processing circuitry is configured to signal both the first syntax element and the second syntax element, and wherein, in order to bypass signaled values, the processing circuitry is configured to bypass signaled values ​​under the condition that the first syntax element indicates that the planar mode is disabled for the current node when the corner mode is enabled, and under the condition that the second syntax element indicates that the corner mode is enabled for the current node.

22. The device as claimed in claim 16, wherein, in order to transmit the first syntax element by signal, the processing circuitry is configured to transmit the first syntax element by signal in a set of geometric parameters (GPS).

23. An apparatus for decoding point cloud data, the apparatus comprising: The memory configured to store the point cloud data; The processing circuitry coupled to the memory is configured to: parse at least one of the following from a one-bit stream: a first syntax element indicating that plane mode is disabled for the current node when corner mode is enabled; or a second syntax element indicating that corner mode is enabled for the current node; in response to the first syntax element indicating that plane mode is disabled for the current node when corner mode is enabled, or in response to the second syntax element indicating that corner mode is enabled for the current node, bypass the parsing of a plane mode value for the current node; and decode the current node in a mode different from the plane mode.

24. The device of claim 23, wherein the current node includes a first node, wherein, in order to parse at least one of the first syntax element or the second syntax element, the processing circuitry is configured to: parse a first instance of the first syntax element or a first instance of the second syntax element, and wherein the processing circuitry is configured to: parse at least one of the following: a second instance of the first syntax element indicating that the plane mode is not disabled for the second node when the corner mode is enabled; or a second instance of the second syntax element indicating that the corner mode is disabled for the second node; parse the value of the plane mode for the second node only in response to the condition that the second instance of the first syntax element indicates that the plane mode is disabled for the second node when the corner mode is enabled, or only in response to the condition that the second instance of the second syntax element indicates that the corner mode is enabled for the second node; and decode the second node using the plane mode.

25. The device of claim 23, wherein the processing circuitry is configured to: determine to apply an inferred direct decoding mode (IDCM) to the current node, wherein, in order to bypass the parsing of values, the processing circuitry is configured to: disable the plane mode for the current node in response to a first syntax element indicating that the corner mode is enabled, enable the corner mode for the current node in response to a second syntax element indicating that the corner mode is enabled for the current node, and bypass the parsing of values ​​for the plane mode for the current node in response to the application of IDCM to the current node.

26. The device as claimed in claim 23, wherein, in order to parse at least one of the first syntax element or the second syntax element, the processing circuitry is configured to parse the first syntax element, and wherein, in order to bypass the parsing of the value, the processing circuitry is configured to: in response to an indication by the first syntax element that, when the corner mode is enabled, disable the plane mode for the current node, thereby bypassing the parsing of the value.

27. The device as claimed in claim 23, wherein in order to parse at least one of the first syntax element or the second syntax element, the processing circuitry is configured to parse the second syntax element, and wherein in order to bypass the parsing of the value, the processing circuitry is configured to: bypass the parsing of the value in response to the second syntax element indicating that the corner mode is enabled for the current node.

28. The device of claim 23, wherein, in order to parse at least one of the first syntax element or the second syntax element, the processing circuitry is configured to parse both the first syntax element and the second syntax element, and wherein, in order to bypass the parsing of the value, the processing circuitry is configured to: disable the planar mode for the current node in response to an indication from the first syntax element that the corner mode is enabled, and bypass the parsing of the value in response to an indication from the second syntax element that the corner mode is enabled for the current node.

29. The device as claimed in claim 23, wherein, in order to parse the first syntax element, the processing circuitry is configured to parse the first syntax element in a set of geometric parameters (GPS).

30. The device as claimed in claim 23, wherein, in order to bypass the parsing of the value of the plane mode, the processing circuitry is configured to: in each iteration of a loop, determine at least one of the following: the first syntax element indicates that the plane mode is disabled for the current node when the corner mode is enabled, or the second syntax element indicates that the corner mode is enabled for the current node; and based on the determination, bypass the parsing of the value of the plane mode in each iteration of the loop.

Citation Information

Patent Citations

  • Point cloud compression

    CN111133476A

  • High level syntax for geometry-based point cloud compression

    TW202131683A

  • Angular mode and in-tree quantization in geometry point cloud compression

    US20220108488A1

  • Angular prior and direct coding mode for tree representation coding of a point cloud

    WO2021084293A1