Coding of point cloud vertex information

The TriSoup scheme improves point cloud data compression by enhancing vertex information correlation, reducing storage needs and enhancing processing efficiency.

JP2026500178APending Publication Date: 2026-01-06COMCAST CABLE COMM LLC
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2025533004
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-12-05
Filing Date
2023-12-05
Publication Date
2026-01-06

AI Technical Summary

Technical Problem

Point cloud data is large in size, making transmission and processing inefficient, and existing compression techniques either require significant computational resources or compromise visual quality.

Method used

A TriSoup scheme is used to represent vertices and their positions, enhancing correlation through linear combinations of adjacent edges, enabling efficient entropy coding and reducing storage requirements.

Benefits of technology

This approach allows for smaller storage and faster transfer of point cloud data while maintaining efficient processing and visual quality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026500178000001_ABST
    Figure 2026500178000001_ABST
Patent Text Reader

Abstract

One or more methods, devices, computer-readable storage media, and systems are disclosed for entropy coding vertex information of edges in a voxelized space of a point cloud. A symbol for a neighborhood configuration of a current edge can be determined based on one or more previously coded edges. The previously coded edges can be selected from a spatial topology of edges or a subset thereof. An index indicating an appropriate context or probability model for a given occupancy configuration for a neighborhood of the current edge can be obtained.
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of U.S. Provisional Patent Application No. 63 / 430,305, filed December 5, 2022. The above-referenced application is incorporated herein by reference in its entirety.

[0002] An object or scene can be described using volumetric visual data consisting of a series of points. The points can be stored in a point cloud format, which includes a collection of points in three-dimensional space. Point clouds can be very large in data size, so transmitting and processing point cloud data can require data compression schemes specifically designed for the unique characteristics of point cloud data. Summary of the Invention

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

[0004] Coding (e.g., encoding, decoding) can be used to compress and decompress point cloud frames or sequences for efficient storage and transmission. To entropy code a current cuboid, a coder may use the cuboid's spatial neighborhood relative to the current cuboid. With such a point cloud geometry, a Triangle Soup (TriSoup) scheme can be used to represent vertices and their positions on a TriSoup edge. A linear combination based on the spatial positions of adjacent TriSoup edges relative to the current TriSoup edge can be used to improve and increase the correlation between the neighborhood configuration and the vertex information of the current edge. Improved correlation allows the vertex information of the current TriSoup edge to be more effectively compressed using entropy coding, potentially resulting in smaller storage requirements, faster and more efficient transfer of point cloud data, and faster and more efficient processing of point cloud data.

[0005] These and other features and advantages are described in more detail below. [Brief explanation of the drawings]

[0006] Certain features are illustrated by way of example, and not by way of limitation, in the accompanying drawings in which like numerals refer to like elements and in which:

[0007] [Figure 1] FIG. 1 illustrates an exemplary point cloud encoding system. [Figure 2] Figure 2 shows the Morton order of eight sub-rectangles divided from a rectangular prism. [Figure 3] FIG. 3 shows an example of an occupancy tree scan order. [Figure 4] FIG. 4 shows an example of a neighborhood of cuboids for entropy coding the occupancy of a child cuboid. [Figure 5] FIG. 5 shows an example of a dynamic shrinking function (DR) that can be used in a dynamic OBUF. [Figure 6] FIG. 6 shows an exemplary method for coding the occupancy of a rectangular parallelepiped using dynamic OBUFs. [Figure 7] FIG. 7 shows an example of an occupancy cuboid corresponding to a TriSoup node in the occupancy tree. [Figure 8A] FIG. 8A shows an exemplary cuboid corresponding to a TriSoup node. [Figure 8B] FIG. 8B shows an exemplary refinement to the TriSoup model. [Figure 9] FIG. 9 shows an example of voxelization. [Figure 10A] FIG. 10A shows a rectangular solid whose volume intersects with the current TriSoup edge to be entropy coded. [Figure 10B] FIG. 10B shows a cuboid whose volume intersects with the current TriSoup edge to be entropy coded. [Figure 11A]FIG. 11A shows a TriSoup edge that can be used to entropy code the current TriSoup edge. [Figure 11B] FIG. 11B shows a TriSoup edge that can be used to entropy code the current TriSoup edge. [Figure 11C] FIG. 11C shows a TriSoup edge that can be used to entropy code the current TriSoup edge. [Figure 12A] FIG. 12A shows an already coded TriSoup edge that is adjacent to the start of the current TriSoup edge and does not intersect. [Figure 12B] FIG. 12B shows an already coded TriSoup edge that is adjacent to the start of the current TriSoup edge and does not intersect. [Figure 12C] FIG. 12C shows an already coded TriSoup edge that is adjacent to the start of the current TriSoup edge and does not intersect. [Figure 13A] FIG. 13A shows an already coded TriSoup edge that is adjacent to the start of the current TriSoup edge and does not intersect. [Figure 13B] FIG. 13B shows an already coded TriSoup edge that is adjacent to the start of the current TriSoup edge and does not intersect. [Figure 13C] FIG. 13C shows an already coded TriSoup edge that is adjacent to the start of the current TriSoup edge and does not intersect. [Figure 14A] FIG. 14A shows the adjacent, already coded edges of the current TriSoup edge. [Figure 14B] FIG. 14B shows the adjacent already coded edges of the current TriSoup edge. [Figure 14C] FIG. 14C shows the adjacent already coded edges of the current TriSoup edge. [Figure 15A] FIG. 15A shows an example of the subspace topology of a TriSoup edge. [Figure 15B]FIG. 15B shows an example of the subspace topology of a TriSoup edge. [Figure 15C] FIG. 15C shows an example of the subspace topology of a TriSoup edge. [Figure 16A] FIG. 16A shows adjacent edges that have already been coded. [Figure 16B] FIG. 16B shows adjacent edges that have already been coded. [Figure 16C] FIG. 16C shows adjacent edges that have already been coded. [Figure 17A] FIG. 17A shows an example of the subspace topology of a TriSoup edge. [Figure 17B] FIG. 17B shows an example of the subspace topology of a TriSoup edge. [Figure 17C] FIG. 17C shows an example of the subspace topology of a TriSoup edge. [Figure 18A] FIG. 18A shows a spatial topology including TriSoup edges and TriSoup nodes. [Figure 18B] FIG. 18B shows a spatial topology including TriSoup edges and TriSoup nodes. [Figure 18C] FIG. 18C shows a spatial topology including TriSoup edges and TriSoup nodes. [Figure 19A] FIG. 19A shows an example of vertex information for a TriSoup edge E' used for entropy coding vertex information. [Figure 19B] FIG. 19B shows an example of vertex information for a TriSoup edge E' used for entropy coding vertex information. [Figure 19C] FIG. 19C shows an example of vertex information for a TriSoup edge E' used for entropy coding vertex information. [Figure 20A] FIG. 20A shows an example of aggregating vertex information for multiple TriSoup edges. [Figure 20B] FIG. 20B shows an example of aggregating vertex information for multiple TriSoup edges. [Figure 20C] FIG. 20C shows an example of aggregating vertex information for multiple TriSoup edges. [Figure 20D] FIG. 20D shows an example of aggregating vertex information for multiple TriSoup edges. [Figure 21] FIG. 21 illustrates an example of aggregating vertex information for multiple TriSoup edges and the occupancy of multiple TriSoup nodes shown in FIG. 20A. [Figure 22A] FIG. 22A shows an example of how to encode the vertex information of the current edge. [Figure 22B] FIG. 22B shows an example of how to encode the vertex information of the current edge. [Figure 23] FIG. 23 shows a block diagram of an exemplary computer system upon which embodiments of the present disclosure may be implemented. [Figure 24] FIG. 24 illustrates exemplary elements of a computing device that may be used to implement any of the various devices described herein. DETAILED DESCRIPTION OF THE INVENTION

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

[0009] Visual data may describe an object or scene using a series of points. Each point may include a two-dimensional (x and y) position and one or more optional attributes, such as color. Volumetric visual data may add another positional dimension to this visual data. Volumetric visual data may describe an object or scene using a series of points, each including a three-dimensional (x, y, and z) position and one or more optional attributes, such as color, reflectance, timestamp, etc. Volumetric visual data may, for example, provide a more immersive way to experience visual data than traditional visual data.

[0010] For example, an object or scene described by volumetric visual data can be viewed from any angle (or multiple angles), whereas traditional visual data is generally only viewable from the angle at 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). Scattered volumetric visual data can be used in the automotive industry for the representation of three-dimensional (3D) maps (e.g., cartography) or as input to advanced driver assistance systems. For advanced driver assistance systems, volumetric visual data is typically input into driving decision algorithms. Volumetric visual data can be used to preserve valuable objects in digital form. In applications for preserving cultural heritage, the goal may be to preserve representations of objects that may be threatened by natural disasters. For example, statues, vases, and temples can be scanned in their entirety 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 where earthquakes, tsunamis, and typhoons frequently occur. Volumetric visual data may take the form of a volumetric frame. A volumetric frame may describe an object or scene captured at a particular time instance. Volumetric visual data may take the form of a sequence of volumetric frames (called a volumetric sequence or volumetric video). A sequence of volumetric frames may describe an object or scene captured at multiple different time instances.

[0011] A point cloud is a format for storing volumetric visual data. A point cloud may include a collection of points in 3D space. Each point in the point cloud may include geometric shape information that indicates the point's location in 3D space. The geometric shape information may indicate the point's location in 3D space, for example, using three Cartesian coordinates (x, y, and z) or using spherical coordinates (r, phi, theta) (e.g., when acquired by a rotational sensor). The positions of points in a point cloud may be quantified according to spatial precision. The spatial precision may be the same or different in each dimension. The quantization process may generate a grid in 3D space. One or more points residing within each subgrid volume may be mapped to subgrid center coordinates called voxels. A voxel may be considered a 3D extension of a pixel corresponding to a 2D image grid coordinate. Points in a point cloud may further include one or more types of attribute information. The attribute information may indicate characteristics of the point's visual appearance. The attribute information may indicate, for example, the texture (e.g., color) of the point, the material type of the point, transparency information of the point, reflectance information of the point, a normal vector to the surface of the point, the velocity of the point, the acceleration at the point, a timestamp indicating when the point was captured, or a modality (e.g., running, walking, or flying) indicating how the point was captured. Points in the point cloud may include light field data in the form of multiple view-dependent texture information. The light field data may be another type of arbitrary attribute information.

[0012] The points in the point cloud may describe an object or scene. The points in the point cloud may, for example, describe the exterior surface and / or interior structure of the object or scene. The object or scene may be synthetically generated by a computer. The object or scene may be generated from capturing a real-world object or scene. Geometry information of a real-world object or scene may be obtained by 3D scanning and / or photogrammetry. 3D scanning may include different types of scanning, such as laser scanning, structured light scanning, and / or modulated light scanning. 3D scanning may obtain the geometry information. 3D scanning may obtain the geometry information, for example, by moving one or more laser heads, structured light cameras, and / or modulated light cameras relative to the object or scene being scanned. Photogrammetry may obtain the geometry information. Photogrammetry may obtain the geometry information, for example, by triangulating the same features or points in different spatially shifted 2D photographs. Point cloud data may take the form of a point cloud frame. A point cloud frame may describe an object or scene captured at a particular time instance. Point cloud data may take the form of a sequence of point cloud frames, which may also be referred to as a point cloud sequence or a point cloud video, which may describe an object or scene captured at multiple different instances of time.

[0013] The data size of a point cloud frame or point cloud sequence may be too large for storage and / or transmission in many applications. A single point cloud may, for example, contain more than one million points, or even more than one billion points. Each point may include geometric shape information and one or more types of attribute information. The geometric shape information for each point may include, for example, three Cartesian coordinates (x, y, and z) or spherical coordinates (r, phi, theta), each represented using at least 10 bits per component or a total of 30 bits. The attribute information for each point may include texture corresponding to three color components (e.g., R, G, and B color components). Each color component may be represented using, for example, 8 to 10 bits per component or a total of 24 to 30 bits. Thus, a single point may contain at least 54 bits of information, with at least 30 bits of geometric shape information and at least 24 bits of texture, in this example. If a point cloud frame contains 1 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, a data rate of 1.32 gigabits per second may be required to transmit (e.g., transmit) the points of a point cloud sequence at a frame rate of 30 frames per second. Thus, a raw representation of a point cloud may require a large amount of data, and practical deployment of point cloud-based technologies may require compression techniques that enable the storage and distribution of point clouds at a reasonable cost.

[0014] Encoding may be used to compress and / or reduce the data size of a point cloud frame or sequence to provide more efficient storage and / or transmission. Decoding may be used to decompress a compressed point cloud frame or sequence for display and / or other forms of consumption (e.g., by a machine learning-based device, a neural network-based device, an artificial intelligence-based device, or other types of machine-based processing algorithms and / or devices). Compression of the point cloud may be lossy (introducing differences to the original data) for distribution to and viewing by an end user, for example, on AR or VR glasses or any other 3D-enabled device. Lossy compression may enable high compression ratios but may imply 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 altering the transmission (e.g., transmission) and results of decisions made based on analysis of the decompressed point cloud frames.

[0015] FIG. 1 shows an exemplary point cloud encoding (e.g., encoding and / or decoding) system 100. The point cloud encoding 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 transmit (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 transmission medium 104. The source device 102 and the destination device 106 may include any number of different devices. The source device 102 and the destination device 106 may include, for example, a cluster of interconnected computer systems that act as a seamless pool of resources (also called a cloud of computers or cloud computing), a server, a desktop computer, a laptop computer, a tablet computer, a smartphone, a wearable device, a television, a camera, a video game console, a set-top box, a video streaming device, a vehicle (e.g., an autonomous vehicle), or a head-mounted display. The 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 tethered to a processing device (e.g., a server, desktop computer, set-top box, or video game console) or may be completely self-contained.

[0016] 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 a 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 the capture of natural and / or synthetically generated scenes. The synthetically generated scenes may be scenes including computer-generated graphics. The point cloud source 112 may include one or more point cloud capture devices, a point cloud archive containing previously captured natural and / or synthetically generated scenes, a point cloud feed interface for receiving captured natural and / or synthetically generated scenes from a point cloud content provider, and / or a processor for generating the synthesized point cloud scenes. The point cloud capture devices may include, for example, one or more laser scanning devices, structured light scanning devices, modulated light scanning devices, and / or passive scanning devices.

[0017] As shown in FIG. 1 , a 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 particular time instance. The point cloud sequence 108 may achieve the impression of motion by sequentially presenting the point cloud frames 124 of the point cloud sequence 108 using a constant or variable time. A point cloud frame may include a collection of points (e.g., voxels) 126 in 3D space. Each point 126 may include geometric shape information that indicates the point's location in 3D space. The geometric shape information may indicate the point's location in 3D space using, for example, three Cartesian coordinates (x, y, and z). One or more of the points 126 may further include one or more types of attribute information. The attribute information may indicate characteristics of the point's visual appearance. The attribute information may indicate, for example, the texture (e.g., color) of the point, the material type of the point, transparency information of the point, reflectance information of the point, a normal vector relative to the surface of the point, the velocity of the point, the acceleration at the point, a timestamp indicating when the point was captured, and a modality (e.g., running, walking, or flying) indicating how the point was captured. One or more of the points 126 may include light field data, for example, in the form of multiple view-dependent texture information. The light field data may be any other type of attribute information. The color attribute information of one or more of the points 126 may include a luminance value and two color difference values. The luminance value may represent the luminance (e.g., luma component, Y) of the point. The color difference values ​​may represent the blue and red components (e.g., chroma components, Cb and Cr) of the point, respectively, separate from its brightness. The other color attribute values ​​may be represented based on a different color scheme (e.g., RGB or monochrome color scheme).

[0018] The encoder 114 may encode the point cloud sequence 108 into the 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. The redundant information is information that may be predicted by the decoder 120 and thus may not need to be transmitted (e.g., transmitted) to the decoder 120 for accurate decoding of the point cloud sequence 108. For example, the Motion Picture Expert 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 the encoded bitstream syntax and semantics for transmission and / or storage of compressed point cloud frames, as well as the decoder operations for reconstructing the 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 geometric shape and attribute information of a point cloud frame. To encode the geometric shape information of a point cloud frame, the G-PCC reference software encoder may perform voxelization. The G-PCC reference software encoder may perform voxelization, for example, by quantifying the positions of points within a point cloud. Quantifying the positions of points within a point cloud may generate a grid in 3D space. The G-PCC reference software encoder may map points to the center coordinates of subgrid volumes (e.g., voxels) within which their quantized positions reside. The G-PCC reference software encoder may perform geometric shape analysis using an occupancy tree to compress the geometric shape information. The G-PCC reference software encoder may entropy encode the results of the geometric shape analysis to further compress the geometric shape information.To encode the attribute information of the point cloud, the G-PCC reference software encoder may use transform tools such as a domain adaptive hierarchical transform (RAHT), a predictive transform, and / or a lifting transform. The lifting transform may be built on top of the predictive transform. The lifting transform may include an additional update / lifting step. The lifting transform and the predictive transform may be referred to as a predictive / lifting transform or a "pred lift." The encoder 114 may operate in the same or similar manner as the encoder provided by the G-PCC reference software.

[0019] The output interface 116 may be configured to write and / or store the bitstream 110 on the transmission medium 104. The bitstream 110 may be sent (e.g., transmitted) to the destination device 106. Additionally or alternatively, the output interface 116 may 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 may 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 may include, for example, Digital Video Broadcasting (DVB) standards, Advanced Television Systems Committee (ATSC) standards, Integrated Services Digital Broadcasting (ISDB) standards, Data Over Cable Service Interface Specification (DOCSIS) standards, 3rd Generation Partnership Project (3GPP) standards, Institute of Electrical and Electronics Engineers (IEEE) standards, Internet Protocol (IP) standards, and Wireless Application Protocol (WAP) standards.

[0020] The transmission medium 104 may include wireless, wired, and / or computer-readable media. For example, the transmission medium 104 may include one or more wires, cables, air interfaces, optical disks, flash memory, and / or magnetic memory. 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 transmit (e.g., transmit) encoded video data (e.g., bitstream 110).

[0021] 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 a 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. For example, the DVB (Digital Video Broadcasting) standard, the ATSC (Advanced Television Systems Committee) standard, the ISDB (Integrated Services Digital Broadcasting) standard, the DOCSIS (Data Over Cable Service Interface Specification) standard, the 3GPP (3rd Generation Partnership Project) standard, the IEEE (Institute of Electrical and Electronics Engineers) standard, the IP (Internet Protocol) standard, and the WAP (Wireless Application Protocol) standard.

[0022] The decoder 120 may decode the point cloud sequence 108 from the encoded bitstream 110. The decoder 120 may operate in the same or similar manner as, for example, the decoder provided by the G-PCC reference software. The decoder 120 may decode a point cloud sequence that approximates the point cloud sequence 108. The decoder 120 may 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 when, for example, transmission to the destination device 106 occurred.

[0023] The point cloud display 122 may display the point cloud sequence 108 to a user. The point cloud display 122 may 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 the point cloud sequence 108.

[0024] The point cloud encoding / decoding system 100 is presented by way of example and not limitation. In the embodiment of FIG. 1, the point cloud encoding / decoding system 100 may have other components and / or arrangements. The point cloud source 112 may be, for example, external to the source device 102. The point cloud display device 122 may be, for example, external to the destination device 106, or may be omitted entirely if the point cloud sequence is intended for consumption 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 further be configured to 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.

[0025] As described herein, the encoder may quantify the location of points within a point cloud according to a spatial precision, which may be the same or different in each dimension of the points. The quantization process may generate a grid in 3D space. The encoder may map any point that resides within each subgrid volume to a subgrid center coordinate called a voxel. A voxel may be considered a 3D extension of a pixel that corresponds to a 2D image grid coordinate.

[0026] The encoder may represent or encode the voxelized point cloud. The encoder may represent or encode the voxelized point cloud using, for example, an occupancy tree. The encoder may divide an initial volume or cuboid containing the voxelized point cloud into subcuboids. The initial volume or cuboid may be referred to as a bounding box. The cuboid may be, for example, a rectangular parallelepiped. The encoder may recursively divide each subcuboid that contains at least one point of the point cloud. The encoder may not further divide a subcuboid that does not contain at least one point of the point cloud. A subcuboid that contains at least one point of the point cloud may be referred to as an occupied subcuboid. A subcuboid that does not contain at least one point of the point cloud may be referred to as an unoccupied subcuboid. The encoder may divide an occupied cuboid into, for example, two subcuboids (to form a binary tree), four subcuboids (to form a quadtree), or eight subcuboids (to form an octree). The encoder may divide the occupied cuboid to obtain sub-cuboids, which may have the same size and shape at a given depth level of the occupancy tree. The sub-cuboids may have the same size and shape at a given depth level of the occupancy tree, for example, if the encoder divides the occupied cuboid along a plane that passes through the center of the cuboid's edges.

[0027] The initial volume or cuboid containing the voxelized point cloud may correspond to the root node of the occupancy tree. Each occupied subcuboid split from the initial volume may correspond to a node (of the root node) at a second level of the occupancy tree. Each occupied subcuboid split from an occupied subcuboid at the second level may correspond to a node at a third level of the occupancy tree (the node off the occupied subcuboid at the second level from which it was split). The occupancy tree structure may continue to be formed in this manner for each recursive splitting iteration, for example, until some maximum depth level of the occupancy tree is reached or until each occupied subcuboid has a volume corresponding to one voxel.

[0028] Each non-leaf node in the occupancy tree may include or be associated with an occupancy word that represents the occupancy state of the cuboid corresponding to the node. A node in the occupancy tree corresponding to a cuboid divided into eight sub-cuboids may include or be associated with a one-byte occupancy word. Each bit (called an occupancy bit) of the one-byte occupancy word may represent or indicate the occupancy of a different one of the eight sub-cuboids. Each occupied sub-cuboid may be represented or indicated by a binary "1" in the one-byte occupancy word. Each unoccupied sub-cuboid may be represented or indicated by a binary "0" in the one-byte occupancy word. Occupied and unoccupied sub-cuboids may be represented or indicated by opposite one-bit binary values ​​in the one-byte occupancy word (e.g., a binary "0" representing or indicating an occupied sub-cuboid and a binary "1" representing or indicating an unoccupied sub-cuboid).

[0029] Each bit of the occupancy word may represent or indicate the occupancy of a different one of the eight sub-rectangles. Each bit of the occupancy word may represent or indicate the occupancy of a different one of the eight sub-rectangles, for example, according to the so-called Morton order. The least significant bit of the occupancy word may represent or indicate, for example, the occupancy of a first sub-rectangle of the eight sub-rectangles, for example, according to Morton order. The second least significant bit of the occupancy word may represent or indicate, for example, the occupancy of a second sub-rectangle of the eight sub-rectangles, for example, according to Morton order, etc.

[0030] 2 shows the Morton order of eight sub-rectangles 202-216 divided from a rectangle 200. The sub-rectangles 202-216 are labeled based on their Morton order, with child node 202 coming first and child node 216 coming last. The Morton order for the sub-rectangles 202-216 is a local lexicographic order in xyz.

[0031] The voxelized point cloud geometry can be represented by and determined from the initial volumes and occupancy words of the nodes in the occupancy tree. The encoder may send (e.g., transmit) the initial volumes and occupancy words of the nodes in the occupancy tree in a bitstream to a decoder to reconstruct the point cloud. The encoder may entropy encode the occupancy words. For example, the encoder may entropy encode the occupancy words before transmitting the initial volumes and occupancy words of the nodes in the occupancy tree. The encoder may encode occupancy bits of the occupancy words of the nodes corresponding to the cuboid. For example, the encoder may encode occupancy bits of the occupancy words of the nodes 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 of the occupancy bit being encoded.

[0032] The encoder and / or decoder may encode the occupied bits of consecutive occupied words in scan order. Scan order may also be referred to as scanning order. The encoder and / or decoder may scan the occupation tree in breadth-first order. All occupied words of nodes at a given depth (e.g., level) in the occupation tree may be scanned. All occupied words of nodes at a given depth (e.g., level) in the occupation tree may be scanned before scanning the occupied words of nodes at the next depth (e.g., level). Within a given depth, the encoder and / or decoder may scan the occupied words of nodes in Morton order. Within a given node, the encoder and / or decoder may also scan the occupied bits of the occupied words of the node in Morton order.

[0033] 3 illustrates an example scan order (e.g., breadth-first order as described herein) of an occupancy tree 300. FIG. 3 illustrates a scan order for the first three exemplary levels of the occupancy tree 300. In FIG. 3, a cuboid 302 corresponding to the root node of the occupancy tree 300 can be divided into eight sub-cuboids. Two of the eight sub-cuboids, 304 and 306, can be occupied. The other six of the eight sub-cuboids can be unoccupied. According to Morton's order, the first 8-bit occupancy word occW 1,1 is constructed to represent the occupied word of the root node. The first 8-bit occupied word occW 1,1 The least significant occupancy bit of the first 8-bit occupancy word occW represents or indicates the occupancy of the first of the eight sub-rectangles in Morton order. 1,1 The second least significant occupied bit of represents or indicates the occupation of the second of the eight sub-cuboids in the Morton order or the like.

[0034] Each of the two occupied sub-cuboids 304 and 306 corresponds to a node from the root node of the second-level occupancy tree 300. Each of the two occupied sub-cuboids 304 and 306 is further divided into eight sub-cuboids. Of the eight sub-cuboids divided from sub-cuboid 304, one of sub-cuboid 308 can be occupied. The other seven of the eight sub-cuboids divided from sub-cuboid 304 can be unoccupied. Of the eight sub-cuboids divided from sub-cuboid 306, three of sub-cuboids 310, 312, and 314 can be occupied. The other five of the eight sub-cuboids divided from sub-cuboid 306 can be unoccupied. Two second 8-bit occupancy words occW 2,1 and occW 2,2 are constructed in this order to represent the occupancy words of the nodes corresponding to sub-cuboid 304 and sub-cuboid 306, respectively.

[0035] Each of the four occupied sub-cuboids 308, 310, 312, and 314 corresponds to a node in the third level occupancy tree 300. Each of the four occupied sub-cuboids 308, 310, 312, and 314 is further divided into a total of eight sub-cuboids or 32 sub-cuboids. Four third level 8-bit occupancy words occW 3,1 , occW 3,2 , occW 3,3 , and occW 3,4 are constructed in this order to represent the occupancy words of the nodes corresponding to sub-cuboid 308, the occupancy words of the nodes corresponding to sub-cuboid 310, the occupancy words of the nodes corresponding to sub-cuboid 312, and the occupancy words of the nodes corresponding to sub-cuboid 314, respectively.

[0036] The occupied words of the occupancy tree 300 are sorted, for example, according to a scan order (e.g., breadth-first order) described herein, into seven occupied words occW 1,1 ~occW 3,4The occupied words of the current child node may be entropy coded (e.g., entropy coded by an encoder and entropy decoded by a decoder) as a succession of the following: As a result of the breadth-first scan order, the occupied words of all nodes having the same depth (e.g., level) as the current parent node may already be entropy coded, for example, if the occupied words of the current child node belonging to the current parent node are entropy coded. The occupied words of all nodes having the same depth (e.g., level) as the current child node and having a lower Morton order than the current child node may also already be entropy coded, for example, if the occupied word of the current child node is entropy coded. A portion of the already coded occupied words may be used to entropy code the occupied word of the current child node. The already coded occupied words of adjacent parent and / or child nodes may be used, for example, to entropy code the occupied word of the current child node. The occupied bits of occupied words having a lower Morton order than a particular occupied bit of the occupied word of the current child node may also already be entropy coded. An occupied bit of an occupied word having a lower Morton order than a particular occupied bit may be used to encode the occupied bit of an occupied word of a current child node, for example, when the particular occupied bit is encoded.

[0037] 4 shows an example of a neighborhood of cuboids for entropy coding the occupancy of a child cuboid. The neighborhood of cuboids with already coded occupancy bits can be used to entropy code the occupancy bits of the current child cuboid 400. The neighborhood of cuboids with already coded occupancy bits can be determined. The neighborhood of cuboids with already coded occupancy bits can be determined, for example, based on the scan order of the occupancy tree representing the geometry of the cuboid in FIG. 4 described herein. For a current child cuboid, the cuboid neighborhood may include one or more of: 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 parent cuboid, etc. As shown in FIG. 4 , a current child cuboid 400 may belong to a current parent cuboid 402. According to the scan order of the occupancy words and occupancy bits of the nodes of the occupancy tree, the occupancy bits of the four child cuboids 404, 406, 408, and 410 belonging to the same current parent cuboid 402 have already been coded. The occupancy bits of the child cuboid 412 of the preceding parent cuboid have already been coded. The occupancy bits of the parent cuboid 414, whose occupancy bits have not yet been coded, have already been coded. Therefore, the occupancy bits of the current child cuboid 400 can be coded using the already coded occupancy bits of the cuboids 404, 406, 408, 410, 412, and 414.

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

[0039] The encoder and / or decoder may use several methods to reduce the neighborhood occupancy of the current child cuboid to a practical number (e.g., quantity) of reduced neighborhood occupancy configurations. 6 Or a 64-occupancy configuration can be reduced to 9-occupancy configurations. Occupancy configurations can be reduced by using geometric invariants. The occupancy score of the current child cuboid is calculated by multiplying the occupancy score of 26 adjacent parent cuboids. 26 A score may be obtained from each occupancy configuration. The score may be further reduced to a ternary occupancy prediction (e.g., "predicted-occupied," "uncertain," or "predicted-unoccupied") by using a score threshold. The number (e.g., quantity) of neighboring occupied child cuboids and the number (e.g., quantity) of neighboring unoccupied child cuboids may be used instead of the individual occupancies of these child cuboids.

[0040] The encoder and / or decoder may reduce the number (e.g., quantity) of possible occupancy configurations for the neighborhood of the current child cuboid to a more manageable number (e.g., several thousand). It is observed that instead of directly associating the reduction in the number (e.g., quantity) of contexts (e.g., probability models) with the reduction in occupancy configurations, another mechanism, namely, OBUF (Optimal Binary Coders with Update on the Fly), may be used. The encoder and / or decoder may implement OBUF to limit the number (e.g., quantity) of contexts to a lower number (e.g., 32 contexts).

[0041] The OBUF may use a limited number (e.g., 32) of contexts (e.g., probability models). The number (e.g., quantity) of contexts in the OBUF may be a fixed number (e.g., a fixed quantity). The contexts used by the OBUF may be ordered and referenced by a context index (e.g., a context index ranging from 0 to 31), with a "1" associated with the lowest virtual probability to the highest virtual probability. A context index lookup table (LUT) may be initialized at the beginning of the point cloud encoding process. The LUT may initially point to a context having a median virtual probability for encoding a "1" for all inputs. The LUT may initially point to a context having a median virtual probability for encoding a "1" among the limited number (e.g., quantity) of contexts for all inputs. This LUT may take as input an occupancy configuration in the neighborhood of the current child cuboid and output a context index associated with the occupancy configuration. The LUT may have the same number of entries as the reduced occupancy configuration (e.g., approximately several thousand entries). Encoding the occupancy bit of the current child cuboid may include determining a reduced occupancy configuration of the current child node, obtaining a context index by using the reduced occupancy configuration as an entry into a LUT, encoding the occupancy bit of the current child cuboid by 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 encoded occupancy bit of the current child cuboid. For a binary "0" to be encoded (e.g., indicating that the current child cuboid is unoccupied), the LUT entry may be decreased to a lower context index value (e.g., associated with a lower virtual probability). For a binary "1" to be encoded (e.g., indicating that the current child 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 optimal distribution for hypothetical probabilities associated with a limited number (e.g., quantity) of contexts. The hypothetical probabilities may be fixed by the model. The hypothetical probabilities may differ from the internal probabilities of the contexts that evolve during the encoding of bits of data. The evolution of the internal contexts may follow a well-known process similar to that of CABAC.

[0042] The encoder and / or decoder may implement a "dynamic OBUF" scheme. The "dynamic OBUF" scheme can handle a much larger number (e.g., quantity) of occupancy configurations for the neighborhood of the current child cuboid than a typical OBUF. Using a larger number (e.g., quantity) of occupancy configurations for the neighborhood of the current child cuboid may result in improved compression performance. Using a larger number (e.g., quantity) of occupancy configurations for the neighborhood of the current child cuboid may also keep complexity within a reasonable range. By using an occupancy tree compressed by OBUF, the encoder and / or decoder may achieve lossless compression performance as good as 1 bit per point (bpp) for coding dense point cloud geometries. The encoder and / or decoder may implement a dynamic OBUF to further reduce the bitrate, potentially by more than 25%, down to 0.7 bpp.

[0043] The OBUF cannot take as input a wide variety of reduced occupancy configurations for the neighborhood of the current child cuboid. This can potentially lead to a loss of useful correlations. The OBUF may increase the size of the context index LUT to process a larger variety of occupancy configurations as input than for the neighborhood of the current child cuboid. Doing so may dilute statistics and worsen compression performance. For example, if the LUT has millions of entries and the point cloud has hundreds of thousands of points, most entries will not be visited (e.g., looked up, accessed, etc.). In some instances, many entries may be visited only a few times, and their associated context indexes may not be updated enough times to reflect any meaningful correlation between the occupancy configuration values ​​and the occupancy probability of the current child cuboid. A dynamic OBUF may be implemented to mitigate the dilution of statistics due to an increase in the number (e.g., quantity) of occupancy configurations in the neighborhood of the current child cuboid. This mitigation is achieved by “dynamic shrinking” of occupancy configurations in the dynamic OBUF.

[0044] The dynamic OBUF may add an additional step to reduce the occupancy configurations in the neighborhood of the current child cuboid. For example, the dynamic OBUF may add an additional step of shrinking the occupancy configurations in the neighborhood of the current child cuboid before using the LUT of the context index. This step may be called dynamic shrinking because it evolves based on the progress of the point cloud encoding, or more precisely, based on the occupancy configurations that have already been visited (e.g., looked up in the LUT).

[0045] As described herein, many possible occupancy configurations for the neighborhood of the current child cuboid are potentially involved, but only a subset may be visited, for example, when encoding a point cloud. This subset of visited occupancy configurations may characterize the type of point cloud. For example, most of the visited occupancy configurations may represent occupied neighboring cuboids of the current child cuboid, for example, when an AR or VR dense point cloud is encoded. On the other hand, most of the visited occupancy configurations may represent only a few occupied neighboring cuboids of the current child cuboid, for example, when a sparse point cloud acquired by a sensor is encoded. The role of dynamic shrinking may be, for example, to obtain a more accurate correlation based on the most frequently visited occupancy configurations by refraining from (e.g., actively reducing) other occupancy configurations that are much less frequently visited. Dynamic shrinking may be updated on the fly. Dynamic shrinking may be updated on the fly, for example, after each visit of an occupancy configuration (e.g., lookup in a LUT). A visit to a proprietary configuration (eg, a lookup of a LUT) may occur, for example, when encoding of proprietary data occurs.

[0046] 5 shows an example of a dynamic shrinking function (DR) that can be used in a dynamic OBUF. The dynamic shrinking function (DR) is a function of bit β j can be obtained by masking

number

number

[0047] A visit to an occupied configuration (e.g., an instance of a lookup in the LUT) is performed for all dynamically reduced occupied configurations β'=DR n (β) can be tracked by a variable NV(β'). The corresponding number (e.g., quantity) of visits NV(β V ') can be increased by 1. The corresponding number (e.g., quantity) of visits NV(β V ') is, for example, the occupied configuration β V After each instance of encoding the occupied bits based on , the number (e.g., quantity) of visits NV(β V ') is the threshold th V If it is greater than , it is expressed by the following formula:

number

number

number

[0048] In other words, the number of unmasked bits (e.g., quantity) is DR n (β)=β V ', k for all occupancy configurations β n+1 (β)=k n The number of visits (eg, quantity) of the new dynamically reduced two-occupancy configuration may be initialized to zero as follows:

number

[0049] At the beginning of encoding, an initial dynamic reduction function DR 0 The initial number (eg, quantity) of visits may be set as follows:

number

[0050] The corresponding LUT entry LUT[β V '] is β V Two new entries are initialized by the coder index associated with the LUT[β 0 '] and LUT[β 1 ']. The corresponding LUT entry LUT[β V '] is, for example, the dynamically reduced occupancy configuration β V ' is dynamically reduced to a new two-occupancy configuration β 0 ' and β 1 When substituted by β ', as shown in the following formula (II): V Two new entries are initialized by the coder index associated with the LUT[β 0 '] and LUT[β 1 '] and then evolve separately.

number

[0051] Reduction Function DR n is the occupancy configuration β'=DR in which the leaf node 530 is reduced. n (β) is a set of growing binary trees T n 520. The initial tree can be modeled by 0=DR 0 There can be a single root node associated with (β). 0 ' and β 1 ' by β V The replacement of the dynamically reduced β V ' from the leaf nodes associated with tree T n This corresponds to growing β 0 ' and β 1 ' by β V The replacement of the dynamically reduced β 0 ' and β 1 ', by attaching two new nodes related to it, V ' from the leaf nodes associated with tree T n The tree T n+1 may be obtained by this growth. The number of visits (e.g., quantity) NV and the LUT of context indexes are defined on the leaf nodes and may evolve with the tree growth through equations (I) and (II) above.

[0052] A practical implementation of the dynamic OBUF is given by the arrays NV[β'] and LUT[β'] of context indices, and the tree T n 520. An alternative to storing the tree is to store an array k of the number of unmasked bits (e.g., quantity). n [β] 510 can be stored.

[0053] A limitation for implementing a dynamic OBUF can be its memory footprint. In some instances, millions of occupied configurations are actually processed, and the approximately 20-bit β i Each bit β i may correspond to the occupancy state of the neighboring cuboids of the current child cuboid, or the set of neighboring cuboids of the current child cuboid.

[0054] The higher (e.g., more significant) bit β i (e.g., β0, β1, etc.) may be the first unmasked bit. i (e.g., β0, β1, etc.) may be, for example, the first unmasked bit during the evolution of the dynamic shrinkage function DR. i The order of neighbor-based information placed in the β i , for example, from higher weight to lower weight. The priority may be, from most important to least important, the occupancy of a set of adjacent neighboring child cuboids, then the occupancy of adjacent adjacent child cuboids, then the occupancy of adjacent adjacent parent cuboids, then the occupancy of non-adjacent adjacent child nodes, and finally the occupancy of non-adjacent adjacent parent nodes. Adjacent nodes that share a face with the current child node may also have a higher priority than adjacent nodes that share an edge (but not a face) with the current child node. Adjacent nodes that share an edge with the current child node may have a higher priority than adjacent nodes that share only vertices with the current child node.

[0055] FIG. 6 illustrates an exemplary method for coding the occupancy of a cuboid using a dynamic OBUF. More specifically, FIG. 6 illustrates a flowchart of an exemplary method for coding the occupancy (e.g., indicated by a single bit) of a current child cuboid using a dynamic OBUF. More specifically, FIG. 6 illustrates a flowchart of exemplary method steps for encoding the occupancy of a current child cuboid using a dynamic OBUF. The exemplary 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 implemented by a coder (e.g., encoder 114 of FIG. 1 and / or decoder 120 of FIG. 1), the example computer system 2100 of FIG. 21, and / or the example computing device 2230 of FIGS. 22A and 22B.

[0056] In step 602, the encoder and / or decoder may determine an occupancy configuration β of the current child cuboid. For example, the encoder and / or decoder may determine the occupancy configuration β of the current child cuboid based on the occupancy bits of already coded cuboids in the neighborhood of the current child cuboid. In step 604, the encoder and / or decoder may determine the occupancy configuration β of the current child cuboid based on the occupancy bits of already coded cuboids in the neighborhood of the current child cuboid. n (For example, β' = DR n (β)) may be used to dynamically reduce the occupancy configuration β to a reduced occupancy configuration. At step 606, the encoder and / or decoder may look up a context index LUT[β'] in the LUT of the dynamic OBUF. At step 608, the encoder and / or decoder may select a context (e.g., a probability model) pointed to by the context index. At step 610, the encoder and / or decoder may entropy code (e.g., arithmetic code) the occupancy bits of the current child cuboid based on the context.

[0057] Although not shown in FIG. 6, the encoder and / or decoder may calculate a reduction function DR based on the occupied bits of the current child cuboid. n DR n+1and / or update the context index LUT[β']. The method of Figure 6 may be repeated for additional or all child cuboids of a parent cuboid corresponding to a node in the occupancy tree in a scan order, such as the scan order described herein with respect to Figure 3.

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

[0059] An approach to lossy compression for point cloud geometry may be to set the maximum depth of the occupancy tree so that it does not reach a minimum volume size of one voxel. Instead, the maximum depth of the occupancy tree may be set to stop at a larger volume size (e.g., an N x N x N cuboid, where N > 1). The geometry of the points belonging to each occupied leaf node associated with the larger volume may then be modeled. This approach may be particularly suitable for dense, smooth point clouds that can be locally modeled by a smooth function, e.g., a plane or a polynomial. The encoding cost may be the cost of the occupancy tree plus the cost of a local model of each occupied leaf node.

[0060] A scheme for modeling the geometry of points belonging to each occupied leaf node associated with a volume size larger than one voxel may use a set of triangles as a local model. The scheme may be called a "TriSoup" scheme. TriSoup is an abbreviation for "triangle soup" because connections between triangles cannot be part of the model. An occupied leaf node of the occupation tree corresponding to a cuboid with a volume larger than one voxel may be referred to as a TriSoup node. An edge belonging to at least one cuboid corresponding to a TriSoup node may be referred to as a TriSoup edge. A TriSoup node stores an existence flag (s) for each TriSoup edge of its corresponding occupied cuboid. k ) TriSoup edge existence flag (s k ) is a TriSoup vertex (V k ) on a TriSoup edge. At most one TriSoup vertex (V k ) can be on the TriSoup edge. Each vertex (V k ), the TriSoup node corresponding to the occupied cuboid is the vertex along the TriSoup edge (V k ) position (p k ) may further include.

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

[0062] FIG. 7 shows an example of an occupied cuboid 700 corresponding to a TriSoup node in an occupancy tree. The cuboid 700 may be of size 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 stores an existence flag (s k ) The existence flag for TriSoup edge 714 may indicate that TriSoup vertex V1 is present on TriSoup edge 714. The existence flag for TriSoup edge 715 may indicate that TriSoup vertex V2 is present on TriSoup edge 715. The existence flag for TriSoup edge 716 may indicate that TriSoup vertex V3 is present on TriSoup edge 716. The existence flag for TriSoup edge 717 may indicate that TriSoup vertex V4 is present on TriSoup edge 717. The existence flags for the remaining TriSoup edges may each indicate that the TriSoup vertex is not present on the corresponding TriSoup edge. The TriSoup node corresponding to occupied cuboid 700 may further include the location of each TriSoup vertex that is present along one of its TriSoup edges 710-721. More specifically, the TriSoup node corresponding to occupied cuboid 700 may further include a position p1 of TriSoup vertex V1, a position p2 of TriSoup vertex V2, a position p3 of TriSoup vertex V3, and a position p4 of TriSoup vertex V4.

[0063] Figure 8A shows an example of a cuboid corresponding to a TriSoup node. The cuboid 800 is a cuboid that is connected to the TriSoup vertex V k Within the cuboid 800, the TriSoup triangles may correspond to TriSoup nodes with a number K of TriSoup vertices V k A TriSoup triangle can be constructed from, for example, a TriSoup vertex V if there are at least three (K≧3) TriSoup vertices on the TriSoup edge of the rectangular solid 800. kIn the example of FIG. 8A, there are four TriSoup vertices, and a TriSoup triangle is constructed. The TriSoup triangle can be constructed around a centroid vertex C. The centroid vertex C is located at the center of the TriSoup vertex V. k The main direction may be determined and the vertex V k may be ordered by rotating around this direction, and the following KTriSoup triangles may be constructed: V1V2C, V2V3C, ..., V K V1C. The principal direction may be chosen from among three directions, each parallel to an axis in 3D space, to increase or maximize the 2D surface of the triangle, for example, if the triangle projects along the principal direction. The principal direction may be somewhat perpendicular to the local surface defined by the points of the point cloud belonging to the TriSoup node.

[0064] FIG. 8B shows an example fine-tuning for a TriSoup model. The TriSoup model can be fine-tuned by encoding the centroid survivor values. res can be coded into the bitstream. res For example, use C+C instead of C as the pivot vertex of the triangle. res C+C as the pivot vertices of the triangle. res By using res may be closer to a point in the point cloud than the centroid C, thereby reducing the reconstruction error and res The lower distortion can be achieved at the cost of a small increase in the bit rate required to encode the image.

[0065] FIG. 9 shows an example of voxelization. Voxelization may refer to the reconstruction of a decoded point cloud from a set of TriSoup triangles. Voxelization may be performed by ray tracing for each triangle individually. Voxelization may be performed by ray tracing for each triangle individually, for example, before removing overlapping points between voxelized triangles. As shown in FIG. 9, a ray 900 may be shot parallel to one of three axes in 3D space. The ray 900 may point to an integer coordinate Pstart The intersection point P of the ray 900 with the TriSoup triangle 901 belonging to the rectangular parallelepiped 902 corresponding to the TriSoup node int (if any) may be rounded to obtain the decoded point. int can be found using, for example, the Moller-Trumbore algorithm.

[0066] Existence flag (s k ) and existence flag (s k ) indicates the existence of a vertex, the current TriSoup edge position (p k ) can be entropy coded. k ) and position (p k ) may be individually or collectively referred to as vertex information. k ), and existence flags (s k ) indicates the existence of a vertex, the current TriSoup edge position (p k ) can be entropy coded, for example, based on the already coded presence flags and the positions of the TriSoup edges adjacent to the current TriSoup edge. k ) and existence flag (s k ) indicates the existence of a vertex, the current TriSoup edge position (p k ) may additionally or alternatively be entropy coded. The current TriSoup edge presence flag (s k ) and position (p k ) may additionally or alternatively be entropy coded, for example, based on the occupancy of cuboids adjacent to the current TriSoup edge. Similar to the entropy coding of the occupancy bits of the occupancy tree, the neighborhood of the current TriSoup edge (neighborhood configuration β TS (also called) configuration β TS Obtain the reduced configuration β TS '=DR n (β TS ) can be dynamically reduced to the current TriSoup edge neighborhood configuration β TSand obtain the reduced configuration β by using, for example, TriSoup's dynamic OBUF scheme. TS '=DR n (β TS ) can be dynamically reduced to the context index LUT[β TS '] may be obtained from the OBUF LUT. At least a portion of the vertex information of the current TriSoup edge may be entropy coded using the context (e.g., a probability model) pointed to by the context index.

[0067] The TriSoup vertex position (p k ) (if present) can be binary-valued. The TriSoup vertex positions (p k ) (if present) may be binarized to entropy code at least a portion of the vertex information of the current TriSoup edge, for example, using a binary entropy coder. b The number (e.g., amount) of TriSoup vertices along a TriSoup edge of length N (p k ) can be set to quantify the TriSoup edge of length N. Nb The quantization interval can be divided evenly. By doing so, the TriSoup vertex position (p k ) can be individually encoded by a dynamic OBUF scheme. b Bit(p k j 、 j=1,...,N b ), and existence flags (s k ) can be represented by bits corresponding to the neighborhood configuration β TS , OBUF reduction function DR n , and therefore the context index depends on the nature of the coded bits (e.g., presence flag (s k ), the highest bit (p k 1 ), the second highest bit (p k 2There are several possible dynamic OBUF schemes, each of which depends on a specific bit of information in the vertex information (e.g., existence flag (s k ) or position bit (p k j )) is exclusive to this site.

[0068] 10A and 10B show 12 rectangular parallelepipeds 1000-1003, 1010-1013, and 1020-1023, whose volumes intersecting with a current TriSoup edge E are entropy coded. The current TriSoup edge E is an edge of the rectangular parallelepipeds 1000-1003. The start point of the current TriSoup edge E intersects with the rectangular parallelepipeds 1010-1013. The end point of the current TriSoup edge E intersects with the rectangular parallelepipeds 1020-1023. The neighborhood configuration β of the current TriSoup edge E is entropy coded using one or more occupied bits of the 12 rectangular parallelepipeds 1000-1003, 1010-1013, and 1020-1023. TS can be determined.

[0069] TriSoup edges may be oriented from start to end according to the orientation of one of the three axes in 3D space along which they are parallel. The overall ordering of TriSoup edges may be defined as a lexicographical order over the set (e.g., start, end). Vertex information associated with TriSoup edges may be encoded according to the order of the TriSoup edges. The causal neighbors of the current TriSoup edge may be obtained from already encoded TriSoup edges that are adjacent to the current TriSoup edge.

[0070] 11A, 11B, and 11C show TriSoup edges (E' and E'') that may be used to entropy code the current edge E. In some instances, up to five TriSoup edges (E' and E'') may be used to entropy code the current edge E. The five TriSoup edges are: 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; - four edges E'' that are perpendicular to the current TriSoup edge E and have a start point or end point equal to the start point of the current TriSoup edge E. Depending on the direction of the current TriSoup edge E, any two (for direction z, FIG. 11C), three (for direction y, FIG. 11B), or four (for direction x, FIG. 11A) of the four perpendicular TriSoup edges may already be coded, and their vertex information is used to construct the neighborhood configuration β of the current TriSoup edge E. TS A TriSoup edge E′ may already be coded for each direction of the current TriSoup edge E, and its vertex information may be used to construct a neighborhood configuration β TS can be constructed.

[0071] As described herein, the neighborhood configuration β of the current TriSoup edge E TS can be obtained from one or more occupancy bits of the cuboid and from the vertex information of adjacent already encoded TriSoup edges. TS can be obtained from one or more of the 12 occupied bits of the 12 cuboids shown in Figures 10A and 10B, and from the vertex information of up to five adjacent already-encoded TriSoup edges (E' and E'') shown in Figures 11A, 11B, and 11C.

[0072] As shown in Figures 11A, 11B, and 11C, the vertex information of up to five TriSoup edges may be used to entropy code the current TriSoup edge E. More specifically, as shown in Figures 11A, 11B, and 11C, the vertex information of up to five TriSoup edges may be used to entropy code the neighborhood configuration β of the current TriSoup edge E. TS The neighborhood configuration β can be determined. TS is the reduced configuration β TS '=DR n (β TS ) can be dynamically reduced to the neighborhood configuration β TScan be achieved by using, for example, the dynamic OBUF scheme described herein, in a reduced configuration β TS '=DR n (β TS ) can be dynamically reduced to the context index LUT[β TS '] may be obtained from the OBUF LUT, and at least a portion of the vertex information of the current TriSoup edge E may be entropy coded using the context (e.g., a probability model) pointed to by the context index.

[0073] By entropy coding the current TriSoup edge E using the vertex information of up to five TriSoup edges, the neighborhood configuration β TS This may result in a weak correlation between the current TriSoup edge E and the vertex information of the current TriSoup edge E. The dynamic OBUF scheme may provide a context index for entropy coding the current TriSoup edge E with coding probabilities that are weakly correlated with the vertex information of the current TriSoup edge E. Because of this weak correlation, the vertex information of the current TriSoup edge E may not be compressed effectively.

[0074] The disclosure provided herein provides a method for determining the neighborhood configuration β of a current TriSoup edge E. TS and the vertex information of the current TriSoup edge E. The improved correlation may allow for more effective compression of the vertex information of the current TriSoup edge E using entropy coding. Improved compression using entropy coding may result in smaller storage requirements, faster and more efficient transmission of the point cloud data, and faster and more efficient processing of the point cloud data. This may lead to better experiences and wider adoption in volumetric visual data applications such as AR, VR, MR, and many others, as well as advances in any hardware implementations of such technologies. As described herein, the encoder and / or decoder may generate a neighborhood configuration β of the current TriSoup edge E. TSThe encoder and / or decoder may determine one or more symbols of the neighborhood configuration β of the current TriSoup edge E based on at least one TriSoup edge that does not intersect with the starting point of the current TriSoup edge E, unlike, for example, the up to five TriSoup edges shown in Figures 11A, 11B, and 11C. TS The vertex information of the at least one TriSoup edge may be used to determine one or more symbols of a neighborhood configuration β with improved correlation (e.g., in combination with one or more of the at least five TriSoup edges shown in FIGS. 11A, 11B, and 11C). 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, for example, 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 based on, for example, the neighborhood configuration β TS The reduced configuration β represents a subset of the symbols in TS '=DR n (β TS ) may select a context for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a neighborhood configuration β TS or reduced configuration β TS The encoder and / or decoder may select a context based on an OBUF LUT that maps ' to an index of the context. The encoder and / or decoder may entropy code (e.g., arithmetic code) the vertex information of the current TriSoup edge E. The encoder and / or decoder may entropy code (e.g., arithmetic code) the vertex information of the current TriSoup edge E, for example, based on the context.

[0075] 12A, 12B, and 12C show adjacent, already-encoded TriSoup edges that are adjacent to, but do not intersect with, the start point of the current TriSoup edge E. The current TriSoup edge E may be the TriSoup edge being entropy coded. The nearby, already-encoded TriSoup edges shown in FIGS. 12A, 12B, and 12C do not intersect with the start point of the current TriSoup edge E being entropy coded, unlike the up to five TriSoup edges shown in FIGS. 11A, 11B, and 11C. More specifically, FIGS. 12A, 12B, and 12C show adjacent, already-encoded 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 Shows.

[0076] FIG. 12A shows the number of already coded parallel edges E available for coding the current TriSoup edge E. par The parallel edges E par may be available to code the current TriSoup edge E, for example, based on the current TriSoup edge E being parallel to the x direction. FIG. 12B shows an already coded parallel edge E that is available to code the current TriSoup edge E. par The parallel edges E par may be available for coding the current TriSoup edge E, for example, based on the current TriSoup edge E being parallel to the y direction. FIG. 12C shows the previously coded parallel edges E that are available for coding the current TriSoup edge E. par The parallel edges E par may 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. parmay already be encoded according to a lexicographic order that globally orders the set of TriSoup edges, as described herein.

[0077] The encoder and / or decoder calculates the neighborhood configuration β of the current TriSoup edge E. TS The encoder and / or decoder may determine one or more symbols of the four already coded parallel edges E shown in Figures 12A, 12B, and 12C that are available for coding the current TriSoup edge E. par The neighborhood configuration β of the current TriSoup edge E based on one or more of TS 12A, 12B, and 12C, one or more symbols of four previously coded parallel edges E that may be used to code the current TriSoup edge E. par The particular set of parallel edges E may be determined based on, for example, the directions in which the current TriSoup edge E is parallel, as described herein. par vertex information of one or more of the TriSoup edges E (e.g., in combination with one or more of the at least five TriSoup edges shown in FIGS. 11A, 11B, and 11C) is used to form a neighborhood configuration β 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. ... 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 based on, for example, neighborhood configuration β TS The reduced configuration β represents a subset of the symbols of TS '=DRn (β TS ), the encoder and / or decoder may select a context for coding the vertex information of the current TriSoup edge E. TS or reduced configuration β TS The encoder and / or decoder may, for example, entropy code (e.g., arithmetic code) the vertex information of the current TriSoup edge E based on the context.

[0078] 13A, 13B, and 13C show previously coded TriSoup edges that are adjacent to, but do not intersect with, the start point of the current TriSoup edge. The nearby previously coded TriSoup edges shown in FIGS. 13A, 13B, and 13C do not intersect with the start point of the current TriSoup edge E being entropy coded, unlike the up to five TriSoup edges shown in FIGS. 11A, 11B, and 11C. More specifically, FIGS. 13A, 13B, and 13C show adjacent previously coded TriSoup edges E that are perpendicular to the current TriSoup edge E and may intersect with the end point of the current TriSoup edge E. perp Shows.

[0079] FIG. 13A shows how to code the current TriSoup edge E based on the fact that the current TriSoup edge E is parallel to the x-axis, and how to code the current TriSoup edge E by using the already coded perpendicular edge E. perp 13B shows that one already coded vertical edge E perp can be used to code the current TriSoup edge E based on the fact that the current TriSoup edge E is parallel to the y-axis. perp may be used to code the current TriSoup edge E based on the fact that the current TriSoup edge E is parallel to the z-axis.perp may already be encoded according to a lexicographic order, which globally orders the set of TriSoup edges, as described herein.

[0080] The encoder and / or decoder calculates the neighborhood configuration β of the current TriSoup edge E. TS The encoder and / or decoder may determine one or more symbols of the already coded vertical edge E shown in Figures 13A, 13B, and 13C that are available for coding the current TriSoup edge E. perp The neighborhood configuration β of the current TriSoup edge E based on one or more of TS 13A, 13B, and 13C that may be used to code the current TriSoup edge E. perp The particular set of edges E may be determined, for example, based on the direction to which the current TriSoup edge E is parallel, as described herein. perp vertex information of one or more of the at least five TriSoup edges shown in FIGS. 11A, 11B, and 11C, and / or the four already coded parallel edges E shown in FIGS. 12A, 12B, and 12C. par (combined with one or more of TS The encoder and / or decoder can select a context (e.g., a probability model) for coding the vertex information of the current TriSoup edge E. ... 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 based on, for example, the neighborhood configuration β TS The reduced configuration β represents a subset of the symbols of TS '=DR n (β TS ) to select 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. The OBUF LUT selects a context based on the neighborhood configuration β TS or reduced configuration β TS ' to an index of the context. The encoder and / or decoder may entropy code (e.g., arithmetic code) the vertex information of the current TriSoup edge E based on the context.

[0081] 14A, 14B, and 14C show adjacent, already-encoded edges of a current TriSoup edge E. The adjacent, already-encoded edges may be obtained from the spatial topology of the current TriSoup edge E. The adjacent, already-encoded edges may be taken from the spatial topology of 18 edges (e.g., labeled 0 through 17). The current TriSoup edge E may be parallel to the x-direction (FIG. 14A), y-direction (FIG. 14B), or z-direction (FIG. 14C). Edge 0 corresponds to the only edge (E' in FIG. 11) that is parallel to the current TriSoup edge E and whose end point is equal to (e.g., coincident with) the start point of the current TriSoup edge E. Edges 1, 2, 3, and 4 correspond to up to four edges (E'' in FIGS. 11A, 11B, and 11C) that are perpendicular to the current TriSoup edge E and whose start or end point is equal to (e.g., coincident with) the start point of the current TriSoup edge E. Edges 14, 15, 16, and 17 are parallel to the current TriSoup edge E and belong to the same TriSoup node as the current TriSoup edge E (E in Figures 12A, 12B, and 12C). par Edges 9 and 10 are edges that are perpendicular to the current TriSoup edge E and intersect with the end point of the current TriSoup edge E (E in FIGS. 13A, 13B, and 13C). perp ). Edges 1, 2, 3, 4, 5, 6, 7, and 8 belong to the same TriSoup node as the current TriSoup edge E, are perpendicular to the current TriSoup edge E, and may belong to the plane containing the start point E of the current TriSoup edge. Edges 9, 10, 11, 12, and 13 belong to the same TriSoup node as the current TriSoup edge E, are perpendicular to the current TriSoup edge E, and may belong to the plane containing the end point E of the current TriSoup edge.

[0082] The encoder and / or decoder calculates the neighborhood configuration β of the current TriSoup edge E. TSThe encoder and / or decoder may determine one or more symbols of the neighborhood configuration β of the current TriSoup edge E based on one or more of the coded edges 0-17 shown in Figures 14A, 14B, and 14C that are available for coding the current TriSoup edge E. TS 14A, 14B, and 14C that can potentially be used to code the current TriSoup edge E may be determined based on, for example, the direction to which the current TriSoup edge E is parallel. Using vertex information for one or more of the edges 0-17 already coded, a neighborhood configuration β of the current TriSoup edge E may be determined. 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, for example, determine one or more symbols of the neighborhood configuration β 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 based on, for example, neighborhood configuration β TS The reduced configuration β represents a subset of the symbols of TS '=DR n (β TS ), the encoder and / or decoder may select a context for coding the vertex information of the current TriSoup edge E based on the neighborhood configuration β TS or reduced configuration β TSThe encoder and / or decoder may select a context based on an OBUF LUT that maps ' to an index of the context. The encoder and / or decoder may entropy code (e.g., arithmetic code) the vertex information of the current TriSoup edge E. The encoder and / or decoder may entropy code (e.g., arithmetic code) the vertex information of the current TriSoup edge E, for example, based on the context.

[0083] The 18-edge spatial topology shown in Figures 14A, 14B, and 14C may include a sub-space topology of edges. Each edge of the sub-space topology of edges may be available (e.g., already coded) for coding the current TriSoup edge E, regardless of the direction to which the current TriSoup edge E is parallel. Figures 15A, 15B, and 15C show examples of sub-space topologies of TriSoup edges. The sub-space topology of TriSoup edges may be, for example, an 18-edge spatial topology as shown in Figures 14A, 14B, and 14C. The sub-space topology of edges may include 11 edges 0, 1, 2, 5, 6, 7, 8, 14, 15, 16, and 17. 15A, 15B, and 15C show that for each of the three possible directions of a current TriSoup edge E, each of eleven edges of the edge subspace topology may be available for coding the current TriSoup edge E. FIG. 15A shows that each of eleven edges of the edge subspace topology may be available for coding the current TriSoup edge E, for example, if the current TriSoup edge E is parallel to the x-axis. FIG. 15B shows that each of eleven edges of the edge subspace topology may be available for coding a current TriSoup edge E that is parallel to the y-axis. FIG. 15C shows that each of eleven edges of the edge subspace topology may be available for coding a current TriSoup edge E that is parallel to the z-axis.

[0084] A different configuration of subspace topology may be used for each direction of the current TriSoup edge E. The different configurations may include different rotations and / or mirror configurations of the edge subspace topology. The edge subspace topology of FIG. 15A may be rotated 90 degrees in two different directions (e.g., rotated about the y-axis and rotated about the z-axis) relative to the edge subspace topology of FIG. 15C. The edge subspace topology of FIG. 15A may be rotated 90 degrees (e.g., about the z-axis) and mirrored (e.g., in the xz plane) relative to the edge subspace topology of FIG. 15B.

[0085] The encoder and / or decoder calculates the neighborhood configuration β of the current TriSoup edge E. TS The encoder and / or decoder may determine one or more symbols of the neighborhood configuration β of the current TriSoup edge E based on only the edges belonging to the edge subspace topology shown in Figures 15A, 15B, and 15C that are available for coding the current TriSoup edge E, regardless of direction (e.g., regardless of the direction to which the current TriSoup edge E is parallel). 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, for example, determine one or more symbols of the neighborhood configuration β 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 based on, for example, the reduced configuration β TS '=DR n (β TS ), we can select a context for coding the vertex information of the current TriSoup edge E. TS '=DR n (β TS) is the neighborhood configuration β TS The encoder and / or decoder may represent a subset of the symbols in the neighborhood configuration β TS or reduced configuration β TS The encoder and / or decoder may select a context based on an OBUF LUT that maps ' to an index of the context. The encoder and / or decoder may entropy code (e.g., arithmetic code) the vertex information of the current TriSoup edge E. The encoder and / or decoder may entropy code (e.g., arithmetic code) the vertex information of the current TriSoup edge E, for example, based on the context.

[0086] The spatial topology of edges may be referred to as the direction-independent spatial topology of edges: each edge of the spatial topology of edges may be available (e.g., already coded) for coding the current TriSoup edge E, regardless of the direction of the current TriSoup edge E.

[0087] By having a unique set of statistics for all three directions of the current TriSoup edge E, the dilution of the 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 dilution of the dynamic OBUF statistics can be reduced or avoided, for example, by having a unique set of statistics for all three directions of the current TriSoup edge E based on edges that belong only to a spatial topology that is independent of the edge direction, for example, by having a unique set of statistics for the current TriSoup edge E's neighborhood configuration β TS The neighborhood configuration β of the current TriSoup edge E can be reduced or avoided by determining one or more symbols of TS The one or more symbols of may be determined based on edges that belong only to a direction-independent spatial topology of edges, such as the sub-spatial topologies of edges shown in Figures 15A, 15B, and 15C. This may result in faster convergence of the context index OBUF LUT and more efficient compression of the vertex information of the current TriSoup edge E.

[0088] The encoder and / or decoder implementation is based on edges that belong only to the direction-independent spatial topology of edges, and the neighborhood configuration β of the current TriSoup edge E TS In this implementation, the encoder and / or decoder may determine one or more symbols of the neighborhood configuration β TS may be divided into at least three series of bits.

number

[0089] The benefits of edge direction-independent spatial topology can be realized, for example, when the point cloud geometry is spatially isotropic at the scale of the spatial topology. Because the statistics may be fundamentally independent of direction, sharing statistics across directions may be undesirable. This condition can be met because the local (e.g., at the size scale of a TriSoup node) geometry of the point cloud can be generally isotropic for reasonable TriSoup node sizes.

[0090] 16A, 16B, and 16C show adjacent, already-encoded edges. The adjacent, already-encoded edges can be obtained from a spatial topology of nine edges of the current TriSoup edge E. The nine edges of the spatial topology are labeled a through i. The current TriSoup edge E can be parallel to the x direction (FIG. 16A), the y direction (FIG. 16B), or the z direction (FIG. 16C). The nine-edge spatial topology shown in FIGS. 16A, 16B, and 16C can be used as an alternative to the 18-edge spatial topology shown in FIGS. 14A, 14B, and 14C. Being smaller than the 18-edge spatial topology shown in FIGS. 14A, 14B, and 14C, the nine-edge spatial topology shown in FIGS. 16A, 16B, and 16C is simpler to compute but has less correlation, which may result in poorer compression performance.

[0091] The encoder and / or decoder calculates the neighborhood configuration β of the current TriSoup edge E. TSThe encoder and / or decoder may determine one or more symbols of the neighborhood configuration β of the current TriSoup edge E based on, for example, one or more of the previously coded edges a through i shown in Figures 16A, 16B, and 16C that are available for coding the current TriSoup edge E. TS , may determine one or more symbols of the current TriSoup edge E. A particular set of previously coded edges a-i shown in Figures 16A, 16B, and 16C that can be used to code the current TriSoup edge E may be determined. A particular set of previously coded edges a-i shown in Figures 16A, 16B, and 16C that can be used to code the current TriSoup edge E may be determined based on, for example, the direction to which the current TriSoup edge E is parallel. Using vertex information for one or more of the previously coded edges a-i, a neighborhood configuration β of the current TriSoup edge E may be determined. 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, for example, determine one or more symbols of the neighborhood configuration β 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 based on, for example, neighborhood configuration β TS The reduced configuration β represents a subset of the symbols of TS '=DR n (β TS ) may select a context for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a neighborhood configuration β TS or reduced configuration β TSThe encoder and / or decoder may select the context based on an OBUF LUT that maps ' to an index of the context. The encoder and / or decoder may entropy code (e.g., arithmetic code) the vertex information of the current TriSoup edge E based on the context.

[0092] The nine edge spatial topologies shown in Figures 16A, 16B, and 16C may include edge subspace topologies. Each edge of the edge subspace topology may be available (e.g., already coded) for coding the current TriSoup edge E, regardless of the direction to which the current TriSoup edge E is parallel. Figures 17A, 17B, and 17C show examples of TriSoup edge subspace topologies. The TriSoup edge subspace topology may include five edges a, b, c, f, and g of the nine-edge spatial topologies shown in Figures 16A, 16B, and 16C. Figures 17A, 17B, and 17C show that for each of the three possible directions of the current TriSoup edge E, each of the five edges of the edge subspace topology may be available for coding the current TriSoup edge E. Figure 17A shows that each of the five edges of the edge subspace topology may be available for coding a current TriSoup edge E, for example, if the current TriSoup edge E is parallel to the x-axis. Figure 17B shows that each of the five edges of the edge subspace topology may be available for coding a current TriSoup edge E that is parallel to the y-axis. Figure 17C shows that each of the five edges of the edge subspace topology may be available for coding a current TriSoup edge E that is parallel to the z-axis.

[0093] The encoder and / or decoder calculates the neighborhood configuration β of the current TriSoup edge E. TSThe encoder and / or decoder may determine one or more symbols of the neighborhood configuration β of the current TriSoup edge E based on only the edges belonging to the edge subspace topology shown in Figures 17A, 17B, and 17C that are available for coding the current TriSoup edge E, regardless of direction (e.g., regardless of the direction to which the current TriSoup edge E is parallel). 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, for example, determine one or more symbols of the neighborhood configuration β 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 based on, for example, neighborhood configuration β TS The reduced configuration β represents a subset of the symbols of TS '=DR n (β TS ) may select a context for coding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a neighborhood configuration β TS or reduced configuration β TS The encoder and / or decoder may select the context based on an OBUF LUT that maps ' to an index of the context. The encoder and / or decoder may entropy code (e.g., arithmetic code) the vertex information of the current TriSoup edge E based on the context.

[0094] 18A, 18B, and 18C show spatial topologies including TriSoup edges and TriSoup nodes. The spatial topology can be a direction-independent spatial topology created by a combination of TriSoup edges and TriSoup nodes. FIGS. 18A, 18B, and 18C show additions to the edge-only direction-independent spatial topology of FIGS. 17A, 17B, and 17C. Four TriSoup nodes labeled A, B, C, and D are added that intersect with the endpoint of the current TriSoup edge E. These four nodes are not drawn to scale for clarity. These four nodes can correspond to nodes 1020-1023 in FIG. 10B. The four nodes are labeled for each direction to achieve topological direction independence for a spatial topology consisting of five edges a, b, c, f, and g and four nodes A-D. Doing so results in a neighborhood configuration β TS One or more symbols of can be constructed from a direction-independent spatial topology consisting of a combination of edges and nodes.

[0095] As described herein with respect to various examples shown in FIGS. 11-18, the spatial (or subspace) topology of edges adjacent to (e.g., defined relative to) a current TriSoup edge E is determined by the neighborhood configuration β of the current TriSoup edge E. TS The encoder and / or decoder may include one or more already encoded edges that are used to determine one or more symbols of . k ) may be selected. The encoder and / or decoder may, for example, select a context (or probability model) for coding the neighborhood configuration β TS Based on the vertex information (e.g., vertex existence flag (s k ) for coding. The encoder and / or decoder may select a context (or probability model) for coding the vertex information (e.g., neighborhood configuration β) of the current TriSoup edge E if the vertex exists (i.e., if the existence flag is equal to true). TSand the vertex position (p k ) based on the vertex existence flag (s k The encoder and / or decoder may select a context (or probability model) for coding the vertex information (e.g., vertex presence flags (s)) according to the dynamic OBUF as discussed herein. k ) may select a context (or probability model) for coding the edge occupancy values ​​(e.g., vertex presence flags (s)) of the edges already coded, selected from the spatial topology of the edges. k )). The occupancy value may be a binary value, representing the binary state / information of the already coded edge. For example, the occupancy value associated with an already coded edge may be a binary value representing the presence or absence of a (TriSoup) vertex on the already coded edge.

[0096] The disclosure provided herein provides a method for determining the neighborhood configuration β of a current edge (e.g., the current TriSoup edge E). TS and the vertex information of the current edge E being coded. Throughout this disclosure, the "neighborhood configuration" may also be referred to as "neighborhood information." TS is a portion β determined based on (e.g., as a result of) a linear combination of occupancy values ​​associated with edges and / or cuboids adjacent to the current edge. comb The linear combination may include a coefficient (for each edge and / or cuboid), each coefficient having a sign based on the spatial position of the respective edge / cuboid relative to the current edge, to improve and increase correlation. Each of the coefficients may have a magnitude based on the spatial position relative to the current edge. comb may result in improved correlation to the vertex information (e.g., vertex presence and / or vertex position) of the current edge, for example, by determining / configuring the sign and / or magnitude of each coefficient of the linear combination. One or more coefficients may be included in the portion β combA negative sign may be assigned to reduce the influence or weight of one or more occupancy values ​​corresponding to one or more coefficients having a linear combination associated with: Improved correlation allows for more effective compression of the vertex information for the current edge using entropy coding, as described above.

[0097] The occupancy value of an edge (e.g., a TriSoup edge) among multiple edges adjacent to the current edge may indicate vertex information for that edge. Figures 19A, 19B, and 19C show example vertex information for a TriSoup edge E' (described below as edge E') used for entropy coding vertex information for a current TriSoup edge E (described below as edge E). For example, Figure 19A shows that edge E' has no vertices. The vertex information for edge E' may include a vertex presence flag indicating the absence of a vertex and may not include a vertex position because no vertex exists. Figures 19B and 19C show that edge E' has a vertex V. The vertex information for edge E' may include a vertex presence flag indicating the presence of vertex V and may include a vertex position indicating the position of vertex V along edge E'.

[0098] The occupancy value of edge E' may be a binary value indicating whether a vertex is present or absent along edge E'. The occupancy value may indicate whether a vertex having a position within a threshold distance of the current edge E is present on or along edge E'. The threshold distance may be between the position of the current edge E and an end point, for example, an end point that intersects with edge E'. The threshold distance may be half the length of edge E', one-quarter the length of edge E', etc. In FIG. 19B, the occupancy value of edge E' may be a binary value indicating that vertex V having a position within a threshold distance of the current edge E is not present on edge E'.

[0099] The occupancy value of an edge E' can be a non-binary value. The occupancy value of an edge E' is determined by the presence / absence (s k’ ) The occupancy value of an edge E' can be a non-binary value determined based on the presence / absence (s k’), and if the vertex exists, the TriSoup vertex position (p k’ ), the occupancy value may be a ternary value that indicates both whether a vertex (e.g., a TriSoup vertex V) is on an edge E' and the relative position of the vertex with respect to the current edge E. The ... whether a vertex (e.g., a TriSoup vertex V) is on an edge E' that has already been encoded (e.g., s k’ is false), it may be equal to '0', e.g., it exists on an already coded edge E' (e.g., s k’ is true) there is a vertex, but the vertex is at a position (p k’ ), the occupancy value may be equal to '1'. k’ is true) there is a vertex, and the vertex is at a position (p k’ ), the occupancy value may be equal to '2'. For example, referring to FIG. 19A, edge E' has no vertices, and its occupancy value may be determined as occ(E')=0. For example, referring to FIG. 19B, edge E' has vertices with vertex positions that are far from the current edge E (e.g., outside the threshold distance), and its occupancy value may be determined as occ(E')=1. For example, referring to FIG. 19C, edge E' has vertices with vertex positions that are close to the current edge E (e.g., within the threshold distance), and its occupancy value may be determined as occ(E')=2.

[0100] The occupancy value of a node (e.g., a TriSoup node) corresponding to an adjacent cuboid relative to the current edge E may indicate the occupancy status of the adjacent cuboid. A cuboid may be adjacent to the current edge E if it intersects with the current edge E, for example, as described in FIG. 10. The occupancy values ​​of a node and the corresponding cuboid may be binary values ​​indicating (or representing) the presence or absence of at least one point of the point cloud within the volume / cuboid associated with the adjacent node. The occupancy status of a node (or the corresponding cuboid) may correspond to an occupancy bit associated with the node, as described in FIG. 3. The node may be a leaf node of the occupancy tree.

[0101] Neighborhood information β for coding the vertex information of the current edge E TS A part of β comb may be based on (e.g., is the result of) a linear combination of occupancy values ​​'occ(.)' associated with adjacent already coded edges and / or cuboids. Occupancy values ​​may be binary or non-binary values, as discussed herein. An edge may be adjacent to the current edge based on edges belonging to at least one cuboid that intersects with the current edge. A node (or corresponding cuboid) may be adjacent to the current edge based on the node / cuboid intersecting with the current edge.

[0102] Partial β comb The linear combination of may be determined as a weighted sum over the element "el", which may be either an adjacent edge or an adjacent cuboid relative to the current edge E for which vertex information is coded, as follows:

number

[0103] Partial β comb is the neighborhood information β TS The quantity of bits (e.g., number) N bit A quantity (e.g., number) of bits N bit is over all possible occupancy values ​​of the elements in the linear combination, β comb The smallest possible value of (e.g., min(β comb )), and the maximum possible value (e.g., max(β comb )), e.g., the quantity (e.g., number) of bits N bit can be determined as follows:

number

[0104] Neighborhood information β TS A part of β combmay include a symbol. The symbol may be determined, for example, based on a value resulting from a linear combination as discussed herein. The symbol may be, for example, a binary value determined based on comparing the result of a linear combination of the occupancy values ​​"occ(.)" to a threshold "th."

number

[0105] The occupancy values ​​of edges and / or cuboids (which may correspond to nodes of an occupancy tree, for example) may be aggregated in linear combinations. The occupancy values ​​of edges and / or cuboids may be aggregated in linear combinations of the fraction β comb The linear combination may include a coefficient corresponding to each edge and / or cuboid. Each of the coefficients may have a code based on the spatial position of the respective edge / cuboid relative to the current edge E. A first quantity (e.g., number) N of occupied edges and nodes already coded start may belong to the spatial proximity of the current edge E. A first quantity (e.g., number) N of nodes that intersect with the already coded occupied edges and the starting point of the current edge E. start A second quantity (e.g., number) N of occupied edges and nodes already coded may be determined. end may belong to the spatial neighborhood. A second quantity (e.g., number) N of occupied edges already coded end, and the node that intersects with the end point of the current edge E may also be determined. The occupancy value of the k'-th edge may be determined, or the edge may be k’ ), the occupancy value of the k'-th edge is the edge that is occupied by the vertex (V k’ ) and may indicate, for example, that the existence flag (sk') is true. The occupancy value of an edge may be, for example, the occupancy value of the current vertex (V k’ An edge may be determined or indicated to be occupied based on the location of the edge E being within a threshold distance of the end point (e.g., start point or end point) of the current edge E that intersects with the edge. The threshold distance may be half the length of the edge or one-quarter the length of the edge.

[0106] 20A, 20B, and 20C show an example of aggregating vertex information of multiple TriSoup edges. The vertex information of multiple TriSoup edges can be aggregated into the spatial topology of the current TriSoup edge E for entropy coding vertex information of the current TriSoup edge E. A first quantity (e.g., number) N start may be the sum of the occupancy values ​​(e.g., 0 = unoccupied, 1 = occupied) of one or more available (e.g., already coded) edges of edges 0 to 4. The available edge(s) of edges 0 to 4 may depend on the direction of the current edge E. For example, as shown in FIG. 20B, N start For example, if the current edge E is in a direction parallel to the y-axis (e.g., in the y-direction), then N may be the sum of the occupancy values ​​of the four edges 0 to 3. The second quantity (e.g., a number) N end may be the sum of the occupancy values ​​of one or more available (e.g., already coded) edges of edges 9 and 10. The available edge(s) of edges 9 and 10 may depend on the direction of the current edge E. As shown in FIG. 20B, a second quantity (e.g., number) N end may contain the occupancy value of edge 9 since edge 10 may not be available for the current edge E in the y direction.

[0107] A first quantity (e.g., a number) N startA high value for may be an indicator of points that are likely to be located near the start of the current edge. end A high value for N can be an indicator of points that are likely to be located near the end point of the current edge. start and N end The magnitude of is the position of the vertex (p k ) can be correlated with N start and N end The amount (e.g., number) of neighbor information β used by the dynamic OBUF is used TS A part of β comb and construct a bit (p k j ) can be coded.

[0108] Difference ΔN=N end -N start , which may be used to sum up the occupancy values ​​of edges and / or cuboids. High values ​​of ΔN are associated with vertex positions (v k ) can be an indicator of a low (negative) value of ΔN. A low (negative) value of ΔN can be an indicator of a vertex position (v k ) can be an indicator of the neighborhood information β TS The part β of comb For example, β can be determined based on the difference ΔN. As shown in FIG. 20C, for a current edge E having a direction parallel to the z-axis, comb may be determined as a result of a linear combination of multiple edges adjacent to the current edge E (eg, the available edges 0, 1, 2, 9, and 10 already coded) as follows:

number

[0109] As shown in FIG. 20D, for a current edge E having a direction parallel to the z-axis, β comb may be determined as a result of a linear combination of multiple edges adjacent to the current edge E (e.g., the already coded available edges 1, 2, and 9 that have vertices, and edges 0 and 10 that do not have vertices).

number

[0110] The linear combination may include multiple occupancy values. The multiple occupancy values ​​may correspond to multiple edges. Each occupancy value may have a magnitude and sign based on the spatial location of the respective edge. As shown in Figures 19A, 19B, and 19C, an occupancy value may be equal to '0', for example, if there is no vertex on an already coded edge. An occupancy value may be equal to '1', for example, if there is a vertex on an already coded edge, but the vertex does not have a location within a threshold distance to the current edge. An occupancy value may be equal to '2', for example, if there is a vertex on an already coded edge, and the vertex has a location within a threshold distance to the current edge. For example, edges 9 and 10 may correspond to adjacent edges that each intersect with the end point of current edge E and have a positive sign. The occupancy value corresponding to edge 9 may be '+1' because the vertex on edge 9 is not within the threshold distance. The occupancy value corresponding to edge 10 may be '0' because there is no vertex on edge 10. Edges 2, 1, and 0 may correspond to adjacent edges that each intersect with the start point of the current edge and have a negative sign. The occupancy value corresponding to edge 1 may be '2' because the vertex of edge 1 is within the threshold distance. The occupancy value corresponding to edge 2 may be '1' and the occupancy value corresponding to edge 0 may be '0'. This example illustrates the occupancy value of β comb where σ can be determined as follows:

number

[0111] The threshold is compared to a linear combination, e.g., the difference ΔN, and the neighborhood information β TS The part β of comb may be determined as a binary symbol. For example, the portion β comb The symbol ' can indicate whether ΔN>0.

number

[0112] FIG. 21 shows an example of aggregating vertex information for multiple TriSoup edges. More specifically, FIG. 21 shows an example of aggregating vertex information for multiple TriSoup edges shown in FIG. 20A and the occupancy states of multiple TriSoup nodes (and corresponding cuboids), and entropy coding the vertex information for the current TriSoup edge E. As shown in FIG. 21, the available edges include edges 0 to 4, each of which intersects with the start point of the current edge E. Furthermore, as shown in FIG. 21, cuboids A to D each intersect with the end point of the current edge E. Part β comb contains a linear combination of the occupancy values ​​of the corresponding elements including edges 0-4 and cuboids A-D.

number

number

[0113] As described herein, the coefficients of the linear combination may be determined by using a training algorithm to determine more optimal coefficients. A minimization algorithm is used to determine the neighborhood information β TS The binary part of β comb The conditional entropy H(s k ,β comb ) or H(p k j ,β comb ) to minimize the optimal parameters (e.g., coefficients w elおよび閾値「th」)を見つけることができる。 Using a minimization algorithm, e.g., β comb Based on the part, the optimal parameters can be found.

number

[0114] 22A illustrates an example method for encoding vertex information for a current edge. More specifically, FIG. 22A illustrates a flowchart 2200 of example method steps for encoding vertex information for a current edge. The current edge may be an edge of a cuboid that is part of a point cloud (e.g., a TriSoup edge). One or more steps of the example flowchart 2200 may be implemented by an encoder, such as the encoder 114 shown in FIG. 1.

[0115] In step 2202, the encoder may calculate a value based on a linear combination of multiple occupancy values ​​and multiple respective coefficients. The multiple occupancy values ​​may indicate vertex information for multiple respective edges (e.g., TriSoup edges) adjacent to the current edge (e.g., the current TriSoup edge). The multiple coefficients may include multiple respective codes, each of which is based on the spatial position of each of the multiple respective edges relative to the current edge. Each edge segment (e.g., the current edge or each of the multiple edge segments) has two end points, including a start point and an end point, as shown in FIGS. 11-21. The edge is oriented from the start point to the end point along one of three axes (x-axis, y-axis, z-axis) in 3D space. Thus, each edge segment has a direction indicating its orientation along one of the three axes in 3D space.

[0116] Multiple edges may belong to an edge spatial topology, and each edge of the edge spatial topology may be available for coding the current edge. The edge spatial topology may be a neighborhood of already coded edges corresponding to the direction of the current edge, as shown and described herein with respect to Figures 14A, 14B, and 14C, and also described herein with respect to Figures 15A, 15B, and 15C and Figures 16A, 16B, and 16C. Each of the multiple edges (i.e., edges adjacent to the current edge) may belong to at least one cuboid intersecting with the current edge, as described herein with respect to Figures 10A and 10B, for example. Each of the multiple edges may intersect with one of the two ends of the current edge. Each of the edges may belong to at least one cuboid intersecting with one of the two endpoints of the current edge.

[0117] Each of the multiple edges may belong to a spatial topology of edges that includes (or consists of) only edges that are parallel to the current edge, intersect with the starting point of the current edge, and belong to the same cuboid as the current edge.

[0118] The amount of multiple edges may be independent of the direction of the current edge. For example, each possible direction of the x-axis, y-axis, and z-axis may correspond to five edges for coding the current edge E, as shown in Figures 20A, 20B, and 20C. Each of the multiple codes may further be based on the direction of the current edge.

[0119] The plurality of coefficients may include a plurality of respective magnitudes, each of which is based on a spatial position of each edge of the plurality of respective edges relative to the current edge, and each of the plurality of magnitudes may be further based on a direction of the current edge.

[0120] The spatial position of each edge may indicate the distance of the edge from the current edge. The spatial position of each edge may indicate which of the two end points of the current edge the edge intersects. The two end points of the current edge may include the start point of the current edge and the end point of the current edge. The sign of each of the plurality of symbols may be based on a spatial position indicating whether each of the plurality of respective edges intersects the start point or the end point. An edge that intersects the start point (of the current edge) has an occupancy value having a coefficient that may have a first sign (e.g., one of a positive sign or a negative sign). An edge that intersects the end point has an occupancy value having a coefficient that may have a second sign opposite the first sign. For each coefficient of the plurality of coefficients, the sign of the coefficient may be, for example, a positive sign based on (e.g., in response to) the edge corresponding to the coefficient intersecting the start point of the two end points. For each coefficient of the plurality of coefficients, the sign of the coefficient may be, for example, a negative sign based on (e.g., in response to) the edge that intersects the two end points (or vice versa in other embodiments).

[0121] The signs and / or magnitudes of the coefficients of the linear combination may be predetermined, for example, based on using a minimization algorithm (e.g., a genetic algorithm, simulated annealing, etc.) with respect to the entropy encoding of the vertex information of the edges of a sample point cloud, which may represent a point cloud including the current edge whose vertex information is to be entropy encoded.

[0122] The encoder may determine a plurality of occupancy values ​​for a plurality of respective edges belonging to a spatial topology of edges for the current edge, where each occupancy value for each available edge may indicate vertex information for the available edge. The spatial topology may include adjacent edges each belonging to at least one cuboid that intersects with the current edge.

[0123] The vertex information of an edge (e.g., available or already coded) may include a vertex presence flag indicating whether a vertex exists on the edge, as shown, for example, in FIG. 19A. The vertex information of an edge may also include a vertex position indicating the location of the vertex on the edge, as shown, for example, in FIGS. 19A, 19B, and 19C. Each occupancy value of the multiple occupancy values ​​may be based on the vertex information of a respective edge of the multiple edges. Each occupancy value may be a binary value indicating whether a vertex exists on the edge. Each occupancy value may be a binary value indicating whether a vertex exists on the edge based on the vertex presence flag.

[0124] Each occupancy value, based on the vertex presence flag and the vertex position (if the vertex exists), may be a binary value indicating whether the vertex exists with its position on the respective edge within a threshold distance of the current edge. The threshold distance may be half the length of the edge. The threshold distance may be one-quarter the length of the edge. The threshold distance may be between the position of the vertex and the end point of the current edge that intersects with the edge.

[0125] Each occupancy value (for each edge) may include a value indicating whether a vertex is present along the edge and, if so, whether the vertex's location is within a threshold distance of the current edge. The values ​​may be non-binary. Each occupancy value may include a ternary value including (or consisting of) one of the following: a first value (e.g., '0') indicating the absence of the vertex; a second value (e.g., '1') indicating the vertex is present at a location greater than the threshold distance; and / or a third value (e.g., '2') indicating the vertex is present at a location within the threshold distance. Vertices located closer to the current edge may be weighted more heavily in the linear combination, for example, by including a non-binary value. Weighting vertices located closer to the current edge in the linear combination may increase the correlation between the vertex's presence on the current edge and / or the vertex's location (if any) being closer to the end point of the current edge that intersects the edge portion.

[0126] A value (e.g., an occupancy value) is calculated based on the sum of the offset and the result of the linear combination. The offset may be based on the direction of the current edge. The offset may be a predetermined value for each possible direction. The offset may be based on (or correspond to) the amount of multiple coefficients with negative signs.

[0127] The linear combination may be expanded to include occupancy values ​​of nodes corresponding to each cuboid intersecting the current edge. The value may be calculated, for example, based on the sum of the linear combination and a second linear combination of the second plurality of occupancy values ​​with the second plurality of respective coefficients. The second plurality of occupancy values ​​may indicate a plurality of occupancy states of each cuboid intersecting the current edge. The plurality of occupancy states may be associated with a plurality of respective nodes corresponding to each cuboid. Each of the plurality of cuboids may intersect with one of the two ends of the current edge. Each of the plurality of cuboids may intersect with only two end points of the current edge. The plurality of nodes may correspond to the same level in the occupancy tree as the cuboid that has the current edge as its edge.

[0128] A value (e.g., an occupancy value) may be calculated based on the sum of the linear combination and the second linear combination. A value (e.g., an occupancy value) may be calculated based on (e.g., in response to) the sum of the linear combination and the second linear combination, for example, based on (e.g., in response to) each of the multiple edges intersecting only the start points of the two end points. A value may be calculated based on (e.g., in response to) the sum of the linear combination and the second linear combination, for example, based on (e.g., in response to) the current edge being in a particular direction (e.g., along the x-direction or x-axis). Each of the multiple cuboids may intersect only the two end points of the current edge. A multiple number of nodes may correspond to the same level in the occupancy tree as the cuboid that has the current edge as its edge.

[0129] The second plurality of coefficients (of the second linear combination) may include a second plurality of respective signs. Each second respective sign may be based on a spatial position of each cuboid of the plurality of cuboids relative to the current edge. The spatial position of each cuboid may indicate a distance of the cuboid from the current edge. The spatial position of each cuboid may indicate a point at which two end points of the plurality of respective cuboids intersect.

[0130] The coefficients (corresponding to the occupancy values ​​of the cuboid) may have a negative sign (or alternatively a positive sign). The coefficients (corresponding to the occupancy values ​​of the cuboid) may have a negative sign (or alternatively a positive sign), for example, based on the cuboid intersecting the two end points. The cuboid intersecting the start point may be associated with a coefficient having an opposite sign to the sign of the edge or cuboid intersecting the end point. As shown in FIGS. 10A, 10B, and 10C, the current edge may be an edge of (and therefore intersect with) four cuboids, and the four cuboids may intersect with the start point of the current edge, and the four cuboids may intersect with the end point of the current edge.

[0131] The second plurality of coefficients may include a second plurality of respective magnitudes. Each of the second plurality of respective magnitudes may be based on a spatial position of each of the plurality of respective cuboids relative to the current edge. Each of the second plurality of occupancy states may indicate whether each of the plurality of respective cuboids includes one or more points of the point cloud. The occupancy states may correspond to occupancy bits of an occupancy word indicating the occupancy of each (sub)cuboid, as described above with respect to FIG. 3. The signs and / or magnitudes of the coefficients of the second linear combination may be predetermined. The signs and / or magnitudes of the coefficients of the second linear combination may be predetermined, for example, based on using a minimization algorithm (e.g., a genetic algorithm, simulated annealing, etc.) for entropy encoding vertex information of the edges of the sample point cloud. The vertex information of the edges of the sample point cloud may represent a point cloud including the current edge whose vertex information is entropy coded.

[0132] In step 2204, the encoder may determine one or more symbols for the neighborhood of the current edge. The encoder may determine the one or more symbols for the neighborhood of the current edge based on, for example, a value (e.g., the value calculated in step 2202). The one or more symbols may include a symbol determined based on whether a value is greater than a threshold. The threshold may be zero. The threshold may be independent of the direction of the current edge. The threshold may be based on (or correspond to) the direction of the current edge. The symbol may be a binary symbol indicating whether a value is greater than a threshold (e.g., a binary '1' indicates that the value is greater than the threshold). An arithmetic coder may be utilized to improve compression efficiency of the coded vertex information. An arithmetic coder may be utilized to improve compression efficiency of the coded vertex information, for example, by binary-coding the aggregated vertex information of the edge to encode the vertex information of the current edge.

[0133] In step 2206, the encoder may select a context (e.g., a probability model) for encoding the vertex information of the current edge based on the neighborhood configuration. The vertex information of the current edge may include a vertex presence flag for the current edge. The vertex information of the current edge may include a vertex position for the current edge. The encoder may select a context / probability model for encoding the vertex information of the current edge. The encoder may select a context / probability model for encoding the vertex information of the current edge based on, for example, a lookup table (e.g., an OBUF lookup table) that maps the neighborhood configuration to the context / probability model.

[0134] The encoder may select a context / probability model for encoding the vertex information of the current edge. The encoder may select a context / probability model for encoding the vertex information of the current edge, for example, based on a lookup table that maps only a subset of the symbols in the neighborhood configuration to the context / probability model. The subset of the symbols in the neighborhood configuration may be determined, for example, by using an OBUF dynamic shrinkage function on the symbols in the neighborhood configuration. The number (e.g., quantity) of symbols in the subset may be increased. The number (e.g., quantity) of symbols in the subset may be increased, for example, based on the number (e.g., quantity) of encoded edges that have neighborhood information that includes the same subset of symbols. The encoder may update the lookup table to map the subset of the symbols in the neighborhood configuration to a different context / probability model based on the vertex information of the current edge.

[0135] In step 2208, the encoder entropy codes (e.g., arithmetically codes) the vertex information of the current edge. The encoder may, for example, entropy code the vertex information of the current edge based on a context / probability model. The vertex information may be coded using an arithmetic binary encoder similar to CABAC. Entropy coding the vertex information may include entropy coding a vertex presence flag for the current edge. Entropy coding the vertex information may include entropy coding a vertex position for the current edge. Symbols for the positions of vertices present on the current edge may be entropy coded. Symbols for the positions of vertices present on the current edge may, for example, be entropy coded based on a selected context / probability model. The symbols may correspond to the most significant bits of the positions. Symbols for the positions of vertices present on the current edge may, for example, be entropy coded based on a selected context / probability model.

[0136] Figure 22B illustrates an example method for decoding vertex information for a current edge. More specifically, Figure 22B illustrates a flowchart 2250 of example method steps for decoding vertex information for a current edge. The current edge may be an edge of a cuboid that is part of the point cloud (e.g., a TriSoup edge). One or more steps of the example flowchart 2250 may be implemented by a decoder, such as the decoder 120 shown in Figure 1.

[0137] In step 2252, the decoder may calculate a value based on a linear combination of multiple occupancy values ​​and multiple respective coefficients. The multiple occupancy values ​​may indicate vertex information for multiple respective edges (e.g., TriSoup edges) adjacent to the current edge (e.g., the current TriSoup edge). The multiple coefficients may include multiple respective codes, each of which is based on the spatial position of each of the multiple respective edges relative to the current edge. Each edge segment (e.g., the current edge or each of the multiple edge segments) has two end points, including a start point and an end point, as shown in FIGS. 11-21. The edge is oriented from the start point to the end point along one of three axes (x-axis, y-axis, z-axis) in 3D space. Thus, each edge segment has a direction indicating its orientation along one of the three axes in 3D space.

[0138] Multiple edges may belong to an edge spatial topology, and each edge of the edge spatial topology may be available for coding the current edge. The edge spatial topology may be a neighborhood of already coded edges corresponding to the direction of the current edge, as shown and described herein with respect to Figures 14A, 14B, and 14C, and also described herein with respect to Figures 15A, 15B, and 15C and Figures 16A, 16B, and 16C. Each of the multiple edges (i.e., edges adjacent to the current edge) may belong to at least one cuboid intersecting with the current edge, as described herein with respect to Figures 10A and 10B, for example. Each of the multiple edges may intersect with one of the two ends of the current edge. Each of the edges may belong to at least one cuboid intersecting with one of the two endpoints of the current edge.

[0139] Each of the multiple edges may belong to a spatial topology of edges that includes (or consists of) only edges that are parallel to the current edge, intersect with the starting point of the current edge, and belong to the same cuboid as the current edge.

[0140] The amount of multiple edges may be independent of the direction of the current edge. For example, each possible direction of the x-axis, y-axis, and z-axis may correspond to five edges for coding the current edge E, as shown in Figures 20A, 20B, and 20C. Each of the multiple codes may further be based on the direction of the current edge.

[0141] The plurality of coefficients may include a plurality of respective magnitudes, each of which is based on a spatial position of each edge of the plurality of respective edges relative to the current edge, and each of the plurality of magnitudes may be further based on a direction of the current edge.

[0142] The spatial position of each edge may indicate the distance of the edge from the current edge. The spatial position of each edge may indicate which of the two end points of the current edge the edge intersects. The two end points of the current edge may include the start point of the current edge and the end point of the current edge. The sign of each of the plurality of symbols may be based on a spatial position indicating whether each of the plurality of respective edges intersects the start point or the end point. An edge that intersects the start point (of the current edge) has an occupancy value having a coefficient that may have a first sign (e.g., one of a positive sign or a negative sign). An edge that intersects the end point has an occupancy value having a coefficient that may have a second sign opposite the first sign. For each coefficient of the plurality of coefficients, the sign of the coefficient may be, for example, a positive sign based on (e.g., in response to) the edge corresponding to the coefficient intersecting the start point of the two end points. For each coefficient of the plurality of coefficients, the sign of the coefficient may be, for example, a negative sign based on (e.g., in response to) the edge that intersects the two end points (or vice versa in other embodiments).

[0143] The signs and / or magnitudes of the coefficients of the linear combination may be predetermined, for example, based on using a minimization algorithm (e.g., a genetic algorithm, simulated annealing, etc.) on entropy-decoded vertex information of edges of a sample point cloud, which may represent a point cloud that includes the current edge whose vertex information is to be entropy-decoded.

[0144] The decoder may determine a plurality of occupancy values ​​for a plurality of respective edges belonging to a spatial topology of edges for the current edge, and each occupancy value for each available edge may indicate vertex information for the available edge. The spatial topology may include adjacent edges each belonging to at least one cuboid that intersects with the current edge.

[0145] The vertex information of an edge (e.g., available or already coded) may include a vertex presence flag indicating whether a vertex exists on the edge, as shown, for example, in FIG. 19A. The vertex information of an edge may also include a vertex position indicating the location of the vertex on the edge, as shown, for example, in FIGS. 19A, 19B, and 19C. Each occupancy value of the multiple occupancy values ​​may be based on the vertex information of a respective edge of the multiple edges. Each occupancy value may be a binary value indicating whether a vertex exists on the edge. Each occupancy value may be a binary value indicating whether a vertex exists on the edge based on the vertex presence flag.

[0146] Each occupancy value, based on the vertex presence flag and the vertex position (if the vertex exists), may be a binary value indicating whether the vertex exists with its position on the respective edge within a threshold distance of the current edge. The threshold distance may be half the length of the edge. The threshold distance may be one-quarter the length of the edge. The threshold distance may be between the position of the vertex and the end point of the current edge that intersects with the edge.

[0147] Each occupancy value (for each edge) may include a value indicating whether a vertex is present along the edge and, if so, whether the vertex's location is within a threshold distance of the current edge. The values ​​may be non-binary. Each occupancy value may include a ternary value including (or consisting of) one of the following: a first value (e.g., '0') indicating the absence of the vertex; a second value (e.g., '1') indicating the vertex is present at a location greater than the threshold distance; and / or a third value (e.g., '2') indicating the vertex is present at a location within the threshold distance. Vertices located closer to the current edge may be weighted more heavily in the linear combination, for example, by including a non-binary value. Weighting vertices located closer to the current edge in the linear combination may increase the correlation between the vertex's presence on the current edge and / or the vertex's location (if any) being closer to the end point of the current edge that intersects the edge portion.

[0148] A value (e.g., an occupancy value) is calculated based on the sum of the offset and the result of the linear combination. The offset may be based on the direction of the current edge. The offset may be a predetermined value for each possible direction. The offset may be based on (or correspond to) the amount of multiple coefficients with negative signs.

[0149] The linear combination may be expanded to include occupancy values ​​of nodes corresponding to each cuboid intersecting the current edge. The value may be calculated, for example, based on the sum of the linear combination and a second linear combination of the second plurality of occupancy values ​​with the second plurality of respective coefficients. The second plurality of occupancy values ​​may indicate a plurality of occupancy states of each cuboid intersecting the current edge. The plurality of occupancy states may be associated with a plurality of respective nodes corresponding to each cuboid. Each of the plurality of cuboids may intersect with one of the two ends of the current edge. Each of the plurality of cuboids may intersect with only two end points of the current edge. The plurality of nodes may correspond to the same level in the occupancy tree as the cuboid that has the current edge as its edge.

[0150] A value (e.g., an occupancy value) may be calculated based on the sum of the linear combination and the second linear combination. A value (e.g., an occupancy value) may be calculated based on (e.g., in response to) the sum of the linear combination and the second linear combination, for example, based on (e.g., in response to) each of the multiple edges intersecting only the start points of the two end points. A value may be calculated based on (e.g., in response to) the sum of the linear combination and the second linear combination, for example, based on (e.g., in response to) the current edge being in a particular direction (e.g., along the x-direction or x-axis). Each of the multiple cuboids may intersect only the two end points of the current edge. A multiple number of nodes may correspond to the same level in the occupancy tree as the cuboid that has the current edge as its edge.

[0151] The second plurality of coefficients (of the second linear combination) may include a second plurality of respective signs. Each second respective sign may be based on a spatial position of each cuboid of the plurality of cuboids relative to the current edge. The spatial position of each cuboid may indicate a distance of the cuboid from the current edge. The spatial position of each cuboid may indicate a point at which two end points of the plurality of respective cuboids intersect.

[0152] The coefficients (corresponding to the occupancy values ​​of the cuboid) may have a negative sign (or alternatively a positive sign). The coefficients (corresponding to the occupancy values ​​of the cuboid) may have a negative sign (or alternatively a positive sign), for example, based on the cuboid intersecting the two end points. The cuboid intersecting the start point may be associated with a coefficient having an opposite sign to the sign of the edge or cuboid intersecting the end point. As shown in FIGS. 10A, 10B, and 10C, the current edge may be an edge of (and therefore intersect with) four cuboids, and the four cuboids may intersect with the start point of the current edge, and the four cuboids may intersect with the end point of the current edge.

[0153] The second plurality of coefficients may include a second plurality of respective magnitudes. Each of the second plurality of respective magnitudes may be based on a spatial position of each of the plurality of respective cuboids relative to the current edge. Each of the second plurality of occupancy states may indicate whether each of the plurality of respective cuboids includes one or more points of the point cloud. The occupancy states may correspond to occupancy bits of an occupancy word indicating the occupancy of the respective (sub)cuboid, as described above with respect to FIG. 3. The signs and / or magnitudes of the coefficients of the second linear combination may be predetermined. The signs and / or magnitudes of the coefficients of the second linear combination may be predetermined, for example, based on using a minimization algorithm (e.g., a genetic algorithm, simulated annealing, etc.) on entropy-decoded vertex information of the edges of the sample point cloud. The vertex information of the edges of the sample point cloud may represent a point cloud including the current edge whose vertex information is entropy-decoded.

[0154] In step 2254, the decoder may determine one or more symbols of the neighborhood of the current edge. The decoder may determine the one or more symbols of the neighborhood of the current edge based on, for example, a value (e.g., the value calculated in step 2252). The one or more symbols may include a symbol determined based on whether a value is greater than a threshold. The threshold may be zero. The threshold may be independent of the direction of the current edge. The threshold may be based on (or correspond to) the direction of the current edge. The symbol may be a binary symbol indicating whether a value is greater than a threshold (e.g., a binary '1' indicates that the value is greater than the threshold). An arithmetic coder may be utilized to improve compression efficiency of the coded vertex information. An arithmetic coder may be utilized to improve compression efficiency of the coded vertex information, for example, by binary-coding the aggregate vertex information of the edge to decode the vertex information of the current edge.

[0155] In step 2256, the decoder can select a context (e.g., a probability model) for decoding the vertex information of the current edge based on the neighborhood configuration. The vertex information of the current edge can include a vertex presence flag for the current edge. The vertex information of the current edge can include a vertex position for the current edge. The decoder can select a context / probability model for decoding the vertex information of the current edge. The decoder can select a context / probability model for decoding the vertex information of the current edge based on, for example, a lookup table (e.g., an OBUF lookup table) that maps the neighborhood configuration to the context / probability model.

[0156] The decoder may select a context / probability model for decoding the vertex information of the current edge. The decoder may select a context / probability model for decoding the vertex information of the current edge, for example, based on a lookup table that maps only a subset of the symbols in the neighborhood to a context / probability model. The subset of symbols in the neighborhood may be determined, for example, by using an OBUF dynamic shrinkage function on the symbols in the neighborhood. The number (e.g., quantity) of symbols in the subset may be increased. The number (e.g., quantity) of symbols in the subset may be increased, for example, based on the number (e.g., quantity) of encoded edges that have neighborhood information that includes the same subset of symbols. The decoder may update the lookup table to map a subset of symbols in the neighborhood to a different context / probability model based on the vertex information of the current edge.

[0157] In step 2258, the decoder may entropy decode (e.g., arithmetically decode) the vertex information of the current edge. The decoder may entropy decode the vertex information of the current edge, for example, based on a context / probability model. The vertex information may be decoded using an arithmetic binary decoder similar to CABAC. Entropy decoding the vertex information may include entropy decoding a vertex presence flag of the current edge. Entropy decoding the vertex information may include entropy decoding a vertex position of the current edge. Symbols for the positions of vertices present on the current edge may be entropy decoded. Symbols for the positions of vertices present on the current edge may be entropy decoded, for example, based on a selected context / probability model. The symbols may correspond to the most significant bits of the positions. Symbols for the positions of vertices present on the current edge may be entropy decoded, for example, based on a selected context / probability model.

[0158] Embodiments of the present disclosure can be implemented as hardware using analog and / or digital circuitry, software through the execution of instructions by one or more general-purpose or special-purpose processors, or a combination of hardware and software. Consequently, embodiments of the present disclosure can be implemented in the context of a computer system or other processing system. An example of such a computer system 2300 is shown in FIG. 23. The blocks shown in the figures above, such as those in FIG. 1, can be executed on one or more computer systems 2300. Furthermore, each step of the flowcharts shown in the present disclosure (e.g., the flowcharts in FIGS. 22A and 22B) can be implemented on one or more computer systems 2300. The computer systems 2300 may be interconnected by one or more networks to form a cluster of computer systems that can act as a single pool of seamless resources when two or more computer systems 2300 are used to implement embodiments of the present disclosure; the interconnected computer systems 2300 can form a computer "cloud."

[0159] The computer system 2300 includes one or more processors, such as a processor 2304. The processor 2304 may be, for example, a special purpose processor, a general purpose processor, a microprocessor, or a digital signal processor. The processor 2304 may be connected to a communications infrastructure 2302 (e.g., a bus or network). The computer system 2300 may also include a main memory 2306, such as random access memory (RAM), and may also include a secondary memory 2308.

[0160] The secondary memory 2308 includes, for example, a hard disk drive 2310 and / or a removable storage drive 2312, which may be a magnetic tape drive, optical disk drive, etc. The removable storage drive 2312 can read from and / or write to a removable storage unit 2316, in a well-known manner. The removable storage unit 2316 represents a magnetic tape, optical disk, etc., which is read by and written to the removable storage drive 2312. As will be understood by those skilled in the relevant art, the removable storage unit 2316 includes a computer-usable storage medium having computer software and / or data stored therein.

[0161] The secondary memory 2308 may include other similar means for allowing computer programs or other instructions to be loaded into the computer system 2300. Such means include, for example, a removable storage unit 2318 and an interface 2314. Examples of such means include program cartridges and cartridge interfaces (such as those found in video game devices), removable memory chips (such as EPROMs or PROMs) and associated sockets, thumb drives and USB ports, and other removable storage units 2318 and interfaces 2314 that allow software and data to be transferred from the removable storage unit 2318 to the computer system 2300.

[0162] Computer system 2300 may also include a communications interface 2320. Communications interface 2320 may allow software and data to be transferred between computer system 2300 and external devices. Examples of communications interface 2320 include a modem, a network interface (e.g., an Ethernet card), a communications port, etc. Software and data transferred via communications interface 2320 may be in the form of electronic, electromagnetic, optical, or other signals receivable by communications interface 2320. These signals are provided to communications interface 2320 via communications path 2322. Communications path 2322 transmits signals and may be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link, and other communications channels.

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

[0164] As used herein, the terms “computer program medium” and “computer-readable medium” are used to refer to tangible storage media, such as removable storage units 2316 and 2318 or a hard disk installed in hard disk drive 2310. These computer program products may be means for providing software to computer system 2300. Computer programs (also called computer control logic) may be stored in main memory 2306 and / or secondary memory 2308. Computer programs may also be received via communications interface 2320. Such computer programs, when executed, may enable computer system 2300 to implement the present disclosure as discussed herein. In particular, computer programs, when executed, may enable processor 2304 to perform processes of the present disclosure, such as any of the methods described herein. Thus, such computer programs may represent controllers of computer system 2300.

[0165] In another embodiment, the implementation may be in hardware using, for example, hardware components such as application specific integrated circuits (ASICs), gate arrays, etc. Implementation of a hardware state machine so as to perform the functions described herein will also be apparent to those skilled in the relevant art.

[0166] 24 shows exemplary elements of a computing device that may be used to implement any of the various apparatuses described herein, 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. The computing device 2430 may include one or more processors 2431 that may execute instructions stored on random access memory (RAM) 2433, removable media 2434 (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 on an attached (or internal) hard drive 2435. The computing device 2430 may also include a security processor (not shown) that may execute instructions of one or more computer programs to monitor processes running on the processor 2431 and any processes requesting access to any hardware and / or software components of the computing device 2430 (e.g., ROM 2432, RAM 2433, removable media 2434, hard drive 2435, device controller 2437, network interface 2439, GPS 2441, Bluetooth interface 2442, WiFi interface 2443, etc.). The computing device 2430 may include one or more output devices such as a display 2436 (e.g., a screen, display device, monitor, television, etc.) and may include one or more output device controllers 2437, such as a video processor. There may also be one or more user input devices 2438, such as a remote control, keyboard, mouse, touchscreen, microphone, etc.The computing device 2430 may also include one or more network interfaces, such as a network interface 2439, which may be a wired interface, a wireless interface, or a combination of the two. The network interface 2439 may provide an interface for the computing device 2430 to communicate with a network 2440 (e.g., a RAN, or any other network). The network interface 2439 may include a modem (e.g., a cable modem), and the external network 2440 may include a communications link, an external network, a home network, a provider's wireless, coaxial, fiber, or hybrid fiber / coaxial distribution system (e.g., a DOCSIS network), or any other desired network. Additionally, the computing device 2430 may include a location detection device, such as a global positioning system (GPS) microprocessor 2441, which may be configured to receive and process global positioning signals and, with possible assistance from an external server and antenna, determine the geographic location of the computing device 2430.

[0167] While the example of FIG. 24 may be a hardware configuration, the components shown may be implemented as software. If desired, changes may be made to add, remove, combine, divide, etc., components of computing device 2430. Additionally, components may be implemented using basic computing devices and components, and the same components (e.g., processor 2431, ROM storage 2432, display 2436, etc.) may be used to implement any of the other computing devices and components described herein. 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, as shown in FIG. 24. Some or all of the entities described herein may be software-based and coexist on a common physical platform (e.g., a requesting entity may be a separate software process and program from a dependent entity, both of which may run as software on a common computing device).

[0168] Various features are highlighted below in a set of numbered clauses or paragraphs. These features are not to be construed as limiting the invention or inventive concept, but are provided merely as highlighting some of the features described herein, without implying the importance or relevance of any particular order of such features.

[0169] Article 1A. A method comprising: calculating a value based on a linear combination of a first occupancy value and a first coefficient.

[0170] Article 1B. The method described in clause 1A, wherein the first occupancy value indicates vertex information of an edge adjacent to a current edge associated with the video frame, and the first coefficient includes a code based on the spatial position of the edge corresponding to the first coefficient for the current edge.

[0171] Article 1C. The method of any one of clauses 1A and 1B, further comprising: selecting a context to associate with the encoding vertex information of the current edge based on a neighborhood configuration associated with the value; and encoding the vertex information of the current edge based on the context. References herein to clause 1 may refer to one or each of clauses 1A, 1B, and 1C.

[0172] Article 2. 2. The method of clause 1, wherein calculating the value includes calculating the sum of an offset associated with the direction of the current edge and a result of the linear combination.

[0173] Article 3. 3. The method of any one of clauses 1 to 2, wherein calculating the value includes calculating the sum of an offset associated with a quantity of a plurality of first coefficients having a negative sign and a result of the linear combination.

[0174] Article 4. 4. The method of any one of clauses 1 to 3, wherein calculating the value includes calculating the value based on the sum of a linear combination of a first occupancy value and a first coefficient and a second linear combination of a second occupancy value and a second coefficient, the second occupancy value indicating the occupancy state of each cuboid that intersects with the current edge.

[0175] Article 5. 5. The method of any one of clauses 1-4, wherein each coefficient of the first coefficients includes a magnitude, and each magnitude is based on a spatial position of the edge relative to the current edge.

[0176] Article 6. 6. The method of clause 5, wherein each of the signs is further based on a direction of the current edge and each of the magnitudes is further based on a direction of the current edge.

[0177] Article 7. 7. The method of any one of clauses 1 to 6, wherein coding the vertex information of the current edge includes coding symbols of vertex positions present on the current edge based on the context.

[0178] Article 8. The vertex information of the current edge includes at least one of a vertex presence flag of the current edge or a vertex position present on the current edge.

[0179] Article 9. 9. The method of any one of clauses 1 to 8, wherein selecting a context includes selecting a context for coding vertex information of the current edge based on an association between a neighborhood configuration and the context.

[0180] Article 10. 10. The method of any one of clauses 1 to 9, wherein each occupancy value of the occupancy values ​​is based on vertex information for a respective one of the edges.

[0181] Article 11. 11. The method of any one of clauses 1 to 10, wherein each of the edges belongs to a spatial topology of edges that includes edges that are parallel to the current edge and intersect with the start point of the current edge, and edges that belong to the same cuboid as the current edge.

[0182] Article 12. 12. The method of any one of clauses 1 to 11, wherein the amount of an edge is independent of the direction of the current edge.

[0183] Article 13. 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 12.

[0184] Article 14. 13. A system comprising: a first computing device configured to perform the method of any one of clauses 1 to 12; and a second computing device configured to decode entropy-encoded vertex information of a current edge.

[0185] Article 15. A computer-readable medium storing instructions that, when executed, cause the method of any one of clauses 1-12 to be performed.

[0186] Article 16A. calculating a value based on a linear combination of an occupancy value indicating vertex information of an edge adjacent to the current edge and a coefficient corresponding to a first coefficient for the current edge, the coefficient having a sign based on the spatial position of the edge.

[0187] Article 16B. and coding vertex information for the current edge based on a context associated with the neighborhood configuration. References herein to Clause 16 may refer to one or both of Clause 16A and Clause 16B.

[0188] Article 17. 17. The method of clause 16, further comprising selecting a context for coding vertex information of the current edge based on mapping a subset of one or more symbols of the neighborhood configuration to the context.

[0189] Article 18. 18. The method of any one of clauses 16-17, further comprising updating a mapping for associating a subset of one or more symbols of the neighborhood configuration with different contexts based on vertex information of the current edge.

[0190] Article 19. 19. The method of any one of clauses 16 to 18, comprising increasing the amount of subsets of one or more symbols based on the amount of coded edges having neighborhood information that includes the same subset of one or more symbols.

[0191] Article 20. 20. The method of any one of clauses 16 to 19, wherein determining the one or more symbols comprises determining at least one symbol of the one or more symbols based on whether a value is greater than a threshold.

[0192] Article 21. 21. The method of any one of clauses 16 to 20, wherein the threshold is zero.

[0193] Article 22. 22. The method of any one of clauses 16 to 21, wherein the threshold is independent of the direction of the current edge.

[0194] Article 23. 23. The method of any one of clauses 16 to 22, wherein the threshold is based on the direction of the current edge.

[0195] Article 24. 24. The method of any one of clauses 16 to 23, wherein the symbols are binary symbols indicating whether the value is greater than a threshold.

[0196] Article 25. 25. The method of any one of clauses 16 to 24, wherein each occupancy value comprises a binary value indicating at least one of whether a vertex is present at a position on the respective edge or whether the vertex is present within a threshold distance of the current edge.

[0197] Article 26. 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 16 to 25.

[0198] Article 27. A system comprising: a first computing device configured to perform the method of any one of clauses 16 to 25; and a second computing device configured to decode vertex information of a current edge.

[0199] Article 28. A computer readable medium storing instructions that, when executed, cause the method of any one of clauses 16 to 25 to be performed.

[0200] Article 29A. A method comprising: calculating a value as a sum of an offset based on a direction of a current edge associated with a video frame and a linear combination based on adjacent edges that intersect with at least one of two end points of the current edge; and determining a symbol of a neighborhood configuration of the current edge based on the value.

[0201] Article 29B. The method of any one of clauses 29A and 29B, further comprising: selecting a context to be associated with the encoded vertex information of the current edge based on the neighborhood configuration; and encoding the vertex information of the current edge based on the context. References herein to clause 29 may refer to one or each of clauses 29A and 29B.

[0202] Article 30. 30. The method of clause 29, further comprising calculating a linear combination based on signs, wherein the two end points of the current edge include a start point and an end point, and each of the signs is based on whether each of the adjacent edges intersects with the start point or the end point.

[0203] Article 31. 31. The method of any one of clauses 29-30, wherein each of the signs comprises a positive sign indicating that at least one of the adjacent edges crosses the start point, or a negative sign indicating that at least one of the adjacent edges crosses the end point.

[0204] Article 32. 32. The method of any one of clauses 29 to 31, wherein each adjacent edge is associated with at least one cuboid that intersects with the current edge, and at least one cuboid intersects with at least one of the two ends of the current edge.

[0205] Article 33. 33. The method of clause 32, wherein the spatial position of the at least one cuboid indicates whether the at least one cuboid intersects one of the two end points of the current edge.

[0206] Article 34. 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 29 to 33.

[0207] Article 35. A system comprising: a first computing device configured to perform the method of any one of clauses 29 to 33; and a second computing device configured to decode vertex information of a current edge.

[0208] Article 36. A computer readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 29 to 33.

[0209] Article 37. 34. The method of any one of clauses 1-12, 16-25, or 29-33, wherein each occupancy value comprises a binary value indicating whether the vertex is present on an edge.

[0210] Article 38. 38. The method of any one of clauses 1-12, 16-25, or 29-37, wherein the vertex information for each of the edges includes a vertex presence flag indicating whether the vertex is present on the corresponding edge.

[0211] Article 39. 39. The method of any one of clauses 1-12, 16-25, or 29-38, wherein the value is further based on a sum in response to the edge each intersecting the start point of the two end points.

[0212] Article 40. 40. The method of any one of clauses 1-12, 16-25, or 29-39, wherein the second coefficients include second codes, each of the second codes being based on a spatial position of a respective cuboid of the cuboid relative to the current edge.

[0213] Article 41. 41. The method of any one of clauses 1-12, 16-25, or 29-40, wherein the spatial locations indicate that two end points associated with each cuboid of the plurality of respective cuboids intersect.

[0214] Article 42. 42. The method of any one of clauses 1-12, 16-25, or 29-41, wherein each of the second occupancy states indicates whether each of the respective cuboids contains one or more points of the point cloud.

[0215] Article 43. 43. The method of any one of clauses 1-12, 16-25, or 29-42, wherein the current edge is associated with a cuboid that contains a portion of the point cloud.

[0216] Article 44. 44. The method of any one of clauses 1-12, 16-25, or 29-43, wherein the threshold distance is one of half the length of the edge or one-quarter the length of the edge.

[0217] Article 45. 45. The method of any one of clauses 1-12, 16-25, or 29-44, wherein each occupancy value includes a value indicating whether a vertex exists along the edge, and if so, whether the position of the vertex is within a threshold distance of the current edge.

[0218] Article 46. 46. ​​The method of any one of clauses 1-12, 16-25, or 29-45, wherein each occupancy value comprises a ternary value that includes (or consists of) one of a first value indicating the absence of the vertex, a second value indicating the vertex is located within a threshold distance, or a third value indicating the vertex is located greater than a threshold distance.

[0219] Article 47. 47. The method of any one of clauses 1-12, 16-25, or 29-46, wherein each rectangular solid intersects only two endpoints.

[0220] Article 48. The selecting further includes selecting a context for coding the vertex information of the current edge based on a lookup table that maps only a subset of the symbols in the neighborhood to contexts.

[0221] A computing device may execute a method including a plurality of operations. The computing device may calculate a value based on a linear combination of a first occupancy value and a first coefficient, where the first occupancy value indicates vertex information of an edge adjacent to a current edge associated with the video frame, and the first coefficient includes a sign based on a spatial position of the edge corresponding to the first coefficient relative to the current edge. The computing device may select a context to be associated with coding vertex information of the current edge based on a neighborhood configuration associated with the value, and may code the vertex information of the current edge based on the context. The computing device may calculate the value. Calculating the value may include calculating a sum of an offset associated with a direction of the current edge and a result of the linear combination. Calculating the value may include calculating a sum of an offset associated with an amount of a plurality of first coefficients having negative signs and a result of the linear combination. Calculating the value may include calculating a value based on a linear combination of the first occupancy value and the first coefficient and a second linear combination of the second occupancy value and the second coefficient. The second occupancy value may indicate an occupancy state of each rectangular parallelepiped intersecting the current edge. Each coefficient of the first coefficient may include a magnitude, and each magnitude may be based on a spatial position of the edge among the plurality of edges relative to the current edge. Each of the codes may be further based on a direction of the current edge, and each magnitude may be further based on the direction of the current edge. Coding vertex information of the current edge may include coding a symbol of a vertex position present on the current edge based on a context. The vertex information of the current edge may include at least one of a vertex presence flag of the current edge or a vertex position present on the current edge. Selecting a context may include selecting a context for coding the vertex information of the current edge based on an association between a neighborhood configuration and the context. Each occupancy value of the occupancy values ​​may be based on vertex information of each of the edges. Each edge may belong to a spatial topology of edges including edges that are parallel to the current edge and intersect with a start point of the current edge and edges that belong to the same rectangular parallelepiped as the current edge.The number of edges can be independent of the direction of the current edge. Each occupancy value can include a binary value indicating whether a vertex exists on the edge. The vertex information for each edge can include a vertex presence flag indicating whether a vertex exists on the corresponding edge. The value can further be based on a sum depending on whether each edge intersects with the start points of the two endpoints. The second coefficient can include a second sign. Each of the second signs can be based on a spatial position of each cuboid of the cuboids relative to the current edge. The spatial position can indicate that two endpoints associated with each cuboid of the plurality of respective cuboids intersect. Each of the second occupancy states can indicate whether each of the respective cuboids includes one or more points of the point cloud. The current edge can be associated with a cuboid that includes a portion of the point cloud. The threshold distance can be one of half the length of the edge or one-quarter the length of the edge. Each occupancy value can include a value indicating whether a vertex exists along the edge and, if present, whether its position is within a threshold distance from the current edge. Each occupancy value may include a ternary value including (or consisting of) either a first value indicating the vertex is not present, a second value indicating the vertex is present and its location is within a threshold distance, or a third value indicating the vertex is present and its location is greater than a threshold distance. Each cuboid may intersect with only one of its two endpoints. The selecting may further include selecting a context for coding the vertex information of the current edge based on a lookup table that maps only a subset of the symbols in the neighborhood to the context. 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-encoded vertex information of the current edge.The computer-readable medium may store instructions that, when executed, perform the methods described, cause additional actions, and / or include additional elements.

[0222] A computing device may perform a method including multiple operations. The computing device may calculate a value based on a linear combination of an occupancy value indicating vertex information of an edge adjacent to a current edge associated with the video frame and a coefficient including a code based on a spatial position of the edge corresponding to a first coefficient for the current edge. The computing device may determine one or more symbols of a neighborhood configuration of the current edge based on the value. The computing device may code the vertex information of the current edge based on a context associated with the neighborhood configuration. The computing device may select a context for coding the vertex information of the current edge based on a mapping of a subset of the one or more symbols of the neighborhood configuration to a context. The computing device may update the mapping to associate a subset of the one or more symbols of the neighborhood configuration with a different context based on the vertex information of the current edge. The computing device may increase the number of subsets of the one or more symbols based on the number of coded edges having neighborhood information including the same subset of the one or more symbols. Determining the one or more symbols may include determining at least one symbol of the one or more symbols based on whether a value is greater than a threshold. The threshold may be 0. The threshold may be independent of a direction of the current edge. The threshold may be based on a direction of the current edge. The symbol may be a binary symbol indicating whether the value is greater than a threshold. Each occupancy value may include a binary value indicating at least one of whether a vertex is likely to be present at the position on the respective edge or whether the vertex is likely to be present within a threshold distance from the current edge. Each occupancy value may include a binary value indicating whether the vertex is likely to be present on the edge. The vertex information for each edge may include a vertex presence flag indicating whether the vertex is present on the corresponding edge. The value may further be based on a sum depending on each edge crossing the starting points of the two endpoints. The second coefficient includes a second sign.Each of the second codes is based on a spatial position of each cuboid of the cuboid relative to the current edge. The spatial position may indicate where two endpoints associated with each cuboid of the plurality of respective cuboids intersect. Each of the second occupancy states may indicate whether each of the respective cuboids includes one or more points of the point cloud. The current edge may be associated with a cuboid that includes a portion of the point cloud. The threshold distance may be one of half the length of the edge or one-quarter the length of the edge. Each occupancy value may include a value indicating whether a vertex exists along the edge and whether the vertex's location (if any) is within a threshold distance from the current edge. Each occupancy value may include a ternary value including (or consisting of) one of: a first value indicating that the vertex is not present; a second value indicating that the vertex exists and its location is within the threshold distance; or a third value indicating that the vertex exists and its location is greater than the threshold distance. Each of the cuboids may intersect with only the endpoints of the two endpoints. The selecting may further include selecting a context for coding the vertex information of the current edge based on a lookup table that can map only a subset of the symbols of the neighborhood to contexts. 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. A 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-encoded vertex information of the current edge. A computer-readable medium may store instructions that, when executed, perform the described methods, cause additional operations, and / or include additional elements.

[0223] A computing device may execute a method including a plurality of operations. The computing device may calculate a value as the sum of an offset and a linear combination, where the offset may be based on a direction of a current edge associated with the video frame and the linear combination may be based on adjacent edges that intersect with at least one of the two end points of the current edge, and may determine a symbol of a neighborhood configuration of the current edge based on the value. The computing device may select a context associated with coding vertex information of the current edge based on the neighborhood configuration. The computing device may code the vertex information of the current edge based on the context. The computing device may calculate the linear combination based on a sign. The two end points of the current edge may include a start point and an end point, and each sign may be based on whether each of the adjacent edges intersects with the start point or the end point, and each sign may include a positive sign indicating that at least one of the adjacent edges intersects with the start point or a negative sign indicating that at least one of the adjacent edges intersects with the end point, and each of the adjacent edges may be associated with at least one cuboid that intersects with the current edge. The at least one cuboid may intersect with at least one of the two end points of the current edge. The spatial position of the at least one cuboid may indicate whether the at least one cuboid intersects one of two endpoints of the current edge. Each occupancy value may include a binary value indicating whether the vertex is present on the edge. The vertex information for each edge may include a vertex presence flag indicating whether the vertex is present on the corresponding edge. The value may further be based on a sum depending on the starting points of the two endpoints and the edge each intersects. The second coefficient may include a second sign. Each of the second signs may be based on a spatial position of each cuboid of the cuboids relative to the current edge. The spatial position may indicate that two endpoints associated with each cuboid of the plurality of respective cuboids intersect. Each of the second occupancy states may indicate whether each of the respective cuboids includes one or more points of the point cloud. The current edge may be associated with a cuboid that includes a portion of the point cloud.The threshold distance may be half the length of the edge or one-quarter the length of the edge. Each occupancy value may include a value indicating whether a vertex may exist along the edge and, if present, whether its location may be within the threshold distance from the current edge. Each occupancy value may include a ternary value including one of the following: a first value indicating that the vertex is not present; a second value indicating that the vertex may exist and its location may be within the threshold distance; or a third value indicating that the vertex may exist and its location may be greater than the threshold distance. Each cuboid may intersect with only one of its two endpoints. The selecting may further include selecting a context for coding the vertex information of the current edge based on a lookup table that can map only a subset of the symbols in the neighborhood to the context. 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-encoded vertex information of the current edge. A computer-readable medium may store instructions that, when executed, perform the described methods, cause additional operations, and / or include additional elements.

[0224] One or more embodiments herein may be described as a process, which may be depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, and / or a block diagram. A flowchart may describe operations as a sequential process, but one or more operations may be performed in parallel or simultaneously. The order of 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, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination may correspond to a return of the function to the calling function or the main function.

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

[0226] One or more features described herein may be implemented in computer-usable data and / or computer-executable instructions, such as one or more program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types when executed by a processor or other data processing device within a computer. Computer-executable instructions may be stored on one or more computer-readable media, such as hard disks, optical disks, removable storage media, solid-state memory, RAM, etc. The functionality of the program modules may be combined or distributed as desired. All or a portion of the functionality may be implemented 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 effectively 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 also include non-transitory media on which data may be stored and which do not include carrier waves and / or transitory electronic signals propagated via wireless or wired connections. Examples of non-transitory media 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 memory devices.A computer-readable medium may store code and / or machine-executable instructions, which may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a 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, etc.

[0227] 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 encoded with instructions for enabling programmable hardware to cause a device (e.g., an encoder, decoder, transmitter, receiver, etc.) to perform the operations described herein. One or more devices, such as an apparatus or in a system, may include one or more processors, memory, interfaces, and / or the like.

[0228] Communications described herein may be determined, generated, sent, and / or received using any amount of messages, information elements, fields, parameters, values, indications, information, bits, and / or the like. While one or more embodiments may be described herein using any of the terms / phrases message, information element, field, parameter, value, indication, information, bit, and / or the like, those skilled in the art will understand that such communications may be implemented 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) parameters, fields, IEs, and / or the like may be used and may be interchangeable depending on the context. Where meanings or definitions are given, such meanings or definitions are controlling.

[0229] One or more elements of the examples described herein may be implemented as a module. A module may be an element that performs a defined function and / or has a defined interface to other elements. A module may 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 may be implemented as a software routine written in a computer language configured to run on a hardware machine (C, C++, Fortran, Java, Basic, Matlab, or the like), or as a modeling / simulation program such as Simulink, Stateflow, GNU Octave, LabVIEW MathScript, etc. Additionally or alternatively, it may be possible to implement a module using physical hardware incorporating discrete or programmable analog, digital, and / or quantum hardware. Examples of programmable hardware may 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 may be programmed using languages ​​such as assembly, C, C++, or the like. FPGAs, ASICs, and CPLDs are often programmed using hardware description languages ​​(HDLs) such as VHSIC Hardware Description Language (VHDL) or Verilog, which may configure connections between internal hardware modules that reduce the functionality of the programmable device. The techniques described above may be used in combination to achieve functionally modular results.

[0230] One or more of the operations described herein may be conditional. For example, one or more operations may be performed if certain criteria are met, such as by a computing device, a communications device, an encoder, a decoder, a network, a combination of the above, and / or the like. Exemplary criteria may be based on one or more conditions of device configuration, traffic load, initial system setup, packet size, traffic characteristics, a combination of the above, and / or the like. Various embodiments may be used if one or more criteria are met. It may be possible to implement any part of the embodiments described herein in any order and based on any condition.

[0231] Although embodiments are described above, features and / or steps of these embodiments may be combined, divided, omitted, rearranged, revised, and / or extended in any desired manner. Various changes, modifications, and improvements will readily occur to those skilled in the art. Such changes, modifications, and improvements, although not expressly described herein, are intended to be a part of this specification and are intended to be within the spirit and scope of the description herein. Accordingly, the foregoing description is illustrative only and not limiting.

Claims

1. 1. A method comprising: a first occupancy value indicating vertex information of an edge adjacent to a current edge associated with the video frame; and calculating a value based on a linear combination of a first coefficient corresponding to the current edge, the first coefficient having a sign based on the spatial position of the edge; selecting a context to be associated with coding vertex information of the current edge based on a neighborhood configuration associated with the value; coding the vertex information of the current edge based on the context.

2. calculating the value an offset associated with the direction of the current edge; and The method of claim 1 , further comprising: calculating a sum of the results of the linear combination.

3. calculating the value an offset associated with the quantity of the plurality of first coefficients having a negative sign; and The method of any one of claims 1 to 2, comprising calculating the sum of the results of said linear combination.

4. calculating the value the linear combination of the first occupancy value with the first coefficient; and a second linear combination of a second occupancy value and a second coefficient; The method according to any one of claims 1 to 3, wherein the second occupancy value indicates the occupancy state of each rectangular parallelepiped that intersects with the current edge.

5. each coefficient of the first coefficients includes a magnitude; The method of any one of claims 1 to 4, wherein each magnitude is based on the spatial position of the edge relative to the current edge.

6. each of the codes is further based on the direction of the current edge; and The method of claim 5 , wherein each of the magnitudes is further based on the direction of the current edge.

7. said coding the vertex information of the current edge, The method of any one of claims 1 to 6, comprising coding symbols for vertex positions present on the current edge based on the context.

8. The vertex information of the current edge is the vertex presence flag of the current edge, or The method of claim 7 , wherein the vertex position is on the current edge.

9. said selecting said context The method of any one of claims 1 to 8, comprising selecting the context for coding the vertex information of the current edge based on an association between the neighborhood configuration and the context.

10. The method of any one of claims 1 to 9, wherein each occupancy value of the occupancy values ​​is based on vertex information of a respective one of the edges.

11. Each of the edges is an edge that is parallel to the current edge and intersects with the start point of the current edge; The method according to any one of claims 1 to 10, wherein the current edge belongs to a spatial topology of edges including the edge belonging to the same rectangular parallelepiped as the current edge.

12. The method according to any one of claims 1 to 11, wherein the amount of the edge is independent of the direction of the current edge.

13. 1. A computing device comprising: one or more processors; a memory storing instructions that, when executed by said one or more processors, cause said computing device to perform a method according to any one of claims 1 to 12.

14. 1. A system comprising: an encoder configured to perform the method according to any one of claims 1 to 12; a decoder configured to decode the vertex information of the current edge.

15. A computer readable medium storing instructions that, when executed, cause the performance of a method according to any one of claims 1 to 12.

Citation Information

Patent Citations

  • Methods and apparatus for coding a vertex position for a point cloud, and data stream including the vertex position

    EP4258214A1

  • Point cloud data processing apparatus and method

    JP2022539762A

  • Context modeling of occupancy coding for point cloud encoding

    JP2022540279A

  • Methods and devices for neighbourhood-based occupancy prediction in point cloud compression

    US20210272324A1

  • Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device

    WO2019240285A1