Planar and direct mode signaling in G-PCC

JP2024537021A5Pending Publication Date: 2025-09-02QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024518396
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-09-21
Filing Date
2022-09-22
Publication Date
2025-09-02

AI Technical Summary

Technical Problem

Existing point cloud compression techniques in G-PCC suffer from redundant or inefficient signaling in planar and direct modes, particularly when angular mode is enabled, leading to suboptimal bandwidth utilization.

Method used

The proposed technique restricts planar mode signaling to speculative direct coding mode (IDCM) when angular mode is enabled, using syntax elements to bypass planar mode values and enable more efficient encoding and decoding by avoiding redundant signaling.

Benefits of technology

This approach enhances bandwidth efficiency by reducing unnecessary signaling overhead, optimizing encoding and decoding processes in G-PCC, especially in scenarios where angular mode is utilized.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A method for encoding point cloud data includes signaling at least one of a first syntax element indicating that planar mode is disabled for a current node or a second syntax element indicating that angular mode is enabled for the current node when angular mode is enabled, bypassing signaling of a value of the planar mode for the current node in a condition where the first syntax element indicates that planar mode is disabled for the current node when angular mode is enabled or in a condition where the second syntax element indicates that angular mode is enabled for the current node, and encoding the current node in a mode other than the planar mode.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001]

[0001] This application claims priority to U.S. Patent Application No. 17 / 933,953, filed September 21, 2022, and U.S. Provisional Patent Application No. 63 / 252,080, filed October 4, 2021, and U.S. Provisional Patent Application No. 63 / 253,831, filed October 8, 2021, and U.S. Provisional Patent Application No. 63 / 266,759, filed January 13, 2022, the entire contents of each of which are incorporated by reference into this specification. U.S. Patent Application No. 17 / 933,953 claims priority to U.S. Provisional Patent Application No. 63 / 252,080, filed on October 4, 2021, U.S. Provisional Patent Application No. 63 / 253,831, filed on October 8, 2021, and U.S. Provisional Patent Application No. 63 / 266,759, filed on January 13, 2022.

[0002]

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

[0003]

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

[0004]

[0004] Generally, this disclosure describes techniques related to signaling for planar and direct modes in the Geometry Point Cloud Compression (G-PCC) standard. This disclosure describes examples of signaling for planar modes that depend on IDCM, such as Inferred Direct Coding Mode (IDCM mode) or the number of points in a node. Restricting planar modes to IDCM modes may be applicable in examples where angular modes are enabled.

[0005]

[0005] For example, in one or more examples, when the angular mode is enabled, the planar mode may be disabled (e.g., for nodes eligible for coding in IDCM). As an example, the G-PCC encoder or G-PCC decoder may disable the planar mode in all instances where the angular mode is enabled. For example, if a syntax element (e.g., a first syntax element) indicates that the angular mode is enabled, the planar mode should be disabled. As another example, the G-PCC encoder may signal a syntax element (e.g., a second syntax element) indicating whether the planar mode is enabled or disabled when the angular mode is enabled. In this example, it may be possible that the angular mode is enabled, but the syntax element also indicates that the planar mode is enabled.

[0006] In this manner, signaling of the planar mode value may be suppressed based on meeting the conditions of whether or not angle mode is enabled, or whether a syntax element indicates that planar mode is enabled when angle mode is enabled. In some examples, planar mode may be enabled for the entire stream, while a separate flag at the node level may indicate whether planar mode is enabled for a particular node.

[0007]

[0007] For example, if a condition is met that the first syntax element indicates that the planar mode is disabled for the current node when the angle mode is enabled, and / or a condition is met that the second syntax element indicates that the angle mode is disabled for the current node, the G-PCC encoder may not signal a value for the planar mode. Thus, the exemplary technique promotes more efficient bandwidth utilization by suppressing when the value of the planar mode is signaled.

[0008]

[0008] In one example, the present disclosure describes a method for encoding point cloud data, the method including signaling at least one of a first syntax element indicating that planar mode is disabled for the current node or a second syntax element indicating that angle mode is enabled for the current node when angle mode is enabled, bypassing signaling of a value of the planar mode for the current node in a condition where the first syntax element indicates that planar mode is disabled for the current node when angle mode is enabled or in a condition where the second syntax element indicates that angle mode is enabled for the current node, and encoding the current node in a mode other than the planar mode.

[0009]

[0009] In one example, the present disclosure describes a method for decoding point cloud data, the method including parsing from a bitstream at least one of a first syntax element indicating that planar mode is disabled for the current node when angle mode is enabled or a second syntax element indicating that angle mode is enabled for the current node, and in response to the first syntax element indicating that planar mode is disabled for the current node when angle mode is enabled or the second syntax element indicating that angle mode is enabled for the current node, bypassing parsing of a value of planar mode for the current node, and decoding the current node in a mode other than planar mode.

[0010]

[0010] In one example, the present disclosure describes a device for encoding point cloud data, the device comprising: a memory configured to store the point cloud data; and a processing circuit coupled to the memory and configured to signal at least one of a first syntax element indicating that planar mode is disabled for the current node when the angle mode is enabled or a second syntax element indicating that the angle mode is enabled for the current node, and to bypass signaling of the value of the planar mode for the current node and encode the current node in a mode other than the planar mode under a condition where the first syntax element indicates that planar mode is disabled for the current node when the angle mode is enabled or under a condition where the second syntax element indicates that the angle mode is enabled for the current node.

[0011]

[0011] In one example, the present disclosure describes a device for decoding point cloud data, the device comprising: a memory configured to store the point cloud data; and a processing circuit coupled to the memory and configured to parse from the bitstream at least one of a first syntax element indicating that planar mode is disabled for the current node when angle mode is enabled or a second syntax element indicating that angle mode is enabled for the current node, and in response to the first syntax element indicating that planar mode is disabled for the current node when angle mode is enabled or the second syntax element indicating that angle mode is enabled for the current node, bypass parsing of the planar mode value for the current node and decode the current node in a mode other than planar mode.

[0012]

[0012] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will become apparent from the description, drawings, and claims. [Brief description of the drawings]

[0013] [Figure 1]

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

[0014] FIG. 1 is a block diagram illustrating an example Geometry Point Cloud Compression (G-PCC) encoder. [Diagram 3]

[0015] FIG. 2 is a block diagram illustrating an exemplary G-PCC decoder. [Figure 4]

[0016] 1 is a flowchart illustrating an example of an octree encoding process. [Diagram 5]

[0017] 1 is a flowchart illustrating an example of an octree decoding process. [Figure 6]

[0018] 13 is a flowchart illustrating an example in which plane mode and plane position are set equal to 0 for a speculative direct coding mode (IDCM) mode without signaling. [Figure 7]

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

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

[0021] FIG. 1 is a conceptual diagram illustrating a laser package, such as a LIDAR sensor or other system including one or more lasers, scanning a point in three-dimensional space. [Figure 10]

[0022] FIG. 1 is a conceptual diagram illustrating an example distance measurement system that may be used with one or more techniques of the present disclosure. [Figure 11]

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

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

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

[0014]

[0026] Exemplary techniques described in this disclosure relate to point cloud compression, such as Geometry Point Cloud Compression (G-PCC). As described in more detail, this disclosure describes exemplary techniques for signaling planar and direct modes in G-PCC. For example, some techniques for signaling planar and direct modes in G-PCC may result in redundant or inefficient signaling. With the exemplary techniques described in this disclosure, a G-PCC encoder may signal information for planar and direct modes that is more bandwidth efficient by avoiding redundant signaling and / or reducing overhead for signaling planar information.

[0015]

[0027] The G-PCC encoder may encode the current node based on coordinate information or angle information. To encode the position information, the G-PCC encoder determines the root coordinate (e.g., the bottom left corner of the current node) and determines an offset to the root coordinate for a point within the current node.

[0016]

[0028] To reduce the size of the offset, the G-PCC encoder may utilize a planar mode. For example, the current node may be divided into eight child nodes, with four child nodes above and four child nodes below the first plane, four child nodes to the left and four child nodes to the right of the second plane, and four child nodes in front and four child nodes behind the third plane. If the points in the point cloud are clustered, in the planar mode, the G-PCC encoder may signal a value indicating such clustering. The G-PCC encoder may adjust the location of the root coordinate so that the offset is smaller. For example, the G-PCC encoder may determine that all points are located in the top half of the current node and signal information indicating that there are no points in the bottom half of the current node. The G-PCC encoder may adjust the location of the root coordinate to the bottom left corner of the child node in the top half of the current node.

[0017]

[0029] In the angular mode, the G-PCC encoder may determine the angle of the laser beam used to determine the location of a particular point. The G-PCC encoder may utilize such information as a context to encode position information for points in the point cloud. The angular mode tends to require fewer bits to signal position information compared to the planar mode, but tends to be more computationally intensive.

[0018]

[0030] When the angular mode is enabled, signaling information for the planar mode may be unnecessary and may utilize bandwidth unnecessarily. It should be understood that there may be instances where the angular mode is enabled and it is sufficient to bypass signaling of values ​​for the planar mode. However, there may also be instances where the angular mode is enabled but is not actually applied. In such cases, there may be benefits in signaling values ​​for the planar mode. This disclosure describes examples of bypassing signaling values ​​for the planar mode in conditions where the angular mode is enabled, and in conditions where the planar mode is enabled when the angular mode is enabled, as well as in conditions where the planar mode is disabled when the angular mode is enabled.

[0019]

[0031] As explained above, in the case of planar mode, the G-PCC encoder may signal a value that identifies along which plane the points in the point cloud are clustered. Signaling such a value may be unnecessary in some instances, such as when angular mode is enabled. However, there may be instances in which the G-PCC encoder may still signal a value for the planar mode when angular mode is enabled. For example, it may be possible that angular mode is enabled for the current node but is not applied (e.g., the current node is not actually encoded in angular mode). In such an instance (e.g., angular mode is enabled but not applied to the current node), the G-PCC encoder may signal a value for the planar mode.

[0020]

[0032] This disclosure describes example ways in which planar mode may be disabled for a current node when angular mode is enabled. As an example, a G-PCC encoder may signal a syntax element (e.g., geometry_angular_enabled_flag) that indicates that angular mode is enabled for the current node (e.g., geometry_angular_enabled_flag is true). If angular mode is enabled (e.g., geometry_angular_enabled_flag is true), the G-PCC encoder may bypass a signaling value for planar mode. That is, the G-PCC encoder may bypass signaling a value for planar mode for the current node in the condition that geometry_angular_enabled_flag indicates that angular mode is enabled for the current node. In other words, the G-PCC encoder may signal a value for planar mode only if angular mode is not enabled.

[0021]

[0033] As another example, this disclosure describes a syntax element that indicates whether planar mode is disabled for the current node when angular mode is enabled. This syntax element may be referred to as "geom_disable_planar_idcm_angular". If the syntax element (e.g., geom_disable_planar_idcm_angular) indicates that planar mode is disabled when angular mode is enabled, the G-PCC encoder may bypass the signaling value for the planar mode. That is, the G-PCC encoder may bypass the signaling of the value of the planar mode for the current node in the condition that the geom_disable_planar_idcm_angular flag indicates that planar mode is disabled when angular mode is enabled. In other words, the G-PCC encoder may signal a value for the planar mode only if the syntax element indicates that planar mode is not disabled when angular mode is enabled (e.g., geom_disable_planar_idcm_angular is false).

[0022]

[0034] For simplicity, geom_disable_planar_idcm_angular may be referred to as the first syntax element, and geometry_angular_enabled_flag may be referred to as the second syntax element. For example, the G-PCC encoder may bypass signaling of the value of the planar mode for the current node in a condition where the first syntax element indicates that the planar mode is disabled for the current node when the angular mode is enabled, or in a condition where the second syntax element indicates that the angular mode is enabled for the current node. A combination of conditions may also be possible. For example, the G-PCC encoder may bypass signaling of the value of the planar mode for the current node in a condition where the first syntax element indicates that the planar mode is disabled for the current node when the angular mode is enabled, and in a condition where the second syntax element indicates that the angular mode is enabled for the current node.

[0023]

[0035] In some examples, the techniques described in this disclosure may be applicable to a current node that is eligible for a speculative direct coding mode (IDCM), or simply a direct mode. In IDCM mode, occupancy information for the node (i.e., the occupancy of one or more child nodes) may not be coded. When a node is coded in IDCM mode, instead of signaling the occupancy information of the node, the relative coordinates of a point(s) within the node may be signaled. Although the current node may be eligible for IDCM, it may not be required that the current node is coded in IDCM. For example, in some examples, signaling of occupancy information may be done in a condition where the current node is eligible for IDCM mode, but IDCM mode is not used to code the current node.

[0024]

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

[0025]

[0037] As shown in Fig. 1, the system 100 includes a source device 102 and a destination device 116. The source device 102 provides encoded point cloud data to be decoded by the destination device 116. Specifically, in the example of Fig. 1, the source device 102 provides the point cloud data to the destination device 116 via a computer-readable medium 110. The source device 102 and the destination device 116 may comprise any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone handsets such as smartphones, televisions, cameras, display devices, digital media players, video gaming consoles, video streaming devices, terrestrial or marine vehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, and the like. In some cases, the source device 102 and the destination device 116 may be capable of wireless communication.

[0026]

[0038] In the example of FIG. 1, the source device 102 includes a data source 104, a memory 106, a G-PCC encoder 200, and an output interface 108. The destination device 116 includes an input interface 122, a G-PCC decoder 300, a memory 120, and a data consumer 118. According to the present disclosure, the G-PCC encoder 200 of the source device 102 and the G-PCC decoder 300 of the destination device 116 may be configured to apply techniques of the present disclosure related to processing point cloud data in a planar mode that relies on an inferential direct coding mode (IDCM). Thus, the source device 102 represents an example of an encoding device, and the destination device 116 represents an example of a decoding device. In other examples, the source device 102 and the destination device 116 may include other components or arrangements. For example, the source device 102 may receive data (e.g., point cloud data) from an internal or external source. Similarly, the destination device 116 may interface with external data consumers rather than including the data consumers within the same device.

[0027]

[0039] The system 100 as shown in FIG. 1 is merely an example. In general, other digital encoding and / or decoding devices may perform the techniques of this disclosure related to processing of planar mode point cloud data relying on inferential direct coding mode (IDCM). The source device 102 and the destination device 116 are merely examples of devices in which the source device 102 generates coded data for transmission to the destination device 116. This disclosure refers to devices that perform coding (encoding and / or decoding) of data as "coding" devices. Thus, the G-PCC encoder 200 and the G-PCC decoder 300 represent examples of coding devices, specifically, encoders and decoders, respectively. In some examples, the source device 102 and the destination device 116 may operate substantially symmetrically such that each of the source device 102 and the destination device 116 includes encoding and decoding components. Thus, the system 100 may support one-way or two-way transmission between the source device 102 and the destination device 116, for example, streaming, playback, broadcast, telephony, navigation, and other applications.

[0028]

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

[0029]

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

[0030]

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

[0031]

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

[0032]

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

[0033]

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

[0034]

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

[0035]

[0047] The input interface 122 of the destination device 116 receives the encoded bitstream from the computer-readable medium 110 (e.g., a communication medium, a storage device 112, a file server 114, etc.). The encoded bitstream may include signaling information defined by the G-PCC encoder 200 that is also used by the G-PCC decoder 300, such as syntax elements having values ​​that describe characteristics and / or processing of the coded units (e.g., slices, pictures, groups of pictures, sequences, etc.). The data consumer 118 uses the decoded data. For example, the data consumer 118 may use the decoded data to determine the location of a physical object. In some examples, the data consumer 118 may include a display for presenting an image based on the point cloud.

[0036]

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

[0037]

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

[0038]

[0050] This disclosure may generally refer to "signaling" some information, such as a syntax element. The term "signaling" may generally refer to communication of values ​​for syntax elements and / or other data used to decode the encoded data. That is, the G-PCC encoder 200 may signal values ​​of syntax elements in a bitstream. In general, signaling refers to generating values ​​in the bitstream. As noted above, the source device 102 may transfer the bitstream to the destination device 116 in substantially real-time or non-real-time, which may occur, such as when storing syntax elements in the storage device 112 for later retrieval by the destination device 116.

[0039]

[0051] ISO / IEC MPEG (JTC1 / SC29 / WG11) is investigating the potential need for a standard for a point cloud coding technique with compression capabilities significantly beyond those of current methods, with the goal of producing a standard. The group is working together on this quest in a collaborative effort called the 3D Graphics Team (3DG) to evaluate compression technology designs proposed by those experts in this field.

[0040]

[0052] Point cloud compression activities are categorized into two different approaches. The first approach is "Video Point Cloud Compression" (V-PCC), which segments a 3D object and projects the segments in multiple 2D planes (represented as "patches" in a 2D frame), which are further coded by a legacy 2D video codec, such as the High Efficiency Video Coding (HEVC) (ITU-T H.265) codec. The second approach is "Geometry-Based Point Cloud Compression" (G-PCC), which directly compresses the 3D geometry, i.e., the location of a set of points in 3D space, and associated attribute values ​​(for each point associated with the 3D geometry). G-PCC addresses the compression of point clouds in both category 1 (static point clouds) and category 3 (dynamically acquired point clouds). The latest draft of the G-PCC standard is available at G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference, November 2020, and the codec description is available at G-PCC Codec Description, ISO / IEC JTC1 / SC29 / WG11 N0011, Teleconference, October 2020. Another draft of the G-PCC standard is available at ISO / IEC JTC1 / SC28 / WG7 N00348, Teleconference, April 2022, and the codec description is available at G-PCC Codec Description, ISO / IEC JTC1 / SC28 / WG7 N00271, Teleconference, January 2022.

[0041]

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

[0042]

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

[0043]

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

[0044]

[0056] In both the G-PCC encoder 200 and the G-PCC decoder 300, the location of the point cloud is coded first. The attribute coding depends on the geometry being decoded. In Figures 2 and 3, units 212, 218, 310, and 314 may be options typically used for category 1 data. Units 220, 222, 316, and 318 may be options typically used for category 3 data. All other units are common between categories 1 and 3.

[0045]

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

[0046]

[0058] At each node of the octree, the occupancy is signaled (when not inferred) for one or more of its child nodes (up to a maximum of eight nodes). A number of neighborhoods are specified, including (a) nodes that share a face with the current octree node, (b) nodes that share a face, edge, or vertex with the current octree node, etc. Within each neighborhood, the occupancy of a node and / or its children may be used to predict the occupancy of the current node or its children. For sparsely distributed points in several nodes of the octree, the codec also supports a direct coding mode (e.g., IDCM) in which the 3D position of the points is directly coded. A flag may be signaled to indicate that the direct mode is signaled. At the lowest level, the number of points associated with an octree node / leaf node may also be coded.

[0047]

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

[0048]

[0060] In G-PCC, there are three attribute coding methods: Region Adaptive Hierarchical Transform (RAHT) coding, Interpolation-based Hierarchical Nearest Neighbor Prediction (Predicting Transform), and Interpolation-based Hierarchical Nearest Neighbor Prediction with Update / Lifting Steps (Lifting Transform). RAHT and Lifting are typically used for category 1 data, and Predicting is typically used for category 3 data. However, either method may be used for any data, and as in the geometry codec in G-PCC, the attribute coding method used to code the point cloud is specified in the bitstream.

[0049]

[0061] The coding of attributes may be done at a certain level-of-detail (LOD), where each level of detail may be used to obtain a finer representation of the point cloud attributes, which may be specified based on a distance measure from neighboring nodes or based on a sampling distance.

[0050]

[0062] In the G-PCC encoder 200, the residual obtained as the output of the coding method for the attribute is quantized. The residual may be obtained by subtracting the attribute value from a prediction derived based on points in the neighborhood of the current point and based on the attribute values ​​of already coded points. The quantized residual may be coded using context-adaptive arithmetic coding.

[0051]

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

[0052]

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

[0053]

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

[0054]

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

[0055]

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

[0056]

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

[0057]

[0069] Further, the RAHT unit 218 may apply RAHT coding to the attributes of the reconstructed points. In some examples, under RAHT, the attributes of a block of 2x2x2 point positions are obtained and transformed along one direction to obtain four low-frequency nodes (L) and four high-frequency nodes (H). Then, the four low-frequency nodes (L) are transformed in a second direction to obtain two low-frequency nodes (LL) and two high-frequency nodes (LH). The two low-frequency nodes (LL) are transformed in a third direction to obtain one low-frequency node (LLL) and one high-frequency node (LLH). The low-frequency node LLL corresponds to the DC coefficient, and the high-frequency nodes H, LH, and LLH correspond to the AC coefficients. The transformation in each direction may be a 1-D transformation with two coefficient weights. The low-frequency coefficients may be considered as the coefficients of a 2x2x2 block for the next higher level of the RAHT transformation, and the AC coefficients are coded without modification, and such transformation continues up to the top-level root node. The tree traversal for encoding is a top-to-bottom traversal used to calculate the weights used for the coefficients, and the transform order is bottom-to-top. The coefficients may then be quantized and coded.

[0058]

[0070] Alternatively or additionally, the LOD generation unit 220 and the lifting unit 222 may apply LOD processing and lifting, respectively, to the attributes of the reconstructed points. LOD generation is used to split the attributes into different refinement levels. Each refinement level provides refinement to the attributes of the point cloud. The first refinement level provides a coarse approximation and includes a small number of points, the subsequent refinement levels typically include more points, and so on. The refinement levels may be constructed using a distance-based metric or may use one or more other classification criteria (e.g., subsampling from a particular rank). Thus, a refinement level may include all reconstructed points. Each level of detail is generated by taking the union of all points up to a particular refinement level, e.g., LOD1 is obtained based on refinement level RL1, LOD2 is obtained based on RL1 and RL2, and LODDN is obtained by the union of RL1, RL2, ... RLN. In some cases, LOD generation may be followed by a prediction scheme (e.g., predictive transformation), where the attributes associated with each point in the LOD are predicted from a weighted average of previous points, and the residual is quantized and entropy coded. A lifting scheme is built on the predictive transformation mechanism, where coefficients are updated using an update operator and adaptive quantization of the coefficients is performed.

[0059]

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

[0060]

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

[0061]

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

[0062]

[0074] The octree synthesis unit 306 may synthesize an octree based on syntax elements parsed from the geometry bitstream 203. The occupancy of each of the eight child nodes at each octree level is signaled in the bitstream, starting from the root node of the octree. When the signaling indicates that a child node at a particular octree level is occupied, the occupancy of the children of this child node is signaled. The signaling of the nodes at each octree level is done before proceeding to a subsequent octree level. At the final level of the octree, each node corresponds to a voxel location, and when a leaf node is occupied, one or more points may be specified to be occupied at the voxel location. In some instances, some branches of the octree may terminate before the final level due to quantization. In such cases, the leaf node is considered an occupied node that does not have any child nodes. In instances where surface approximations are used in the geometry bitstream 203, the surface approximation synthesis unit 310 may determine a surface model based on syntax elements parsed from the geometry bitstream 203 and based on the octree.

[0063]

[0075] Furthermore, the geometry reconstruction unit 312 may perform reconstruction to determine coordinates of points in the point cloud. For each position in a leaf node of the octree, the geometry reconstruction unit 312 may reconstruct the node position by using the binary representation of the leaf node in the octree. At each respective leaf node, the number of points at each respective leaf node is signaled, which indicates the number of overlapping points at the same voxel position. Using geometry quantization, the point positions are scaled to determine the reconstructed point position value.

[0064]

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

[0065]

[0077] The inverse coordinate transformation unit 320 may apply an inverse transform to the reconstructed coordinates (positions) of points in the point cloud to convert them from the transformed domain back to the original domain. The positions of points in the point cloud may be in the floating-point domain, whereas point positions in the G-PCC codec are coded in the integer domain. An inverse transform may be used to convert the positions back to the original domain.

[0066]

[0078] 3, the inverse quantization unit 308 may inverse quantize the attribute value. The attribute value may be based on a syntax element obtained from the attribute bitstream 205 (e.g., including a syntax element decoded by the attribute arithmetic decoding unit 304).

[0067]

[0079] Depending on how the attribute values ​​are coded, the RAHT unit 314 may perform RAHT coding to determine color values ​​for the points of the point cloud based on the dequantized attribute values. RAHT decoding is performed from the top to the bottom of the tree. At each level, a configuration value is derived using the low-frequency and high-frequency coefficients derived from the dequantization process. At the leaf nodes, the derived value corresponds to the attribute value of the coefficient. The weight derivation process for the points is similar to the process used in the G-PCC encoder 200. Alternatively, the LOD generation unit 316 and the inverse lifting unit 318 may use a level-of-detail based technique to determine color values ​​for the points of the point cloud. The LOD generation unit 316 decodes each LOD, which represents a progressively finer representation of the attributes of the points. When using predictive transformation, the LOD generation unit 316 derives a predicted value for the point from a weighted sum of points in the previous LOD or previously reconstructed in the same LOD. The LOD generation unit 316 may add the predicted value to the residual (obtained after inverse quantization) to obtain a reconstructed value of the attribute. When using a lifting scheme, the LOD generation unit 316 may include an update operator for updating the coefficients used to derive the attribute value. The LOD generation unit 316 may also apply inverse adaptive quantization in this case.

[0068]

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

[0069]

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

[0070]

[0082] In the following, we will explain the planar coding mode, the angular coding mode, and the azimuth coding mode in G-PCC. As an introduction, the planar coding mode was first proposed in “[GPCC]Planar mode in octree-based geometry coding”, ISO / IEC JTC1 / SC29 / WG11 MPEG / m48906, Sebastien Lasserre, Jonathan Taquet, Gothenburg, Sweden in July 2019, and adopted in “[GPCC]CE13.22 report on planar coding mode”, ISO / IEC JTC1 / SC29 / WG11 MPEG / m50008, Jonathan Taquet, at the 128th MPEG meeting in Geneva, Switzerland in October 2019.

[0071]

[0083] The angular coding mode was first proposed in "An improvement of the planar coding mode", ISO / IEC JTC 1 / SC 29 / WG 11 MPEG / m 50642, Sebastien Lasserre, Jonathan Taquet, Geneva, Zurich, October 2019, and was adopted by the 129th Working Group of the International Conference on Signal Processing (ISC) in Brussels, Belgium, in January 2020. 回 In the MPEG meeting, "[GPCC] CE 13.22 report on angular mode", ISO / IEC JTC 1 / SC 29 / WG 11 MPEG / m51594, Sebastien Lasserre, Jonathan Taquet Brussels, adopted to improve the coding efficiency of the planar mode using the sensor characteristics of a typical LIDAR sensor. The angular coding mode is optionally used with the planar mode to improve the coding of the vertical (z) plane position syntax element by employing knowledge of the position and angle of sensing the laser beam in a typical LIDAR sensor. Additionally, the angular coding mode can be optionally used to improve the coding of the vertical z position bits in the inferred direct coding mode (IDCM).

[0072]

[0084] In the April 2020 [GPCC][New Proposal]Angular mode simplifications and HLS refinements, ISO / IEC JTC1 / SC29 / WG11 MPEG / m53693, Geert Van der Auwera, Louis Ray, Bappaditya Kerofsky, Adarsh ​​K. Ramasubramonian, Marta Karczewicz, Teleconference (formerly Alpbach conference), context derivation for angular coding modes was simplified and HLS (high-level syntax) coding of sensor data parameters was made more efficient. The following angular mode descriptions are based on the original MPEG contributed documents (e.g., "[GPCC][CE 13.22 related] An improvement of the planar coding mode", ISO / IEC JTC 1 / SC 29 / WG 11 MPEG / m50642, Geneva, Zurich, October 2019, Sebastien Lasserre, Jonathan Taquet, and "[GPCC] CE 13.22 report on angular mode", ISO / IEC JTC 1 / SC 29 / WG 11 MPEG / m51594, Sebastien Lasserre, Jonathan Taquet, January 2020) and GPCC DIS texts (e.g., G-PCC DIS, ISO / IEC JTC 1 / SC 29 / WG 11 w 55637, Teleconference, November 2020).

[0073]

[0085] The azimuthal coding mode was first proposed in "The azimuthal coding mode", ISO / IEC JTC 1 / SC 29 / WG 11 MPEG / m51596, Sebastien Lasserre, Brussels, Belgium, January 2020, and later in "Report on azimuthal coding mode", ISO / IEC JTC 1 / SC 29 / WG 11 MPEG / m52958, Sebastien Lasserre, Jonathan Taquet, Teleconference, (formerly Alpbach Conference), 130th, April 2020. 回 It was adopted in the MPEG teleconference. The azimuth coding mode is similar to the angle mode, and extends it to coding the (x) and (y) plane position syntax elements of the planar mode, improving the coding of the x position bits or the y position bits in the IDCM.

[0074]

[0086] Another contribution is “[GPCC][New Proposal]Planar and azimutal coding mode simplications”, ISO / IEC JTC 1 / SC 29 / WG 11 MPEG / m54694, Geert Van der Auwera, Bappaditya Ray, Adarsh ​​K. Ramasubramonian, Marta Karczewicz, Teleconference, July 2020, 131st 回In the MPEG teleconference, the number of contexts used for azimuth mode was significantly reduced. In another contribution, “[G-PCC]EE 13.37 report on planar coding improvement”, ISO / IEC JTC 1 / SC 29 / WG 11 MPEG / m53693, Wei Zhang, Zexing Sun, Mary-Luc Champel, Teleconference (formerly Geneva conference), June 2020. The phrase “angle mode” may also refer to azimuth mode in this specification.

[0075]

[0087] The following describes the planar coding mode in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference, November 2020. For example, the specifications for the planar coding mode are summarized as follows in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference, November 2020:

[0076] 8.2.3.1 Node Eligibility for Planar Coding Mode The explicit coding of the occupancy plane is conditional on the probability of XXX.

[0077] The array PlanarRate with elements PlanarRate[k] for k=0..2 is an estimate of the probability that the occupancies of the nodes form a single plane perpendicular to the kth axis.

[0078] The variable LocalDensity is an estimate of the average number of occupied children in a node.

[0079] The variable NumNodesUntilPlanarUpdate counts the number of nodes that will be parsed before updating the PlanarRate and LocalDensity.

[0080] [XXX entropy state continues] At the start of parsing a geometry_octree syntax structure, PlanarRate and LocalDensity are initialized as follows: for(k=0;k<3;k++) PlanarRate[k]=1024 LocalDensity=4096 NumNodesUntilPlanarUpdate=0

[0081] At the beginning of parsing each geometry_octree_node syntax structure, NumNodesUntilPlanarUpdate is decremented. If NumNodesUntilPlanarUpdate is less than 0, PlanarRate and LocalDensity are updated as follows: - The number of occupied sibling nodes is determined and used to update the LocalDensity estimate. numSiblings=NodeNumChildren[depth-1][sNp][tNp][vNp] LocalDensity=(255×LocalDensity+1024×numSiblings)>>8 - The number of nodes until the next update is: NumNodesUntilPlanarUpdate=numSiblings-1XXX - The occupancy information of the parent nodes is used to determine the presence of a single occupied plane along each axis and update the corresponding plane probability estimate, PlanarRate[k]. parentOccupancy=GeometryNodeOccupancy[depth-1][sNp][tNp][vNp] planeMasks0={0xf0,0xcc,0xaa} planeMasks1={0x0f,0x33,0x55} for(k=0;k<3;k++) plane0=(parentOccupancy&planeMaks0[k])!=0 plane1=(parentOccupancy&planeMaks1[k])!=0 hasSinglePlane=plane0^plane1 PlanarRate[k]=(255×PlanarRate[k]+8×256×hasSinglePlane+128)>>8 }

[0082] At the beginning of parsing each geometry_octree_node syntax structure, for each axis it is determined whether the current node is eligible to signal planarity information. The output of this process is an array PlanarEligible with elements PlanarEligible[k], for k=0..2.

[0083] First, PlanarRate is used to determine the ordering planeOrder[k] of the three planes from most likely to least likely according to Table 18.

[0084] Then, 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 angle mode linkage XXX) PlanarEligible[k]=XXX else if(LocalDensity≧3×1024) PlanarEligible[k]=0 else PlanarEligible[k]=PlanarRate[k]>geom_planar_th[planeOrder[k]] }

[0085] [Table 1]

[0086] The syntax elements are signaled in the bitstream as follows:

[0087] [Table 2]

[0088] The context index (ctxIdx) for coding is_planar_flag is specified in Table 37 of G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference, November 2020, axisIdx.

[0089] 8.2.3.2 A buffer that tracks the closest nodes along an axis The arrays PlanarPrevPos, PlanarPlane, and IsPlanarNode record information about previously decoded geometry tree nodes for use in determining the ctxIdx for the syntax element plane_position. When geometry_planar_enabled_flag is equal to 0 or planar_buffer_disabled_flag is equal to 1, the arrays are not used by the decoding process.

[0090] In this process, the variable axisIdx is used to represent one of the three coded axes, and the variable axisPos represents the node's position along the axisIdx-th axis. The value of axisPos is in the range 0..0x3fff.

[0091] The array IsPlanarNode with values ​​IsPlanarNode[axisIdx][axisPos] indicates whether the most recently decoded node with the axisIdx-th position component equal to axisPos is a plane in a plane perpendicular to the axisIdx-th axis.

[0092] The array PlanarPrevPos, with value PlanarPrevPos[axisIdx][axisPos], stores the maximum position component of the most recently decoded node that has the axisIdx-th position component equal to axisPos.

[0093] The array PlanarPlane with value PlanarPlane[axisIdx][axisPos] indicates the value of plane_position[axisIdx] for the most recently decoded node with the axisIdx-th position component equal to axisPos.

[0094] At the beginning of each geometry tree level, the elements of the arrays PlanarPrevPos and IsPlanarNode are initialized to zero.

[0095] After XXX decodes each geometry_planar_mode_data syntax structure with parameters childIdx and axisIdx, the arrays PlanarPrevPos, PlanarPlane and IsPlanarNode are updated as follows: The variable axisPos, which represents the position along the -axisIdx-th axis, is derived as follows. if(axisIdx==0)axisPos=sN&0x3fff if(axisIdx==1)axisPos=tN&0x3fff if(axisIdx==2)axisPos=vN&0x3fff - The array entry corresponding to the node is 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]

[0096] 8.2.3.3 Determining ctxIdx for the syntax element plane_position The inputs to this process are: - a variable axisIdx identifying the axis perpendicular to the plane, and - The position (sN,tN,vN) of the current node within the geometry tree level.

[0097] The output of this process is the variable ctxIdx.

[0098] The variable neighOccupied indicates whether there are any neighbors of the current node along the axisIdx-th axis. It is derived as follows: neighOccupied=(NeighbourPattern>>2×axisIdx)&3 adjPlaneCtxInc=neighOccupied==3?0:neighOccupied if(axisIdx==0&&neighOccupied==3) adjPlaneCtxInc=((neighOccupied&1)<<1)(neighOccupied>>1)

[0099] When planar_buffer_disabled_flag is equal to 1, the value of ctxIdx is set equal to adjPlaneCtxInc and no further processing is done by this process. Otherwise, the remainder of this section applies.

[0100] The variable axisPos indicates the 14 least significant position bits of the current node along the axisIdxth axis. if(axisIdx==0)axisPos=sN&0x3fff if(axisIdx==1)axisPos=tN&0x3fff if(axisIdx==2)axisPos=vN&0x3fff

[0101] The variable dist represents the distance between the current node and the most recently decoded node position with the same value of axisPos along the axisIdx-th axis. It is derived 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(ab)

[0102] 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 }

[0103] 8.2.3.4 Determination of planePosIdxAzimuthalS and planePosIdxAzimuthalT for coding of horizontal plane position The determination of the arithmetic coding planePosIdxAngularS for plane_position[0] and the arithmetic coding planePosIdxAngularT for plane_position[1] is obtained as follows.

[0104] When geometry_angular_enabled_flag is equal to 0, the values ​​of both planePosIdxAzimuthalS and planePosIdxAzimuthalT are set equal to planePosIdx. Otherwise the following applies:

[0105] if(contextAzimuthalS==-1) planePosIdxAzimuthalS=planePosIdx else planePosIdxAzimuthalS=39+contextAzimuthalS if(contextAzimuthalT==-1) planePosIdxAzimuthalT=planePosIdx else planePosIdxAzimuthalT=39+contextAzimuthalT

[0106] The determination of the contextAngular for the arithmetic coding of plane_position[2] is performed as described in XREF.

[0107] 8.2.3.5 Determining planePosIdxAngular for coding vertical plane position The determination of planePosIdxAngular for the arithmetic coding of plane_position[2] is obtained as follows:

[0108] When geometry_angular_enabled_flag is equal to 0, the value of planePosIdxAngular is set equal to planePosIdx. Otherwise, the following applies: if(contextAngular==-1) planePosIdxAngular=planePosIdx else planePosIdxAngular=47+contextAngular

[0109] The determination of the contextAngular for the arithmetic coding of plane_position[2] is performed as described in Section 8.2.5.3.

[0110] The following describes the angle mode and azimuth mode in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference, November 2020. For the angle mode syntax, the syntax elements that carry the LIDAR laser sensor information required for the angle coding mode to have any coding efficiency benefits are as follows:<ANGULAR CODING MODE> ...< / ANGULAR CODING MODE> The semantics of these syntax elements are specified as follows in the November 2020 G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference:

[0111] geometry_planar_enabled_flag equal to 1 indicates that the planar coding mode is activated. geometry_planar_enabled_flag equal to 0 indicates that the planar coding mode is not activated. If not present, geometry_planar_enabled_flag is inferred to be 0.

[0112] geom_planar_th[i], for i in the range 0 to 2, specifies the value of the activation threshold for the planar coding mode along the i-th most likely direction for which the planar coding mode is efficient.

[0113] geom_idcm_rate_minus1 specifies the rate at which a node may be eligible for direct coding. When not present, geom_idcm_rate_minus1 is inferred to be 31.

[0114] 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 }

[0115] geometry_angular_enabled_flag equal to 1 indicates that the angular coding mode is activated. geometry_angular_enabled_flag equal to 0 indicates that the angular coding mode is not activated.

[0116] geom_slice_angular_origin_present_flag equal to 1 specifies that the slice-relative angular origin is present in geometry data units. geom_slice_angular_origin_present_flag equal to 0 specifies that the angular origin is not present in geometry data units. If not present, geom_slice_angular_origin_present_flag is inferred to be 0.

[0117] geom_angular_origin_bits_minus1+1 is the bit length of the syntax element geom_angular_origin_xyz[k].

[0118] geom_angular_origin_xyz[k] specifies the kth component of the (x,y,z) coordinate of the origin used in processing angular coding modes. If not present, the value of geom_angular_origin_xyz[k], k=0..2 is inferred to be 0.

[0119] geom_angular_azimuth_scale_log2_minus11 and geom_angular_radius_scale_log2 specify the factors used to scale positions coded using a spherical coordinate system during conversion to Cartesian coordinates.

[0120] geom_angular_azimuth_step_minus1+1 specifies unit change in azimuth angle. Differential prediction residuals used in angular prediction tree coding may be partially represented as multiples of geom_angular_azimuth_step_minus1 plus 1. The value of geom_angular_azimuth_step_minus1 shall be less than (1<<(geom_angular_azimuth_scale_log2_minus11+12)).

[0121] number_lasers_minus1+1 specifies the number of lasers used for angle coding mode.

[0122] laser_angle_init and laser_angle_diff[i], for i in the range 0 to number_lasers_minus1, specify the tangent of the elevation angle of the i-th laser relative to the horizontal plane defined by the first coded axis and the second coded axis.

[0123] The array LaserAngle[i], for i in the range 0 to 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]

[0124] It is a requirement of bitstream conformance that the value of LaserAngle[i] be greater than or equal to LaserAngle[i-1], where i is in the range of 1 to number_lasers_minus1.

[0125] laser_correction_init and laser_correction_diff[i], for i in the range 1 to number_lasers_minus1, specify the correction along the second intrinsic axis of the i-th laser position relative to GeomAngularOrigin[2].

[0126] laser_phi_per_turn_init_minus1 and laser_phi_per_turn_diff[i], for i in the range of 1 to 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 angle coding mode of processing.

[0127] The arrays LaserCorrection[i] and LaserPhiPerTurn[i], for i in the range 1 to number_lasers_minus1, are derived as follows: 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] }

[0128] It is a bitstream conformance requirement that the value of LaserPhiPerTurn[i], where i is in the range of 0 to number_lasers_minus1, be non-zero.

[0129] The arrays DeltaPhi[i] and InvDeltaPhi[i], for i in the range 0 to number_lasers_minus1, are derived as follows: for(i=0;i<=number_lasers_minus1;i++){ DeltaPhi[i]=6588397 / LaserPhiPerTurn[i] InvDeltaPhi[i]=(LaserPhiPerTurn[i]<<30) / 6588397 }

[0130] planar_buffer_disabled_flag equal to 1 indicates that using a buffer to track the nearest node is not used in the process of coding the planar mode flags and planar positions in planar mode. planar_buffer_disabled_flag equal to 0 indicates that using a buffer to track the nearest node is used. If not present, planar_buffer_disabled_flag is inferred to be !geometry_planar_enabled_flag.

[0131] [Table 3-1]

[0132] [Table 3-2]

[0133] The data syntax for the planar and direct modes is contained in Tables 3 and 4, respectively.

[0134] [Table 4]

[0135] [Table 5]

[0136] 8.2.4.1 Derivation Process of Angle Eligibility for a Node If geometry_angular_enabled_flag is equal to 0, angular_eligible is set equal to 0.

[0137] Otherwise the following applies: The variable deltaAngle, which specifies the minimum angular separation between the 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 }

[0138] 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

[0139] 8.2.4.2 Derivation process of the laser index laserIndex associated with a node XXX Input / Output If the angular eligibility angular_eligible is equal to 0, the laserIndex index is set to the preset value UNKOWN_LASER.

[0140] Otherwise, if the angular eligibility, angular_eligible, is equal to 1, then the following applies, continuing the process described in 8.2.5.1:

[0141] First, the inverse of the radial distance of the current node from the lidar, rInv, is determined as follows: r2=sLidar×sLidar+tLidar×tLidar rInv = IntRecipSqrt(r2)

[0142] The angle theta32 is then determined as follows: vLidar=((vNchild-GeomAngularOrigin[2]+midNodeT)<<1)-1 theta = vLidar × rInv theta32=theta>=0?theta>>15:-((-theta)>>15)

[0143] Finally, the angle eligibility and associated laser are determined based on the parent node Parent 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] }

[0144] 8.2.4.3 Derivation process of contextAzimuthalS and contextAzimuthalT for planar coding mode XXX Input / Output The following applies as a continuation of the process described in 8.2.5.2.

[0145] First, two angles are determined from the node positions relative to the angle origin. sPos=sNchild-GeomAngularOrigin[0]XXX tPos=tNchild-GeomAngularOrigin[1] phiNode=IntAtan2(tPos+midNodeT,sPos+midNodeS) phiNode0 = IntAtan2(tPos, sPos)

[0146] The azimuth angle predictor is then obtained from the array phiBuffer. predPhi=phiBuffer[laserIndex] if(predPhi==0x80000000) predPhi=phiNode

[0147] The two azimuth contexts are initialized as follows: contextAzimuthalS=-1 contextAzimuthalT=-1

[0148] Then, 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++ inttemp=angleL angleL=angleR angleR=temp } if(angleR>(angleL<<2)) contextAnglePhi+=4 if(Abs(sPos)<=Abs(tPos)) contextAzimuthalS=contextAnglePhi else contextAzimuthalT=contextAnglePhi

[0149] 8.2.4.4 ContextAngular derivation process for flat coding mode XXX Input / Output If the laser index laserIndex is equal to UNKOWN_LASER, then contextAngular is set to the preset value UNKOWN_CONTEXT. Otherwise, if the laser index laserIndex is not equal to UNKOWN_LASER, the following applies, continuing the process described in 8.2.5.2:

[0150] First, two angular differences for the lower and upper planes, thetaLaserDeltaBot and thetaLaserDeltaTop, are determined. thetaLaserDelta=LaserAngle[laserIndex]-theta32 Hr=LaserCorrection[laserIndex]×rInv; thetaLaserDelta+=Hr>=0? -(Hr>>17):((-Hr)>>17) vShift=(rInv<<ChildNodeSizeLog2[2])> >20XXX thetaLaserDeltaTop=thetaLaserDelta-vShift thetaLaserDeltaBot=thetaLaserDelta+vShift

[0151] The angular context is then estimated from the difference between the two angles. contextAngular=thetaLaserDelta<0 if(thetaLaserDeltaTop>=0||thetaLaserDeltaBot<0) contextAngular+=2

[0152] When intra-tree quantization and angle mode are jointly enabled, scaled versions of one or more of the effective node size, point position, and offset may be used in the context derivation for the planar mode to ensure that the positions / offsets / node sizes and angle origins are used at the same scale, which may be useful, for example, in proper derivation of the laser index and in context derivation. In some cases, not using scaled values ​​may result in improper derivation of the laser index or context.

[0153]

[0089] In the following, the inferred direct coding mode (IDCM) will be described. The syntax related to the IDCM mode is defined as follows in G-PCCDIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference, November 2020:

[0154] inferred_direct_coding_mode greater than 0 indicates that direct_mode_flag may be present in the geometry node syntax. inferred_direct_coding_mode equal to 0 indicates that direct_mode_flag is not present in the geometry node syntax.

[0155] joint_2point_idcm_enabled_flag equal to 1 indicates that the joint coding of two points is activated in direct coding mode, joint_2point_idcm_enabled_flag equal to 0 indicates that the joint coding of two points is not activated.

[0156] geom_idcm_rate_minus1 specifies the rate at which a node may be eligible for direct coding. When not present, geom_idcm_rate_minus1 is inferred to be 31.

[0157] 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 }

[0158] direct_point_cnt_eq2_flag equal to 1 specifies that the current node contains two point_offset values ​​that represent the residual of two coded points. direct_point_cnt_eq2_flag equal to 0 specifies that the current node contains a single point_offset value that represents the residual of a single point position that has been replicated 0 or more times.

[0159] 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 position in the reconstructed point cloud. If any of dup_point_cnt_gt0_flag, dup_point_cnt_gt1_flag, or dup_point_cnt_minus2 is not present, it is inferred to be 0.

[0160] The variable DirectDupPointCnt, which represents the number of times a point is repeated, is derived as follows: DirectDupPointCnt= dup_point_cnt_gt0_flag+dup_point_cnt_gt1_flag+dup_point_cnt_minus2

[0161] The array PointOffset with elements PointOffset[i][k], for i 0..NumDirectPoints-1 and k 0..2, represents the kth dimension position of the i-th point relative to the full resolution position of the current node. PointOffset[i][k] consists of EffectiveNodeSizeLog2[k] bits and is derived as follows:

[0162] The variable NodeSizeLog2Rem[k] indicates the number of remaining bits to be derived for PointOffset[i][k], independently on i. The initialization of NodeSizeLog2Rem and the array PointOffset is as follows, for each value of i: NodeSizeLog2Rem[k]=EffectiveNodeSizeLog2[k] for(k=0;k<3;k++) PointOffset[i][k]=0

[0163] If is_planar_flag[k] is equal to 1, 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] -- }

[0164] same_bit[k][j] equal to 1 specifies that the jth bits of PointOffset[0][k] and PointOffset[1][k], respectively, are equal. same_bit[k][j] equal to 0 specifies that these two jth bits are unequal.

[0165] value_bit[k][j] indicates the value of the jth bit of PointOffset[0][k]. If value_bit[k][j] is not present, its value is inferred to be 0.

[0166] The variable EligTwoPoints[k] equal to 1 indicates that the kth component of the points contained by the node is eligible for joint coding of two points. EligTwoPoints[k] equal to 0 indicates that the kth component of the points contained by the node is not eligible for joint coding of two points.

[0167] The variable samePrecComp[k] equal to 1 indicates that components 0 to k-1 of the two points contained by the node are equal. Otherwise, samePrecComp[k] equal to 0 indicates that one of the components 0 to k-1 of the two points differs. samePrecComp[k] is initialized to 1. for(k=0;k<3;k++) samePrecComp[k]=1

[0168] If two-point joint coding is activated, if two points exist within a node and the kth component is eligible for joint coding, joint two-point coding is performed for this 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 } } } }

[0169] point_offset[i][k][j] is the jth bit of the kth component of the s, t, and v coordinates, respectively, of the i-th point of the current node relative to the origin of the current node.

[0170] The remaining bits of each point offset, NodeSizeLog2Rem[k], are set 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]

[0171] 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 estimated direct coding mode when geometry_angular_enabled_flag is equal to 1. The non-existent 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_minus3[ptIdx] are all inferred to be 0.

[0172]

[0090] The following describes the IDCM mode parsing process as defined in Section 10.8 of G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference, November 2020:

[0173] 10.8 Inferred Direct Coding Mode Parsing Process 10.8.1 General process Parsing and de-binarization of syntax elements same_bit[k][j], value_bit[k][j], and point_offset[i][k][j] for point index i, component index k, and bit index j are described in subclause 9.8.2 to 9.8.5.

[0174] The output of the process is the offsets of the points belonging to the current node, which is 1 if the direct_point_cnt_eq2_flag value is 0, and 2 if the direct_point_cnt_eq2_flag value is 1. These offsets are PointOffset[0][k] for the first point and PointOffset[1][k] for the second point, if present.

[0175] Each offset PointOffset[i][k] consists of EffectiveNodeSizeLog2[k] bits decoded from most significant bit to least significant bit for each component k and each point i. To this end, the IDCM process utilizes the following variables: - is the number of bits NodeSizeLog2Rem[k] remaining to be decoded for the offset of component k, independent of the point index -Partial decoding of the k-th component of the i-th point partialOffset[i][k]

[0176] At any step in the process, the value of partialOffset[i][k] represents the EffectiveNodeSizeLog2[k]-NodeSizeLog2Rem[k] most significant bit of PointOffset[i][k]. During the process, the partialOffset bits are determined one by one and NodeSizeLog2Rem[k] is decreased by one for each determined bit until a final state where NodeSizeLog2Rem[k] is equal to 0 and partialOffset[i][k] is equal to PointOffset[i][k].

[0177] The IDCM process proceeds through subclauses 9.8.2 through 9.8.5 in the following order and under the following conditions: - Subclause 9.8.2 for initializing process variables and inferring the most significant bits of point offsets in planar mode Then, if joint coding of two points is activated (joint_2point_idcm_enabled_flag is equal to 1) and the current node has two points (direct_point_cnt_eq2_flag is equal to 1), then subclause 9.8.3 - includes subclause 9.8.4 if angular mode is activated (geometry_angular_enabled_flag is equal to 1), otherwise subclause 9.8.4 if geometry_angular_enabled_flag is equal to 0

[0178] 10.8.2 Initialization and Plane Inference The number of remaining bits and the partial offset are initialized for all components k and points i by: for(k=0;k<3;k++) NodeSizeLog2Rem[k]=EffectiveNodeSizeLog2[k] for(i=0;i <direct_point_cnt_eq2_flagi++) partialOffset[i][k]=0 }

[0179] The most significant bit of the point offset is inferred by the planar mode, if available (is_planar_flag[k] equals 1), as follows: for(k=0;k<3;k++) if(NodeSizeLog2Rem[k]>0&&is_planar_flag[k]){ for(i=0;i <direct_point_cnt_eq2_flagi++) partialOffset[i][k]=plane_position[k] NodeSizeLog2Rem[k] -- }

[0180] When the angular coding mode is activated, the variable byPassSorT, which indicates whether the S or T component is allowed to be bypass coded, is determined using the horizontal position of the current node in the coordinates used in the angular coding mode processing. if(geometry_angular_enabled_flag){ posNode2LidarS=(sN≪EffectiveNodeSizeLog2[0])-GeomAngularOrigin[0] posNode2LidarT=(tN< <EffectiveNodeSizeLog2[1])-GeomAngularOrigin[1] byPassSorT=Abs(posNode2LidarS)<=Abs(posNode2LidarT) }

[0181] 10.8.3 Joint Decoding of Two-Point Offsets The processes in this section apply only when joint_2point_idcm_enabled_flag is equal to 1 and direct_point_cnt_eq2_flag is equal to 1.

[0182] First, the value of EligTwoPoints[k], which indicates whether the k-th component of two points is eligible for joint coding, is initialized by: for(k=0;k<3;k++) EligTwoPoints[k]=!geometry_angular_enabled_flag

[0183] Then, if the angle coding mode is activated, eligibility is further determined using the variable byPassSorT. if(geometry_angular_enabled_flag){ EligTwoPoints[0]=!byPassSorT EligTwoPoints[1]=byPassSorT }

[0184] The array samePrecComp[k], which indicates whether components 0 to k-1 of two points included in a node are equal, is initialized as follows. for(k=0;k<3;k++) samePrecComp[k]=1

[0185] The joint decoding process is then applied to the eligible 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] decrypted using context id cmIdxJoint[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] decrypted using bypass partialOffset[0][k]|=bit; partialOffset[1][k]|=sameBit?bit:!bit; if(!sameBit) { for(k2=k+1;k2<3;k2++) samePrecComp[k2]=0 break } } } }

[0186] 10.8.4 Point Offset Angle and Azimuth Decoding 10.8.4.1 Overview The process in this section is applied only when geometry_angular_enabled_flag is equal to 1. This process is applied to the subprocesses described in the following subsections: Subsection 9.8.4.2 is applied once, then subsections 9.8.4.3 through 9.8.4.6 are applied for each point i that belongs to the current node.

[0187] 10.8.4.2 Inferring the Laser Index Associated with the Current Node An estimate of the index of the laser that probed the point, based on the best knowledge (after plane estimation and joint decoding) of the location of the first point belonging to the current node.

[0188] First, the best known 3D location of the first point is obtained by: 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]

[0189] Next, the location of the best known position in the coordinates used in the angular coding mode processing, bestKnownPos2Lidar[0], is estimated by: for(k=0;k<3;k++) bestKnownPos2Lidar[k]=posNode2Lidar[k]-GeomAngularOrigin[k] if(NodeSizeLog2Rem[k]) bestKnownPos2Lidar[k]+=1<<(nodeSizeLog2Rem[k]-1) }

[0190] Third, the angle value associated with this position, bestKnownAngle, is determined by: sPoint=bestKnownPos2Lidar[0]<<8 tPoint=bestKnownPos2Lidar[1]<<8 r2=sPoint×sPoint+tPoint×tPoint rInvPoint = IntRecipSqrt(r2) bestKnownAngle=bestKnownPos2Lidar[2]*rInvPoint>>14

[0191] The laser index estimate laserIndexEstimate is obtained as the index of the laser having the angle closest to bestKnownAngle as follows: for(n=1;n<=number_lasers_minus1n++) if(LaserAngle[n]>bestKnownAngle) break if(bestKnownAngle-LaserAngle[n-1]<=LaserAngle[n]-bestKnownAngle) n-- laserIndexEstimate=number_lasers_minus1?n:0

[0192] 10.8.4.3 Bypass decoding of the first component S or T of point_offset The component bypassSorT (whose value is 0 for S and 1 for T) of the i-th point belonging to the current node is bypass decoded. for(j=NodeSizeLog2Rem[byassSorT]-1;j>0;j--){ partialOffset[i][bypassSorT]<<=1 partialOffset[i][bypassSorT]|=point_offset[i][bypassSorT][j] NodeSizeLog2Rem[bypassSorT] -- }

[0193] At the end of this subprocess, NodeSizeLog2Rem[bypassSorT] is equal to 0. No more bits are decoded for the bypassSorT-th component of the point offset, and partialOffset[i][bypassSorT] is equal to the complete point offset PointOffset[i][bypassSorT].

[0194] 10.8.4.4 Determination of the laser index associated with a point The laser index residual laserIndexResidual[i] associated with the i-th point belonging to the current node is estimated from the decoded values. 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)

[0195] Then, the laser index laserIndex[i] associated with the i-th point belonging to the current node is obtained by summation. laserIndex[i]=laserIndexEstimate+laserIndexResidual[i]

[0196] It is a bitstream conformance requirement that laserIndex[i] is in the range of 0 to number_lasers_minus1.

[0197] 10.8.4.5 Azimuth Decoding of Second Component S or T of Point Offset The component 1-bypassSorT (whose value is 0 for S and 1 for T) of the i-th point belonging to the current node is decoded using the azimuth decoding mode.

[0198] Using the already decoded bits in the partial offset, the best known horizontal position of point i in the coordinates used in the angular coding mode of processing is calculated by: 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]

[0199] Next, an initial value for the azimuth angle predictor predPhi is determined from 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

[0200] The remainder of the point partial offset partialOffset[i][1-bypassSorT] is iteratively decoded in a loop j of the remaining bits to be decoded for the partial offset of component 1-bypassSorT. In the loop, the azimuth context idcmIdxAzimuthal[i][j] is determined and used to decode the syntax element point_offset[i][1-bypassSorT][j]. The position of the point, which is either posPoint2LidarS[i] or posPoint2LidarT[i] depending on the component involved in the azimuth 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++ inttemp=angleL angleL=angleR angleR=temp } if(angleR>(angleL<<1)) contextAnglePhi+=4 idcmIdxAzimuthal[i][j]=contextAnglePhi / / Decode bin point_offset[i][1-bypassSorT][j] using idcmIdxAzimuthal[i][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 } }

[0201] Next, the buffer phiBuffer[] is updated. phiBuffer[laserIndex[i]]=phiNode

[0202] 10.8.4.6 Angle Decoding of Component V of Point Offset The last component V of the i-th point belonging to the current node is decoded using the angular decoding mode.

[0203] The horizontal positions posPoint2LidarS[i] and posPoint2LidarT[i] are known from the azimuth decoding, and the inverse horizontal radial range rInv is decoded by: sLidar=(posPoint2LidarS[i]<<8)-128 tLidar=(posPoint2LidarT[i]<<8)-128 r2=sLidar×sLidar+tLidar×tLidar rInv = IntRecipSqrt(r2)

[0204] Using the already decoded bits in the partial offset, the best known vertical position of point i in the coordinates used in the angular coding mode of processing is calculated by: posPoint2LidarV[i]=(vN< <EffectiveNodeSizeLog2[2])-GeomAngularOrigin[2] posPoint2LidarV[i]+=partialOffset[i][2]< <NodeSizeLog2Rem[2]

[0205] The corrected laser angle ThetaLaser of the laser associated with the point is: Hr=LaserCorrection[laserIndex[i]]×rInv ThetaLaser=LaserAngle[laserIndex[i]]+(Hr>=0? -(Hr>>17):((-Hr)>>17))

[0206] The remainder of the point partial offset partialOffset[i][2] is iteratively decoded in loop j for the remaining bits decoded for the partial offset of component V. In the loop, the angular context idcmIdxAngular[i][j] is determined and used to decode the syntax element point_offset[i][2][j]. The point position 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 / / Decode binpoint_offset[i][2][j] using idcmIdxAngular[i][j]. partialOffset[i][2]<<=1 partialOffset[i][2]|=point_offset[i][2][j] if(point_offset[i][2][j]) posPoint2LidarV[i]+=mask }

[0207] 10.8.5 Bypass Decoding of All Components of Point Offset The processes in this section apply only when geometry_angular_enabled_flag is equal to 0.

[0208] In this process, the remaining bits of the point offset are determined by bypass decoding of point_offset[i][k][j], which is performed for each point index i and each component k as follows: 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] -- }

[0209] At the end of this process, NodeSizeLog2Rem[k] is equal to 0 for all k. There are no more bits decoded for the point offsets, and partialOffset[i][k] is equal to the complete point offset PointOffset[i][k].

[0210] When intra-tree quantization, angle mode, and IDCM are jointly enabled, scaled versions of one or more of the effective node size, point position, and offset may be used in the IDCM decoding process to ensure that the positions / offsets / node sizes and angle origins are used at the same scale, which may be useful, for example, in proper derivation of the laser index and in context derivation. Not using scaled values ​​may result in improper derivation of the laser index or context.

[0211]

[0091] Next, 8-tree encoding and decoding will be described. The outline of 8-tree encoding for a node is shown in FIG. 4, and the corresponding outline of the decoding process is shown in FIG. 5. In an encoder (e.g., G-PCC encoder 200), the occupancy of a node is obtained based on the number of points in each child node of the current node (400). Then, the plane eligibility is derived for each axis based on the node size, the plane buffer, and the plane rate (402). If the axis is plane eligible ("Yes" in 404), the occupancy is used to obtain the plane mode and plane position (406). Then, the IDCM eligibility is derived (408), or if the axis is not plane eligible ("No" in 404), the IDCM eligibility is derived (408). If the node is IDCM eligible ("Yes" in 408), the IDCM node may be signaled (410). If the node is not IDCM eligible or is not IDCM (408, no), the occupancy is coded using context-based coding (416). The node is then split into child nodes, the child nodes are added to the node buffer, and the process moves to the next node in the node buffer (418). A decision can be made whether IDCM should be applied (412). If IDCM is not applied (412, no), the occupancy is coded using context-based coding (416). If it is an IDCM node (412, yes), the number of points and the number of overlapping points are coded, and the position of the points within the node is coded using the plane information (414). The IDCM node is not split any further, and the coding process moves to the next node in the node buffer (418). This process is repeated recursively until the node buffer is empty.

[0212]

[0092] As shown in Figure 5, a decoder (e.g., G-PCC decoder 300) may perform the inverse of the example technique shown in Figure 4. For example, plane eligibility is derived for each axis based on node size, plane buffer, and plane rate (500). If the axis is plane eligible ('yes' in 502), the plane mode and plane position are decoded using occupancy (504). Then, IDCM eligibility is derived (506), or if the axis is not plane eligible ('no' in 404), IDCM eligibility is derived (506). If the node is IDCM eligible ('yes' in 506), the IDCM node may be decoded (e.g., parsed) (508). If the node is not IDCM eligible or the node is not IDCM ('no' in 408), the occupancy is decoded (e.g., parsed) using context-based coding (514). The node is then split into child nodes, the child nodes are added to the node buffer, and the process moves to the next node in the node buffer (516). A decision can be made whether IDCM should be applied (510). If IDCM is not applied (No in 510), the occupancy is decoded using context-based coding (514). If it is an IDCM node (Yes in 510), the number of points and the number of overlapping points are decoded, and the position of the points within the node is decoded using the plane information (512). The IDCM node is not split any further, and the decoding process moves to the next node in the node buffer (516). This process is repeated recursively until the node buffer is empty.

[0213]

[0093] In the following, some problems that may exist in the G-PCC coding technique are described. This disclosure describes an example technique that may address such problems, but the example technique should not be considered limited to such examples. For example, the example technique may reduce overhead for signaling plane information.

[0214]

[0094] For example, for a node with only one point, there may be a plane mode coding redundancy. As described in octree encoding and decoding such as Fig. 4 and Fig. 5, the plane information of the node in three axes is coded before the signaling of IDCM information including the number and position of points in the node. Note that for a node with only one point, the plane mode is true for all three axes. Therefore, the signaling of the plane mode for such a node may be redundant with the point number of 1.

[0215]

[0095] As another example, signaling a plane may not be efficient for a node with only a few points. For a node with many points, plane information helps to reduce the signaling cost of the point position in the node. For example, if a node is a plane in an axis, it saves one bit to signal the position of each point in the plane direction. However, that reduction in signaling cost may not apply to a node with only a few points, since the node needs to signal two bits for the node's plane mode and plane position. In some cases, in the case of IDCM, the cost of signaling the bit that can be saved by the plane is cheaper than signaling the plane mode and plane position, since the signaling of that bit can be significantly improved by using joint position coding and angle information. Therefore, for a node with only a few points, or when angle information is available, signaling the plane may not be efficient.

[0216] In one or more examples, an example technique described herein may be to change the signaling of planar mode depending on IDCM information such as IDCM mode or number of points in a node. In some examples, the restriction of planar mode to IDCM mode in the following example techniques may be applied when angular mode is enabled. In some examples, the restriction may be controlled by a flag at sps (sequence parameter set) level or gbh (geometry brick header) level. The geometry brick header (gbh) may also be referred to as the geometry parameter set (GPS).

[0217]

[0097] In one example, the planar mode may not be signaled for a node that has only one point. For example, the planar mode may be implicitly signaled when an IDCM node has only one point. Implicitly signaled may refer to some instances where a syntax element or information is not actually signaled but is inferred. For example, in implicit signaling, the G-PCC encoder 200 may bypass (e.g., avoid) the signaling, and the G-PCC decoder 300 may not parse the syntax element that is "implicitly" signaled.

[0218]

[0098] Signaling of plane information can be carried after signaling the IDCM mode flag and the number of points in the node. If the number of points in the node is 1, only the plane position can be signaled, but the plane mode is implicitly signaled as 1.

[0219]

[0099] Thus, in one example, the G-PCC encoder 200 may be configured to signal in the bitstream an inferred direct coding mode (IDCM) flag and a number of points in a node of the point cloud data, and after signaling the IDCM flag based on the number of points in the node being 1, signal a plane position in the bitstream and bypass signaling of the planar mode. The G-PCC decoder 300 may be configured to parse from the bitstream the number of points in a node of the point cloud data and the inferred direct coding mode (IDCM) flag based on the number of points in the node being 1, and after parsing the IDCM flag, parse a plane position from the bitstream based on the number of points in the node being 1, and determine from the bitstream a parsed bit for which the node is for a syntax element other than a syntax element indicating a planar mode (e.g., avoid parsing for a planar mode), and reconstruct the point cloud based on the parsed IDCM flag and the plane position. For example, there may be no information indicating planar mode in the bitstream, so the G-PCC decoder 300 may determine that the syntax element for the node is not information indicating planar mode.

[0220]

[0100] In one example, the planar mode may be disabled for a node that has only one point. For example, the planar mode may be disabled for an IDCM node that has only one point. In such an example, the signaling of the planar information may be conveyed after signaling the IDCM mode flag and the number of points in the node. The signaling of the planar information (including the planar mode and the planar position) may be ignored if the number of points in the node is 1.

[0221]

[0101] In one example, planar mode may be disabled for IDCM nodes with a number of points below a threshold. In such an example, planar mode may be disabled for IDCM nodes with a number of points below a threshold. Signaling of plane information may be conveyed after signaling the IDCM mode flag and the number of points in the node. Signaling of plane information (including planar mode and plane position) may be ignored if the number of points in the node is below a threshold.

[0222]

[0102] Thus, in one example, the G-PCC encoder 200 may be configured to signal in the bitstream an inferred direct coding mode (IDCM) flag and the number of points in a node of the point cloud data, and to bypass the signaling of the plane position and the plane mode based on the number of points in the node being equal to or less than a threshold. The G-PCC decoder 300 may be configured to parse the inferred direct coding mode (IDCM) flag and the number of points in a node of the point cloud data from the bitstream based on the number of points in the node being equal to or less than a threshold, determine from the bitstream that the parsed bits for the node are for syntax elements other than syntax elements indicating the plane position or the plane mode (e.g., avoid parsing the plane position and the plane mode), and reconstruct the point cloud data based on the parsed IDCM flag.

[0223]

[0103] As an example, the threshold value is 1. As another example, the threshold value is greater than 1.

[0224] In one example, the planar mode may be disabled for an IDCM node. Signaling of the plane information may be carried after signaling the IDCM mode flag. Signaling of the plane information (including the planar mode and the planar position) may be ignored, and the plane information may not be used in the position coding of the IDCM node.

[0225]

[0105] Figure 6 is a flow chart showing such an example. In the example of Figure 6, the signaling of plane information is performed after the determination of whether the node is eligible for IDCM. The occupancy of the node is obtained based on the number of points in each child node of the current node (600). Then, plane eligibility is derived for each axis based on the node size, plane buffer, and plane rate (602). Then, IDCM eligibility is derived (604). If the node is IDCM eligible ("Yes" in 604), the IDCM node may be signaled (606). A decision may be made whether IDCM should be applied (608). If it is an IDCM node ("Yes" in 608), the number of points and the number of overlapping points are encoded (610). The IDCM node is not further split, and the encoding process moves to the next node in the node buffer (618).

[0226]

[0106] If the node is not IDCM eligible (604, no) or IDCM does not apply (608, no), plane eligibility may be determined (612). If the axis is plane eligible (612, yes), the occupancy is used to obtain the plane mode and plane position (614). If the node is not IDCM eligible or the node is not IDCM (612, no), the occupancy is coded using context-based coding (616). The node is then split into child nodes, the child nodes are added to the node buffer, and the process moves to the next node in the node buffer (618). The above process is repeated recursively until the node buffer is empty.

[0227]

[0107] Therefore, in a condition where the speculative direct coding mode (IDCM) is disabled, the G-PCC encoder 200 may encode the point cloud data without using the plane mode and plane position of the node. In a condition where the speculative direct coding mode (IDCM) is disabled, the G-PCC decoder 300 may decode the point cloud data without using the plane mode and plane position for the node.

[0228]

[0108] The corresponding specification text in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference, November 2020, may be amended accordingly as follows: <delete> ...< / delete> You can delete the text between <add> ...< / add> You can add text between the

[0229] [Table 6]

[0230]

[0109] Planar mode may be disabled for an IDCM node when / if angular mode is enabled. For example, the G-PCC encoder 200 may bypass signaling of a value of planar mode for a current node (e.g., a current node encoded as direct mode) in a condition where angular mode is enabled and / or where planar mode is disabled when angular mode is enabled. Bypass signaling means that the G-PCC encoder 200 does not signal a value of planar mode, and instead, another value is present in the G-PCC-compliant bitstream where the value of planar mode is placed.

[0231]

[0110] Signaling of plane information may be carried after signaling the IDCM mode flag. In one example, if the angle mode is enabled, signaling of plane information (such as the plane mode and the plane mode value including the plane position) may be ignored (e.g., bypassed), and the plane information may not be used in position coding of the IDCM node.

[0232]

[0111] The corresponding specification text in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference, November 2020, may be amended accordingly as follows: <delete> ...< / delete> You can delete the text between <add> ...< / add> You can add text between the

[0233] [Table 7]

[0234]

[0112] The following is added to the pseudocode above.

[0235] [Table 8]

[0236]

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

[0237]

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

[0238]

[0115] Also, in the above pseudocode, there may be a requirement that direct_mode_flag is true for the G-PCC encoder 200 to signal a value for the planar mode. The G-PCC encoder 200 may determine that the IDCM is enabled for the current node and that the IDCM applies to the current node (e.g., direct_mode_flag is true). Thus, in some examples, the G-PCC encoder 200 may bypass signaling a value for the planar mode for the current node in a condition where the angle mode is enabled for the current node and in a condition where the IDCM is applied to the current node. That is, in some examples, the G-PCC encoder 200 may bypass signaling a value for the planar mode for the current node when both conditions are met: (1) the angle mode is enabled for the current node and (2) the IDCM (e.g., direct mode) is applied for the current node. If either of these two conditions is not met, the G-PCC encoder 200 may signal a value for the planar mode. If both of these two conditions are met, the G-PCC encoder 200 may bypass signaling of values ​​for the planar mode.

[0239]

[0116] In some examples, for nodes encoded in IDCM, if angular mode is enabled (e.g., geometry_angular_enabled_flag is true), it may be sufficient to bypass the signaling of values ​​for planar mode. However, in some examples, it may be possible that angular mode is enabled, but planar mode is still enabled and signaling of the value of planar mode may be useful. To accommodate such examples, the restriction of planar mode for IDCM nodes when angular mode is enabled may be controlled at the gbh (geometry brick header) level by a flag named geom_disable_planar_idcm_angular. The geom_disable_planar_idcm_angular flag in the gbh is provided as an example and may be located in other parameter sets, such as the geometry parameter set (GPS).

[0240]

[0117] That is, when geom_disable_planar_idcm_angular is true, the planar mode may be disabled when the angular mode is enabled. In such an example, when geom_disable_planar_idcm_angular is true, the G-PCC encoder 200 may bypass the signaling value for the planar mode when the angular mode is enabled. However, when geom_disable_planar_idcm_angular is false, the G-PCC encoder 200 may signal the value of the planar mode even when the angular mode is enabled, in some cases.

[0241]

[0118] The corresponding specification text in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference, November 2020, may be amended accordingly as follows: <delete> ...< / delete> You can delete the text between <add> ...< / add> You can add text between the

[0242]

[0119] The syntax element geom_disable_planar_idcm_angular is added to the geometry parameter set semantics.

[0243]

[0120] <add>geom_disable_planar_idcm_angular equal to 1 specifies that planar mode is disabled for IDCM nodes when angular mode is enabled.

[0244] [Table 9]

[0245]

[0121] Thus, in the above example, the G-PCC encoder 200 may signal a syntax element indicating whether the planar mode is disabled or enabled for the current node when the angular mode is enabled. For example, the G-PCC encoder 200 may signal geom_disable_planar_idcm_angular, which indicates that the planar mode is disabled for the current node when the angular mode is enabled. In this case, the G-PCC encoder 200 may bypass signaling a value for the planar mode for the current node in the condition that geom_disable_planar_idcm_angular indicates that the planar mode is disabled for the current node when the angular mode is enabled.

[0246]

[0122] Assume that the current node is a first node, and in the above example, 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 may signal a second instance of geom_disable_planar_idcm_angular indicating that the planar mode is not disabled for the second node when the angular mode is enabled. In this example, the G-PCC encoder 200 may signal the value of the planar mode for the second node only under the condition that the second instance of geom_disable_planar_idcm_angular indicates that the planar mode is not disabled when the angular mode is enabled for the second node.

[0247]

[0123] Also, similar to the above example technique, the G-PCC encoder 200 may bypass the signaling value for the planar mode if the current node (e.g., the first node) is IDCM (e.g., direct mode). That is, if direct_mode_flag is true, the G-PCC encoder 200 may bypass the signaling value for the planar mode if geom_disable_planar_idcm_angular is true.

[0248]

[0124] For simplicity, 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 may signal at least one of a first syntax element (e.g., geom_disable_planar_idcm_angular) indicating whether the planar mode is disabled for the current node when the angular mode is enabled, or a second syntax element (e.g., geometry_angular_enabled_flag) indicating whether the angular mode is enabled for the current node. Whether the values ​​for the planar mode (e.g., is_planar_flag[k] and plane_position[k]) are signaled (e.g., bypassed) may be based on the conditions indicated by the first syntax element and the second syntax element.

[0249]

[0125] As an example, the G-PCC encoder 200 may signal at least one of a first syntax element (e.g., geom_disable_planar_idcm_angular) indicating that the planar mode is disabled for the current node when the angular mode is enabled (e.g., geom_disable_planar_idcm_angular is true) or a second syntax element (e.g., geometry_angular_enabled_flag) indicating that the angular mode is enabled for the current node (e.g., geometry_angular_enabled_flag is true). The G-PCC encoder 200 may bypass signaling the value of the planar mode for the current node in a condition where the first syntax element indicates that the planar mode is disabled for the current node when the angular mode is enabled or in a condition where the second syntax element indicates that the angular mode is enabled for the current node.

[0250]

[0126] Combinations of the above may also be possible. For example, the G-PCC encoder 200 may signal both a first syntax element indicating that the planar mode is disabled for the current node when the angle mode is enabled, and a second syntax element indicating that the angle mode is enabled for the current node. In this example, the G-PCC encoder 200 may bypass signaling a value for the planar mode for the current node in a condition where the first syntax element indicates that the planar mode is disabled for the current node when the angle mode is enabled, and in a condition where the second syntax element indicates that the angle mode is enabled for the current node.

[0251]

[0127] There may be additional conditions when the G-PCC encoder 200 bypasses the signaling of a value for the planar mode. For example, the G-PCC encoder 200 may determine that the IDCM (e.g., direct mode) is applied for the current node. The G-PCC encoder 200 may bypass the signaling of a value for the planar mode for the current node in a condition where the first syntax element indicates that the planar mode is disabled for the current node when the angle mode is enabled, in a condition where the second syntax element indicates that the angle mode is enabled for the current node, and in a condition where the IDCM is applied for the current node.

[0252]

[0128] Above, examples of how the first syntax element and the second syntax element may determine when signaling of a value for the planar mode for the current node is bypassed are described. In some examples, the first syntax element and the second syntax element may determine when a value for the planar mode may be signaled.

[0253]

[0129] For example, assume that the current node is a 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 examples, the G-PCC encoder 200 may signal at least one of the second instance of the first syntax element indicating that the planar mode is not disabled for the second node when the angle mode is enabled, or the second instance of the second syntax element indicating that the angle mode is disabled for the second node. In such examples, the G-PCC encoder 200 may signal a value of the planar mode for the second node only under the condition that the second instance of the first syntax element indicates that the planar mode is disabled for the second node when the angle mode is enabled, or only under the condition that the second instance of the second syntax element indicates that the angle mode is enabled for the second node. In general, for IDCM nodes, planar mode is not signaled when angles are enabled, whereas for non-IDCM nodes, planar is signaled when angles are enabled.

[0254] In some examples, when a geometry parameter set (GPS) for the second node and a GPS for the first node are different, and the GPS for the second node and the GPS for the first node are different, the first instance of the first syntax element and the second syntax element and the second instance of the first syntax element and the second syntax element may have different values. However, example techniques are not limited, and in some examples, for the same GPS, the first instance of the first syntax element and the second syntax element and the second instance of the first syntax element and the second syntax element may be possible to have different values.

[0255]

[0131] In another example, the corresponding specification text in G-PCCDIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference, November 2020, may be amended accordingly as follows: <delete> ...< / delete> You can delete the text between <add> ...< / add> You can add text between the

[0256] [Table 10]

[0257] In some examples, the condition (!geom_disable_planar_idcm_angular!geometry_angular_enabled_flag!direct_mode_flag) may be included in the planar eligibility presented below with respect to the eligibility of a node for planar coding mode (also referred to as Section 8.2.3.1). In some examples, if the condition (!geom_disable_planar_idcm_angular!geometry_angular_enabled_flag!direct_mode_flag) is not met, then PlanarEligible[k] is false. For example, if (geom_disable_planar_idcm_angular is false, or geometery_angular_enabled_flag is false, or direct_mode_flag is false), then PlanarEligible[k] is false.

[0258]

[0133] The specification of G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference, November 2020, may be amended accordingly as follows: <delete> ...< / delete> You can delete the text between <add> ...< / add> You can add text between the

[0259] 8.2.3.1 Node Eligibility for Planar Coding Mode The explicit coding of the occupancy plane is conditional on the probability of XXX.

[0260] The array PlanarRate with elements PlanarRate[k] for k=0..2 is an estimate of the probability that the occupancies of the nodes form a single plane perpendicular to the kth axis.

[0261] The variable LocalDensity is an estimate of the average number of occupied children in a node.

[0262] The variable NumNodesUntilPlanarUpdate counts the number of nodes that will be parsed before updating the PlanarRate and LocalDensity.

[0263] <add> If the condition (!geom_disable_planar_idcm_angular!geometry_angular_enabled_flag!direct_mode_flag) is false, then for k=0..2, PlanarEligible[k] is set equal to false and the process stops.< / add>

[0264] At the start of parsing a geometry_octree syntax structure, PlanarRate and LocalDensity are:

[0265] [Table 11]

[0266]

[0134] In the above example pseudocode, the definition of PlanarEligible[k] is updated, and the value of PlanarEligible[k] is based on the value 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 may implement the for loop of the above pseudocode, and for each iteration signaling a value for the planar mode, the G-PCC decoder 300 may determine the value of PlanarEligible[k], and since the value of PlanarEligible[k] is based on the first syntax element and the second syntax element, the G-PCC decoder 300 may parse the syntax element based on the first syntax element and the second syntax element.

[0267]

[0135] For example, the G-PCC decoder 300 determines at each iteration of the loop (e.g., based on the value of PlanarEligible[k]) that the first syntax element indicates that the planar mode is disabled for the current node when the angular mode is enabled, or that the second syntax element indicates that the angular mode is enabled for the current node. The G-PCC decoder 300 may bypass parsing the value for the planar mode at each iteration of the loop based on the determination. For example, whether the G-PCC decoder 300 parses is_planar_flag or plane_position may be based on the value of PlanarEligible[k], and the G-PCC decoder 300 may determine the value of PlanarEligible[k] at each iteration of the loop (e.g., over values ​​of "k").

[0268]

[0136] The above example may be useful for backward compatibility. For example, no changes to the hardware of the G-PCC encoder 200 or the G-PCC decoder 300 compatible with previous versions of the G-PCC standard may be required to enable the G-PCC encoder 200 and the G-PCC decoder 300 to execute the example technique of bypassing the signaling value for the planar mode according to one or more examples described in this disclosure.

[0269]

[0137] In the following, we will describe the simplification of the context angle derivation and rate update for planar mode in G-PCC. In one example, when a node is a leaf node, the derivation process for the context angle can be ignored. In one example, the rate update process can be ignored when a node is a leaf node.

[0270]

[0138] In some examples, plane eligibility for an IDCM coded node may depend on the availability of an angle. For example, position coding for an IDCM coded node may only be improved when angle information is available. Angle eligibility for a node may be derived and applicable as per Section 8.2.4.1 (Derivation process of angle eligibility for a node) of G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w55637, Teleconference, November 2020. In some examples, a plane may be disabled for an IDCM coded node if the angle is eligible for this node. If not, the plane may be enabled for this node.

[0271]

[0139] In some examples, planar mode eligibility may depend on IDCM mode and contextAngular when angular mode is enabled.

[0272] contextAngular can be derived as in 8.2.4.4.

[0273] In some examples, when angle mode is enabled, a plane may be applied to a non-IDCM coded node or an IDCM coded node with a contextAngular of -1.

[0274] For example, the plane eligibility in the above example relating to planes being disabled for IDCM nodes when angle mode is enabled may be modified as follows:

[0275] 8.2.3.1 Node Eligibility for Planar Coding Mode The array PlanarRate with elements PlanarRate[k] for k=0..2 is an estimate of the probability that the occupancies of the nodes form a single plane perpendicular to the kth axis.

[0276] The variable LocalDensity is an estimate of the average number of occupied children in a node.

[0277] The variable NumNodesUntilPlanarUpdate counts the number of nodes that will be parsed before updating the PlanarRate and LocalDensity.

[0278] <add> If the condition (!geom_disable_planar_idcm_angular!geometry_angular_enabled_flag||(!direct_mode_flag||contextAngular==-1)) is false, for k=0..2, PlanarEligible[k] is set equal to false and the process stops.< / add>

[0279] At the start of parsing a geometry_octree syntax structure, PlanarRate and LocalDensity are:

[0280] [Table 12]

[0281]

[0140] Figure 7 is a flowchart illustrating an example technique for encoding point cloud data. For simplicity, the example is described with respect to a G-PCC encoder 200, such as based on a combination of a planar mode / angle mode unit 213 and an arithmetic coding unit 214.

[0282]

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

[0283]

[0142] As an example, the planar mode / angular mode unit 213 may 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) indicating that planar mode is disabled for the current node when angular mode is enabled (e.g., geom_disable_planar_idcm_angular is true), or a second syntax element (e.g., geometry_angular_enabled_flag) indicating that angular mode is enabled for the current node (e.g., geometry_angular_enabled_flag is true). That is, the arithmetic coding unit 214 may be configured to signal at least one of a first syntax element (e.g., geom_disable_planar_idcm_angular) indicating that planar mode is disabled for the current node when angular mode is enabled (e.g., geom_disable_planar_idcm_angular is true) or a second syntax element (e.g., geometry_angular_enabled_flag) indicating that angular mode is enabled for the current node (e.g., geometry_angular_enabled_flag is true) (700).

[0284]

[0143] Although the signaling of one of the first syntax element or the second syntax element is described, it may be possible to signal only one of the first syntax element and the second syntax element, or to signal both the first syntax element and the second syntax element. For example, the G-PCC encoder 200 may signal the first syntax element, signal the second syntax element, or signal both the first syntax element and the second syntax element.

[0285]

[0144] The G-PCC encoder 200 may bypass signaling values ​​for the planar mode for the current node (e.g., is_planar_flag and plane_position) under a condition where the first syntax element indicates that the planar mode is disabled for the current node when the angle mode is enabled, or under a condition where the second syntax element indicates that the angle mode is enabled for the current node (702). As an example, the planar mode / angle mode unit 213 may not cause the arithmetic coding unit 214 to signal values ​​for the planar mode for the current node (e.g., is_planar_flag and plane_position) under a condition where the first syntax element indicates that the planar mode is disabled for the current node when the angle mode is enabled, or under a condition where the second syntax element indicates that the angle mode is enabled for the current node. That is, the arithmetic coding unit 214 may bypass signaling of values ​​for planar mode (e.g., is_planar_flag and plane_position) for the current node in a condition where the first syntax element indicates that planar mode is disabled for the current node when angular mode is enabled, or in a condition where the second syntax element indicates that angular mode is enabled for the current node.

[0286]

[0145] For example, if geom_disable_planar_idcm_angular (e.g., a first syntax element) is true, the G-PCC encoder 200 may bypass signaling of a value for the planar mode. If geometry_angular_enabled_flag (e.g., a second syntax element) is true, the G-PCC encoder 200 may bypass signaling of a value for the planar mode. As another example, if geom_disable_planar_idcm_angular is true and geometry_angular_enabled_flag is true, the G-PCC encoder 200 may bypass signaling of a value for the planar mode.

[0287]

[0146] Bypassing the signaling of values ​​for planar mode may mean that the G-PCC encoder 200 includes different syntax elements in the bitstream than would be included if the G-PCC encoder 200 had signaled values ​​for planar mode. For example, rather than is_planar_flag and plane_position being signaled at a specific location in the bitstream, some other syntax elements are included. In this way, the G-PCC encoder 200 may be considered to bypass the signaling of values ​​for planar mode.

[0288]

[0147] There may also be additional conditions that the G-PCC encoder 200 may consider when bypassing the signaling of a value for the planar mode. As one example, the G-PCC encoder 200 may determine that an inferred direct coding mode (IDCM) is applied to the current node (e.g., direct_mode_flag is true). In this example, to bypass the signaling of a value, the G-PCC encoder 200 may bypass the signaling of a value for the planar mode for the current node under a condition where the first syntax element indicates that the planar mode is disabled for the current node when the angular mode is enabled, under a condition where the second syntax element indicates that the angular mode is enabled for the current node, and under a condition where the IDCM is applied to the current node. For example, in this example, if IDCM does not apply to a node, it may be possible to signal a planar value even if the first syntax element indicates that planar mode is disabled for the current node when angle mode is enabled or the second syntax element indicates that angle mode is enabled for the current node.

[0289]

[0148] The G-PCC encoder 200 may encode the current node in a mode other than the planar mode (704). For example, the G-PCC encoder 200 may not signal the value used for the planar mode, and instead may select the encoding of the current node using some other technique, such as directly signaling an occupied bit.

[0290]

[0149] In the above example, the current node may be considered as the first node. In such an example, signaling at least one of the first syntax element or the second syntax element may mean signaling a first instance of the first syntax element or a first instance of the second syntax element. The G-PCC encoder 200 may be configured to signal at least one of a second instance of the first syntax element indicating that the planar mode is not disabled for the second node when the angular mode is enabled, or a second instance of the second syntax element indicating that the angular mode is disabled for the second node.

[0291] In such an example, the G-PCC encoder 200 signals the value of the planar mode for the second node only under the condition that the second instance of the first syntax element indicates that the planar mode is disabled for the second node when the angular mode is enabled, or only under the condition that the second instance of the second syntax element indicates that the angular mode is enabled for the second node. The G-PCC encoder 200 may encode the second node using the planar mode.

[0292] In some examples, when a geometry parameter set (GPS) for the second node and a GPS for the first node are different, and the GPS for the second node and the GPS for the first node are different, the first instance of the first syntax element and the second syntax element and the second instance of the first syntax element and the second syntax element may have different values. However, example techniques are not limited, and in some examples, for the same GPS, it may be possible for the first instance of the first syntax element and the second syntax element and the second instance of the first syntax element and the second syntax element to have different values.

[0293]

[0152] Figure 8 is a flow chart illustrating an example of a technique for decoding point cloud data. For simplicity, the example is described with respect to a G-PCC decoder 300, such as based on a combination of a planar mode / angle mode unit 313 and a geometry arithmetic decoding unit 302.

[0294]

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

[0295]

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

[0296]

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

[0297]

[0156] The G-PCC decoder 300 may bypass parsing of the planar mode values ​​(e.g., is_planar_flag and plane_position) for the current node in response to the first syntax element indicating that the planar mode is disabled for the current node when the angular mode is enabled, or in response to the second syntax element indicating that the angular mode is enabled for the current node (802). As an example, the geometry arithmetic decoding unit 302 may bypass parsing of the values ​​for the 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 the angular mode is enabled, or in response to the second syntax element indicating that the angular mode is enabled for the current node, and the planar mode / angular mode unit 313 may determine that the values ​​located in the bitstream where values ​​such as is_planar_flag and plane_position should be located are for other syntax elements.

[0298]

[0157] For example, if geom_disable_planar_idcm_angular (e.g., a first syntax element) is true, the G-PCC decoder 300 may bypass parsing values ​​for the planar mode. If geometry_angular_enabled_flag (e.g., a second syntax element) is true, the G-PCC decoder 300 may bypass parsing values ​​for the planar mode. As another example, if geom_disable_planar_idcm_angular is true and geometry_angular_enabled_flag is true, the G-PCC decoder 300 may bypass parsing values ​​for the planar mode.

[0299]

[0158] Bypassing parsing of values ​​for planar mode may mean that the G-PCC decoder 300 decodes different syntax elements in the bitstream than would be decoded if the G-PCC encoder 200 signaled a value for planar mode. For example, rather than is_planar_flag and plane_position being parsed at a specific location in the bitstream, some other syntax elements are parsed. In this way, the G-PCC decoder 300 may be considered to bypass parsing of values ​​for planar mode.

[0300]

[0159] As another example, to bypass parsing of values ​​for planar mode, the G-PCC decoder 300 may be configured to determine, in each iteration of the loop, at least one of: a first syntax element indicates that planar mode is disabled for the current node when angular mode is enabled, or a second syntax element indicates that angular mode is enabled for the current node. For example, the G-PCC decoder 300 may define a value of PlanarEligible[k] based on one or more of the first syntax element, the second syntax element, or whether IDCM is applied. Within the loop over the values ​​of [k], in each iteration, the G-PCC decoder 300 may determine a value of PlanarEligible[k]. Based on the value of PlanarEligible[k], the G-PCC decoder 300 may bypass parsing of values ​​for planar mode in each iteration of the loop based on the determination.

[0301]

[0160] There may also be additional conditions that the G-PCC decoder 300 may consider when bypassing parsing of values ​​for planar mode. As one example, the G-PCC decoder 300 may determine that an inferred direct coding mode (IDCM) is applied to the current node (e.g., direct_mode_flag is true). In this example, to bypass parsing of values, the G-PCC decoder 300 may bypass parsing of values ​​of planar mode for the current node in response to the first syntax element indicating that planar mode is disabled for the current node when the angle mode is enabled, in response to the second syntax element indicating that the angle mode is enabled for the current node, and in response to IDCM being applied for the current node. For example, in this example, if IDCM is not applied to the node, it may be possible to parse the planar value even if the first syntax element indicates that planar mode is disabled for the current node when the angle mode is enabled or the second syntax element indicates that the angle mode is enabled for the current node.

[0302]

[0161] The G-PCC decoder 300 may decode the current node in a mode other than the planar mode (804). For example, the G-PCC decoder 300 may not parse values ​​used for the planar mode, and instead may parse syntax elements for decoding the current node using some other technique, such as directly signaling occupied bits.

[0303]

[0162] In the above example, the current node may be considered as the first node. In such an example, parsing at least one of the first syntax element or the second syntax element may mean parsing a first instance of the first syntax element or a first instance of the second syntax element. The G-PCC decoder 300 may be configured to parse at least one of a second instance of the first syntax element indicating that the planar mode is not disabled for the second node when the angle mode is enabled, or a second instance of the second syntax element indicating that the angle mode is disabled for the second node.

[0304]

[0163] In such an example, the G-PCC decoder 300 may parse the value of the planar mode for the second node only in response to the second instance of the first syntax element indicating that the planar mode is disabled for the second node when the angular mode is enabled, or only in response to the second instance of the second syntax element indicating that the angular mode is enabled for the second node. The G-PCC decoder 300 may decode the second node using the planar mode.

[0305] In some examples, when a geometry parameter set (GPS) for the second node and a GPS for the first node are different, and the GPS for the second node and the GPS for the first node are different, the first instance of the first syntax element and the second syntax element and the second instance of the first syntax element and the second syntax element may have different values. However, example techniques are not limited, and in some examples, for the same GPS, the first instance of the first syntax element and the second syntax element and the second instance of the first syntax element and the second syntax element may be possible to have different values.

[0306] 9 is a conceptual diagram illustrating a laser package 900, such as a LIDAR sensor or other system including one or more lasers, scanning a point in three-dimensional space. Data source 104 (FIG. 1) may include laser package 900.

[0307]

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

[0308]

[0167] Figure 10 is a conceptual diagram illustrating an example distance measurement system that may be used with one or more techniques of the present disclosure. In the example of Figure 10, the distance measurement system 1000 includes an illuminator 1002 and a sensor 1004. The illuminator 1002 may emit light 1006. In some examples, the illuminator 1002 may emit the light 1006 as one or more laser beams. The light 1006 may be one or more wavelengths, such as infrared wavelengths or visible light wavelengths. In other examples, the light 1006 is not a coherent laser light. When the light 1006 hits an object, such as the object 1008, the light 1006 produces return light 1010. The return light 1010 may include backscattered light and / or reflected light. The return light 1010 may pass through a lens 1011 that directs the return light 1010 to produce an image 1012 of the object 1008 on the sensor 1004. The sensor 1004 generates a signal 1014 based on an image 1012. The image 1012 may comprise a set of points (eg, as represented as dots in the image 1012 of FIG. 10).

[0309] In some examples, the illuminator 1002 and the sensor 1004 may be mounted on a rotating structure such that the illuminator 1002 and the sensor 1004 capture a 360-degree view of the environment. In other examples, the distance measurement system 1000 may include one or more optical components (e.g., mirrors, collimators, diffraction gratings, etc.) that enable the illuminator 1002 and the sensor 1004 to detect objects within a certain range (e.g., up to 360 degrees). Although the example of FIG. 10 shows only a single illuminator 1002 and sensor 1004, the distance measurement system 1000 may include multiple sets of illuminators and sensors.

[0310]

[0169] In some examples, the illuminator 1002 generates a structured light pattern. In such examples, the distance measurement system 1000 may include a plurality of sensors 1004 on which respective images of the structured light pattern are formed. The distance measurement system 1000 may use the difference between the images of the structured light pattern to determine the distance to the object 1008 from which the structured light pattern is backscattered. The structured light based distance measurement system may have a high level of accuracy (e.g., sub-millimeter accuracy) when the object 1008 is relatively close to the sensor 1004 (e.g., 0.2 meters to 2 meters). This high level of accuracy may be useful in face recognition applications such as unlocking a mobile device (e.g., mobile phone, tablet computer, etc.) and for security applications.

[0311]

[0170] In some examples, the distance measurement system 1000 is a time of flight (ToF) based system. In some examples where the distance measurement system 1000 is a ToF based system, the illuminator 1002 generates a pulse of light. In other words, the illuminator 1002 may modulate the amplitude of the emitted light 1006. In such examples, the sensor 1004 detects the return light 1010 from the pulse of light 1006 generated by the illuminator 1002. The distance measurement system 1000 may then determine the distance to the object 1008 from which the light 1006 is backscattered based on the delay between when the light 1006 is emitted and detected and the known speed of light in air. In some examples, rather than (or in addition to) modulating the amplitude of the emitted light 1006, the illuminator 1002 may modulate the phase of the emitted light 1002. In such an example, the sensor 1004 may detect the phase of the returning light 1010 from the object 1008 and determine the distance to a point on the object 1008 using the speed of light and based on the time difference between when the illuminator 1002 generates the light 1006 at a particular phase and when the sensor 1004 detects the returning light 1010 at that particular phase.

[0312]

[0171] In other examples, the point cloud may be generated without the use of the illuminator 1002. For example, in some examples, the sensor 1004 of the distance measurement system 1000 may include two or more optical cameras. In such examples, the distance measurement system 1000 may use the optical cameras to capture a stereo image of an environment, including the object 1008. The distance measurement system 1000 (e.g., the point cloud generator 1020) may then calculate the difference between locations in the stereo image. The distance measurement system 1000 may then use the difference to determine distances to locations shown in the stereo image. From these distances, the point cloud generator 1020 may generate a point cloud.

[0313]

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

[0314] FIG. 11 is a conceptual diagram illustrating an example vehicle-based scenario in which one or more techniques of the present disclosure may be used. In the example of FIG. 11, a vehicle 1100 includes a laser package 1102, such as a LIDAR system. The laser package 1102 may be implemented in the same manner as the laser package 900 (FIG. 9). Although not shown in the example of FIG. 11, the vehicle 1100 may also include a data source, such as the data source 104 (FIG. 1), and a G-PCC encoder, such as the G-PCC encoder 200 (FIG. 1). In the example of FIG. 11, the laser package 1102 emits a laser beam 1104 that reflects off a pedestrian 1106 or other object on the road. The data source of the vehicle 1100 may generate a point cloud based on a signal generated by the laser package 1102. The G-PCC encoder of the vehicle 1100 may encode the point cloud to generate a bit stream 1108, such as the geometry bit stream of FIG. 2 and the attribute bit stream of FIG. 2. The bitstream 1108 may include many fewer bits than the unencoded point cloud obtained by the G-PCC encoder. An output interface of the vehicle 1100 (e.g., output interface 108 (FIG. 1)) may transmit the bitstream 1108 to one or more other devices. Thus, the vehicle 1100 may be able to transmit the bitstream 1108 to other devices more quickly than unencoded point cloud data. In addition, the bitstream 1108 may require less data storage capacity.

[0315] In the example of FIG. 11, the vehicle 1100 may transmit a bit stream 1108 to another vehicle 1110. The vehicle 1110 may include a G-PCC decoder, such as the G-PCC decoder 300 (FIG. 1). The G-PCC decoder of the vehicle 1110 may decode the bit stream 1108 to reconstruct a point cloud. The vehicle 1110 may use the reconstructed point cloud for various purposes. For example, the vehicle 1110 may determine that a pedestrian 1106 is on the road in front of the vehicle 1100 based on the reconstructed point cloud, and thus begin to decelerate, for example, even before the driver of the vehicle 1110 recognizes that the pedestrian 1106 is on the road. Thus, in some examples, the vehicle 1110 may perform an autonomous navigation operation, generate a notification or alert, or perform another action based on the reconstructed point cloud.

[0316] Additionally or alternatively, the vehicle 1100 may transmit the bit stream 1108 to the server system 1112. The server system 1112 may use the bit stream 1108 for various purposes. For example, the server system 1112 may store the bit stream 1108 for later reconstruction of a point cloud. In this example, the server system 1112 may use the point cloud along with other data (e.g., vehicle telemetry data generated by the vehicle 1100) to train an autonomous driving system. In another example, the server system 1112 may store the bit stream 1108 for later reconstruction for forensic accident investigation (e.g., if the vehicle 1100 collides with a pedestrian 1106).

[0317]

[0176] FIG. 12 is a conceptual diagram illustrating an example extended reality system in which one or more techniques of the present disclosure may be used. Extended reality (XR) is a term used to encompass a wide range of technologies, including augmented reality (AR), mixed reality (MR), and virtual reality (VR). In the example of FIG. 12, a first user 1200 is located at a first location 1202. The user 1200 is wearing an XR headset 1204. Instead of the XR headset 1204, the user 1200 may use a mobile device (e.g., a mobile phone, a tablet computer, etc.). The XR headset 1204 includes a depth detection sensor, such as a LIDAR system, that detects the position of a point on an object 1206 at the location 1202. A data source of the XR headset 1204 may use a signal generated by the depth detection sensor to generate a point cloud representation of the object 1206 at the location 1202. The XR headset 1204 may include a G-PCC encoder (e.g., the G-PCC encoder 200 of FIG. 1) configured to encode the point cloud to generate a bitstream 1208.

[0318]

[0177] The XR headset 1204 may transmit the bitstream 1208 (e.g., over a network such as the Internet) to an XR headset 1210 worn by a user 1212 at a second location 1214. The XR headset 1210 may decode the bitstream 1208 to reconstruct the point cloud. The XR headset 1210 may use the point cloud to generate an XR visualization (e.g., an AR, MR, VR visualization) representing the object 1206 at the location 1202. Thus, in some examples, such as when the XR headset 1210 generates a VR visualization, the user 1212 at the location 1214 may experience a 3D immersive feeling of the location 1202. In some examples, the XR headset 1210 may determine the position of the virtual object based on the reconstructed point cloud. For example, the XR headset 1210 may determine, based on the reconstructed point cloud, that an environment (e.g., location 1202) includes a flat surface and determine that a virtual object (e.g., a cartoon character) should be located on the flat surface. The XR headset 1210 may generate an XR visualization with the virtual object in the determined location. For example, the XR headset 1210 may show the cartoon character sitting on the flat surface.

[0319]

[0178] Figure 13 is a conceptual diagram illustrating an example mobile device system in which one or more techniques of the present disclosure may be used. In the example of Figure 13, a mobile device 1300, such as a mobile phone or tablet computer, includes a depth detection sensor, such as a LIDAR system, that detects the position of a point on an object 1302 in an environment of the mobile device 1300. A data source of the mobile device 1300 may use a signal generated by the depth detection sensor to generate a point cloud representation of the object 1302. The mobile device 1300 may include a G-PCC encoder (e.g., the G-PCC encoder 200 of Figure 1) configured to encode the point cloud to generate a bitstream 1304. In the example of Figure 13, the mobile device 1300 may transmit the bitstream to a remote device 1306, such as a server system or another mobile device. The remote device 1306 may decode the bitstream 1304 to reconstruct the point cloud. The remote device 1306 may use the point cloud for various purposes. For example, the remote device 1306 may use the point cloud to generate a map of the environment of the mobile device 1300. For example, the remote device 1306 may generate a map of the interior of a building based on the reconstructed point cloud. In another example, the remote device 1306 may generate imagery (e.g., computer graphics) based on the point cloud. For example, the remote device 1306 may use the points of the point cloud as vertices of a polygon and use color attributes of the points as a basis for shading the polygon. In some examples, the remote device 1306 may perform facial recognition using the point cloud.

[0320]

[0179] The examples in the various aspects of the present disclosure may be used individually or in any combination.

[0321]

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

[0322]

[0181] Clause 2. A method for processing point cloud data, comprising: parsing from a bitstream an inferred direct coding mode (IDCM) flag and a number of points in a node of the point cloud data; parsing a plane position from the bitstream based on the number of points in the node being 1 after parsing the IDCM flag; determining that the parsed bit from the bitstream for the node is for a syntax element other than a syntax element indicating a plane mode based on the number of points in the node being 1; and reconstructing a point cloud based on the parsed IDCM flag and the plane position.

[0323]

[0182] Clause 3. A method for processing point cloud data, comprising signaling in a bitstream an inferred direct coding mode (IDCM) flag and a number of points in a node of the point cloud data, and bypassing signaling of plane position and plane mode based on the number of points in the node being below a threshold.

[0324]

[0183] Clause 4. A method for processing point cloud data, comprising parsing from a bitstream an inferred direct coding mode (IDCM) flag and a number of points in a node of the point cloud data, determining that the parsed bits from the bitstream for the node are for a syntax element other than a syntax element indicating a plane position or a plane mode based on the number of points in the node being below a threshold, and reconstructing the point cloud data based on the parsed IDCM flag.

[0325]

[0184] Clause 5. The method of any one of clauses 3 and 4, wherein the threshold value is 1.

[0326]

[0185] Clause 6. The method of any one of clauses 3 and 4, wherein the threshold value is greater than 1.

[0327]

[0186] Clause 7. A method for processing point cloud data, the method comprising: encoding the point cloud data without using a plane mode and a plane position for nodes of the point cloud, when an inferred direct coding mode (IDCM) is disabled.

[0328]

[0187] Clause 8. A method for processing point cloud data, the method including decoding the point cloud data without using a plane mode and a plane position for nodes of the point cloud, when an inferential direct coding mode (IDCM) is disabled.

[0329]

[0188] Clause 9. A device for processing point cloud data, comprising a memory configured to store the point cloud data and a processing circuit configured to perform the method according to any one of clauses 1 to 8.

[0330]

[0189] Clause 10. A device as described in clause 9, wherein the device comprises a decoder.

[0331]

[0190] Clause 11. A device as described in clause 9, wherein the device comprises an encoder.

[0332]

[0191] Clause 12. A device described in any one of clauses 9 to 11, further comprising a device for generating a point cloud.

[0333]

[0192] Clause 13. A device described in any one of clauses 9 to 12, further comprising a display for presenting an image based on the point cloud.

[0334]

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

[0335]

[0194] Clause 15. A device for processing point cloud data, the device comprising means for performing the method according to any one of clauses 1 to 8.

[0336]

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

[0337]

[0196] Clause 2A. The method of clause 1A, wherein the current node comprises a first node, and 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, and the method further comprises signaling at least one of a second instance of the first syntax element indicating that planar mode is not disabled for the second node when angle mode is enabled, or a second instance of the second syntax element indicating that angle mode is disabled for the second node, signaling a value for the planar mode for the second node only under the condition that the second instance of the first syntax element indicates that planar mode is disabled for the second node when angle mode is enabled or only under the condition that the second instance of the second syntax element indicates that angle mode is enabled for the second node, and encoding the second node using the planar mode.

[0338]

[0197] Clause 3A. A method according to any one of clauses 1A and 2A, further comprising determining that an inferred direct coding mode (IDCM) is applied to the current node, and bypassing signalling of the value of the planar mode for the current node under a condition where a first syntax element indicates that the angular mode is disabled for the current node, under a condition where a second syntax element indicates that the angular mode is enabled for the current node, and under a condition where IDCM is applied to the current node.

[0339]

[0198] Clause 4A. A method according to any one of clauses 1A to 3A, wherein signalling at least one of the first syntax element or the second syntax element comprises signalling the first syntax element, and bypassing value signalling comprises bypassing value signalling under the condition that the first syntax element indicates that planar mode is disabled for the current node when angle mode is enabled.

[0340]

[0199] Clause 5A. A method according to any one of clauses 1A to 4A, wherein signalling at least one of the first syntax element or the second syntax element includes signalling a second syntax element, and bypassing value signalling includes bypassing value signalling under the condition that the second syntax element indicates that angle mode is enabled for the current node.

[0341]

[0200] Clause 6A. A method according to any one of clauses 1A to 5A, wherein signalling at least one of the first syntax element or the second syntax element comprises signalling both the first syntax element and the second syntax element, and bypassing value signalling comprises bypassing value signalling in a condition where the first syntax element indicates that planar mode is disabled for the current node when angle mode is enabled, and in a condition where the second syntax element indicates that angle mode is enabled for the current node.

[0342]

[0201] Clause 7A. The method of any one of clauses 1A to 6A, wherein signaling the first syntax element includes signaling the first syntax element in a geometry parameter set (GPS).

[0343]

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

[0344]

[0203] Clause 9A. The method of clause 8A, wherein the current node comprises a first node, and 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 a first instance of the second syntax element, and the method further comprises parsing at least one of a second instance of the first syntax element indicating that planar mode is not disabled for the second node when angle mode is enabled or a second instance of the second syntax element indicating that angle mode is disabled for the second node, parsing a value of the planar mode for the second node only in response to the second instance of the first syntax element indicating that planar mode is disabled for the second node when angle mode is enabled or only in response to the condition where the second instance of the second syntax element indicates that angle mode is enabled for the second node, and decoding the second node using the planar mode.

[0345]

[0204] Clause 10A. A method according to any one of clauses 8A and 9A, further comprising determining that an inferred direct coding mode (IDCM) is applied to the current node, and bypassing value parsing comprises bypassing parsing of the value of the planar mode for the current node in response to a first syntax element indicating that planar mode is disabled for the current node when angle mode is enabled, in response to a second syntax element indicating that angle mode is enabled for the current node, and in response to IDCM being applied to the current node.

[0346]

[0205] Clause 11A. A method according to any one of clauses 8A to 10A, wherein parsing at least one of the first syntax element or the second syntax element includes parsing the first syntax element, and bypassing value parsing includes bypassing value parsing in response to the first syntax element indicating that planar mode is disabled for the current node when angle mode is enabled.

[0347]

[0206] Clause 12A. A method according to any one of clauses 8A to 11A, wherein parsing at least one of the first syntax element or the second syntax element includes parsing the second syntax element, and bypassing value parsing includes bypassing value parsing in response to the second syntax element indicating that angle mode is enabled for the current node.

[0348]

[0207] Clause 13A. A method according to any one of clauses 8A to 12A, wherein parsing at least one of the first syntax element or the second syntax element includes parsing both the first syntax element and the second syntax element, and bypassing value parsing includes bypassing value parsing in response to the first syntax element indicating that planar mode is disabled for the current node when angle mode is enabled, and in response to the second syntax element indicating that angle mode is enabled for the current node.

[0349]

[0208] Clause 14A. The method of any one of clauses 8A to 13A, wherein parsing the first syntax element includes parsing the first syntax element in a geometry parameter set (GPS).

[0350]

[0209] Clause 15A. A method according to any one of clauses 8A to 14A, wherein bypassing parsing of the planar mode value includes determining, in each iteration of the loop, at least one of: a first syntax element indicates that planar mode is disabled for the current node when angle mode is enabled, or a second syntax element indicates that angle mode is enabled for the current node, and based on the determination, bypassing parsing of the planar mode value in each iteration of the loop.

[0351]

[0210] Clause 16A. A device for encoding point cloud data, comprising: a memory configured to store the point cloud data; and a processing circuit coupled to the memory configured to signal at least one of a first syntax element indicating that planar mode is disabled for the current node when angle mode is enabled or a second syntax element indicating that angle mode is enabled for the current node; and, under the condition where the first syntax element indicates that planar mode is disabled for the current node when angle mode is enabled or the second syntax element indicates that angle mode is enabled for the current node, bypass the signaling of the value of the planar mode for the current node and encode the current node in a mode other than the planar mode.

[0352]

[0211] Clause 17A. The device of clause 16A, wherein the current node comprises a first node; and for signaling 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 the processing circuitry is configured to signal at least one of a second instance of the first syntax element indicating that planar mode is not disabled for the second node or a second instance of the second syntax element indicating that angle mode is disabled for the second node when angle mode is enabled, and to signal a value of the planar mode for the second node only under a condition where the second instance of the first syntax element indicates that planar mode is disabled for the second node when angle mode is enabled or only under a condition where the second instance of the second syntax element indicates that angle mode is enabled for the second node, and to encode the second node using the planar mode.

[0353]

[0212] Clause 18A. A device as described in any one of clauses 16A and 17A, wherein the processing circuit is configured to determine that an inferred direct coding mode (IDCM) is applied to the current node, and to bypass value signaling, the processing circuit is configured to bypass value signaling for the planar mode for the current node under a condition where a first syntax element indicates that planar mode is disabled for the current node when the angular mode is enabled, under a condition where a second syntax element indicates that angular mode is enabled for the current node, and under a condition where IDCM is applied to the current node.

[0354]

[0213] Clause 19A. A device described in any one of clauses 16A to 18A, wherein, for signaling 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, for bypassing the signaling of the value, the processing circuitry is configured to bypass the signaling of the value in a condition where the first syntax element indicates that planar mode is disabled for the current node when angle mode is enabled.

[0355]

[0214] Clause 20A. A device described in any one of clauses 16A to 19A, wherein, for signaling at least one of the first syntax element or the second syntax element, the processing circuitry is configured to signal a second syntax element, and, for bypassing the signaling of the value, the processing circuitry is configured to bypass the signaling of the value on the condition that the second syntax element indicates that angle mode is enabled for the current node.

[0356]

[0215] Clause 21A. A device described in any one of clauses 16A to 20A, wherein, for signaling 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, for bypassing the signaling of the value, the processing circuitry is configured to bypass the signaling of the value in a condition where the first syntax element indicates that planar mode is disabled for the current node when the angle mode is enabled, and in a condition where the second syntax element indicates that the angle mode is enabled for the current node.

[0357]

[0216] Clause 22A. A device described in any one of clauses 16A to 21A, wherein, for signaling the first syntax element, the processing circuitry is configured to signal the first syntax element in a geometry parameter set (GPS).

[0358]

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

[0359]

[0218] Clause 24A. The device of clause 23A, wherein the current node comprises a first node; and to parse at least one of the first syntax element or the second syntax element, the processing circuit is configured to parse a first instance of the first syntax element or a first instance of the second syntax element; and the processing circuit is configured to parse at least one of a second instance of the first syntax element indicating that planar mode is not disabled for the second node when the angle mode is enabled or a second instance of the second syntax element indicating that the angle mode is disabled for the second node, and parse a value of the planar mode for the second node and decode the second node using the planar mode only in response to the second instance of the first syntax element indicating that planar mode is disabled for the second node when the angle mode is enabled or only in response to the second instance of the second syntax element indicating that the angle mode is enabled for the second node.

[0360]

[0219] Clause 25A. A device as described in any one of clauses 23A and 24A, wherein the processing circuitry is configured to determine that an inferred direct coding mode (IDCM) is applied to the current node, and to bypass value parsing, the processing circuitry is configured to: bypass parsing of the value of the planar mode for the current node in response to a first syntax element indicating that planar mode is disabled for the current node when the angle mode is enabled, in response to a second syntax element indicating that the angle mode is enabled for the current node, and in response to IDCM being applied to the current node.

[0361]

[0220] Clause 26A. A device described in any one of clauses 23A to 25A, wherein, 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, to bypass value parsing, the processing circuitry is configured to bypass value parsing in response to the first syntax element indicating that planar mode is disabled for the current node when angle mode is enabled.

[0362]

[0221] Clause 27A. A device described in any one of clauses 23A to 26A, wherein, 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, to bypass value parsing, the processing circuitry is configured to bypass value parsing in response to the second syntax element indicating that angle mode is enabled for the current node.

[0363]

[0222] Clause 28A. A device described in any one of clauses 23A to 27A, wherein, 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, to bypass value parsing, the processing circuitry is configured to bypass value parsing in response to the first syntax element indicating that planar mode is disabled for the current node when angle mode is enabled, and in response to the second syntax element indicating that angle mode is enabled for the current node.

[0364]

[0223] Clause 29A. A device described in any one of clauses 23A to 28A, wherein to parse the first syntax element, the processing circuitry is configured to parse the first syntax element within a geometry parameter set (GPS).

[0365]

[0224] Clause 30A. A device described in any one of clauses 23A to 29A, wherein, to bypass parsing of values ​​for the planar mode, the processing circuitry is configured to determine, in each iteration of the loop, at least one of: a first syntax element indicates that the planar mode is disabled for the current node when the angle mode is enabled, or a second syntax element indicates that the angle mode is enabled for the current node, and based on the determination, bypass parsing of values ​​for the planar mode in each iteration of the loop.

[0366]

[0225] It should be appreciated that, depending on the example, some acts or events of any of the techniques described herein can be performed in a different order, or may be added, combined, or omitted entirely (e.g., not all acts or events described are necessary to the practice of the techniques). Moreover, in some examples, acts or events may be performed in parallel rather than sequentially, for example, through multi-threaded processing, interrupt processing, or multiple processors.

[0367]

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

[0368]

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

[0369]

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

[0370]

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

[0371]

[0230] Various examples have been described. These and other examples are within the scope of the following claims.< / add>

Claims

1. 1. A method for encoding point cloud data, comprising: a first syntax element indicating that planar mode is disabled for the current node when angular mode is enabled; Or, signaling at least one second syntax element indicating that the angular mode is enabled for the current node; and bypassing signaling of a value of a planar mode for the current node under a condition where the first syntax element indicates that the planar mode is disabled for the current node when the angular mode is enabled, or under a condition where the second syntax element indicates that the angular mode is enabled for the current node; encoding the current node in a mode other than the planar mode.

2. determining that a speculative direct coding mode (IDCM) is applied to the current node; 2. The method of claim 1 , wherein bypassing value signaling comprises bypassing value signaling for the planar mode 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 angular mode is enabled, under the condition that the second syntax element indicates that the angular mode is enabled for the current node, and under the condition that an IDCM is applied for the current node.

3. 2. The method of claim 1 , wherein signaling at least one of the first syntax element or the second syntax element comprises signaling the first syntax element, and wherein bypassing value signaling comprises bypassing value signaling on the condition that the first syntax element indicates that the planar mode is disabled for the current node when the angular mode is enabled.

4. 2. The method of claim 1 , wherein signaling at least one of the first syntax element or the second syntax element comprises signaling the second syntax element, and wherein bypassing value signaling comprises bypassing value signaling on the condition that the second syntax element indicates that the angle mode is enabled for the current node.

5. 2. The method of claim 1 , 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 value signaling comprises bypassing value signaling under the condition that the first syntax element indicates that the planar mode is disabled for the current node when the angular mode is enabled and under the condition that the second syntax element indicates that the angular mode is enabled for the current node.

6. 10. The method of claim 1, wherein signaling the first syntax element comprises signaling the first syntax element in a Geometry Parameter Set (GPS).

7. 1. A method for decoding point cloud data, comprising: From the bitstream, a first syntax element indicating that planar mode is disabled for the current node when angular mode is enabled; or parsing at least one second syntax element indicating that the angular mode is enabled for the current node; bypassing 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 the angle mode is enabled, or in response to the second syntax element indicating that the angle mode is enabled for the current node; and decoding the current node in a mode other than the planar mode.

8. determining that a speculative direct coding mode (IDCM) is applied to the current node; 8. The method of claim 7, wherein bypassing value parsing comprises: bypassing value parsing for the 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 the angle mode is enabled, in response to the second syntax element indicating that the angle mode is enabled for the current node, and in response to an IDCM being applied for the current node.

9. Parsing at least one of the first syntax element or the second syntax element includes: parsing the first syntax element, wherein bypassing value parsing comprises bypassing value parsing in response to the first syntax element indicating that the planar mode is disabled for the current node when the angular mode is enabled; or parsing the second syntax element, wherein bypassing value parsing comprises bypassing value parsing in response to the second syntax element indicating that the angle mode is enabled for the current node. The method of claim 7.

10. 8. The method of claim 7, 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 value parsing comprises bypassing value parsing in response to the first syntax element indicating that the planar mode is disabled for the current node when the angle mode is enabled, and in response to the second syntax element indicating that the angle mode is enabled for the current node.

11. bypassing the parsing of the planar mode values; at each iteration of the loop, determining at least one of: the first syntax element indicates that planar mode is disabled for the current node when the angular mode is enabled; or the second syntax element indicates that the angular mode is enabled for the current node; and bypassing parsing the planar mode values ​​in each iteration of the loop based on the determination.

12. 1. A device for encoding point cloud data, comprising: a memory configured to store the point cloud data; a processing circuit coupled to the memory, the processing circuit comprising: a first syntax element indicating that planar mode is disabled for the current node when angular mode is enabled; Or, signaling at least one second syntax element indicating that the angular mode is enabled for the current node; bypassing signaling of a value of a planar mode for the current node under a condition where the first syntax element indicates that the planar mode is disabled for the current node when the angular mode is enabled, or under a condition where the second syntax element indicates that the angular mode is enabled for the current node; A device configured to encode the current node in a mode other than the planar mode.

13. The device of claim 12, further configured to perform a method according to any one of claims 2 to 6.

14. 1. A device for decoding point cloud data, comprising: a memory configured to store the point cloud data; a processing circuit coupled to the memory, the processing circuit comprising: From the bitstream, a first syntax element indicating that planar mode is disabled for the current node when angular mode is enabled; or parsing at least one second syntax element indicating that the angular mode is enabled for the current node; bypassing 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 the angle mode is enabled or in response to the second syntax element indicating that the angle mode is enabled for the current node; A device configured to decode the current node in a mode other than the planar mode.

15. The device of claim 14, further configured to perform a method according to any one of claims 8 to 11.