Enhanced edge neighborhoods for coding vertex information

By encoding point clouds using occupancy tree and dynamic OBUF technology, the problem of low transmission and processing efficiency caused by large point cloud data is solved, and efficient compression and decompression are achieved, which is suitable for applications such as augmented reality, virtual reality and mixed reality.

CN120752674APending Publication Date: 2025-10-03COMCAST CABLE COMM LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380087453.X
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-10-19
Filing Date
2023-10-19
Publication Date
2025-10-03

AI Technical Summary

Technical Problem

The large size of point cloud data leads to low transmission and processing efficiency. Existing compression technologies are difficult to effectively reduce the data volume while maintaining data quality.

Method used

The point cloud is encoded using occupancy tree and dynamic OBUF technology. By recursively splitting cuboids and sub-cubic blocks, entropy coding and context index table are combined to reduce occupancy configuration, and the topological information of TriSoup edges is used for entropy coding.

Benefits of technology

It achieves efficient compression and decompression of point cloud data, suitable for various application scenarios, maintains data quality and reduces transmission and storage costs.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120752674A_ABST
    Figure CN120752674A_ABST
Patent Text Reader

Abstract

One or more methods, devices, computer-readable storage media, and systems are disclosed for entropy coding vertex information for edges in a voxelized space of a point cloud. Symbols of a neighborhood configuration of the current edge may be determined based on one or more coded edges. The coded edge may be selected from a spatial topology of edges or a subset thereof. The lookup table may be used to retrieve an index of a given occupancy configuration of a neighborhood of the current edge. The index may indicate an appropriate context or probability model. The lookup table may be updated based on the write code of the current edge.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-reference to related applications

[0002] This application claims the benefit of U.S. Provisional Application No. 63 / 417,613, filed October 19, 2022. The above-referenced application is hereby incorporated by reference in its entirety. Background Art

[0003] Objects or scenes can be described using volumetric visual data consisting of a series of points. These points can be stored in a point cloud format, which contains a collection of points in three-dimensional space. Because point clouds can be quite large, transmitting and processing point cloud data may require data compression schemes designed specifically for the unique characteristics of point cloud data. Summary of the Invention

[0004] The following summary presents a simplified summary of certain features. This summary is not an extensive overview and is not intended to identify key or critical elements.

[0005] Coding (e.g., encoding, decoding) can be used to compress and decompress point cloud frames or sequences for efficient storage and transmission. A point cloud coding system can include a source device that encodes a point cloud sequence into a bitstream. The point cloud coding system can also include a transmission medium for transmitting the encoded bitstream. The point cloud coding system can also include a destination device that obtains a decoded point cloud sequence based on the encoded bitstream and stores, displays, or otherwise processes the decoded point cloud sequence. The encoder can encode the point cloud using an occupancy tree by recursively splitting an initial volume of the point cloud into cuboids and sub-cubicles. To entropy encode the current cuboid, the encoder can use the spatial neighborhood of the cuboid relative to the current cuboid. The number of occupancy configurations in the neighborhood of the current cuboid can be reduced by using a mechanism such as an Optimal Binary Coder with Update on the Fly (OBUF) that supports on-the-fly updates. Dynamic OBUF can further reduce the number of occupancy configurations in the neighborhood of the current cuboid by dynamically adapting to the statistics of already processed occupancy configurations. Dynamic OBUF can reduce the number of occupancy configurations by using a context-indexed lookup table. The point cloud geometry can be set so that the maximum depth of the occupancy tree does not reach the minimum volume size of a voxel. For such point cloud geometry, a Triangle Soup (TriSoup) scheme can be used to represent vertices with vertex information consisting of an existence flag and its position on a TriSoup edge. The vertex information of a TriSoup edge can be entropy coded based on the already coded existence flag and the position of the TriSoup edge adjacent to the TriSoup edge currently being coded. The topology of the edge or a subset of the topology of the edge can be selected and used to entropy code the vertex information of the current TriSoup edge.

[0006] These and other features and advantages are described in more detail below. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] Certain features are illustrated by way of example and not limitation in the accompanying drawings.In the drawings, like reference numerals refer to similar elements.

[0008] Figure 1 An example point cloud coding system is shown.

[0009] Figure 2 The Morton order of eight sub-cubic blocks split from a rectangular block is shown.

[0010] Figure 3 An example of the scan order showing the occupancy tree.

[0011] Figure 4An example neighborhood of a cuboid is shown for entropy coding the occupancy of a sub-cuboid.

[0012] Figure 5 An example of a dynamic reduction function (DR) that can be used in a dynamic OBUF is shown.

[0013] Figure 6 An example method for coding the occupancy of a cuboid using dynamic OBUFs is shown.

[0014] Figure 7 An example of an occupied cuboid corresponding to a TriSoup node of an occupancy tree is shown.

[0015] Figure 8A An example cuboid corresponding to a TriSoup node is shown.

[0016] Figure 8B An example refinement of the TriSoup model is shown.

[0017] Figure 9 An example of voxelization is shown.

[0018] Figure 10A and Figure 10B A cuboid with a volume that intersects the current TriSoup edge being entropy coded is shown.

[0019] Figure 11A 、 Figure 11B and Figure 11C Shows the TriSoup edges that can be used to entropy code the current TriSoup edge.

[0020] Figure 12A 、 Figure 12B and Figure 12C Shows the coded TriSoup edges that are adjacent to the current TriSoup edge but do not intersect the starting point of the current TriSoup edge.

[0021] Figure 13A 、 Figure 13B and Figure 13C Shows the coded TriSoup edges that are adjacent to the current TriSoup edge but do not intersect the starting point of the current TriSoup edge.

[0022] Figure 14A 、 Figure 14B and Figure 14C Shows the adjacent already coded edges of the current TriSoup edge.

[0023] Figure 15A 、 Figure 15B and Figure 15C An example of the subspace topology showing TriSoup edges.

[0024] Figure 16A 、 Figure 16B and Figure 16C Adjacent coded edges are shown.

[0025] Figure 17A 、 Figure 17B and Figure 17C An example of the subspace topology showing TriSoup edges.

[0026] Figure 18A 、 Figure 18B and Figure 18C The spatial topology including TriSoup edges and TriSoup nodes is shown.

[0027] Figure 19 An example method for coding vertex information for the current edge is shown.

[0028] Figure 20 An example method for coding vertex information for the current edge is shown.

[0029] Figure 21 An example computer system is shown in which examples of the present disclosure may be implemented.

[0030] Figure 22 Shown are example elements of a computing device that may be used to implement any of the various devices described herein. DETAILED DESCRIPTION

[0031] The drawings and description provide examples. It should be understood that the examples shown and / or described in the drawings are non-exclusive and that the features shown and described may be practiced in other examples. Examples of the operation of systems for encoding or decoding point clouds or point cloud sequences are provided. More specifically, the techniques disclosed herein may relate to point cloud compression as used in encoding and / or decoding devices and / or systems.

[0032] Visual data can describe an object or scene using a series of points. Each point can include a position in two dimensions (x and y) and one or more optional attributes, such as color. Volumetric visual data can add another dimension of position to this visual data. Volumetric visual data can describe an object or scene using a series of points, each including a position in three dimensions (x, y, and z) and one or more optional attributes, such as color, reflectivity, a timestamp, and more. For example, volumetric visual data can provide a more immersive way to experience visual data than traditional visual data.

[0033] For example, an object or scene described by volumetric visual data can be viewed from any (or multiple) angles, whereas an object or scene described by traditional visual data is typically only viewable from the angle from which it was captured or rendered. Volumetric visual data can be used in many applications, including augmented reality (AR), virtual reality (VR), and mixed reality (MR). Sparse volumetric visual data can be used in the automotive industry to represent three-dimensional (3D) maps (e.g., for cartography) or as input to driver assistance systems. In the case of driver assistance systems, volumetric visual data can often be input into driving decision-making algorithms. Volumetric visual data can be used to digitally store valuable objects. In applications for preserving cultural heritage, the goal can be to preserve representations of objects that may be threatened by natural disasters. For example, statues, vases, and temples can be completely scanned and stored as volumetric visual data with billions of samples. This use case for volumetric visual data may be particularly relevant for valuable objects in locations prone to earthquakes, tsunamis, and typhoons. Volumetric visual data can take the form of volumetric frames. A volumetric frame can describe an object or scene captured at a specific instance in time. Volumetric visual data can take the form of a sequence of volumetric frames (referred to as a volumetric sequence or volumetric video). A sequence of volumetric frames may describe an object or scene captured at multiple different time instances.

[0034] A point cloud is a format for storing volumetric visual data. A point cloud can include a collection of points in 3D space. Each point in the point cloud can include geometric information indicating the point's position in 3D space. This geometric information can indicate the point's position in 3D space using, for example, three Cartesian coordinates (x, y, and z) or spherical coordinates (r, φ, θ) (for example, if acquired by a rotational sensor). The positions of points in a point cloud can be quantized based on spatial precision. The spatial precision can be the same or different in each dimension. The quantization process creates a grid in 3D space. One or more points residing within each subgrid volume can be mapped to the subgrid center coordinates, referred to as voxels. A voxel can be considered a 3D extension of a pixel corresponding to a 2D image grid coordinate. Points in a point cloud can further include one or more types of attribute information. Attribute information can indicate the nature of the point's visual appearance. Attribute information may indicate, for example, the texture of a point (e.g., color), the material type of a point, transparency information of a point, reflectivity information of a point, a normal vector of a surface of a point, velocity at a point, acceleration at a point, a timestamp indicating when a point was captured, or the modality indicating how a point was captured (e.g., running, walking, or flying). Points in a point cloud may include light field data in the form of multi-view related texture information. Light field data may be another type of optional attribute information.

[0035] Points in a point cloud can describe an object or scene. Points in a point cloud can describe, for example, the exterior surface and / or internal structure of an object or scene. Objects or scenes can be generated synthetically by a computer. Objects or scenes can be generated from captured real-world objects or scenes. Geometric information of real-world objects or scenes can be obtained through 3D scanning and / or photogrammetry. 3D scanning can include different types of scanning, such as laser scanning, structured light scanning, and / or modulated light scanning. 3D scanning can obtain geometric information. 3D scanning can obtain geometric information, for example, by moving one or more laser heads, structured light cameras, and / or modulated light cameras relative to the scanned object or scene. Photogrammetry can obtain geometric information. Photogrammetry can obtain geometric information, for example, by triangulating the same features or points in 2D photos at different spatial shifts. Point cloud data can take the form of point cloud frames. A point cloud frame can describe an object or scene captured at a specific instance in time. Point cloud data can take the form of a sequence of point cloud frames. A sequence of point cloud frames can be referred to as a point cloud sequence or point cloud video. A sequence of point cloud frames can describe an object or scene captured at multiple different time instances.

[0036] In many applications, the data size of a point cloud frame or sequence may be too large for storage and / or transmission. A single point cloud may include, for example, over a million points or even billions of points. Each point may include geometric information and one or more optional types of attribute information. The geometric information for each point may include three Cartesian coordinates (x, y, and z) or spherical coordinates (r, φ, θ), each represented, for example, using at least 10 bits per component, or 30 bits total. The attribute information for each point may include a texture corresponding to three color components (e.g., R, G, and B). Each color component may be represented, for example, using 8-10 bits per component, or 24-30 bits total. Thus, in this example, a single point may include at least 54 bits of information, with at least 30 bits for geometric information and at least 24 bits for texture. If a point cloud frame contains one million such points, each point cloud frame may require 54 million bits, or 54 megabits, to represent. For a dynamic point cloud that changes over time, at a frame rate of 30 frames per second, a data rate of 1.32 gigabits per second may be required to send (e.g., transmit) the points of a point cloud sequence. Therefore, the original representation of the point cloud may require a large amount of data, and practical deployment of point cloud-based technologies may require compression techniques that enable storage and distribution of the point cloud at a reasonable cost.

[0037] Encoding can be used to compress and / or reduce the data size of a point cloud frame or point cloud sequence to provide more efficient storage and / or transmission. Decoding can be used to decompress the compressed point cloud frame or point cloud sequence for display and / or other forms of consumption (e.g., other forms of consumption by a machine learning-based device, a neural network-based device, an artificial intelligence-based device, or other forms of consumption by other types of machine-based processing algorithms and / or devices). For distribution to and visualization by an end user, such as on AR or VR glasses or any other 3D-capable device, the compression of the point cloud may be lossy (introducing differences relative to the original data). Lossy compression can allow for high compression ratios, but may mean a trade-off between compression and visual quality perceived by the end user. Other frameworks, such as those for medical applications or autonomous driving, may require lossless compression to avoid changing the results of decisions made based on analysis of the sent (e.g., transmitted) and decompressed point cloud frames.

[0038] Figure 1 An example point cloud coding (e.g., encoding and / or decoding) system 100 is shown. The point cloud coding system 100 may include a source device 102, a transmission medium 104, and a destination device 106. The source device 102 may encode a point cloud sequence 108 into a bitstream 110 for more efficient storage and / or transmission. The source device 102 may store and / or send (e.g., transmit) the bitstream 110 to the destination device 106 via the transmission medium 104. The destination device 106 may decode the bitstream 110 to display the point cloud sequence 108 or for other forms of consumption (e.g., further analysis, storage, etc.). The destination device 106 may receive the bitstream 110 from the source device 102 via the storage medium or the transmission medium 104. The source device 102 and the destination device 106 may comprise any number of different devices. Source device 102 and destination device 106 may include, for example, a cluster of interconnected computer systems acting as a seamless resource pool (also known as a computer cloud or cloud computing), servers, desktop computers, laptop computers, tablet computers, smartphones, wearable devices, televisions, cameras, video game consoles, set-top boxes, video streaming devices, vehicles (e.g., autonomous vehicles), or head-mounted displays. A head-mounted display may allow a user to view a VR, AR, or MR scene and adjust the view of the scene based on the user's head movements. The head-mounted display may be tied to a processing device (e.g., a server, desktop computer, set-top box, or video game console) or may be completely independent.

[0039] The source device 102 may include a point cloud source 112, an encoder 114, and an output interface 116. To encode the point cloud sequence 108 into the bitstream 110, the source device 102 may include the point cloud source 112, the encoder 114, and the output interface 116. The point cloud source 112 may provide or generate the point cloud sequence 108 from a capture of a natural scene and / or a synthetically generated scene. A synthetically generated scene may be a scene that includes computer-generated graphics. The point cloud source 112 may include one or more point cloud capture devices, a point cloud archive including previously captured natural scenes and / or synthetically generated scenes, a point cloud feed interface for receiving captured natural scenes and / or synthetically generated scenes from a point cloud content provider, and / or a processor for generating a synthetic point cloud scene. The point cloud capture device may include, for example, one or more laser scanning devices, structured light scanning devices, modulated light scanning devices, and / or passive scanning devices.

[0040] like Figure 1 As shown, point cloud sequence 108 may include a series of point cloud frames 124. A point cloud frame may describe an object or scene captured at a specific instance in time. Point cloud sequence 108 can create the impression of motion by continuously presenting the point cloud frames 124 of point cloud sequence 108 using a constant or variable time. Point cloud frames may include a collection of points (e.g., voxels) 126 in 3D space. Each point 126 may include geometric information indicating the point's position in 3D space. Geometric information may indicate, for example, the point's position in 3D space using three Cartesian coordinates (x, y, and z). One or more points 126 may further include one or more types of attribute information. Attribute information may indicate properties of the point's visual appearance. Attribute information may indicate, for example, the point's texture (e.g., color), the point's material type, transparency information, reflectivity information, a surface normal of the point, velocity at the point, acceleration at the point, a timestamp indicating when the point was captured, or the modality indicating how the point was captured (e.g., running, walking, or flying). One or more points 126 may include light field data, for example, in the form of multi-view correlated texture information. Light field data may be another type of optional attribute information. Color attribute information for one or more points 126 may include a luminance value and two chrominance values. The luminance value may represent the brightness of the point (e.g., the luminance component Y). The chrominance value may represent the blue and red components of the point, separated from the luminance (e.g., the chrominance components Cb and Cr). Other color attribute values ​​may be represented based on different color schemes (e.g., RGB or monochrome color schemes).

[0041] The encoder 114 may encode the point cloud sequence 108 into a bitstream 110. To encode the point cloud sequence 108, the encoder 114 may use one or more lossless or lossy compression techniques to reduce redundant information in the point cloud sequence 108. To encode the point cloud sequence 108, the encoder 114 may use one or more prediction techniques to reduce redundant information in the point cloud sequence 108. Redundant information is information that can be predicted at the decoder 120 and, therefore, may not need to be sent (e.g., transmitted) to the decoder 120 for accurate decoding of the point cloud sequence 108. For example, the Motion Picture Experts Group (MPEG) introduced the Geometry-Based Point Cloud Compression (G-PCC) standard (ISO / IEC Standard 23090-9: Geometry-Based Point Cloud Compression). G-PCC specifies encoded bitstream syntax and semantics for transmitting and / or storing compressed point cloud frames, as well as decoder operations for reconstructing compressed point cloud frames from the bitstream. During the standardization of G-PCC, reference software (ISO / IEC Standard 23090-21: Reference Software for G-PCC) was developed to encode the geometry and attribute information of point cloud frames. To encode the geometry of point cloud frames, the G-PCC reference software encoder can perform voxelization. For example, the G-PCC reference software encoder can perform voxelization by quantizing the positions of points in the point cloud. Quantizing the positions of points in the point cloud can create a mesh in 3D space. The G-PCC reference software encoder can map points to the center coordinates of the sub-mesh volume (e.g., voxel) where their quantized positions lie. The G-PCC reference software encoder can perform geometric analysis using an occupancy tree to compress the geometric information. The G-PCC reference software encoder can perform entropy coding on the results of the geometric analysis to further compress the geometric information. To encode the attribute information of the point cloud, the G-PCC reference software encoder can use transformation tools such as the Region Adaptive Hierarchical Transform (RAHT), a prediction transform, and / or a lifting transform. The lifting transform can be built on top of the prediction transform. The lifting transform can include additional updating / lifting steps. Lifting transform and prediction transform may be referred to as prediction / lifting transform or prediction lift (pred lift).The encoder 114 may operate in the same or similar manner as the encoder provided by the G-PCC reference software.

[0042] The output interface 116 can be configured to write and / or store the bitstream 110 onto the transmission medium 104. The bitstream 110 can be sent (e.g., transmitted) to the destination device 106. Additionally or alternatively, the output interface 116 can be configured to send (e.g., transmit), upload, and / or stream the bitstream 110 to the destination device 106 via the transmission medium 104. The output interface 116 can include a wired and / or wireless transmitter configured to send (e.g., transmit), upload, and / or stream the bitstream 110 according to one or more proprietary and / or standardized communication protocols. The one or more proprietary and / or standardized communication protocols can include, for example, the Digital Video Broadcasting (DVB) standard, the Advanced Television Systems Committee (ATSC) standard, the Integrated Services Digital Broadcasting (ISDB) standard, the Data Over Cable Service Interface Specification (DOCSIS) standard, the Third Generation Partnership Project (3GPP) standard, the Institute of Electrical and Electronics Engineers (IEEE) standard, the Internet Protocol (IP) standard, and the Wireless Application Protocol (WAP) standard.

[0043] The transmission medium 104 may include wireless, wired, and / or computer-readable media. The transmission medium 104 may include, for example, one or more wires, cables, air interfaces, optical disks, flash memory, and / or magnetic storage. Additionally or alternatively, the transmission medium 104 may include one or more networks (e.g., the Internet) or file servers configured to store and / or send (e.g., transmit) the encoded video data (e.g., bitstream 110).

[0044] The destination device 106 may include an input interface 118, a decoder 120, and a point cloud display 122. To decode the bitstream 110 into the point cloud sequence 108 for display or other forms of consumption, the destination device 106 may include the input interface 118, the decoder 120, and the point cloud display 122. The input interface 118 may be configured to read the bitstream 110 stored on the transmission medium 104. The bitstream 110 may be stored on the transmission medium 104 by the source device 102. Additionally or alternatively, the input interface 118 may be configured to receive, download, and / or stream the bitstream 110 from the source device 102 via the transmission medium 104. The input interface 118 may include a wired and / or wireless receiver configured to receive, download, and / or stream the bitstream 110 according to one or more proprietary and / or standardized communication protocols, such as the Digital Video Broadcasting (DVB) standard, the Advanced Television Systems Committee (ATSC) standard, the Integrated Services Digital Broadcasting (ISDB) standard, the Data Over Cable Service Interface Specification (DOCSIS) standard, the Third Generation Partnership Project (3GPP) standard, the Institute of Electrical and Electronics Engineers (IEEE) standard, the Internet Protocol (IP) standard, and the Wireless Application Protocol (WAP) standard.

[0045] The decoder 120 can decode the point cloud sequence 108 from the encoded bitstream 110. The decoder 120 can operate, for example, in the same or similar manner as the decoder provided by the G-PCC reference software. The decoder 120 can decode a point cloud sequence that approximates the point cloud sequence 108. The decoder 120 can decode a point cloud sequence that approximates the point cloud sequence 108 due to, for example, lossy compression of the point cloud sequence 108 by the encoder 114 and / or errors introduced into the encoded bitstream 110, for example, during transmission to the destination device 106.

[0046] Point cloud display 122 can display point cloud sequence 108 to a user. Point cloud display 122 can include, for example, a cathode ray tube (CRT) display, a liquid crystal display (LCD), a plasma display, a light emitting diode (LED) display, a 3D display, a holographic display, a head-mounted display, or any other display device suitable for displaying point cloud sequence 108.

[0047] The point cloud coding / decoding system 100 is presented as an example and not as a limitation. Figure 1 In the example of FIG, the point cloud coding / decoding system 100 may have other components and / or arrangements. The point cloud source 112 may, for example, be external to the source device 102. The point cloud display device 122 may, for example, be external to the destination device 106 or omitted entirely, where the point cloud sequence is intended to be consumed by a machine and / or storage device. The source device 102 may further include, for example, a point cloud decoder. The destination device 104 may include, for example, a point cloud encoder. The source device 102 may be configured to further receive an encoded bitstream from the destination device 106. Receiving the encoded bitstream from the destination device 106 may support bidirectional point cloud transmission between the devices.

[0048] As described herein, the encoder can quantize the positions of points in a point cloud according to spatial precision, which can be the same or different in each dimension of the point. The quantization process can create a grid in 3D space. The encoder can map any point residing within each sub-grid volume to the sub-grid center coordinates, called voxels. Voxels can be considered as 3D extensions of pixels corresponding to 2D image grid coordinates.

[0049] An encoder may represent or encode a voxelized point cloud. The encoder may, for example, use an occupancy tree to represent or encode the voxelized point cloud. The encoder may split an initial volume or cuboid containing the voxelized point cloud into sub-cubic blocks. The initial volume or cuboid may be referred to as a bounding box. The cuboid may be, for example, a cube. The encoder may recursively split each sub-cuboid containing at least one point of the point cloud. The encoder may not further split sub-cubic blocks that do not contain at least one point of the point cloud. A sub-cuboid containing at least one point of the point cloud may be referred to as an occupied sub-cuboid. A sub-cuboid that does not contain at least one point of the point cloud may be referred to as an unoccupied sub-cuboid. The encoder may split the occupied cuboid into, for example, two sub-cubic blocks (to form a binary tree), four sub-cuboids (to form a quadtree), or eight sub-cuboids (to form an octree). The encoder may split the occupied cuboid to obtain sub-cubic blocks. The sub-cubes can have the same size and shape at a given depth level of the occupancy tree. For example, if the encoder splits the occupied cuboid along a plane passing through the middle of the cuboid's edge, the sub-cubes can have the same size and shape at a given depth level of the occupancy tree.

[0050] The initial volume or cuboid containing the voxelized point cloud can correspond to the root node of the occupancy tree. Each occupied sub-cuboid split from the initial volume can correspond to a node (of the root node) in the second level of the occupancy tree. Each occupied sub-cuboid split from an occupied sub-cuboid in the second level can correspond to a node in the third level of the occupancy tree (outside of the occupied sub-cuboid in the second level from which it was split). The occupancy tree structure can continue to form in this manner for each recursive splitting iteration until, for example, a maximum depth level of the occupancy tree is reached or each occupied sub-cuboid has a volume corresponding to one voxel.

[0051] Each non-leaf node of the occupancy tree may include an occupancy word representing the occupancy status of the cuboid corresponding to the node or be associated with an occupancy word. The node of the occupancy tree corresponding to the cuboid split into 8 sub-cubic blocks may include a 1-byte occupancy word or be associated with a 1-byte occupancy word. Each bit of the 1-byte occupancy word (referred to as an occupancy bit) may represent or indicate the occupancy of different sub-cubic blocks among the eight sub-cubic blocks. The occupied sub-cubic blocks may each be represented or indicated by a binary "1" in the 1-byte occupancy word. The unoccupied sub-cubic blocks may each be represented or indicated by a binary "0" in the 1-byte occupancy word. The occupied sub-cubic blocks and the unoccupied sub-cubic blocks may be represented or indicated by opposite 1-bit binary values ​​in the 1-byte occupancy word (for example, a binary "0" representing or indicating an occupied sub-cuboid and a binary "1" representing or indicating an unoccupied sub-cuboid).

[0052] Each bit of the occupation word can represent or indicate the occupation of a different sub-cuboid among the eight sub-cuboids. Each bit of the occupation word can represent or indicate the occupation of a different sub-cuboid among the eight sub-cuboids, for example, following the so-called Morton order. The least significant bit of the occupation word can represent or indicate the occupation of the first sub-cuboid among the eight sub-cuboids, for example, following the Morton order. The second least significant bit of the occupation word can represent or indicate the occupation of the second sub-cuboid among the eight sub-cuboids, for example, following the Morton order, and so on.

[0053] Figure 2 The Morton order of the eight child cuboids 202-216 split from the cuboid 200 is shown. The child cuboids 202-216 are labeled based on their Morton order, where child node 202 is the first in the Morton order and child node 216 is the last in the Morton order. The Morton order of the child cuboids 202-216 is the local lexicographic order in xyz.

[0054] The geometry of the voxelized point cloud is represented by the initial volume and occupancy word of the node in the occupancy tree and can be determined from the initial volume and the occupancy word. The encoder can send (e.g., transmit) the initial volume and occupancy word of the node in the occupancy tree to the decoder in a bitstream for use in reconstructing the point cloud. The encoder can entropy encode the occupancy word. The encoder can, for example, entropy encode the occupancy word before sending the initial volume and occupancy word of the node in the occupancy tree. The encoder can encode the occupancy bits of the occupancy word of the node corresponding to the cuboid. The encoder can, for example, encode the occupancy bits of the occupancy word of the node corresponding to the cuboid based on one or more occupancy bits of the occupancy words of other nodes corresponding to cuboids that are adjacent to or spatially close to the cuboid being encoded.

[0055] The encoder and / or decoder may code the occupied bits of the occupied words in a scan order. The scan order may also be referred to as scanning order. The encoder and / or decoder may scan the occupancy tree in a breadth-first order. All occupied words of a node at a given depth (e.g., level) within the occupancy tree may be scanned. All occupied words of a node at a given depth (e.g., level) within the occupancy tree may be scanned, for example, before scanning the occupied words of a node at the next depth (e.g., level). Within a given depth, the encoder and / or decoder may scan the occupied words of a node in Morton order. Within a given node, the encoder and / or decoder may further scan the occupied bits of the occupied words of the node in Morton order.

[0056] Figure 3 An example of a scan order (eg, a breadth-first order as described herein) for occupancy tree 300 is shown. Figure 3 The scan order for the first three example levels of the occupancy tree 300 is shown. Figure 3 In FIG. 3 , the cuboid 302 corresponding to the root node of the occupancy tree 300 can be divided into eight sub-cubic blocks. Two of the eight sub-cubic blocks, 304 and 306, can be occupied. The other six of the eight sub-cubic blocks can be unoccupied. Following the Morton order, the first eight-bit occupancy word occW 1,1 The first eight-bit occW is constructed to represent the occupancy word of the root node. 1,1 The least significant occupied bit of the first octet represents or indicates the occupancy of the first sub-cuboid among the eight sub-cuboids in Morton order. 1,1 The second least significant occupied bit of represents or indicates the occupancy of the second sub-cuboid among the eight sub-cuboids in Morton order, and so on.

[0057] Each of the two occupied sub-cuboids 304 and 306 corresponds to a node other than the root node in the second level of the occupancy tree 300. The two occupied sub-cuboids 304 and 306 are each further split into eight sub-cuboids. One sub-cuboid 308 of the eight sub-cuboids split from the sub-cuboid 304 may be occupied. The other seven sub-cuboids of the eight sub-cuboids split from the sub-cuboid 304 may be unoccupied. Three sub-cuboids 310, 312, and 314 of the eight sub-cuboids split from the sub-cuboid 306 may be occupied. The other five sub-cuboids of the eight sub-cuboids split from the sub-cuboid 306 may be unoccupied. The two second occupancy words occW are constructed in this order. 2,1 and occW 2,2 , to respectively represent the occupation word of the node corresponding to the sub-cuboid 304 and the occupation word of the node corresponding to the sub-cuboid 306.

[0058] Each of the four occupied sub-cubic blocks 308, 310, 312, and 314 corresponds to a node in the third level of the occupancy tree 300. The four occupied sub-cubic blocks 308, 310, 312, and 314 are each further split into eight sub-cubic blocks, or a total of 32 sub-cubic blocks. The four third-level eight-bit occupation words occW are constructed in this order. 3,1 、occW 3,2 、occW 3,3 and occW 3,4 , to respectively represent the occupation word of the node corresponding to the sub-cuboid 308, the occupation word of the node corresponding to the sub-cuboid 310, the occupation word of the node corresponding to the sub-cuboid 312, and the occupation word of the node corresponding to the sub-cuboid 314.

[0059] The occupied words of the occupancy tree 300 may be entropy coded (eg, entropy encoded by an encoder and entropy decoded by a decoder) as a series of seven occupied words W, for example, following a scan order (eg, breadth-first order) as described herein. 1,1 to occW 3,4 . Due to the breadth-first scanning order, for example, if the occupied word of the current child node belonging to the current parent node is being entropy coded, the occupied words of all nodes with the same depth (e.g., level) as the current parent node may have been entropy coded. For example, if the occupied word of the current child node is being entropy coded, the occupied words of all nodes with the same depth (e.g., level) as the current child node but with a lower Morton order than the current child node may also have been entropy coded. A portion of the occupied words that have been coded can be used to entropy code the occupied words of the current child node. The occupied words of the adjacent parent and / or child nodes that have been coded can be used, for example, to entropy code the occupied words of the current child node. The occupied bits of the occupied words with a lower Morton order than a specific occupied bit of the occupied word of the current child node may also have been entropy coded. For example, if a specific occupied bit is being coded, the occupied bits of the occupied words with a lower Morton order than the specific occupied bit can be used to code the occupied bits of the occupied word of the current child node.

[0060] Figure 4 An example neighborhood of a cuboid for entropy coding the occupancy of a sub-cuboid is shown. The neighborhood of a cuboid with coded occupied bits can be used to entropy code the occupied bits of the current sub-cuboid 400. The neighborhood of a cuboid with coded occupied bits can be determined. This can be done, for example, based on the representation as described herein. Figure 4 The neighborhood of the cuboid with coded occupancy bits is determined by scanning the occupancy tree of the geometric shape of the cuboid in the figure. The neighborhood of the cuboid, that is, the neighborhood of the current child cuboid, may include one or more of the following: a cuboid adjacent to the current child cuboid, a cuboid sharing a vertex with the current child cuboid, a cuboid sharing an edge with the current child cuboid, a cuboid sharing a face with the current child cuboid, a parent cuboid adjacent to the current child cuboid, a parent cuboid sharing a vertex with the current child cuboid, a parent cuboid sharing an edge with the current child cuboid, a parent cuboid sharing a face with the current child cuboid, a parent cuboid adjacent to the current parent cuboid, a parent cuboid sharing a vertex with the current parent cuboid, a parent cuboid sharing an edge with the current parent cuboid, a parent cuboid sharing a face with the current child cuboid, and so on. As Figure 4As shown, the current child cuboid 400 may belong to the current parent cuboid 402. Following the scanning order of the occupation words and occupation bits of the nodes of the occupation tree, the occupation bits of the four child cuboids 404, 406, 408, and 410 belonging to the same current parent cuboid 402 have been coded. The occupation bits of the child cuboid 412 of the previous parent cuboid have been coded. The occupation bits of the parent cuboid 414 have been coded, while the occupation bits of its child cuboids have not yet been coded. Therefore, the coded occupation bits of the cuboids 404, 406, 408, 410, 412, and 414 can be used to code the occupation bits of the current child cuboid 400.

[0061] The number (eg, quantity) of possible occupation configurations (eg, sets of one or more occupation words and / or occupation bits) of the neighborhood of the current sub-cuboid may be 2 N , where N is the number (e.g., quantity) of cuboids in the neighborhood of the current child cuboid that have coded occupied bits. The neighborhood of the current child cuboid may include dozens of cuboids. The neighborhood of the current child cuboid may include 26 neighboring parent cuboids that share faces, edges, and / or vertices with the parent of the current child cuboid, and also include several neighboring child cuboids that share faces, edges, and / or vertices with the current child cuboid. The occupancy configuration of the neighborhood of the current child cuboid can have billions of possible occupancy configurations, even limited to a subset of neighboring cuboids, making its direct use impractical. The encoder and / or decoder can use the occupancy configuration of the neighborhood of the current child cuboid to select a context (e.g., a probability model) from a context set for a binary entropy coder (e.g., a binary arithmetic coder) that codes the occupied bits of the current child cuboid. Context-based binary entropy coding can be similar to the context-adaptive binary arithmetic coder (CABAC) used in MPEG-H Part 2 (also known as High Efficiency Video Coding (HEVC)).

[0062] The encoder and / or decoder may use several methods to reduce the occupancy configurations of the neighborhood of the current child cuboid being coded to a practical number (e.g., quantity) of reduced occupancy configurations. 6 Or 64 occupancy configurations can be reduced to nine occupancy configurations. Occupancy configurations can be reduced by using geometric invariance. 26 The occupancy score of the current sub-cuboid is obtained based on the occupancy configuration. The score can be further reduced to a ternary occupancy prediction (e.g., "predicted occupied," "uncertain," or "predicted unoccupied") by using a score threshold. The number of occupied neighboring sub-cuboids (e.g., number) and the number of unoccupied neighboring sub-cuboids (e.g., number) can be used instead of the individual occupancy of these sub-cuboids.

[0063] The encoder and / or decoder can reduce the number (e.g., quantity) of possible occupancy configurations for the neighborhood of the current subcuboid to a more manageable number (e.g., thousands). It has been observed that instead of directly associating a reduced number (e.g., quantity) of contexts (e.g., probability models) with the reduced occupancy configurations, another mechanism, namely, an optimal binary buffer (OBUF) with on-the-fly updates, can be used. The encoder and / or decoder can implement the OBUF to limit the number (e.g., quantity) of contexts to a lower number (e.g., 32 contexts).

[0064] OBUF can use a finite number (e.g., 32) of contexts (e.g., probability models). The number (e.g., quantity) of contexts in OBUF can be a fixed number (e.g., fixed quantity). The contexts used by OBUF can be sorted, indexed by context indices (e.g., context indices in the range of 0 to 31), and associated from the lowest virtual probability to the highest virtual probability to code "1". A lookup table (LUT) of context indices can be initialized at the beginning of the point cloud coding process. The LUT can initially point to a context with a median virtual probability to code "1" for all inputs. The LUT can initially point to a context with a median virtual probability to code "1" in a finite number (e.g., quantity) of contexts for all inputs. This LUT can take the occupancy configuration of the neighborhood of the current sub-cuboid as input and output a context index associated with the occupancy configuration. The LUT can have as many entries as the reduced occupancy configuration (e.g., approximately several thousand entries). Coding the occupied bits of the current sub-cuboid may include the following steps: determining a reduced occupancy configuration for the current sub-cuboid, obtaining a context index using the reduced occupancy configuration as an entry in a LUT, coding the occupied bits of the current sub-cuboid using the context pointed to (e.g., indicated) by the context index, and updating the LUT entry corresponding to the reduced occupancy configuration. The LUT entry may be updated, for example, based on the value of the coded occupied bits of the current sub-cuboid. For a coded binary "0" (e.g., indicating that the current sub-cuboid is unoccupied), the LUT entry may be reduced to a lower context index value (e.g., associated with a lower virtual probability). For a coded binary "1" (e.g., indicating that the current sub-cuboid is occupied), the LUT entry may be increased to a higher context index value (e.g., associated with a higher virtual probability). The context index update process may be based on a theoretical model of an optimal distribution of virtual probabilities associated with a finite number (e.g., quantity) of contexts. This virtual probability may be fixed by the model. This virtual probability may differ from the internal probability of the context that evolves during coding of the data bit. The evolution of the internal context may follow a well-known process similar to that in CABAC.

[0065] The encoder and / or decoder may implement a "dynamic OBUF" scheme. Compared to general OBUF, the "dynamic OBUF" scheme can handle a much larger number (e.g., number) of occupancy configurations of the neighborhood of the current sub-cuboid. The use of a larger number (e.g., number) of occupancy configurations of the neighborhood of the current sub-cuboid can result in improved compression capabilities. The use of a larger number (e.g., number) of occupancy configurations of the neighborhood of the current sub-cuboid can also maintain complexity within reasonable bounds. By using an occupancy tree compressed by OBUF, the encoder and / or decoder can achieve lossless compression performance as good as 1 bit per point (bpp) for coding the geometry of dense point clouds. The encoder and / or decoder may implement dynamic OBUF to potentially further reduce the bit rate by more than 25%, to 0.7 bpp.

[0066] OBUF may not take as input a large number of reduced occupancy configurations of the neighborhood of the current sub-cuboid. This may potentially result in a loss of useful correlation. With OBUF, the size of the LUT of context indexes can be increased to handle more different occupancy configurations of the neighborhood of the current sub-cuboid as input. By doing so, statistics can be diluted and compression performance may deteriorate. For example, if the LUT has millions of entries and the point cloud has hundreds of thousands of points, most entries are never accessed (e.g., searched, accessed, etc.). In some instances, many entries may only be accessed a few times, and their associated context indexes may not be updated enough times to reflect any meaningful correlation between the occupancy configuration value of the current sub-cuboid and the occupancy probability. Dynamic OBUF can be implemented to mitigate the dilution of statistics caused by the increase in the number (e.g., quantity) of occupancy configurations of the neighborhood of the current sub-cuboid. This mitigation is performed by "dynamic reduction" of occupancy configurations in the dynamic OBUF.

[0067] Dynamic OBUF can add an additional step of reducing the occupancy profile of the neighborhood of the current sub-cuboid. Dynamic OBUF can, for example, add an additional step of reducing the occupancy profile of the neighborhood of the current sub-cuboid before using the context-indexed LUT. This step can be called dynamic reduction because it evolves based on the progress of the coding of the point cloud, or more precisely, based on the occupancy profiles that have been visited (e.g., looked up in the LUT).

[0068] As described herein, potentially many possible occupancy configurations are involved in the neighborhood of the current sub-cuboid, but only a subset may be accessed, for example, if coding of the point cloud is occurring. This subset of accessed occupancy configurations may characterize the type of point cloud. For example, most of the accessed occupancy configurations may represent occupied neighboring cuboids of the current sub-cuboid, for example, if a dense AR or VR point cloud is being coded. On the other hand, for example, if a sparse sensor-acquired point cloud is being coded, most of the accessed occupancy configurations may represent only a few occupied neighboring cuboids of the current sub-cuboid. Dynamic reduction can have the effect of, for example, obtaining a more accurate correlation based on the most frequently accessed occupancy configurations by shelving (e.g., actively reducing) other occupancy configurations that are accessed much less frequently. Dynamic reduction can be updated on the fly. Dynamic reduction can be updated on the fly. Dynamic reduction can be updated on the fly, for example, after each access to an occupancy configuration (e.g., a lookup in a LUT). For example, if coding of occupancy data occurs, an access to an occupancy configuration (e.g., a lookup in a LUT) may occur.

[0069] Figure 5 An example of a dynamic reduction function (DR) that can be used in a dynamic OBUF is shown. The dynamic reduction function (DR) can be used by masking the bit β of the configuration 500. j To obtain,

[0070] β = β1 … β K ,

[0071] The occupied configuration consists of K bits. For example, if the occupied configuration is accessed (e.g., looked up in the LUT) a certain number of times (e.g., quantity), the size of the mask can be reduced. The initial dynamic reduction function DR 0 All bits of all occupied configurations can be masked so that for all occupied configurations β, it is a constant function DR 0 (β) = 0. The dynamic reduction function can be obtained from the function DR n Evolution to update function DR n+1 The dynamic reduction function can be, for example, after each encoding of the occupied bits from the function DR n Evolution to update function DR n+1 . The function can be defined as follows:

[0072] β' = DR n (β) = β1 … β kn(β) ,

[0073] where k n (β) 510 is the number (eg, quantity) of unmasked bits. DR 0The initialization of may correspond to k0(β)=0, and the natural evolution of the reduction function towards finer statistics may result in an increase in the number (eg, quantity) of unmasked bits by k n (β) ≤ k n+1 (β). The dynamic reduction function can be completely composed of all k occupied configurations β n The value of is determined.

[0074] For all dynamically reduced occupancy configurations β' = DR n (β), accesses to occupied configurations (e.g., instances of lookups in a LUT) can be tracked by the variable NV(β'). The corresponding access count (e.g., number) NV(β V ') can be increased by one. For example, in the case of occupancy-based configuration β V After each instance of writing to an occupied bit, the corresponding access count (e.g., number) NV(β V ') can be increased by one. If the number of visits (e.g., quantity) NV(β V ') is greater than the threshold th V ,

[0075] NV(β V ') >th V ,

[0076] Then for the dynamic reduction to β V 'For all occupied configurations β, the number (e.g., number) of unmasked bits k n (β) can be increased by one. This corresponds to using two new dynamically reduced occupancy configurations β 0 ' and β 1 'Replace the dynamically reduced occupancy configuration β V ', the two new dynamically reduced occupancy configurations are defined by:

[0077] β 0 ' = β V '0 = β V 1 … β V kn(β) 0, and β 1 ' = β V '1 = β V 1 … β V kn(β) 1.

[0078] In other words, for all occupied configurations β, the number (eg, quantity) of unmasked bits has increased by one, k n+1 (β) =k n (β) + 1, making DR n (β) = β V'. The access counts (e.g., number) of the two new dynamically reduced occupancy configurations may be initialized to zero,

[0079] NV(β 0 ') = NV(β 1 ') = 0. (I)

[0080] At the beginning of coding, the initial dynamic reduction function DR 0 The initial number of visits (e.g., quantity) can be set to

[0081] NV(DR 0 (β)) = NV(0) = 0,

[0082] And the evolution of NV with respect to the dynamically decreasing occupancy configuration can be fully defined.

[0083] The corresponding LUT entry LUT[β V '] can be made with β V ' Associated coder index initializes two new entries LUT[β 0 '] and LUT[β 1 '] replaced. For example, if the dynamically reduced occupancy configuration β V 'By two new dynamically reduced occupied configurations β 0 ' and β 1 'Replace, then the corresponding LUT entry LUT[β V '] can be made with β V ' Associated coder index initializes two new entries LUT[β 0 '] and LUT[β 1 ']replace,

[0084] LUT[β 0 '] = LUT[β 1 '] = LUT[β V '], (II)

[0085] and then evolve independently.The evolution of the LUT of the coder index with respect to a dynamically reduced footprint configuration can be fully defined.

[0086] Reduction function DR n It can be composed of a series of growing binary trees T n 520 model, its leaf node 530 is the reduced occupancy configuration β' = DR n (β). The initial tree can be with 0 = DR 0 (β) is associated with a single root node. It will be dynamically reduced to β V 'Replace with β 0 ' and β 1' corresponds to the V 'The associated leaf node growth tree T n . will be dynamically reduced to β V 'Replace with β 0 ' and β 1 ' corresponds to the V 'The associated leaf node growth tree T n , for example, by combining 0 ' and β 1 'The two new nodes associated are attached to the leaf node. Tree T n+1 The access count (eg, number) of NVs and context index LUTs can be defined at leaf nodes and evolved as the tree grows according to equations (I) and (II).

[0087] The actual implementation of dynamic OBUF can be achieved by storing the array NV[β'] and the context index LUT[β'] and the tree T n 520. An alternative to storing the tree may be an array k storing the number (eg, quantity) of unmasked bits n [β]510.

[0088] A limitation of implementing a dynamic OBUF may be its memory footprint. In some instances, several million occupancy configurations can be practically handled, resulting in approximately 20-bit beta i The entry configuration β constitutes the reduction function DR. Each bit β i It may correspond to the occupancy state of the adjacent cuboid of the current sub-cuboid or a set of adjacent cuboids of the current sub-cuboid.

[0089] The higher (ie, more significant) bit β i (e.g., β0, β1, etc.) may be the first bit to be unmasked. The higher (e.g., more significant) bits β i (e.g., β0, β1, etc.) may be the first bit that will not be masked, for example, during the evolution of the dynamic reduction function DR. i The order of the neighbor-based information in β may affect the compression performance. The neighbor information can be sorted from higher priority to lower priority and placed in position β in this order. i, for example, from higher weight to lower weight. Priority can be from most important to least important, i.e., occupancy of the set of adjacent child cuboids, followed by occupancy of adjacent child cuboids, followed by occupancy of adjacent parent cuboids, followed by occupancy of non-adjacent adjacent child nodes, and finally occupancy of non-adjacent adjacent parent nodes. Neighboring nodes that share faces with the current child node can also have a higher priority than neighboring nodes that share edges (but not faces) with the current child node. Neighboring nodes that share edges with the current child node can have a higher priority than neighboring nodes that only share vertices with the current child node.

[0090] Figure 6 An example method for coding the occupancy of a cuboid using dynamic OBUF is shown. More specifically, Figure 6 A flow chart illustrating an example method for coding the occupancy of a current subcuboid (eg, as indicated by a single bit) using a dynamic OBUF. More specifically, Figure 6 Flowchart showing steps of an example method for coding the occupancy of a current sub-cuboid using a dynamic OBUF. The example method or one or more operations of the method may be performed by one or more computing devices or entities. For example, all or part of the flowchart may be performed by a coder (e.g., Figure 1 The encoder 114 and / or Figure 1 Decoder 120 in Figure 21 The example computer system 2100 and / or Figure 22 The example computing device 2230 in is implemented.

[0091] At step 602, the encoder and / or decoder may determine the occupancy configuration β of the current sub-cuboid. The encoder and / or decoder may determine the occupancy configuration β of the current sub-cuboid, for example, based on the occupancy bits of the already coded cuboids in the neighborhood of the current sub-cuboid. At step 604, the encoder and / or decoder may use DR n (e.g., β' = DR n (β)) dynamically reduces the occupancy configuration β to the reduced occupancy configuration. At step 606, the encoder and / or decoder may search the context index LUT [β'] in the LUT of the dynamic OBUF. At step 608, the encoder and / or decoder may select the context (e.g., a probability model) pointed to by the context index. At step 610, the encoder and / or decoder may perform entropy coding (e.g., arithmetic coding) on ​​the occupancy bits of the current sub-cuboid based on the context.

[0092] although Figure 6 DR n Update to DR n+1And / or update the context index LUT [β'] based on the occupied bits of the current sub-cuboid. Figure 6 The method can be in scanning order, for example, this paper is relative to Figure 3 The described scanning order is repeated for additional or all child cuboids of the parent cuboid corresponding to the nodes of the occupancy tree.

[0093] Occupancy trees are a lossless compression technique. They can be adapted to provide lossy compression, for example by modifying the point cloud on the encoder side (e.g., downsampling, removing points, shifting points, etc.), but lossy compression may have poorer compression performance. For dense point clouds, this can be a useful lossless compression technique.

[0094] A method for lossy compression of point cloud geometry can be to set the maximum depth of the occupancy tree to the smallest volume size that does not reach one voxel. Conversely, the maximum depth of the occupancy tree can be set to stop at a larger volume size (e.g., an N×N×N cuboid, where N>1). The geometry of the points belonging to each occupied leaf node associated with the larger volume can then be modeled. This method can be particularly well suited for dense and smooth point clouds that can be locally modeled by smooth functions (e.g., planes or polynomials). The coding cost can become the cost of the occupancy tree plus the cost of the local model in each occupied leaf node.

[0095] A scheme for modeling the geometry of points belonging to each occupied leaf node associated with a volume size greater than one voxel may use a set of triangles as a local model. The scheme may be referred to as a "TriSoup" scheme. TriSoup is short for "triangle soup" because the connections between triangles may not be part of the model. Occupied leaf nodes of the occupancy tree corresponding to cuboids with a volume greater than one voxel may be referred to as TriSoup nodes. Edges belonging to at least one cuboid corresponding to a TriSoup node may be referred to as TriSoup edges. A TriSoup node may include an existence flag (s) for each TriSoup edge of its corresponding occupied cuboid. k ). TriSoup edge presence flag (s k ) can indicate the TriSoup vertex (V k ) exists on a TriSoup edge. At most one TriSoup vertex (V k ) can exist on a TriSoup edge. For each vertex (V k ), the TriSoup node corresponding to the occupied cuboid may further include vertices (V k ) along the edge of the TriSoup (p k ).

[0096] In addition to the occupancy word of the occupancy tree, the encoder may also entropy encode the TriSoup vertex presence flag and position of each TriSoup edge belonging to the TriSoup node of the occupancy tree. In addition to the occupancy word of the occupancy tree, the decoder may similarly entropy decode the TriSoup vertex presence flag and position of each TriSoup edge belonging to the TriSoup node of the occupancy tree.

[0097] Figure 7 An example of an occupied cuboid 700 corresponding to a TriSoup node of an occupancy tree is shown. The cuboid 700 may have a size of N×N×N (where N>1). The occupied cuboid 700 may include TriSoup edges 710-721. The TriSoup node corresponding to the occupied cuboid 700 may include an existence flag (s) for each of the TriSoup edges 710-721. k ). The existence flag of TriSoup edge 714 may indicate that TriSoup vertex V1 exists on TriSoup edge 714. The existence flag of TriSoup edge 715 may indicate that TriSoup vertex V2 exists on TriSoup edge 715. The existence flag of TriSoup edge 716 may indicate that TriSoup vertex V3 exists on TriSoup edge 716. The existence flag of TriSoup edge 717 may indicate that TriSoup vertex V4 exists on TriSoup edge 717. The existence flags of the remaining TriSoup edges may each indicate that there is no TriSoup vertex on its corresponding TriSoup edge. The TriSoup node corresponding to the occupied cuboid 700 may further include the position of each TriSoup vertex that exists along one of its TriSoup edges 710-721. More specifically, the TriSoup node corresponding to the occupied cuboid 700 may further include the position p1 of TriSoup vertex V1, the position p2 of TriSoup vertex V2, the position p3 of TriSoup vertex V3, and the position p4 of TriSoup vertex V4.

[0098] Figure 8A An example cuboid corresponding to a TriSoup node is shown. Cuboid 800 may correspond to a TriSoup vertex V having a number K. k TriSoup nodes. In the cuboid 800, TriSoup triangles can be represented by TriSoup vertices V kFor example, if there are at least three (K ≥ 3) TriSoup vertices on the TriSoup edge of the cuboid 800, then the TriSoup triangle can be constructed by the TriSoup vertex V k Construction. Figure 8A In the example, there are 4 TriSoup vertices, and a TriSoup triangle is constructed. The TriSoup triangle can be constructed around the centroid vertex C. The centroid vertex C can be defined as the TriSoup vertex V k The main direction can be determined, and the vertex V can be rotated around this direction. k Sort them, and the following K TriSoup triangles can be constructed: V1V2C, V2V3C, ..., V K V1C. For example, if a triangle is projected along a principal direction, the principal direction can be selected from three directions that are respectively parallel to the axis of the 3D space to increase or maximize the 2D surface of the triangle. The principal direction can be slightly perpendicular to the local surface defined by the points of the point cloud belonging to the TriSoup node.

[0099] Figure 8B An example refinement of the TriSoup model is shown. The TriSoup model can be improved by coding the centroid residuals. res Can be written into the bitstream. The centroid residual value C res Can be written into a bitstream, for example, using C+C res Instead of C as the pivot point of the triangle, by using C + C res As the pivot point of the triangle, vertex C + C res The reconstruction error can be reduced by moving the point closer to the point cloud than the centroid C, which results in reduced distortion, but at the cost of writing code C. res The required bit rate will increase slightly.

[0100] Figure 9 An example of voxelization is shown. Voxelization may refer to reconstructing a decoded point cloud from a collection of TriSoup triangles. Voxelization may be performed by ray tracing each triangle individually. For example, voxelization may be performed by ray tracing each triangle individually before removing duplicate points between voxelized triangles. Figure 9 As shown, the ray 900 can be emitted parallel to one of the three axes of the 3D space. The ray 900 can be emitted from the integer coordinate P 开始 The intersection point P of the ray 900 with the TriSoup triangle 901 belonging to the cuboid 902 corresponding to the TriSoup node can be rounded. int(if it exists) to obtain the decoding point. This intersection point P can be found, for example, using the Möller-Trumbore algorithm int .

[0101] There is a presence sign (s k ), and if the flag is present (s k ) indicates the existence of a vertex, then the position of the current TriSoup edge (p k ) to write the entropy code. k ) and position (p k ) can be individually or collectively referred to as vertex information. k ), and if the flag is present (s k ) indicates the presence of a vertex, the position of the current TriSoup edge (p k ) to write entropy code. There is an existence flag (s k ), and if the flag is present (s k ) indicates the presence of a vertex, the position of the edge of the current TriSoup (p k ) to perform entropy coding. The existence flag of the current TriSoup edge (s k ) and position (p k ) can additionally or alternatively be entropy coded, for example, based on the occupancy of the cuboids adjacent to the current TriSoup edge. Similar to the entropy coding of the occupancy bits of the occupancy tree, the configuration β of the neighborhood of the current TriSoup edge can be obtained TS (Also called neighborhood configuration β TS ), and dynamically reduces it to the reduced configuration β TS ' = DR n (β TS The configuration of the neighborhood of the current TriSoup edge β can be obtained, for example, by using a dynamic OBUF scheme for TriSoup TS and dynamically reduces it to the reduced configuration β TS '= DR n (β TS ). Context Index LUT[β TS '] can be obtained from the OBUF LUT. The context (eg, probability model) pointed to by the context index can be used to entropy encode at least a portion of the vertex information of the current TriSoup edge.

[0102] The TriSoup vertex positions along its TriSoup edges (p k) (if present) can be binarized. The TriSoup vertex positions along its TriSoup edges (p k ) (if present) may be binarized, for example, to entropy encode at least a portion of the vertex information of the current TriSoup edge using a binary entropy encoder. The number of bits (eg, quantity) N may be set b To quantize TriSoup vertex positions along a TriSoup edge of length N (p k ). A TriSoup edge of length N can be evenly divided into 2 Nb By doing so, the TriSoup vertex positions (p k ) can be written separately by N through dynamic OBUF scheme b bit (p k j , j=1, . . . , N b ) and corresponding to the presence sign (s k ) bit representation. Neighborhood configuration β TS、 OBUF reduction function DR n And thus the context index may depend on the nature of the coded bit (e.g. presence flag (s k ), the highest position (p k 1 ), the second highest position (p k 2 ), etc.). There may be several dynamic OBUF schemes, each dedicated to a specific bit of vertex information (e.g., presence flag (s k ) or set bit (p k j )).

[0103] Figure 10A and Figure 10B Twelve cuboids 1000-1003, 1010-1013, and 1020-1023 are shown whose volumes intersect with the current TriSoup edge E being entropy-coded. The current TriSoup edge E is the edge of cuboids 1000-1003. The starting point of the current TriSoup edge E intersects with cuboids 1010-1013. The ending point of the current TriSoup edge E intersects with cuboids 1020-1023. The occupied bits of one or more of the 12 cuboids 1000-1003, 1010-1013, and 1020-1023 can be used to determine the neighborhood configuration β of the current TriSoup edge E. TS .

[0104] TriSoup edges can be oriented from the start point to the end point following the orientation of one of the three axes of 3D space to which they are parallel. The global ordering of TriSoup edges can be defined as a lexicographic order on pairs (e.g., start point, end point). Vertex information associated with a TriSoup edge can be coded according to the TriSoup edge ordering. The causal neighborhood of a current TriSoup edge can be obtained from the adjacent coded TriSoup edges of the current TriSoup edge.

[0105] Figure 11A 、 Figure 11B and Figure 11C 1 shows TriSoup edges (E' and E") that can be used to entropy encode the current edge E. In some examples, up to five TriSoup edges (E' and E") can be used to entropy encode the current edge E. The five TriSoup edges can include:

[0106] - an edge E' that is parallel to the current TriSoup edge E and has an end point equal to the start point of the current TriSoup edge E, and

[0107] - Four edges E" that are perpendicular to the current TriSoup edge E and have a start or end point equal to the start point of the current TriSoup edge E.

[0108] Depending on the direction of the current TriSoup edge E, two of the four perpendicular TriSoup edges ( Figure 11C , for direction z), three ( Figure 11B , for direction y) or four ( Figure 11A , for direction x) may have been coded, and their vertex information can be used to construct the neighborhood configuration β of the current TriSoup edge E TS The TriSoup edge E' may have been coded for each direction of the current TriSoup edge E, and its vertex information can be used to construct the neighborhood configuration β of the current TriSoup edge E independently of its direction. TS .

[0109] As described in this paper, the neighborhood configuration β of the current TriSoup edge E TS It can be obtained from one or more occupied bits of the cuboid and from the vertex information of the adjacent coded TriSoup edges. The neighborhood configuration β of the current TriSoup edge E TS Can be obtained from Figure 10A and Figure 10B One or more of the 12 occupied positions of the 12 rectangular blocks shown in FIG and from Figure 11A 、 11BThe vertex information of up to five adjacent coded TriSoup edges (E' and E") shown in Figure 11C is obtained.

[0110] As this article about Figure 11A 、 11B As described in 11C and 11C, the vertex information of at most five TriSoup edges can be used to entropy code the current TriSoup edge E. More specifically, as described herein with respect to Figure 11A 、 11B As described in 11C, the vertex information of at most five TriSoup edges can be used to determine the neighborhood configuration β of the current TriSoup edge E TS Neighborhood configuration β TS can be dynamically reduced to a reduced configuration β TS ' = DR n (β TS ). Neighborhood configuration β TS can be dynamically reduced to a reduced configuration β, for example, by using a dynamic OBUF scheme as described herein. TS ' = DR n (β TS ). Context Index LUT[β TS '] can be obtained from OBUFLUT, and at least a portion of the vertex information of the current TriSoup edge E can be entropy coded using the context (eg, probability model) pointed to by the context index.

[0111] Using the vertex information of at most five TriSoup edges to entropy code the current TriSoup edge E can generate the neighborhood configuration β of the current TriSoup edge E TS Weak correlation with vertex information. The dynamic OBUF scheme can provide a context index for entropy coding of the current TriSoup edge E, whose coding probability is weakly correlated with the vertex information of the current TriSoup edge E. Due to this weak correlation, the vertex information of the current TriSoup edge E may not be effectively compressed.

[0112] The disclosure provided herein improves the neighborhood configuration β of the current TriSoup edge E TS] and the vertex information of the current TriSoup edge E. The improved correlation may allow the use of entropy coding to more efficiently compress the vertex information of the current TriSoup edge E. The improved compression using entropy coding may result in smaller storage requirements, faster and more efficient point cloud data transmission, and faster and more efficient point cloud data processing. This may result in a better experience and wider adoption of volumetric visual data applications such as AR, VR, MR, and advancements in any hardware implementations of such technologies. As described herein, the encoder and / or decoder may determine the neighborhood configuration β of the current TriSoup edge E. TS The encoder and / or decoder may determine the neighborhood configuration β of the current TriSoup edge E, for example, based on at least one TriSoup edge that does not intersect the starting point of the current TriSoup edge E. TS One or more symbols, said at least one TriSoup edge with Figure 11A 、 Figure 11B and 11C The vertex information of at least one TriSoup edge can be used (for example, in conjunction with Figure 11A 、 Figure 11B and 11C One or more of the at least five TriSoup edges shown in ) determine a neighborhood configuration β with improved correlation TS The encoder and / or decoder may select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may configure β based on, for example, a neighborhood with improved correlation. TS The context (e.g., probability model) for encoding the vertex information of the current TriSoup edge E is selected. The encoder and / or decoder can be based on, for example, the representation neighborhood configuration β TS The reduced configuration of a subset of symbols β TS ' = DR n (β TS ) and selects the context for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder can select the context based on the OBUF LUT, which configures the neighborhood β TS Or after reducing the configuration β TS 'Maps to the index of the context. The encoder and / or decoder may perform entropy coding (e.g., arithmetic coding) on ​​the vertex information of the current TriSoup edge E. The encoder and / or decoder may perform entropy coding (e.g., arithmetic coding) on ​​the vertex information of the current TriSoup edge E, for example, based on the context.

[0113] Figure 12A 、 Figure 12B and Figure 12C The adjacent coded TriSoup edges that are adjacent to the current TriSoup edge E but do not intersect the starting point of the current TriSoup edge are shown. The current TriSoup edge E may be the TriSoup edge being entropy coded. Figure 11A 、 Figure 11B and 11C At most five TriSoup edges shown in are different, Figure 12A 、 Figure 12B and Figure 12C The adjacent already coded TriSoup edges shown in do not intersect with the starting point of the current TriSoup edge E being entropy coded. More specifically, Figure 12A 、 Figure 12B and Figure 12C Shows adjacent coded TriSoup edges E that are parallel to the current TriSoup edge E and belong to the same TriSoup node as the current TriSoup edge E par .

[0114] Figure 12A Shows the already coded parallel edges E that can be used to code the current TriSoup edge E par The parallel edge E that has been coded par It can be used to code the current TriSoup edge E, for example, based on the current TriSoup edge E being parallel to the x-direction. Figure 12B Shows the already coded parallel edges E that can be used to code the current TriSoup edge E par The parallel edge E that has been coded par It can be used to code the current TriSoup edge E, for example, based on the fact that the current TriSoup edge E is parallel to the y-direction. Figure 12C Shows the already coded parallel edges E that can be used to code the current TriSoup edge E par The parallel edge E that has been coded par It can be used to code the current TriSoup edge E, for example, based on the fact that the current TriSoup edge E is parallel to the z direction. par The code may have been written according to a lexicographic order that globally sorts the TriSoup edge set as described herein.

[0115] The encoder and / or decoder can determine the neighborhood configuration β of the current TriSoup edge E TS One or more symbols of . The encoder and / or decoder may be based on Figure 12A 、 Figure 12B and Figure 12C The four parallel edges E that have been coded can be used to code the current TriSoup edge E. par One or more of them determine the neighborhood configuration β of the current TriSoup edge E TS One or more symbols. Figure 12A 、 Figure 12B and Figure 12C The four parallel edges E that have been coded can be used to code the current TriSoup edge E. par The specific set of can be determined, for example, based on the directions in which the current TriSoup edges E are parallel as described herein. par One or more of the vertex information can be used (for example, in conjunction with Figure 11A 、 Figure 11B and 11C One or more of the at least five TriSoup edges shown in ) determine the neighborhood configuration β of the current TriSoup edge E TS One or more symbols. The encoder and / or decoder may select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may, for example, configure β based on the neighborhood TS The encoder and / or decoder may select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a context ... TS The reduced configuration of a subset of symbols β TS ' = DR n (β TS ) and selects a context for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a context based on an OBUF LUT, for example, which configures the neighborhood β TS Or after reducing the configuration β TS 'Mapped to the index of the context. The encoder and / or decoder may, for example, perform entropy coding (eg, arithmetic coding) on ​​the vertex information of the current TriSoup edge E based on the context.

[0116] Figure 13A 、 Figure 13B and Figure 13C Shows the coded TriSoup edges that are adjacent to the current TriSoup edge but do not intersect the starting point of the current TriSoup edge. Figure 11A 、 Figure 11B and11C At most five TriSoup edges shown in are different, Figure 13A 、 Figure 13B and Figure 13C The adjacent already coded TriSoup edges shown in do not intersect with the starting point of the current TriSoup edge E being entropy coded. More specifically, Figure 13A 、 Figure 13B and Figure 13C Shows adjacent coded TriSoup edges E that may be perpendicular to the current TriSoup edge E and intersect the end point of the current TriSoup edge E perp .

[0117] Figure 13A It shows that based on the current TriSoup edge E is parallel to the x-axis, there is no vertical edge E that has been coded. perp Can be used to code the current TriSoup edge E. Figure 13B As shown, based on the current TriSoup edge E parallel to the y-axis, a vertical edge E that has been coded perp Can be used to code the current TriSoup edge E. Figure 13C As shown, based on the current TriSoup edge E being parallel to the z axis, the two coded vertical edges E perp Can be used to code the current TriSoup edge E. These vertical edges E perp The code may have been written according to a lexicographic order that globally sorts the TriSoup edge set as described herein.

[0118] The encoder and / or decoder can determine the neighborhood configuration β of the current TriSoup edge E TS One or more symbols of . The encoder and / or decoder may be based on Figure 13A 、 Figure 13B and Figure 13C The vertical edge E that has been coded can be used to code the current TriSoup edge E shown in perp One or more of them determine the neighborhood configuration β of the current TriSoup edge E TS One or more symbols. Figure 13A 、 Figure 13B and Figure 13C The vertical edge E that has been coded can be used to code the current TriSoup edge E as shown in perp The specific set of can be determined, for example, based on the direction in which the current TriSoup edge E is parallel as described herein. perp One or more of the vertex information can be used (for example, in conjunction with Figure 11A 、 Figure 11B and 11C One or more of the at least five TriSoup edges shown in , and / or in combination Figure 12A 、 Figure 12B and Figure 12C The four parallel edges E that have been coded are shown in par One or more of these) determine the neighborhood configuration β of the current TriSoup edge E TS One or more symbols. The encoder and / or decoder may select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may, for example, configure β based on the neighborhood TS The encoder and / or decoder may select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a context ... TS The reduced configuration of a subset of symbols β TS ' = DR n (β TS ) and selects the context for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder can select the context based on the OBUF LUT. The OBUF LUT can configure the neighborhood β TS Or after reducing the configuration β TS 'Mapped to the index of the context. The encoder and / or decoder can entropy code (eg, arithmetic code) the vertex information of the current TriSoup edge E based on the context.

[0119] Figure 14A 、 Figure 14B and Figure 14C The adjacent coded edges of the current TriSoup edge E are shown. The adjacent coded edges can be taken from the spatial topology of the current TriSoup edge E. The adjacent coded edges can be taken from the spatial topology of 18 edges (e.g., labeled 0 to 17). The current TriSoup edge E can be parallel to: the x-direction ( Figure 14A ), y direction ( Figure 14B ), or z direction ( Figure 14C Edge 0 may correspond to a unique edge (E' in FIG11 ) that is parallel to the current TriSoup edge E and whose endpoint is equal to (e.g., coincides with) the start point of the current TriSoup edge E. Edges 1, 2, 3, 4 may correspond to at most four edges ( Figure 11A 、 Figure 11B and 11C E" in the current TriSoup). Edges 14, 15, 16, and 17 may be edges that are parallel to the current TriSoup edge E and belong to the same TriSoup node as the current TriSoup edge E ( Figure 12A 、 Figure 12B and Figure 12C E in par Edges 9 and 10 may be edges perpendicular to the current TriSoup edge E and intersecting the end point of the current TriSoup edge E ( Figure 13A 、 Figure 13B and Figure 13C E in perp ). Edges 1, 2, 3, 4, 5, 6, 7, and 8 may belong to the same TriSoup node as the current TriSoup edge E and may belong to the following plane: perpendicular to the current TriSoup edge E and including the start point of the current TriSoup edge E. Edges 9, 10, 11, 12, and 13 may belong to the same TriSoup node as the current TriSoup edge E and may belong to the following plane: perpendicular to the current TriSoup edge E and including the end point of the current TriSoup edge E.

[0120] The encoder and / or decoder can determine the neighborhood configuration β of the current TriSoup edge E TS One or more symbols of . The encoder and / or decoder may be based on Figure 14A 、 Figure 14B and Figure 14C The neighborhood configuration β of the current TriSoup edge E is determined by one or more of the coded edges 0 to 17 shown in FIG. TS One or more symbols. Figure 14A 、 Figure 14B and Figure 14C The specific set of coded edges 0 to 17 shown in FIG4 that can be used to code the current TriSoup edge E can be determined, for example, based on the direction in which the current TriSoup edge E is parallel. Vertex information of one or more of the coded edges 0 to 17 can be used to determine the neighborhood configuration β of the current TriSoup edge E. TS One or more symbols. The encoder and / or decoder may select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may, for example, configure β based on the neighborhood TSThe encoder and / or decoder may select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a context ... TS The reduced configuration of a subset of symbols β TS ' = DR n (β TS ) and selects a context for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder can select the context. The encoder and / or decoder can select the context based on, for example, an OBUF LUT that maps the neighborhood configuration β TS Or after reducing the configuration β TS 'Maps to the index of the context. The encoder and / or decoder may perform entropy coding (e.g., arithmetic coding) on ​​the vertex information of the current TriSoup edge E. The encoder and / or decoder may perform entropy coding (e.g., arithmetic coding) on ​​the vertex information of the current TriSoup edge E, for example, based on the context.

[0121] Figure 14A 、 Figure 14B and Figure 14C The spatial topology of the 18 edges shown in can include a subspace topology of edges. Each edge of the subspace topology of edges can be available (eg, already coded) to code the current TriSoup edge E in a direction independent of the direction parallel to the current TriSoup edge E. Figure 15A 、 Figure 15B and Figure 15C An example of a subspace topology of a TriSoup edge is shown. The subspace topology of a TriSoup edge can be, for example, an 18-edge space topology, such as Figure 14A 、 Figure 14B and Figure 14C As shown in , the edge subspace topology may include 11 edges 0, 1, 2, 5, 6, 7, 8, 14, 15, 16, and 17. Figure 15A 、 Figure 15B and Figure 15C It is shown that, for each of the three possible directions of the current TriSoup edge E, each of the 11 edges of the edge subspace topology can be used to encode the current TriSoup edge E. Figure 15A It is shown that, for example, if the current TriSoup edge E is parallel to the x-axis, each of the 11 edges of the edge subspace topology can be used to encode the current TriSoup edge E. Figure 15BEach of the 11 edges showing the subspace topology of the edges can be used to encode the current TriSoup edge E parallel to the y-axis. Figure 15C Each of the 11 edges showing the subspace topology of the edge can be used to encode the current TriSoup edge E parallel to the z-axis.

[0122] A different configuration of the subspace topology may be used for each orientation of the current TriSoup edge E. The different configurations may include different rotations and / or mirrored configurations of the subspace topology of the edge. Figure 15A The subspace topology of the edges in can be compared to Figure 15C The subspace topology of the edge in is rotated 90 degrees in two different directions (e.g., around the y-axis and around the z-axis). Figure 15A The subspace topology of the edges in can be compared to Figure 15B The subspace topology of the edges in is rotated 90 degrees (e.g., around the z-axis) and mirrored (e.g., on the xz-plane).

[0123] The encoder and / or decoder can determine the neighborhood configuration β of the current TriSoup edge E TS The encoder and / or decoder may be based on, for example, only one symbol belonging to Figure 15A 、 Figure 15B and Figure 15C The subspace topology of the edge shown in can be used to determine the neighborhood configuration β of the current TriSoup edge E independently of the edges encoding the current TriSoup edge E in their direction (e.g., independent of the direction in which the current TriSoup edge E is parallel). TS One or more symbols. The encoder and / or decoder may select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may, for example, configure β based on the neighborhood TS The encoder and / or decoder may select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a context for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a context (e.g., a probability model) ... TS ' = DR n (β TS ) and select the context for coding the vertex information of the current TriSoup edge E. After reducing the configuration β TS ' = DR n (β TS ) can represent the neighborhood configuration β TSThe encoder and / or decoder can select the context based on the OBUF LUT, which configures the neighborhood β TS Or after reducing the configuration β TS 'Mapped to the index of the context. The encoder and / or decoder may perform entropy coding (e.g., arithmetic coding) on ​​the vertex information of the current TriSoup edge E. The encoder and / or decoder may perform entropy coding (e.g., arithmetic coding) on ​​the vertex information of the current TriSoup edge E, for example, based on the context.

[0124] The spatial topology of edges may be referred to as a direction-independent spatial topology of edges. Each edge of the spatial topology of edges may be available (eg, already coded) to code the current TriSoup edge E independently of its direction.

[0125] By having a unique set of statistics for all three directions of the current TriSoup edge E, dilution of dynamic OBUF statistics can be reduced or avoided. By having a unique set of statistics for all three directions of the current TriSoup edge E, the neighborhood configuration β of the current TriSoup edge E can be determined, for example, based on edges that belong only to the direction-independent spatial topology of the edge. TS One or more symbols to reduce or avoid dilution of dynamic OBUF statistics. The neighborhood configuration β of the current TriSoup edge E TS One or more symbols of can be based on the direction-independent spatial topology belonging only to the edges (e.g., Figure 15A 、 Figure 15B and Figure 15C This can facilitate faster convergence of the context-indexed OBUF LUT and more efficient compression of the vertex information of the current TriSoup edge E.

[0126] The encoder and / or decoder implementation may determine the neighborhood configuration β of the current TriSoup edge E based on edges that belong only to the direction-independent spatial topology of the edge. TS In this embodiment, the encoder and / or decoder may configure the neighborhood β TS Split into at least three bit sequences

[0127] β TS = (β ind , dir, β dep )

[0128] β ind is a neighborhood configuration β determined based on edges belonging only to the direction-independent spatial topology of the edges TSOne or more symbols, dir is the direction of the current edge, and β dep is a neighborhood configuration β determined based on at least one edge that is not available for coding the current TriSoup edge E independently of its direction TS One or more symbols of . One or more symbols β ind It can be based on the Figure 15A 、 Figure 15B and Figure 15C The edges of the subspace topology shown in β are determined. dep For example, based on Figure 14A 、 Figure 14B and Figure 14C The spatial topology of the edges shown in Figure 15A 、 Figure 15B and Figure 15C The direction dir may consist of two bits, for example: 00 for x, 01 for y, 10 for z, and 11 may not be used. The encoder and / or decoder may start writing information via a dynamic OBUF. The encoder and / or decoder may configure β, for example, by using neighborhoods that share the same statistics regardless of the direction of the current TriSoup edge E. TS The leftmost β ind To start encoding the information through the dynamic OBUF. This can help the dynamic OBUF converge faster in its early stages. Neighborhood configuration β TS More bits of can be left unmasked. Neighborhood configuration β TS More bits of dir may be unmasked, for example, during the evolution of the coding. For example, if two bits of dir are unmasked in the three directions of the current TriSoup edge E through the OBUF tree, the statistics can be distributed to take into account the bits that have been used to construct β dep The direction-dependent topology of the remaining neighborhood of .

[0129] For example, if the geometry of the point cloud is spatially isotropic at the scale of the spatial topology, the advantages of the orientation-independent spatial topology of the edges can be achieved. Sharing statistics between directions may not be desirable because the statistics may not depend on the direction at all. This condition can be met because the local (e.g., at the scale of the size of the TriSoup node) geometry of the point cloud can be roughly isotropic for reasonable TriSoup node sizes.

[0130] Figure 16A 、 Figure 16B and Figure 16CThe adjacent coded edges are shown. The adjacent coded edges can be taken from the spatial topology of the 9 edges of the current TriSoup edge E. The 9 edges of the spatial topology can be labeled from a to i. The current TriSoup edge E can be parallel to: x direction ( Figure 16A ), y direction ( Figure 16B ), or z direction ( Figure 16C ). Figure 16A 、 Figure 16B and Figure 16C The spatial topology of 9 edges shown in can be used as Figure 14A 、 Figure 14B and Figure 14C An alternative to the 18-edge spatial topology shown in . Figure 14A 、 Figure 14B and Figure 14C The spatial topology of the 18 edges shown in Figure 16A 、 Figure 16B and Figure 16C The 9-edge spatial topology shown in may be easier to compute, but provides less correlation and therefore worse compression performance.

[0131] The encoder and / or decoder can determine the neighborhood configuration β of the current TriSoup edge E TS One or more symbols of . The encoder and / or decoder may be based on Figure 16A 、 Figure 16B and Figure 16C The neighborhood configuration β of the current TriSoup edge E can be determined by one or more of the coded edges a to i shown in FIG. TS One or more symbols. Figure 16A 、 Figure 16B and Figure 16C The specific set of already coded edges a to i shown in can be used to code the current TriSoup edge E. Figure 16A 、 Figure 16B and Figure 16C The specific set of coded edges a to i shown in FIG4 that can be used to code the current TriSoup edge E can be determined, for example, based on the direction in which the current TriSoup edge E is parallel. Vertex information of one or more of the coded edges a to i can be used to determine the neighborhood configuration β of the current TriSoup edge E. TS One or more symbols. The encoder and / or decoder may select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may, for example, configure β based on the neighborhood TSThe encoder and / or decoder may select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a context ... TS The reduced configuration of a subset of symbols β TS ' = DR n (β TS ) and selects the context for encoding the vertex information of the current TriSoup edge E. The encoder and / or decoder can select the context based on the OBUF LUT, which configures the neighborhood β TS Or after reducing the configuration β TS 'Mapped to the index of the context. The encoder and / or decoder can entropy code (eg, arithmetic code) the vertex information of the current TriSoup edge E based on the context.

[0132] Figure 16A 、 Figure 16B and Figure 16C The spatial topology of the nine edges shown in may comprise a subspace topology of edges. Each edge of the subspace topology of edges may be available (eg, already coded) to code the current TriSoup edge E in a direction independent of the direction parallel to the current TriSoup edge E. Figure 17A 、 Figure 17B and Figure 17C An example of a subspace topology of a TriSoup edge is shown. The subspace topology of a TriSoup edge may include Figure 16A 、 Figure 16B and Figure 16C The five edges a, b, c, f, and g of the nine-edge spatial topology shown in FIG. Figure 17A 、 Figure 17B and Figure 17C It is shown that, for each of the three possible directions of the current TriSoup edge E, each of the five edges of the edge subspace topology can be used to encode the current TriSoup edge E. Figure 17A It is shown that, for example, if the current TriSoup edge E is parallel to the x-axis, each of the five edges of the edge subspace topology can be used to encode the current TriSoup edge E. Figure 17B Each of the five edges showing the subspace topology of the edge can be used to encode the current TriSoup edge E parallel to the y-axis. Figure 17C Each of the five edges showing the subspace topology of the edge can be used to encode the current TriSoup edge E parallel to the z-axis.

[0133] The encoder and / or decoder can determine the neighborhood configuration β of the current TriSoup edge E TS The encoder and / or decoder may be based on, for example, only one symbol belonging to Figure 17A 、 Figure 17B and Figure 17C The subspace topology of the edge shown in can be used to determine the neighborhood configuration β of the current TriSoup edge E independently of the edges encoding the current TriSoup edge E in their direction (e.g., independent of the direction in which the current TriSoup edge E is parallel). TS One or more symbols. The encoder and / or decoder may select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may, for example, configure β based on the neighborhood TS The encoder and / or decoder may select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a context ... TS The reduced configuration of a subset of symbols β TS ' = DR n (β TS ) and selects the context for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder can select the context based on the OBUF LUT, which configures the neighborhood β TS Or after reducing the configuration β TS 'Mapped to the index of the context. The encoder and / or decoder can entropy code (eg, arithmetic code) the vertex information of the current TriSoup edge E based on the context.

[0134] Figure 18A 、 Figure 18B and Figure 18C A spatial topology including TriSoup edges and TriSoup nodes is shown. The spatial topology may be a direction-independent spatial topology consisting of a combination of TriSoup edges and TriSoup nodes. Figure 18A 、 Figure 18B and Figure 18C Show the Figure 17A 、 Figure 17B and Figure 17C Four TriSoup nodes, labeled A, B, C, and D, that intersect the end points of the current TriSoup edge E have been added. For clarity of the drawing, these four nodes are not drawn to scale. These four nodes may correspond to Figure 10BNodes 1020 to 1023 in the neighborhood. Four nodes have been labeled for each direction in order to obtain the direction independence of the topology of the space consisting of five edges a, b, c, f, g and four nodes A to D. By doing so, the neighborhood configuration β TS One or more symbols can be constructed from a direction-independent spatial topology consisting of a combination of edges and nodes.

[0135] Figure 19 An example method for coding the vertex information of the current edge is shown. More specifically, Figure 19 Flowchart 1900 shows example method steps for coding vertex information for a current edge. The example method or one or more operations of the method may be performed by one or more computing devices or entities. One or more steps of the example flowchart 1900 may be performed by a coder (e.g., an encoder, such as Figure 1 The encoder 114 shown in FIG, or the decoder, such as Figure 1 The method or one or more steps thereof may be embodied in computer-executable instructions stored on a computer-readable medium, such as a non-transitory computer-readable medium. The steps in flowchart 1900 need not all be performed in the order specified and may be performed in any order. One or more steps in this example flowchart may be omitted.

[0136] At step 1902, a coder (e.g., an encoder or decoder) may determine one or more symbols of a neighborhood configuration for a current edge. The coder (e.g., an encoder or decoder) may determine the one or more symbols of the neighborhood configuration for the current edge based on, for example, vertex information of at least one edge that does not intersect (e.g., fails to intersect) the start point of the current edge. Edges may be oriented from their start point to their end point according to the orientation of one of three axes in a 3D space to which they are parallel.

[0137] The current edge may be an edge of a cuboid that includes a portion of the point cloud. At least one edge that does not intersect (e.g., fails to intersect) the starting point of the current edge may belong to the same cuboid as the current edge. At least one edge that does not intersect (e.g., fails to intersect) the starting point of the current edge may belong to the same cuboid as the current edge and may be parallel to the current edge. At least one edge that does not intersect (e.g., fails to intersect) the starting point of the current edge may belong to the same cuboid as the current edge and may intersect with the end point of the current edge.

[0138] The code writer may determine one or more symbols of the neighborhood configuration. The code writer may determine one or more symbols of the neighborhood configuration, for example, based on one or more vertex presence flags of at least one edge. The code writer may determine one or more symbols of the neighborhood configuration, for example, based on one or more vertex positions of at least one edge.

[0139] The vertex information of the current edge may include a vertex existence flag of the current edge. The vertex information of the current edge may include a vertex position of the current edge.

[0140] At step 1904, the coder may select a context for coding the vertex information of the current edge. The coder may select a context for coding the vertex information of the current edge based on, for example, a neighborhood configuration.

[0141] The coder may select a context (e.g., a probability model) for coding the vertex information of the current edge. The coder may select the context (e.g., a probability model) for coding the vertex information of the current edge based on, for example, a lookup table (e.g., an OBUF lookup table) that maps neighborhood configurations to contexts (e.g., a probability model).

[0142] The coder can select a context (e.g., a probability model) for coding the vertex information of the current edge. The coder can select the context (e.g., a probability model) for coding the vertex information of the current edge based on, for example, a lookup table that maps only a subset of the symbols of the neighborhood configuration to the context (e.g., a probability model). The subset of the symbols of the neighborhood configuration can be determined, for example, by using an OBUF dynamic reduction function relative to the symbols of the neighborhood configuration. The number (e.g., quantity) of symbols in the subset can be increased. The number (e.g., quantity) of symbols in the subset can be increased, for example, based on the number of coded edges (e.g., quantity) and the neighborhood information including the same subset of symbols. The coder (e.g., an encoder or decoder) can update the lookup table to map the subset of the symbols of the neighborhood configuration to a different context (e.g., a probability model). The coder (e.g., an encoder or decoder) can update the lookup table to map the subset of the symbols of the neighborhood configuration to a different context (e.g., a probability model) based on, for example, the vertex information of the current edge.

[0143] At step 1906, a coder (e.g., an encoder or a decoder) may perform entropy coding (e.g., arithmetic coding) on ​​the vertex information of the current edge. The coder (e.g., an encoder or a decoder) may perform entropy coding (e.g., arithmetic coding) on ​​the vertex information of the current edge, for example, based on the context.

[0144] Figure 20 An example method for coding the vertex information of the current edge is shown. More specifically, Figure 20 Flowchart 2000 shows example method steps for coding vertex information of a current edge. One or more steps of example flowchart 200 may be performed by a coder (e.g., an encoder, such as Figure 1 The encoder 114 shown in FIG, or the decoder, such as Figure 1 The method or one or more steps thereof may be embodied in computer-executable instructions stored on a computer-readable medium, such as a non-transitory computer-readable medium. The steps in flowchart 2000 need not all be performed in the order specified and may be performed in any order. One or more steps in this flowchart may be omitted.

[0145] At step 2002, a coder (e.g., an encoder or decoder) may determine one or more symbols of a neighborhood configuration for a current edge. The coder (e.g., an encoder or decoder) may determine the one or more symbols of the neighborhood configuration for the current edge based on, for example, vertex information belonging only to edges in the spatial topology of edges. Each edge in the spatial topology of edges may be used to code the current edge independently of its direction.

[0146] The current edge may be an edge of a cuboid that includes a portion of the point cloud. The edges belonging to the spatial topology of the edge may include at least one edge that does not intersect (e.g., fails to intersect) with the starting point of the current edge. The edges may be oriented from the starting point to the end point following the orientation of one of the three axes of the 3D space to which they are parallel. At least one edge that does not intersect (e.g., fails to intersect) with the starting point of the current edge may belong to the same cuboid as the current edge. At least one edge that does not intersect (e.g., fails to intersect) with the starting point of the current edge may belong to the same cuboid as the current edge and may be parallel to the current edge. At least one edge that does not intersect (e.g., fails to intersect) with the starting point of the current edge may belong to the same cuboid as the current edge and may intersect with the end point of the current edge.

[0147] One of a plurality of different configurations of the spatial topology of the edge can be selected to determine one or more symbols of the neighborhood information. One of a plurality of different configurations of the spatial topology of the edge can be selected to determine one or more symbols of the neighborhood information, for example, based on the direction of the current edge. The plurality of different configurations can include different rotations and / or mirrored configurations of the spatial topology of the edge.

[0148] A coder (e.g., an encoder or decoder) may determine one or more symbols of a neighborhood configuration. The coder (e.g., an encoder or decoder) may determine one or more symbols of a neighborhood configuration based on, for example, one or more vertex presence flags of an edge belonging only to a spatial topology of edges. The coder may determine one or more symbols of a neighborhood configuration based on, for example, one or more vertex positions of an edge belonging only to a spatial topology of edges.

[0149] The vertex information of the current edge may include a vertex existence flag of the current edge. The vertex information of the current edge may include a vertex position of the current edge.

[0150] At step 2004, a coder (e.g., an encoder or decoder) may select a context for coding vertex information for a current edge. The coder (e.g., an encoder or decoder) may select the context for coding vertex information for the current edge based on, for example, a neighborhood configuration. The coder may select the context for coding vertex information for the current edge (e.g., a probability model) based on, for example, a lookup table (e.g., an OBUF lookup table) that maps neighborhood configuration to context (e.g., a probability model).

[0151] The coder may select a context (e.g., a probability model) for coding the vertex information of the current edge based on, for example, a lookup table that maps only a subset of the symbols of the neighborhood configuration to the context (e.g., a probability model). The subset of the symbols of the neighborhood configuration may be determined, for example, by using an OBUF dynamic reduction function for the symbols of the neighborhood configuration. The number (e.g., quantity) of symbols in the subset may be increased, for example, based on the number (e.g., quantity) of coded edges and the neighborhood information including the same subset of symbols. The coder (e.g., an encoder or decoder) may update the lookup table to map the subset of the symbols of the neighborhood configuration to a different context (e.g., a probability model). The coder (e.g., an encoder or decoder) may update the lookup table to map the subset of the symbols of the neighborhood configuration to a different context (e.g., a probability model), for example, based on the vertex information of the current edge.

[0152] At step 2006, a coder (e.g., an encoder or a decoder) may perform entropy coding (e.g., arithmetic coding) on ​​the vertex information of the current edge. The coder (e.g., an encoder or a decoder) may perform entropy coding (e.g., arithmetic coding) on ​​the vertex information of the current edge, for example, based on the context.

[0153] Figure 21 An example computer system is shown in which examples of the present disclosure may be implemented. For example, Figure 21The example computer system 2100 shown in FIG. 2 can implement one or more of the methods described herein. For example, various apparatuses and / or systems described herein (e.g., in FIG. 2 ) can implement one or more of the methods described herein. Figure 1 、 2 and 3) can be implemented in the form of one or more computer systems 2100. In addition, each of the steps of the flowcharts depicted in the present disclosure can be implemented on one or more computer systems 2100.

[0154] Computer system 2100 may include one or more processors, such as processor 2104. Processor 2104 may be a special-purpose processor, a general-purpose processor, a microprocessor, and / or a digital signal processor. Processor 2104 may be connected to a communication infrastructure 2102 (e.g., a bus or network). Computer system 2100 may also include main memory 2106 (e.g., random access memory (RAM)) and / or secondary memory 2108.

[0155] Secondary storage 2108 may include a hard drive 2110 and / or a removable storage drive 2112 (e.g., a tape drive, an optical drive, etc.). Removable storage drive 2112 may read from and / or write to a removable storage unit 2116. Removable storage unit 2116 may include a magnetic tape, an optical disk, etc. Removable storage unit 2116 may be read from and / or written to by removable storage drive 2112. Removable storage unit 2116 may include a computer-usable storage medium having computer software and / or data stored therein.

[0156] The secondary memory 2108 may include other similar components for allowing computer programs or other instructions to be loaded into the computer system 2100. Such components may include a removable storage unit 2118 and / or an interface 2114. Examples of such components may include a program cartridge and / or cartridge interface (e.g., in a video game device) that may allow software and / or data to be transferred from the removable storage unit 2118 to the computer system 2100, a removable memory chip (e.g., an erasable programmable read-only memory (EPROM) or a programmable read-only memory (PROM)) and associated socket, a pen drive and universal serial bus (USB) port, and / or other removable storage unit 2118 and interface 2114.

[0157] Computer system 2100 may include a communication interface 2120. Communication interface 2120 may allow software and data to be transferred between computer system 2100 and external devices. Examples of communication interface 2120 may include a modem, a network interface (e.g., an Ethernet card), a communication port, etc. Software and / or data transferred via communication interface 2120 may be in the form of signals, which may be electronic, electromagnetic, optical, and / or other signals capable of being received by communication interface 2120. The signals may be provided to communication interface 2120 via communication path 2122. Communication path 2122 may carry signals and may be implemented using wire or cable, optical fiber, a telephone line, a cellular phone link, a radio frequency (RF) link, and / or other communication channels.

[0158] Computer system 2100 may include one or more sensors 2124. Sensors 2124 may measure and / or detect one or more physical quantities. Sensors 2124 may convert the measured or detected physical quantities into electrical signals in digital and / or analog form. For example, sensor 2124 may include an eye-tracking sensor to track the user's eye movements. Based on the user's eye movements, the display of the point cloud may be updated. In another example, sensor 2124 may include a head-tracking sensor (e.g., a gyroscope) to track the user's head movements. Based on the user's head movements, the display of the point cloud may be updated. In yet another example, sensor 2124 may include a camera sensor for taking photos and / or a 3D scanning device (e.g., a laser scanner, a structured light scanner, and / or a modulated light scanner). The 3D scanning device may obtain geometric information by moving one or more laser heads, structured light cameras, and / or modulated light cameras relative to the object or scene being scanned. This geometric information may be used to construct a point cloud.

[0159] Computer program media and / or computer-readable media may be used to refer to tangible (e.g., non-transitory) storage media, such as removable storage units 2116 and 2118 or a hard disk installed in hard drive 2110. These computer program products may be means for providing software to computer system 2100. Computer programs (also known as computer control logic) may be stored in primary memory 2106 and / or secondary memory 2108. The computer programs may be received via communication interface 2120. Such computer programs, when executed, may enable computer system 2100 to implement one or more example embodiments of the present disclosure as discussed herein. Specifically, when executed, the computer programs may enable processor 2104 to implement the processes of the present disclosure, such as any of the methods described herein. Thus, such computer programs may represent controllers of computer system 2100.

[0160] Figure 2214. Example elements of a computing device that can be used to implement any of the various devices described herein are shown, including, for example, a source device (e.g., 102), an encoder (e.g., 114), a destination device (e.g., 106), a decoder (e.g., 120), and / or any computing device described herein. Computing device 2230 may include one or more processors 2231 that can execute instructions stored in random access memory (RAM) 2233, removable media 2234 (e.g., a universal serial bus (USB) drive, a compact disc (CD) or digital versatile disc (DVD), or a floppy disk drive), or any other desired storage medium. Instructions may also be stored in an attached (or internal) hard drive 2235. Computing device 2230 may also include a security processor (not shown) that can execute instructions from one or more computer programs to monitor processes executing on processor 2231 and any processes requesting access to any hardware and / or software components of computing device 2230 (e.g., ROM 2232, RAM 2233, removable media 2234, hard drive 2235, device controller 2237, network interface 2239, GPS 2241, Bluetooth interface 2242, WiFi interface 2243, etc.). Computing device 2230 may include one or more output devices, such as a display 2236 (e.g., a screen, display device, monitor, television, etc.), and one or more output device controllers 2237, such as a video processor. One or more user input devices 2238 may also be present, such as a remote control, keyboard, mouse, touch screen, microphone, etc. Computing device 2230 may also include one or more network interfaces, such as network interface 2239, which may be wired, wireless, or a combination of both. Network interface 2239 can provide an interface for computing device 2230 to communicate with network 2240 (e.g., a RAN or any other network). Network interface 2239 can include a modem (e.g., a cable modem), and external network 2240 can include a communication link, an external network, a home network, a provider's wireless, coaxial cable, fiber optic, or hybrid fiber / coaxial cable distribution system (e.g., a DOCSIS network), or any other desired network. Additionally, computing device 2230 can include a location detection device, such as a global positioning system (GPS) microprocessor 2241, which can be configured to receive and process global positioning signals and determine the geographic location of computing device 2230, possibly with assistance from an external server and antenna.

[0161] Figure 22The examples in the figure may be hardware configurations, but the components shown may also be implemented as software. Modifications may be made to add, remove, combine, divide, etc., the components of the computing device 2230 as needed. In addition, the components may be implemented using basic computing devices and components, and any other computing devices and components described herein may be implemented using the same components (e.g., processor 2231, ROM storage device 2232, display 2236, etc.). For example, the various components described herein may be implemented using a computing device having components such as a processor that executes computer-executable instructions stored on a computer-readable medium, such as a processor. Figure 22 Some or all of the entities described herein may be software-based and may coexist on a common physical platform (e.g., a requesting entity may be a separate software process and program from a related entity, both of which may be executed as software on a common computing device).

[0162] In the following, various features will be highlighted in a group of numbered clauses or paragraphs. These features should not be interpreted as limitations on the present invention or inventive concept, but simply as a highlight of certain features described herein, without implying a particular order of importance or relevance of such features.

[0163] Clause 1. A method comprising determining one or more symbols of a neighborhood configuration of a current edge based on vertex information of a spatial topology of the edge.

[0164] Clause 2. The method of clause 1, wherein each edge of the spatial topology of edges is usable to code the current edge independently of the direction of the current edge.

[0165] Clause 3. The method of any one of clauses 1 to 2, further comprising determining a probability model based on the one or more symbols of the neighborhood configuration.

[0166] Clause 4. The method of any one of clauses 1 to 3, further comprising entropy coding vertex information of the current edge based on the determined probability model.

[0167] Clause 5. The method of any one of clauses 1 to 4, wherein said determining the one or more signs of the neighborhood configuration comprises selecting one of a plurality of different configurations of the spatial topology of the edge based on the direction of the current edge.

[0168] Clause 6. The method of clause 5, wherein the plurality of different configurations comprises rotated configurations of the spatial topology of the edge.

[0169] Clause 7. The method of any one of clauses 5 to 6, wherein the plurality of different configurations comprises mirror image configurations of the spatial topology of the edge.

[0170] Clause 8. A method according to any one of clauses 1 to 7, wherein the determining the one or more symbols of the neighborhood configuration comprises determining the one or more symbols of the neighborhood configuration based on one or more vertex existence flags associated with the spatial topology of the edge.

[0171] Clause 9. The method of any one of clauses 1 to 8, wherein said determining the one or more symbols of the neighborhood configuration comprises determining the one or more symbols of the neighborhood configuration based on one or more vertex positions associated with a spatial topology of the edge.

[0172] Clause 10. The method of any one of clauses 1 to 9, wherein the vertex information of the current edge comprises a vertex presence flag associated with the current edge.

[0173] Clause 11. The method of any one of clauses 1 to 10, wherein the vertex information of the current edge comprises vertex positions associated with the current edge.

[0174] Clause 12. The method of any one of clauses 1 to 11, wherein the determining the probability model comprises determining the probability model based on a lookup table that maps the neighborhood configuration to the probability model.

[0175] Clause 13. The method of any one of clauses 1 to 12, wherein said determining the probability model comprises determining the probability model based on a lookup table that maps a subset of the one or more symbols of the neighborhood configuration to the probability model.

[0176] Clause 14. The method of any of clauses 12 to 13, further comprising increasing the number of symbols in the subset based on the number of coded edges and neighborhood information including the symbols in the subset.

[0177] Clause 15. The method of any one of clauses 12 to 14, further comprising updating the lookup table to map the subset to a different probability model based on the vertex information of the current edge.

[0178] Clause 16. The method of any one of clauses 1 to 15, wherein the spatial topology of the edges comprises edges that do not intersect the starting point of the current edge.

[0179] Clause 17. The method of any one of clauses 1 to 16, wherein the spatial topology of the edges comprises edges that belong to the same cuboid as the current edge.

[0180] Clause 18. The method of any one of clauses 1 to 17, wherein the spatial topology of edges includes edges parallel to the current edge.

[0181] Clause 19. The method of any one of clauses 1 to 16, wherein the spatial topology of the edges comprises an edge that is perpendicular to the current edge and intersects an end point of the current edge.

[0182] Clause 20. The method of any one of clauses 1 to 19, wherein the neighborhood configuration further comprises: a second set of one or more symbols indicating the direction of the current edge.

[0183] Clause 21. A method according to any one of clauses 1 to 20, wherein the neighborhood configuration further comprises: a third set of one or more symbols determined based on at least one edge that is not available for coding the current edge independently of the direction of the current edge.

[0184] Clause 22. The method of any one of clauses 1 to 21, wherein the current edge belongs to a cuboid comprising at least one point of a point cloud.

[0185] Clause 23. A computing device comprising one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the method of any one of clauses 1 to 22.

[0186] Clause 24. A system comprising: a first computing device configured to perform the method of any one of clauses 1 to 22; and a second computing device configured to decode the entropy coded vertex information of the current edge.

[0187] Clause 25. A computer-readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 1 to 22.

[0188] Clause 26. A method comprising determining one or more symbols of a neighborhood configuration of a current edge based on vertex information of at least one edge that fails to intersect a start point of the current edge.

[0189] Clause 27. The method of clause 26, further comprising determining a probability model based on the one or more symbols of the neighborhood configuration.

[0190] Clause 28. The method of any one of clauses 26 to 27, further comprising entropy coding vertex information of the current edge based on the determined probability model.

[0191] Clause 29. The method of any one of clauses 26 to 28, wherein the at least one edge comprises an edge belonging to the same cuboid as the current edge.

[0192] Clause 30. The method of any one of clauses 26 to 29, wherein the at least one edge comprises an edge parallel to the current edge.

[0193] Clause 31. The method of any one of clauses 26 to 30, wherein the at least one edge comprises an edge that is perpendicular to the current edge and intersects an end point of the current edge.

[0194] Clause 32. The method of any one of clauses 26 to 31, wherein the vertex information of the current edge comprises: a first vertex existence flag associated with the current edge.

[0195] Clause 33. The method of any one of clauses 26 to 32, wherein the vertex information of the current edge comprises: a first vertex position associated with the current edge.

[0196] Clause 34. A method according to any one of clauses 26 to 33, wherein said determining the one or more symbols of the neighborhood configuration comprises determining the one or more symbols of the neighborhood configuration based on a second vertex existence flag associated with the at least one edge.

[0197] Clause 35. The method of any one of clauses 26 to 34, wherein said determining the one or more symbols of the neighborhood configuration comprises determining the one or more symbols of the neighborhood configuration based on a second vertex position associated with the at least one edge.

[0198] Clause 36. The method of any one of clauses 26 to 35, wherein said determining the probability model comprises determining the probability model based on a lookup table mapping the neighborhood configuration to the probability model.

[0199] Clause 37. The method of any one of clauses 26 to 36, wherein said determining the probability model comprises determining the probability model based on a lookup table that maps a subset of the one or more symbols of the neighborhood configuration to the probability model.

[0200] Clause 38. The method of any one of clauses 36 to 37, further comprising increasing the number of symbols in the subset based on the number of coded edges and neighborhood information including the symbols in the subset.

[0201] Clause 39. The method of any one of clauses 36 to 38, further comprising updating the lookup table to map the subset to a different probability model based on the vertex information of the current edge.

[0202] Clause 40. The method of any one of clauses 26 to 39, wherein the current edge belongs to a cuboid comprising at least one point of a point cloud.

[0203] Clause 41. A computing device comprising one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the method of any one of clauses 26 to 40.

[0204] Clause 42. A system comprising: a first computing device configured to perform the method of any one of clauses 26 to 40; and a second computing device configured to decode the entropy coded vertex information of the current edge.

[0205] Clause 43. A computer-readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 26 to 40.

[0206] Clause 44. A method comprising determining one or more symbols of a neighborhood configuration of a current edge based on vertex information of a subset of a spatial topology of the edge.

[0207] Clause 45. The method of clause 44, further comprising determining a probability model based on the one or more symbols of the neighborhood configuration.

[0208] Clause 46. The method of any one of clauses 44 to 45, further comprising entropy coding vertex information of the current edge based on the determined probability model.

[0209] Clause 47. The method of any one of clauses 44 to 46, wherein the spatial topology of edges comprises a first edge parallel to the current edge.

[0210] Clause 48. The method of clause 47, wherein the end point of the first edge coincides with the start point of the current edge.

[0211] Clause 49. The method of any one of clauses 44 to 48, wherein the spatial topology of the edges comprises a second edge perpendicular to the current edge.

[0212] Clause 50. The method of clause 49, wherein the starting point of the second edge coincides with the starting point of the current edge.

[0213] Clause 51. The method of any one of clauses 44 to 50, wherein the spatial topology of the edges comprises a third edge perpendicular to the current edge.

[0214] Clause 52. The method of clause 51, wherein the end point of the third edge coincides with the start point of the current edge.

[0215] Clause 53. The method of any one of clauses 44 to 52, wherein the spatial topology of the edges comprises a fourth edge that is parallel to the current edge and belongs to a first cuboid that includes the current edge.

[0216] Clause 54. The method of any one of clauses 44 to 53, wherein the spatial topology of the edges includes a fifth edge that is perpendicular to the current edge and intersects an end point of the current edge.

[0217] Clause 55. The method of any one of clauses 44 to 54, wherein the spatial topology of the edges comprises a sixth edge belonging to a second cuboid comprising the current edge.

[0218] Clause 56. The method of clause 55, wherein the sixth edge belongs to a first plane perpendicular to the current edge.

[0219] Clause 57. The method of any one of clauses 55 to 56, wherein the first plane comprises the starting point of the current edge.

[0220] Clause 58. The method of any one of clauses 44 to 57, wherein the spatial topology of the edges comprises a seventh edge belonging to a third cuboid comprising the current edge.

[0221] Clause 59. The method of clause 58, wherein the seventh edge belongs to a second plane perpendicular to the current edge.

[0222] Clause 60. The method of any one of clauses 58 to 59, wherein the second plane comprises the endpoint of the current edge.

[0223] Clause 61. A computing device comprising one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the method of any one of clauses 44 to 60.

[0224] Clause 62. A system comprising: a first computing device configured to perform the method of any one of clauses 44 to 60; and a second computing device configured to decode the entropy-coded vertex information of the current edge.

[0225] Clause 63. A computer-readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 44 to 60.

[0226] Clause 64. A method comprising determining one or more symbols of a neighborhood configuration of a current edge based on vertex information of edges belonging only to a spatial topology of the edges.

[0227] Clause 65. The method of clause 64, wherein each edge of the spatial topology of edges is operable to code the current edge independently of the direction of the current edge.

[0228] Clause 66. The method of any one of clauses 64 to 65, further comprising selecting a context / probability model for coding vertex information of the current edge based on the neighborhood configuration.

[0229] Clause 67. The method of any one of clauses 64 to 66, further comprising entropy coding the vertex information of the current edge based on the context / probability model.

[0230] Clause 68. The method of any one of clauses 64 to 67, wherein one of a plurality of different configurations of the spatial topology of the edge is selected based on the direction of the current edge to determine the one or more signs of the neighborhood information.

[0231] Clause 69. The method of clause 68, wherein the plurality of different configurations comprises different rotational and / or mirrored configurations of the spatial topology of the edge.

[0232] Clause 70. The method of any one of clauses 64 to 69, wherein the determining further comprises determining the one or more symbols of the neighborhood configuration based on one or more vertex presence flags of the edge belonging only to the spatial topology of the edge.

[0233] Clause 71. The method of any one of clauses 64 to 70, wherein the determining further comprises determining the one or more symbols of the neighborhood configuration based on one or more vertex positions of the edge belonging only to the spatial topology of the edge.

[0234] Clause 72. The method according to any one of clauses 64 to 71, wherein the vertex information of the current edge includes a vertex existence flag of the current edge.

[0235] Clause 73. The method of any one of clauses 64 to 72, wherein the vertex information of the current edge comprises vertex positions of the current edge.

[0236] Clause 74. A method according to any one of clauses 64 to 73, wherein the selecting further comprises selecting the context / probability model for encoding the vertex information of the current edge based on a lookup table that maps the neighborhood configuration to the context / probability model.

[0237] Clause 75. A method according to any one of clauses 64 to 74, wherein the selection further comprises selecting the context / probability model for encoding the vertex information of the current edge based on a lookup table that maps only a subset of the symbols of the neighborhood configuration to the context / probability model.

[0238] Clause 76. The method of clause 75, wherein the number of symbols in the subset is increased based on the number of coded edges and neighborhood information comprising the same subset of symbols.

[0239] Clause 77. The method of any one of clauses 75 to 76, further comprising updating the lookup table based on the vertex information of the current edge to map the subset of symbols of the neighborhood configuration to a different context / probability model.

[0240] Clause 78. The method of any one of clauses 64 to 77, wherein the edges belonging only to the spatial topology of edges include at least one edge that does not intersect the starting point of the current edge.

[0241] Clause 79. The method of clause 78, wherein the at least one edge further belongs to the same cuboid as the current edge.

[0242] Clause 80. The method of clause 79, wherein the at least one edge is further parallel to the current edge.

[0243] Clause 81. The method of any one of clauses 79 to 80, wherein the at least one edge is further perpendicular to the current edge and intersects an end point of the current edge.

[0244] Clause 82. The method of any one of clauses 64 to 81, wherein the neighborhood configuration further comprises a second set of one or more symbols indicating the direction of the current edge.

[0245] Clause 83. A method according to any one of clauses 64 to 82, wherein the neighborhood configuration further comprises a third set of one or more symbols determined based on at least one edge that is not available for coding the current edge independently of the direction of the current edge.

[0246] Clause 84. A method according to any one of clauses 64 to 83, wherein the current edge belongs to a cuboid comprising a portion of a point cloud.

[0247] Clause 85. A computing device comprising one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the method of any one of clauses 64 to 84.

[0248] Clause 86. A system comprising: a first computing device configured to perform the method of any one of clauses 64 to 84; and a second computing device configured to decode the entropy-coded vertex information of the current edge.

[0249] Clause 87. A computer-readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 64 to 84.

[0250] A computing device may perform a method including multiple operations. Based on vertex information of an edge's spatial topology, one or more symbols of a neighborhood configuration of a current edge may be determined. Each edge of the edge's spatial topology may be used to code the current edge independently of its direction. Based on the one or more symbols of the neighborhood configuration, a probability model may be determined. Based on the determined probability model, entropy coding may be performed on the vertex information of the current edge. Determining the one or more symbols of the neighborhood configuration may include selecting one of a plurality of different configurations of the edge's spatial topology based on the direction of the current edge. The plurality of different configurations may include rotated configurations of the edge's spatial topology. The plurality of different configurations may include rotated configurations of the edge's spatial topology and mirrored configurations of the edge's spatial topology. Determining the one or more symbols of the neighborhood configuration may include determining the one or more symbols of the neighborhood configuration based on one or more vertex presence flags associated with the edge's spatial topology. Determining the one or more symbols of the neighborhood configuration may include determining the one or more symbols of the neighborhood configuration based on one or more vertex positions associated with the edge's spatial topology. The vertex information of the current edge may include the vertex presence flag associated with the current edge. The vertex information of the current edge may include the vertex position associated with the current edge. Determining the probability model may include determining the probability model based on a lookup table that maps a neighborhood configuration to a probability model. Determining the probability model may include determining the probability model based on a lookup table that maps a subset of one or more symbols of the neighborhood configuration to the probability model. The number of symbols in the subset may be increased based on the number of coded edges and neighborhood information, the neighborhood information including the symbols in the subset. Based on vertex information of the current edge, the lookup table may be updated to map the subset to a different probability model. The spatial topology of the edge may include edges that do not intersect the starting point of the current edge. The spatial topology of the edge may include edges that belong to the same cuboid as the current edge. The spatial topology of the edge may include edges that are parallel to the current edge. The spatial topology of the edge may include edges that are perpendicular to the current edge and intersect the end point of the current edge. The neighborhood configuration may further include a second set of one or more symbols indicating a direction of the current edge. The neighborhood configuration may further include a third set of one or more symbols determined based on at least one edge that is not available for coding the current edge independently of its direction. The current edge may belong to a cuboid that includes at least one point of the point cloud. The computing device may include one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the described methods, additional operations, and / or include additional elements. The system may include: a first computing device configured to perform the described methods, additional operations, and / or include additional elements; and a second computing device configured to decode the entropy-coded vertex information of the current edge.The computer-readable medium may store instructions that, when executed, cause the described methods to be performed, additional operations, and / or additional elements to be included.

[0251] A computing device may perform a method comprising multiple operations. Based on vertex information of at least one edge that fails to intersect the starting point of a current edge, one or more symbols of a neighborhood configuration of the current edge may be determined. Based on the one or more symbols of the neighborhood configuration, a probability model may be determined. Based on the determined probability model, entropy coding may be performed on the vertex information of the current edge. At least one edge may include an edge belonging to the same cuboid as the current edge. At least one edge may include an edge parallel to the current edge. At least one edge may include an edge perpendicular to the current edge and intersecting the end point of the current edge. The vertex information of the current edge may include a first vertex presence flag associated with the current edge. The vertex information of the current edge may include a first vertex position associated with the current edge. Determining the one or more symbols of the neighborhood configuration may include determining the one or more symbols of the neighborhood configuration based on a second vertex presence flag associated with the at least one edge. Determining the one or more symbols of the neighborhood configuration may include determining the one or more symbols of the neighborhood configuration based on a second vertex position associated with the at least one edge. Determining the probability model may include determining the probability model based on a lookup table that maps neighborhood configurations to probability models. Determining the probability model may include determining the probability model based on a lookup table that maps a subset of one or more symbols of the neighborhood configuration to the probability model. The number of symbols in the subset may be increased based on the number of coded edges and neighborhood information, the neighborhood information including the symbols in the subset. Based on vertex information of the current edge, the lookup table may be updated to map the subset to a different probability model. The current edge may belong to a cuboid that includes at least one point of the point cloud. The computing device may include one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the described method, additional operations, and / or include additional elements. The system may include: a first computing device configured to perform the described method, additional operations, and / or include additional elements; and a second computing device configured to decode the entropy coded vertex information of the current edge. A computer-readable medium may store instructions that, when executed, cause the described method, additional operations, and / or include additional elements.

[0252] A computing device may perform a method including multiple operations. Based on vertex information of a subset of the spatial topology of an edge, one or more symbols of a neighborhood configuration of a current edge may be determined. Based on the one or more symbols of the neighborhood configuration, a probability model may be determined. Based on the determined probability model, entropy coding may be performed on the vertex information of the current edge. The spatial topology of the edge may include a first edge parallel to the current edge. The endpoint of the first edge may coincide with the starting point of the current edge. The spatial topology of the edge may include a second edge perpendicular to the current edge. The starting point of the second edge may coincide with the starting point of the current edge. The spatial topology of the edge may include a third edge perpendicular to the current edge. The endpoint of the third edge may coincide with the starting point of the current edge. The spatial topology of the edge may include a fourth edge parallel to the current edge and belonging to a first cuboid including the current edge. The spatial topology of the edge may include a fifth edge perpendicular to the current edge and intersecting with the endpoint of the current edge. The spatial topology of the edge may include a sixth edge belonging to a second cuboid including the current edge. The sixth edge may belong to a first plane perpendicular to the current edge. The first plane may include the starting point of the current edge. The spatial topology of the edge may include a seventh edge belonging to a third cuboid including the current edge. The seventh edge may belong to a second plane that is perpendicular to the current edge. The second plane may include the end point of the current edge. The computing device may include one or more processors and a memory, wherein the memory stores instructions that, when executed by the one or more processors, cause the computing device to perform the described method, additional operations, and / or include additional elements. The system may include: a first computing device configured to perform the described method, additional operations, and / or include additional elements; and a second computing device configured to decode the entropy-coded vertex information of the current edge. A computer-readable medium may store instructions that, when executed, cause the described method, additional operations, and / or include additional elements.

[0253] A computing device may perform a method including multiple operations. One or more symbols of a neighborhood configuration of a current edge may be determined based on vertex information of edges belonging only to a spatial topology of the edge. Each edge of the spatial topology of the edge may be used to code the current edge independently of the direction of the current edge. A context / probability model for coding the vertex information of the current edge may be selected based on the neighborhood configuration. The vertex information of the current edge may be entropy coded based on the context / probability model. One of multiple different configurations of the spatial topology of the edge may be selected based on the direction of the current edge to determine the one or more symbols of the neighborhood information. The multiple different configurations may include different rotational and / or mirrored configurations of the spatial topology of the edge. The determination may further include determining the one or more symbols of the neighborhood configuration based on one or more vertex presence flags of edges belonging only to the spatial topology of the edge. The determination may further include determining the one or more symbols of the neighborhood configuration based on one or more vertex positions of edges belonging only to the spatial topology of the edge. The vertex information of the current edge may include the vertex presence flag of the current edge. The vertex information of the current edge may include the vertex position of the current edge. The selection may further include selecting a context / probability model for coding the vertex information of the current edge based on a lookup table that maps the neighborhood configuration to the context / probability model. The selection may further include selecting a context / probability model for coding the vertex information of the current edge based on a lookup table that maps only a subset of the symbols of the neighborhood configuration to the context / probability model. The number of symbols in the subset may increase based on the number of coded edges and the neighborhood information including the same subset of symbols. The lookup table may be updated based on the vertex information of the current edge to map the subset of the symbols of the neighborhood configuration to different context / probability models. The edges that belong only to the spatial topology of the edge may include at least one edge that does not intersect with the starting point of the current edge. The at least one edge may further belong to the same cuboid as the current edge. The at least one edge may further be parallel to the current edge. The at least one edge may further be perpendicular to the current edge and intersect with the end point of the current edge. The neighborhood configuration may further include a second set of one or more symbols indicating the direction of the current edge. The neighborhood configuration may further include a third set of one or more symbols determined based on at least one edge that is unavailable for coding the current edge independently of the direction of the current edge. The current edge may belong to a cuboid that includes a portion of the point cloud. The system may include: a first computing device configured to perform the described method, additional operations, and / or include additional elements; and a second computing device configured to decode the entropy-coded vertex information of the current edge. The computer-readable medium may store instructions that, when executed, cause the described method, additional operations, and / or the inclusion of additional elements to be performed.

[0254] A computing device may perform a method comprising multiple operations. One or more symbols of a neighborhood configuration for a current edge may be determined based on vertex information of at least one edge that does not intersect the starting point of the current edge. A context / probability model for coding the vertex information of the current edge may be selected based on the neighborhood configuration. The vertex information of the current edge may be entropy coded based on the context / probability model. The at least one edge may further belong to the same cuboid as the current edge. The at least one edge may further be parallel to the current edge. The at least one edge may further be perpendicular to the current edge and intersect the end point of the current edge. The determining may further include determining the one or more symbols of the neighborhood configuration based on one or more vertex presence flags of the at least one edge. The determining may further include determining the one or more symbols of the neighborhood configuration based on one or more vertex positions of the at least one edge. The vertex information of the current edge may include the vertex presence flag of the current edge. The vertex information of the current edge may include the vertex position of the current edge. The selecting may further include selecting the context / probability model for coding the vertex information of the current edge based on a lookup table that maps the neighborhood configuration to the context / probability model. The selection may further include selecting a context / probability model for coding the vertex information of the current edge based on a lookup table that maps only a subset of the symbols of the neighborhood configuration to the context / probability model. The number of symbols in the subset may be increased based on the number of coded edges and the neighborhood information including the same subset of symbols. The lookup table may be updated based on the vertex information of the current edge to map the subset of the symbols of the neighborhood configuration to different context / probability models. The current edge may be the edge of a cuboid that includes a portion of the point cloud. The system may include: a first computing device configured to perform the described method, additional operations and / or include additional elements; and a second computing device configured to decode the entropy coded vertex information of the current edge. The computer-readable medium may store instructions that, when executed, cause the described method, additional operations and / or include additional elements to be performed.

[0255] One or more examples described herein may be depicted as a process that can be described as a flowchart, flow diagram, data flow diagram, structure diagram, and / or block diagram. Although a flowchart may describe operations as a sequential process, one or more of the operations may be performed in parallel or simultaneously. The order of the operations shown may be rearranged. A process may terminate when its operations are completed, but may have additional steps not shown in the figure. A process may correspond to a method, function, procedure, subroutine, subprogram, etc. When a process corresponds to a function, its termination may correspond to the function returning to the calling function or main function.

[0256] The operations described herein can be implemented in hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. If implemented in software, firmware, middleware, or microcode, the program code or code segments (e.g., a computer program product) for performing the necessary tasks can be stored in a computer-readable or machine-readable medium. A processor can perform the necessary tasks. Features of the present disclosure can be implemented in hardware using, for example, hardware components such as application-specific integrated circuits (ASICs) and gate arrays. Implementation of a hardware state machine to perform the functions described herein will also be apparent to those skilled in the relevant art.

[0257] One or more features described herein may be implemented in computer-usable data and / or computer-executable instructions executed by one or more computers or other devices, such as in one or more program modules. Generally speaking, a program module comprises routines, programs, objects, components, data structures, and the like that, when executed by a processor or other data processing device in a computer, perform specific tasks or implement specific abstract data types. Computer-executable instructions may be stored on one or more computer-readable media, such as a hard disk, optical disk, removable storage media, solid-state memory, RAM, and the like. The functionality of the program modules may be combined or distributed as desired. Functionality may be implemented in whole or in part in firmware or hardware equivalents, such as integrated circuits, field-programmable gate arrays (FPGAs), and the like. Certain data structures may be used to more efficiently implement one or more features described herein, and such data structures are contemplated within the scope of the computer-executable instructions and computer-usable data described herein. Computer-readable media may include, but are not limited to, portable or non-portable storage devices, optical storage devices, and various other media capable of storing, containing, or carrying instructions and / or data. Computer-readable media may include non-transitory media in which data may be stored and does not include carrier waves and / or transient electronic signals propagated wirelessly or via wired connections. Examples of non-transitory media may include, but are not limited to, magnetic disks or tapes, optical storage media such as compact disks (CDs) or digital versatile disks (DVDs), flash memory, memory, or storage devices. A computer-readable medium may have stored thereon code and / or machine-executable instructions that may represent a procedure, function, subroutine, program, routine, subroutine, module, software package, class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means, including memory sharing, message passing, token passing, network transmission, and the like.

[0258] A non-transitory, tangible computer-readable medium may include instructions executable by one or more processors configured to cause the operations described herein. An article of manufacture may include a non-transitory, tangible computer-readable machine-accessible medium having encoded thereon instructions for enabling programmable hardware to cause a device (e.g., an encoder, decoder, transmitter, receiver, etc.) to perform the operations described herein. A device, or one or more devices in a system, may include one or more processors, memories, interfaces, and / or the like.

[0259] The communications described herein may be determined, generated, sent, and / or received using any number of messages, information elements, fields, parameters, values, indications, information, bits, and / or the like. Although any of the terms / phrases message, information element, field, parameter, value, indication, information, bit, and / or the like may be used herein to describe one or more examples, those skilled in the art will appreciate that such communications may be performed using any one or more of these terms, including other such terms. For example, one or more parameters, fields, and / or information elements (IEs) may include one or more information objects, values, and / or any other information. An information object may include one or more other objects. At least some (or all) of the parameters, fields, IEs, and the like may be used and interchangeable depending on the context. If a meaning or definition is given, such meaning or definition shall prevail.

[0260] One or more elements in the examples described herein can be implemented as modules. A module can be an element that performs a defined function and / or has a defined interface to interface with other elements. Modules can be implemented in hardware, software combined with hardware, firmware, wetware (e.g., hardware with biological components), or a combination thereof, all of which may be behaviorally equivalent. For example, a module can be implemented as a software routine written in a computer language that is configured to be executed by a physical computer (such as C, C++, Fortran, Java, Basic, Matlab, etc.) or a modeling / simulation program (such as Simulink, Stateflow, GNU Octave, or LabVIEW MathScript). Additionally or alternatively, a module can be implemented using physical hardware combined with discrete or programmable analog, digital, and / or quantum hardware. Examples of programmable hardware can include: computers, microcontrollers, microprocessors, application-specific integrated circuits (ASICs); field-programmable gate arrays (FPGAs); and / or complex programmable logic devices (CPLDs). Computers, microcontrollers, and / or microprocessors can be programmed using languages ​​such as assembly, C, and C++. FPGAs, ASICs, and CPLDs are typically programmed using a hardware description language (HDL), such as VHSIC Hardware Description Language (VHDL) or Verilog, which configures the connections between internal hardware blocks with relatively small functions on the programmable device. The aforementioned techniques can be used in combination to achieve the results of functional blocks.

[0261] One or more of the operations described herein may be conditional. For example, if certain criteria are met, such as in a computing device, a communication device, an encoder, a decoder, a network, combinations thereof, and / or the like, then one or more operations may be performed. Example criteria may be based on one or more conditions, such as device configuration, traffic load, initial system settings, packet size, traffic characteristics, combinations thereof, and / or the like. If the one or more criteria are met, various examples may be used. Any portion of the examples described herein may be implemented in any order and based on any conditions.

[0262] Although examples have been described above, features and / or steps of those examples may be combined, divided, omitted, rearranged, modified, and / or augmented in any desired manner. Various changes, modifications, and improvements will readily occur to those skilled in the art. Although not expressly set forth herein, such changes, modifications, and improvements are intended to be part of this specification and are intended to be within the spirit and scope of the description herein. Therefore, the foregoing description is illustrative only and not restrictive.

Claims

1. A method comprising: Determining one or more symbols of a neighborhood configuration of a current edge based on vertex information of a spatial topology of edges, wherein each edge of the spatial topology of edges can be used to code the current edge independently of a direction of the current edge; determining a probability model based on the one or more symbols of the neighborhood configuration; and Entropy coding is performed on vertex information of the current edge based on the determined probability model.

2. The method of claim 1 , wherein the determining the one or more symbols of the neighborhood configuration comprises: One of a plurality of different configurations of the spatial topology of the edge is selected based on the direction of the current edge.

3. The method of claim 2, wherein the plurality of different configurations comprises at least one of: the rotational configuration of the spatial topology of the edge, or A mirror image configuration of the spatial topology of the edges.

4. The method according to any one of claims 1 to 3, wherein the determining the one or more symbols of the neighborhood configuration comprises determining the one or more symbols of the neighborhood configuration based on one or more vertex existence flags associated with the spatial topology of the edge.

5. The method according to any one of claims 1 to 4, wherein the determining the one or more symbols of the neighborhood configuration comprises determining the one or more symbols of the neighborhood configuration based on one or more vertex positions associated with the spatial topology of the edge.

6. The method according to any one of claims 1 to 5, wherein the vertex information of the current edge comprises at least one of the following: The vertex associated with the current edge exists, or The vertex position associated with the current edge.

7. The method of any one of claims 1 to 6, wherein the determining the probability model comprises determining the probability model based on a lookup table, the lookup table mapping at least one of the following to the probability model: The neighborhood configuration, or a subset of the one or more symbols of the neighborhood configuration.

8. The method according to claim 7, further comprising: The number of symbols in the subset is increased based on the number of coded edges and neighborhood information including the symbols in the subset.

9. The method according to any one of claims 7 to 8, further comprising: The lookup table is updated based on the vertex information of the current edge to map the subset to a different probability model.

10. The method according to any one of claims 1 to 9, wherein the spatial topology of the edge comprises at least one of the following: edges that do not intersect the starting point of the current edge, edges belonging to the same cuboid as the current edge, edges parallel to the current edge, and An edge that is perpendicular to the current edge and intersects the endpoint of the current edge.

11. The method according to any one of claims 1 to 10, wherein the neighborhood configuration further comprises: a second set of one or more symbols indicating the direction of the current edge; as well as A third set of one or more symbols is determined based on at least one edge that is unusable for coding the current edge independent of the direction of the current edge. 12 . The method according to claim 1 , wherein the current edge belongs to a cuboid comprising at least one point of a point cloud.

13. A computing device comprising: one or more processors; as well as A memory storing instructions which, when executed, cause the computing device to perform the method according to any one of claims 1 to 12.

14. A system comprising: a first computing device configured to perform the method according to any one of claims 1 to 12; as well as A second computing device is configured to decode the entropy-coded vertex information of the current edge.

15. A computer readable medium storing instructions which, when executed, cause the method according to any one of claims 1 to 12 to be performed.