Enhancing edge neighborhoods to encode vertex information
The point cloud coding system uses an occupancy tree and entropy coding to compress and decompress data, addressing the inefficiencies of large point cloud data transmission and storage, enhancing applications in augmented reality and cultural heritage preservation.
Patent Information
- Application Number
- JP2025522538
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-10-19
- Filing Date
- 2023-10-19
- Publication Date
- 2025-11-12
AI Technical Summary
Point cloud data is large in size, making transmission and processing inefficient, necessitating data compression schemes tailored for its unique characteristics.
A point cloud coding system that encodes data using an occupancy tree, entropy coding vertex information on TriSoup edges, and employs dynamic OBUF to reduce neighborhood occupancy configurations, ensuring efficient storage and transmission.
The system effectively compresses and decompresses point cloud data, enabling efficient storage and transmission while maintaining visual quality, suitable for applications like augmented reality and preserving cultural heritage.
Smart Images

Figure 2025536939000001_ABST
Abstract
Description
[Technical Field]
[0001] This application claims the benefit of U.S. Provisional Patent Application No. 63 / 417,613, filed October 19, 2022. The above-referenced application is incorporated herein by reference in its entirety. [Background technology]
[0002] An object or scene may be described using volumetric visual data consisting of a series of points. The points may be stored in a point cloud format, which includes a collection of points in three-dimensional space. Because point clouds can be very large in data size, transmitting and processing point cloud data may 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. A point cloud coding system may include a source device that encodes a point cloud sequence into a bitstream. The point cloud coding system may also include a transmission medium that transmits the encoded bitstream. The point cloud coding system may further include a destination device that obtains a decoded point cloud sequence based on the encoded bitstream and stores, displays, or otherwise processes the decoded point cloud sequence. The encoder may encode the point cloud using an occupancy tree by recursively dividing an initial volume of the point cloud into cuboids and subcuboids. To entropy code a current cuboid, the encoder may use the cuboid's spatial neighborhood with respect to the current cuboid. The neighborhood occupancy configurations with respect to the current cuboid may be reduced by using a mechanism such as OBUF (Optimal Binary Coders with Update on the Fly). Dynamic OBUF may further reduce the number of neighborhood occupancy configurations of the current cuboid by dynamic adaptation to the statistics of already processed occupancy configurations. The dynamic OBUF may reduce the number of occupancy configurations by using a lookup table of context indexes. The point cloud geometry may be configured so that the maximum depth of the occupancy tree does not reach a minimum volume size of one voxel. For such point cloud geometries, a triangle soup (TriSoup) scheme may be used to represent vertices with vertex information created with presence flags and their positions on TriSoup edges. The vertex information of TriSoup edges may be entropy coded based on already coded presence flags and the positions of TriSoup edges adjacent to the currently coded TriSoup edge. The edge topology or a subset of the edge topology may be selected and used to entropy code the vertex information of the current TriSoup edge.
[0005] These and other features and advantages are described in more detail below. BRIEF DESCRIPTION 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: [Brief explanation of the drawings]
[0007] [Figure 1] FIG. 1 illustrates an exemplary point cloud encoding system. [Figure 2] Figure 2 shows the Morton order of eight sub-cuboids divided from a cuboid. [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 illustrates an exemplary method for encoding the occupancy of a cuboid using a dynamic OBUF. [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] 10A and 10B show a cuboid whose volume intersects with the current TriSoup edge being entropy coded. [Figure 10B] 10A and 10B show a cuboid whose volume intersects with the current TriSoup edge being entropy coded. [Figure 11A] 11A, 11B, and 11C show TriSoup edges that may be used to entropy encode the current TriSoup edge. [Figure 11B]11A, 11B, and 11C show TriSoup edges that may be used to entropy encode the current TriSoup edge. [Figure 11C] 11A, 11B, and 11C show TriSoup edges that may be used to entropy encode the current TriSoup edge. [Figure 12A] 12A, 12B, and 12C show already-encoded TriSoup edges that are adjacent to the start point of the current TriSoup edge and do not intersect. [Figure 12B] 12A, 12B, and 12C show already-encoded TriSoup edges that are adjacent to the start point of the current TriSoup edge and do not intersect. [Figure 12C] 12A, 12B, and 12C show already-encoded TriSoup edges that are adjacent to the start point of the current TriSoup edge and do not intersect. [Figure 13A] 13A, 13B, and 13C show already-encoded TriSoup edges that are adjacent to and do not intersect the start point of the current TriSoup edge. [Figure 13B] 13A, 13B, and 13C show already-encoded TriSoup edges that are adjacent to and do not intersect the start point of the current TriSoup edge. [Figure 13C] 13A, 13B, and 13C show already-encoded TriSoup edges that are adjacent to and do not intersect the start point of the current TriSoup edge. [Figure 14A] 14A, 14B, and 14C show adjacent, already coded edges of the current TriSoup edge. [Figure 14B] 14A, 14B, and 14C show adjacent, already coded edges of the current TriSoup edge. [Figure 14C] 14A, 14B, and 14C show adjacent, already coded edges of the current TriSoup edge. [Figure 15A] 15A, 15B, and 15C show examples of subspace topologies of TriSoup edges. [Figure 15B] 15A, 15B, and 15C show examples of subspace topologies of TriSoup edges. [Figure 15C] 15A, 15B, and 15C show examples of subspace topologies of TriSoup edges. [Figure 16A] 16A, 16B, and 16C show adjacent, already coded edges. [Figure 16B] 16A, 16B, and 16C show adjacent, already coded edges. [Figure 16C] 16A, 16B, and 16C show adjacent, already coded edges. [Figure 17A] 17A, 17B, and 17C show examples of subspace topologies of TriSoup edges. [Figure 17B] 17A, 17B, and 17C show examples of subspace topologies of TriSoup edges. [Figure 17C] 17A, 17B, and 17C show examples of subspace topologies of TriSoup edges. [Figure 18A] 18A, 18B, and 18C show spatial topologies including TriSoup edges and TriSoup nodes. [Figure 18B] 18A, 18B, and 18C show spatial topologies including TriSoup edges and TriSoup nodes. [Figure 18C] 18A, 18B, and 18C show spatial topologies including TriSoup edges and TriSoup nodes. [Figure 19] FIG. 19 illustrates an exemplary method for encoding the vertex information of the current edge. [Figure 20] FIG. 20 illustrates an exemplary method for encoding the vertex information of the current edge. [Figure 21] FIG. 21 illustrates an exemplary computer system upon which embodiments of the present disclosure may be implemented. [Figure 22]FIG. 22 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 examples shown in the drawings and / or description are non-exclusive, and that the features shown and described may be practiced in other examples. 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 also be used to preserve valuable objects in digital form. In applications for preserving cultural heritage, the goal can be to preserve representations of objects that may be threatened by natural disasters. For example, statues, vases, and temples can be scanned in their entirety and stored as volumetric visual data with billions of samples. This use case for volumetric visual data can be particularly relevant for valuable objects in locations where earthquakes, tsunamis, and typhoons occur frequently. Volumetric visual data can 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 also be any other type of 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 the capture of a real-world object or scene. The geometric shape information of the 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 geometric shape information. 3D scanning may obtain the geometric shape 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 geometric shape information. Photogrammetry may obtain the geometric shape 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 frame.
[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 also 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 a bitstream 110. To encode the point cloud sequence 108, the encoder 114 may use one or more lossless or lossy compression techniques to reduce redundant information in the point cloud sequence 108. To encode the point cloud sequence 108, the encoder 114 may use one or more prediction techniques to reduce redundant information in the point cloud sequence 108. The redundant information is information that may be predicted at 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 encoded bitstream syntax and semantics for transmission and / or storage of compressed point cloud frames, as well as 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 region-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 comprise 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 comprise 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 sub-cuboids. The initial volume or cuboid may be referred to as a bounding box. The cuboid may be, for example, a cube. The encoder may recursively divide each sub-cuboid that contains at least one point of the point cloud. The encoder may not further divide a sub-cuboid that does not contain at least one point of the point cloud. A sub-cuboid that contains at least one point of the point cloud may be referred to as an occupied sub-cuboid. A sub-cuboid that does not contain at least one point of the point cloud may be referred to as an unoccupied sub-cuboid. The encoder may divide an occupied cuboid into, for example, two sub-cuboids (to form a binary tree), four sub-cuboids (to form a quadtree), or eight sub-cuboids (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 at 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-cuboids 202-216 divided from cuboid 200. Sub-cuboids 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 sub-cuboids 202-216 is a local lexicographic order in xyz.
[0031] The voxelized point cloud geometry may 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 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. The scan order may also be referred to as the scanning order. The encoder and / or decoder may scan the occupation tree in breadth-first order. All occupied words of a node at a given depth (e.g., level) in the occupation tree may be scanned. All occupied words of a node at a given depth (e.g., level) in the occupation tree may be scanned before scanning the occupied words of a node at the next depth (e.g., level). Within a given depth, the encoder and / or decoder may scan the occupied words of a node in Morton order. Within a given node, the encoder and / or decoder may 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 may be divided into eight sub-cuboids. Two of the eight sub-cuboids, 304 and 306, may be occupied. The other six of the eight sub-cuboids may be unoccupied. According to Morton 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 sub-rectangle 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 sub-cuboid of the eight sub-cuboids in Morton order, etc.
[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 may be occupied. The other seven of the eight sub-cuboids divided from sub-cuboid 304 may be unoccupied. Of the eight sub-cuboids divided from sub-cuboid 306, three of sub-cuboids 310, 312, and 314 may be occupied. The other five of the eight sub-cuboids divided from sub-cuboid 306 may 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 occupied 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 have been 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 has been entropy coded. A portion of the already coded occupied words can 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 being 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 neighbors of cuboids with already coded occupancy bits can be determined. The neighbors 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 occupancy configuration of the neighborhood of the current child cuboid to be encoded to a practical number (e.g., quantity) of reduced occupancy configurations. For example, two of the six neighboring parent cuboids that share faces with the parent cuboid of the current child cuboid may be reduced to two of the six neighboring parent cuboids that share faces with the parent cuboid of the current child cuboid. 6 That is, 64 occupancy configurations 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 2x the occupancy score of its 26 adjacent parent cuboids. 26 A score can be obtained from each occupancy configuration. The score can be further reduced to a ternary occupancy prediction (e.g., "predicted-occupied," "uncertain," or "predicted-unoccupied") by using a score threshold. The number (e.g., quantity) of neighboring occupied child cuboids and the number (e.g., quantity) of neighboring unoccupied child cuboids can 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 has been 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 encoding a binary "0" (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 encoding a binary "1" (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 encoding dense point cloud geometry. 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 can 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 can 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 can 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 indicate 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 indicate 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 to obtain a more accurate correlation based on the most frequently visited occupancy configurations, for example, 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 β = β1… β K , It consists of K bits. The size of the mask can be reduced, for example, if the occupancy configuration is visited (e.g., looked up in a LUT) a certain number of times (e.g., a certain number). The initial dynamic reduction function DR 0 is a constant function DR for all occupancy configurations β 0 (β) The dynamic reduction function may mask all bits for all occupied configurations so that DR n Updated function from DR n+1 The dynamic shrinking function may evolve into, for example, a function DR n Updated function from DR n+1 The function can evolve to β'=DR n (β)=β1…β kn (β), where k n (β) 510 is the number of unmasked bits (e.g., quantity). 0 The initialization of k(β) may correspond to k0(β)=0, and the natural evolution of the shrinkage function for finer statistics is the increase in the number of unmasked bits (e.g., quantity) k n (β)≦k n+1 (β). The dynamic shrinkage function is k for all occupancy configurations β. n can be completely determined by the value of
[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 NV(β V ') > th V , Next, the number of unmasked bits (e.g., quantity) k n (β) is β V’ This means that the dynamically reduced occupancy configuration β V ' into a dynamically reduced new two-occupancy configuration β 0 ' and β 1 '(β 0 '=β V '0=β V 1…β V kn(β) 0, and β 1 '=β V '1=βV 1…β V kn(β) 1).
[0048] In other words, the number of unmasked bits (e.g., quantity) is DR n (β)=β V’ For all occupancy configurations β, k n+1 (β)=k n (β)+1, which is increased by one. The number of visits (e.g., quantity) of the new dynamically reduced two-occupancy configuration may be initialized to zero. NV(β 0 ') = NV(β 1 ') = 0 (I)
[0049] At the beginning of encoding, an initial dynamic reduction function DR 0 The initial number (e.g., quantity) of visits may be set as follows: NV(DR 0 (β)) = NV(0) = 0 The evolution of NVs in dynamically reduced occupancy configurations can be fully defined.
[0050] The corresponding LUT entry LUT[β V '] is β V Two new entries 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 ', then β V Two new entries LUT[β 0 '] and LUT[β 1 '] may be replaced by LUT[β 0'] = LUT[β 1 '] = LUT[β V '] (II) They are then evolved separately. The evolution of the coder index LUT on the dynamically reduced occupancy configuration can be fully defined.
[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 the 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 β V ' from the leaf nodes associated with the tree T n The tree T n+1 may be obtained by this growth. The number of visits (e.g., quantity), NV, and LUT of context indexes are defined on leaf nodes and may evolve with tree growth through equations (I) and (II).
[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 may be stored.
[0053] A limitation for implementing a dynamic OBUF may 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 encoding the occupancy of a cuboid using a dynamic OBUF. More specifically, FIG. 6 illustrates a flowchart of an exemplary method for encoding 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 FIG. 22.
[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-encoded 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-encoded 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 use 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 lossless compression techniques. 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. Alternatively, the maximum depth of the occupancy tree may be set to stop at a larger volume size (e.g., an N×N×N cuboid, where N>1). The geometry of the points belonging to each occupied leaf node associated with the larger volume 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 the connections between triangles may not be part of the model. An occupied leaf node in the occupation tree corresponding to a cuboid with a volume greater 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 ) may exist 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 on TriSoup edge 714. The existence flag for TriSoup edge 715 may indicate that TriSoup vertex V2 is on TriSoup edge 715. The existence flag for TriSoup edge 716 may indicate that TriSoup vertex V3 is on TriSoup edge 716. The existence flag for TriSoup edge 717 may indicate that TriSoup vertex V4 is on TriSoup edge 717. The existence flags for the remaining TriSoup edges may each indicate that the TriSoup vertex is not on the corresponding TriSoup edge. The TriSoup node corresponding to occupied cuboid 700 may further include the location of each TriSoup vertex that is 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 may be constructed from, for example, a TriSoup vertex V if there are at least three (K≧3) TriSoup vertices on a TriSoup edge of the rectangular solid 800. kIn the example of Figure 8A, there are four TriSoup vertices and a TriSoup triangle is constructed. The TriSoup triangle may be constructed around the centroid vertex C. The centroid vertex C is connected to 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 K TriSoup triangles may be constructed: V1V2C, V2V3C, …, V K V1C. The principal direction may be selected from among three directions each parallel to an axis in 3D space, for example, to increase or maximize the 2D surface of the triangle when the triangle projects along the principal direction. The principal direction may also 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 may be coded into the bitstream to use 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, reducing the reconstruction error and thereby 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 be projected along integer coordinate P start 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 flags (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 existence flags and the positions of the TriSoup edges adjacent to the current TriSoup edge. k ) and existence flags (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 existence 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 the configuration β TS Obtain the reduced configuration β TS '=DR n (β TS ) can be dynamically reduced to the current TriSoup edge neighborhood configuration β TS and 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) may be binarized. TriSoup vertex positions (p k ) (if present) may be binarized to entropy code at least some of the vertex information of the current TriSoup edge, for example, using a binary entropy coder. b The number (e.g., quantity) of TriSoup vertices along a TriSoup edge of length N (p k ) can be set to quantify the length of a TriSoup edge. Nb The quantization interval may be divided evenly. By doing so, the TriSoup vertex positions (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 2 There 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 the current TriSoup edge E are entropy coded. The current TriSoup edge E is an edge of the rectangular parallelepiped 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 calculated using the occupied bits of one or more 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 to 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 TriSoup edge order. 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 encode the current edge E. In some instances, up to five TriSoup edges (E' and E'') may be used to entropy encode 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, either two (FIG. 11C, direction z), three (FIG. 11B, direction y), or four (FIG. 11A, direction x) of the four perpendicular TriSoup edges may already be encoded, 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 encoded for each direction of the current TriSoup edge E, and that vertex information may be used to construct a neighborhood configuration β TS may be constructed independently of its direction.
[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] The current TriSoup edge E may be entropy coded using vertex information for up to five TriSoup edges, as described herein with respect to Figures 11A, 11B, and 11C. More specifically, the current TriSoup edge E's neighborhood configuration β TS The neighborhood configuration β can be determined. TS is the reduced configuration β TS '=DR n (β TS ) can be dynamically reduced to the neighborhood configuration β TS can 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] Using the vertex information of up to five TriSoup edges, the current TriSoup edge E is entropy coded to obtain the neighborhood configuration β TS 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 a coding probability that is 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 the current TriSoup edge E. TSand 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. TS The 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 start point of the current TriSoup edge E, unlike the maximum of five TriSoup edges shown in Figures 11A, 11B, and 11C. TS Using the vertex information of the at least one TriSoup edge, the neighborhood configuration β having improved correlation (e.g., associated with one or more of the at least five TriSoup edges shown in FIGS. 11A, 11B, and 11C) may be determined. TS The encoder and / or decoder may determine one or more symbols of the current TriSoup edge E. The encoder and / or decoder may select a context (e.g., a probability model) for encoding the vertex information of the current TriSoup edge E. The encoder and / or decoder may determine, for example, a neighborhood configuration β with improved correlation. TS The encoder and / or decoder may select a context (e.g., a probability model) for encoding 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 encoding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a context for encoding the vertex information of the current TriSoup edge E based on the neighborhood configuration β TSor 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 illustrate neighboring, already-encoded TriSoup edges that are adjacent and 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 encoded. The neighboring, 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 encoded, unlike the up to five TriSoup edges shown in FIGS. 11A, 11B, and 11C. More specifically, FIGS. 12A, 12B, and 12C illustrate neighboring, 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 already encoded parallel edges E that are available for encoding the current TriSoup edge E. par The parallel edges E that have already been coded are par may be available to encode the current TriSoup edge E, for example, based on the current TriSoup edge E being parallel to the x direction. FIG. 12B shows the previously encoded parallel edges E that are available to encode the current TriSoup edge E. par The parallel edges E that have already been coded are par may be available to encode 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 encoded parallel edges E that are available to encode the current TriSoup edge E.par The parallel edges E that have already been coded are par may be used to encode the current TriSoup edge E, for example, based on the fact that the current TriSoup edge E is parallel to the z direction. par may 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 encoded parallel edges E shown in Figures 12A, 12B, and 12C that may be used to encode the current TriSoup edge E. par Based on one or more of the neighbor configurations β of the current TriSoup edge E, TS 12A, 12B, and 12C that may be used to encode the current TriSoup edge E. par may be determined, for example, based on the directions in which the current TriSoup edge E is parallel as described herein. par , using the vertex information of one or more of the vertices in the current TriSoup edge E (e.g., in relation to one or more of the at least five TriSoup edges shown in FIGS. 11A, 11B, and 11C ), to generate a neighborhood configuration β TS The encoder and / or decoder may select a context (e.g., a probability model) for encoding 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 β TSThe encoder and / or decoder may select a context (e.g., a probabilistic model) for encoding 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 in TS '=DR n (β TS ), the encoder and / or decoder may select a context for encoding 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., arithmetically 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 and do not intersect the start point of the current TriSoup edge. The nearby previously coded TriSoup edges shown in FIGS. 13A, 13B, and 13C do not intersect 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 the end point of the current TriSoup edge E. perp Shows.
[0079] FIG. 13A shows how the current TriSoup edge E is encoded based on the fact that the current TriSoup edge E is parallel to the x-axis, and how the previously encoded perpendicular edge E perp 13B shows that one already-encoded vertical edge E perpcan be used to encode the current TriSoup edge E based on the current TriSoup edge E being parallel to the y-axis. perp may be used to encode the current TriSoup edge E based on the fact that the current TriSoup edge E is parallel to the z-axis. perp can already be encoded according to a lexicographical 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, for example, one or more symbols of the already encoded orthogonal edges E shown in Figures 13A, 13B, and 13C that can be used to encode the current TriSoup edge E. perp Based on one or more of the neighbor configurations β of the current TriSoup edge E, TS 13A, 13B, and 13C that may be used to encode the current TriSoup edge E. perp may be determined, for example, based on the direction in which the current TriSoup edge E is parallel as described herein. perp 11A, 11B, and 11C, and / or one or more of the already encoded four parallel edges E shown in FIGS. 12A, 12B, and 12C. par (relative to) the neighborhood configuration β of the current TriSoup edge E TS The encoder and / or decoder may select a context (e.g., a probability model) for encoding 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 β TSThe encoder and / or decoder may select a context (e.g., a probabilistic model) for encoding 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 in TS '=DR n (β TS ) to select a context for encoding 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., arithmetically 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 obtained 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), the y direction (FIG. 14B), or the z direction (FIG. 14C). Edge 0 may correspond to a unique 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 can correspond to up to four edges (E'' in Figures 11A, 11B, and 11C) that are perpendicular to the current TriSoup edge E and have start or end points equal to (e.g., coincident with) the start point of the current TriSoup edge E. Edges 14, 15, 16, and 17 are edges (E'' in Figures 12A, 12B, and 12C) that are parallel to the current TriSoup edge E and belong to the same TriSoup node as the current TriSoup edge E. par) Edges 9 and 10 may be edges that are perpendicular to the current TriSoup edge E and intersect with the end point of the current TriSoup edge E (E in Figures 13A, 13B, and 13C). perp ). Edges 1, 2, 3, 4, 5, 6, 7, and 8 may belong to the same TriSoup node as the current TriSoup edge E, or may belong to a plane that is perpendicular to the current TriSoup edge E and contains the start point of the current TriSoup edge E. Edges 9, 10, 11, 12, and 13 may belong to the same TriSoup node as the current TriSoup edge E, or may belong to a plane that is perpendicular to the current TriSoup edge E and contains the end point of the current TriSoup edge E.
[0082] 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, for example, one or more of the previously encoded edges 0-17 shown in Figures 14A, 14B, and 14C that can be used to encode the current TriSoup edge E. TS 14A, 14B, and 14C that may be used to encode the current TriSoup edge E may be determined based on, for example, the direction to which the current TriSoup edge E is parallel. Using the vertex information of one or more of the already encoded edges 0-17, 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 encoding 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 probabilistic model) for encoding 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 in TS '=DR n (β TS ), the encoder and / or decoder may select a context for encoding the vertex information of the current TriSoup edge E based on 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.
[0083] The 18-edge space topology shown in Figures 14A, 14B, and 14C may include an edge subspace topology. Each edge of the edge subspace topology may be available (e.g., already encoded) for encoding 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 TriSoup edge subspace topologies. The TriSoup edge subspace topology may be, for example, an 18-edge space topology as shown in Figures 14A, 14B, and 14C. The edge subspace topology may include 11 edges 0, 1, 2, 5, 6, 7, 8, 14, 15, 16, and 17. Figures 15A, 15B, and 15C show that for each of three possible orientations of the current TriSoup edge E, each of the eleven edges of the edge subspace topology may be available for encoding the current TriSoup edge E. Figure 15A shows that each of the eleven edges of the edge subspace topology may be available for encoding the current TriSoup edge E, for example, if the current TriSoup edge E is parallel to the x-axis. Figure 15B shows that each of the eleven edges of the edge subspace topology may be available for encoding a current TriSoup edge E that is parallel to the y-axis. Figure 15C shows that each of the eleven edges of the edge subspace topology may be available for encoding 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 rotational and / or mirrored 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, for example, edges belonging only to the edge subspace topologies shown in Figures 15A, 15B, and 15C that are available to encode the current TriSoup edge E, regardless of their 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 encoding 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 probabilistic model) for encoding the vertex information of the current TriSoup edge E based on, for example, the reduction configuration β TS '=DR n (β TS ), we can select a context for encoding 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 edge spatial topology may be referred to as the edge direction-independent spatial topology: each edge of the edge spatial topology may be available (e.g., already encoded) for encoding 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 using the neighborhood configuration β of the current TriSoup edge E based on edges that belong only to a spatial topology that is independent of the edge direction. 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 an edge direction-independent spatial topology, such as the edge sub-spatial topologies 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 implementations can then generate a neighborhood configuration β of the current TriSoup edge E based on edges that belong only to the edge's direction-independent spatial topology. 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. β TS =(β ind , dir, β dep ) β ind is a neighborhood configuration β determined based on edges that belong only to the edge direction-independent spatial topology. TS is one or more symbols of , dir is the direction of the current edge, and β depis a neighborhood configuration β that is determined based on at least one edge that is not available to encode the current TriSoup edge E, independently of the direction of the current TriSoup edge E. TS One or more symbols β ind can be determined, for example, based on edges that belong only to the edge subspace topology shown in Figures 15A, 15B, and 15C. dep , may be determined based on edges that belong to the edge space topology shown in Figures 14A, 14B, and 14C, but do not belong to the edge subspace topology shown in Figures 15A, 15B, and 15C. The direction dir may be made of two bits, e.g., 00 for x, 01 for y, and 10 for z, with 11 being unused. The encoder and / or decoder may begin encoding information by dynamic OBUF. The encoder and / or decoder may determine, for example, a neighborhood configuration β that shares the same statistics regardless of the direction of the current TriSoup edge E. TS The leftmost bit β of ind By using the neighborhood configuration β, the dynamic OBUF can start encoding information. This may help the dynamic OBUF converge faster in its initial stages. TS More bits of the neighborhood configuration β can be unmasked. TS More bits of β can be unmasked during the evolution of the encoding, for example. The statistics show that, for example, 2 bits of dir are unmasked through the OBUF tree among the three directions of the current TriSoup edge E. dep can be distributed taking into account the direction-dependent topology of the remaining neighbors used to construct {tilde over (x)}.
[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 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) shape of the point cloud can be largely isotropic for reasonable TriSoup node sizes.
[0090] 16A, 16B, and 16C show adjacent, already-encoded edges. The adjacent, already-encoded edges may be taken from the nine-edge spatial topology of the current TriSoup edge E. The nine edges of the spatial topology may be labeled a through i. The current TriSoup edge E may 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 may 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 may have 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. TS The encoder and / or decoder may determine one or more symbols of the neighborhood configuration β of the current TriSoup edge E, for example, based on one or more of the previously encoded edges a-i shown in Figures 16A, 16B, and 16C that may be available for encoding the current TriSoup edge E. TS16A, 16B, and 16C that may be available for encoding the current TriSoup edge E may be determined. A particular set of already-encoded edges ai shown in FIGS. 16A, 16B, and 16C that may be available for encoding the current TriSoup edge E may be determined based on, for example, the direction to which the current TriSoup edge E is parallel. Vertex information for one or more of the already-encoded edges ai may be used to determine a neighborhood configuration β of the current TriSoup edge E. TS The encoder and / or decoder may select a context (e.g., a probability model) for encoding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select, for example, a neighborhood configuration β TS The encoder and / or decoder may select a context (e.g., a probabilistic model) for encoding 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 in TS '=DR n (β TS ) may select a context for encoding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a context for encoding the vertex information of the current TriSoup edge E based on the 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., arithmetically code) the vertex information of the current TriSoup edge E based on the context.
[0092] The nine-edge space topology shown in Figures 16A, 16B, and 16C may include an edge subspace topology. Each edge of the edge subspace topology may be available (e.g., already encoded) for encoding 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 space topology 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 encoding the current TriSoup edge E. Figure 17A shows, for example, that if the current TriSoup edge E is parallel to the x-axis, then each of the five edges of the edge subspace topology may be available for encoding the current TriSoup edge E. Figure 17B shows that each of the five edges of the edge subspace topology may be available for encoding 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 encoding 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. TS The encoder and / or decoder may determine one or more symbols of the neighborhood configuration β of the current TriSoup edge E based on edges belonging only to the edge subspace topology shown in Figures 17A, 17B, and 17C, which may be available to encode the current TriSoup edge E, regardless of its 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 encoding 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 β TSThe encoder and / or decoder may select a context (e.g., a probabilistic model) for encoding 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 in TS ' = DR n (β TS ) may select a context for encoding the vertex information of the current TriSoup edge E. The encoder and / or decoder may select a context for encoding the vertex information of the current TriSoup edge E based on the 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., arithmetically code) the vertex information of the current TriSoup edge E based on the context.
[0094] 18A, 18B, and 18C illustrate spatial topologies including TriSoup edges and TriSoup nodes. A spatial topology may be a direction-independent spatial topology created by combining TriSoup edges and TriSoup nodes. FIGS. 18A, 18B, and 18C illustrate additions to the edge-only direction-independent spatial topology of FIGS. 17A, 17B, and 17C. Four TriSoup nodes labeled A, B, C, and D have been 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 may correspond to nodes 1020-1023 in FIG. 10B. The four nodes are labeled for each direction to obtain direction independence for the topology of a spatial topology consisting of five edges a, b, c, f, and g and four nodes A-D. By doing so, the 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] FIG. 19 illustrates an exemplary method for encoding vertex information of a current edge. More specifically, FIG. 19 illustrates a flowchart 1900 of exemplary method steps for encoding vertex information of a current edge. The exemplary method, or one or more operations of the method, may be performed by one or more computing devices or entities. One or more steps of the exemplary flowchart 1900 may be performed by a coder (e.g., an encoder, such as encoder 114 as shown in FIG. 1, or a decoder, such as decoder 120 as shown in FIG. 1). The method, or one or more steps thereof, may be embodied in computer-executable instructions stored on a computer-readable medium, such as a non-transitory computer-readable medium. The steps of the flowchart 1900 need not all be performed in the specified order and may be performed in any order. One or more steps of the flowchart in this example may be omitted.
[0096] In step 1902, a coder (e.g., an encoder or a decoder) may determine one or more symbols of a neighborhood configuration of the current edge. The coder (e.g., an encoder or a decoder) may determine one or more symbols of a neighborhood configuration of the current edge, for example, based on vertex information of at least one edge that does not intersect (e.g., does not intersect) with the start point of the current edge. The edge may be oriented from its start point to its end point according to the orientation of one of three axes in 3D space that are parallel.
[0097] The current edge may be an edge of a cuboid that includes a portion of the point cloud. At least one edge that does not intersect (e.g., does not intersect) with the start point of the current edge may belong to the same cuboid as the current edge. At least one edge that does not intersect (e.g., does not intersect) with the start point of the current edge may belong to the same cuboid as the current edge or may be parallel to the current edge. At least one edge that does not intersect (e.g., does not intersect) with the start point of the current edge may belong to the same cuboid as the current edge and may intersect with the end point of the current edge.
[0098] The coder may determine one or more symbols of the neighborhood configuration. The coder may determine one or more symbols of the neighborhood configuration based on, for example, one or more vertex presence flags of at least one edge. The coder may determine one or more symbols of the neighborhood configuration based on, for example, one or more vertex positions of at least one edge.
[0099] The vertex information of the current edge may include a vertex presence flag of the current edge. The vertex information of the current edge may include a vertex position of the current edge.
[0100] In step 1904, the coder may select a context for encoding the vertex information of the current edge. The coder may select a context for encoding the vertex information of the current edge based on, for example, a neighborhood configuration.
[0101] The coder may select a context (e.g., a probability model) for encoding the vertex information of the current edge. The coder may select a context (e.g., a 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 neighborhood configurations to contexts (e.g., probability models).
[0102] The coder may select a context (e.g., a probability model) for encoding the vertex information of the current edge. The coder may select a context (e.g., a 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 of the neighborhood configuration to a context (e.g., a probability model). The subset of the symbols of the neighborhood configuration may be determined, for example, by using an OBUF dynamic shrinkage function on the symbols of 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 having neighborhood information that includes the same subset of symbols. The coder (e.g., an encoder or decoder) may update the lookup table to map a subset of the symbols of the neighborhood configuration to a different context (e.g., a probability model). The coder (e.g., an encoder or decoder) may update the lookup table to map a subset of the symbols of the neighborhood configuration to a different context (e.g., a probability model), for example, based on the vertex information of the current edge.
[0103] In step 1906, the coder (e.g., encoder or decoder) may entropy code (e.g., arithmetic code) the vertex information of the current edge. The coder (e.g., encoder or decoder) may entropy code (e.g., arithmetic code) the vertex information of the current edge, for example, based on the context.
[0104] FIG. 20 illustrates an exemplary method for encoding vertex information of a current edge. More specifically, FIG. 20 illustrates a flowchart 2000 of exemplary method steps for encoding vertex information of a current edge. One or more steps of the exemplary flowchart 2000 may be performed by a coder (e.g., an encoder such as the encoder 114 shown in FIG. 1 or a decoder such as the decoder 120 shown in FIG. 1). The method or one or more steps thereof may be embodied in computer-executable instructions stored on a computer-readable medium, such as a non-transitory computer-readable medium. The steps of the flowchart 2000 need not all be performed in the specified order and may be performed in any order. One or more steps of this flowchart may be omitted.
[0105] In step 2002, a coder (e.g., an encoder or a decoder) may determine one or more symbols of a neighborhood configuration of the current edge. The coder (e.g., an encoder or a decoder) may determine one or more symbols of a neighborhood configuration of the current edge based on, for example, edge vertex information that belongs only to the edge spatial topology. Each edge of the edge spatial topology may be available for encoding the current edge, independent of the direction of the current edge.
[0106] The current edge may be an edge of a cuboid that includes a portion of the point cloud. The edges belonging to the spatial topology of the edges may include at least one edge that does not intersect (e.g., does not intersect) with the start point of the current edge. The edges may be oriented from the start point to the end point according to the orientation of one of three axes of 3D space that are parallel. The at least one edge that does not intersect (e.g., does not intersect) with the start point of the current edge may belong to the same cuboid as the current edge. The at least one edge that does not intersect (e.g., does not intersect) with the start point of the current edge may belong to the same cuboid as the current edge and may be parallel to the current edge. The at least one edge that does not intersect (e.g., does not intersect) with the start point of the current edge may belong to the same cuboid as the current edge and may intersect with the end point of the current edge.
[0107] One of a plurality of different configurations of the spatial topology of the edge may be selected to determine one or more symbols of the neighborhood information. One of a plurality of different configurations of the spatial topology of the edge may be selected to determine one or more symbols of the neighborhood information based on, for example, the current edge orientation. The plurality of different configurations may include different rotational and / or mirror configurations of the spatial topology of the edge.
[0108] A coder (e.g., an encoder or decoder) may determine one or more symbols of the neighborhood configuration. The coder (e.g., an encoder or decoder) may determine one or more symbols of the neighborhood configuration based on, for example, one or more vertex presence flags of edges that belong only to the edge's spatial topology. The coder may determine one or more symbols of the neighborhood configuration based on, for example, one or more vertex positions of edges that belong only to the edge's spatial topology.
[0109] The vertex information of the current edge may include a vertex presence flag of the current edge. The vertex information of the current edge may include a vertex position of the current edge.
[0110] In step 2004, a coder (e.g., an encoder or a decoder) may select a context for encoding the vertex information of the current edge. The coder (e.g., an encoder or a decoder) may select a context for encoding the vertex information of the current edge, for example, based on a neighborhood configuration. The coder may select a context (e.g., a probability model) for encoding the vertex information of the current edge, for example, based on a lookup table (e.g., an OBUF lookup table) that maps the neighborhood configuration to a context (e.g., a probability model).
[0111] The coder may select a context (e.g., a probability model) for encoding the vertex information of the current edge based on, for example, a lookup table that maps only a subset of the symbols of the neighborhood configuration to a context (e.g., a probability model). The subset of the symbols of the neighborhood configuration may be determined, for example, by using an OBUF dynamic shrinkage function on the symbols of the neighborhood configuration. The number of symbols (e.g., a quantity) in the subset may increase based on, for example, the number of encoded edges having neighborhood information that includes the same subset of symbols (e.g., a quantity). The coder (e.g., an encoder or decoder) may update the lookup table to map a subset of the symbols of the neighborhood configuration to a different context (e.g., a probability model). The coder (e.g., an encoder or decoder) may update the lookup table to map a subset of the symbols of the neighborhood configuration to a different context (e.g., a probability model), for example, based on the vertex information of the current edge.
[0112] In step 2006, the coder (e.g., encoder or decoder) may entropy code (e.g., arithmetic code) the vertex information of the current edge. The coder (e.g., encoder or decoder) may entropy code (e.g., arithmetic code) the vertex information of the current edge, for example, based on the context.
[0113] 21 illustrates an exemplary computer system on which embodiments of the present disclosure may be implemented. For example, as shown in FIG. 21, an exemplary computer system 2100 may implement one or more of the methods described herein. For example, various devices and / or systems described herein (e.g., FIGS. 1, 2, and 3) may be implemented in the form of one or more computer systems 2100. Furthermore, each of the steps of the flowcharts illustrated in the present disclosure may be implemented on one or more computer systems 2100.
[0114] The computer system 2100 may include one or more processors, such as a processor 2104. The processor 2104 may be a special purpose processor, a general purpose processor, a microprocessor, and / or a digital signal processor. The processor 2104 may be connected to a communications infrastructure 2102 (e.g., a bus or network). The computer system 2100 may also include a main memory 2106 (e.g., random access memory (RAM)) and / or a secondary memory 2108.
[0115] The secondary memory 2108 may include a hard disk drive 2110 and / or a removable storage drive 2112 (e.g., a magnetic tape drive, an optical disk drive, and / or the like). The removable storage drive 2112 may read from and / or write to a removable storage unit 2116. The removable storage unit 2116 may include a magnetic tape, an optical disk, and / or the like. The removable storage unit 2116 may be read by and / or written to the removable storage drive 2112. The removable storage unit 2116 may include a computer-usable storage medium having computer software and / or data stored therein.
[0116] The secondary memory 2108 may include other similar means for allowing computer programs or other instructions to be loaded into the computer system 2100. Such means may include a removable storage unit 2118 and / or an interface 2114. Examples of such means may include a program cartridge and / or cartridge interface (such as a video game device), a removable memory chip (e.g., an erasable programmable read-only memory (EPROM) or a programmable read-only memory (PROM)), and associated sockets, thumb drives and universal serial bus (USB) ports, and / or other removable storage units 2118 and interfaces 2114 that may allow software and / or data to be transferred from the removable storage unit 2118 to the computer system 2100.
[0117] Computer system 2100 may include a communications interface 2120. Communications interface 2120 may allow software and data to be transferred between computer system 2100 and external devices. Examples of communications interface 2120 may include a modem, a network interface (e.g., an Ethernet card), a communications port, etc. Software and / or data transferred via communications interface 2120 may be in the form of signals, which may be electronic, electromagnetic, optical, and / or other signals that can be received by communications interface 2120. The signals may be provided to communications interface 2120 via communications path 2122. Communications path 2122 may transmit signals and may be implemented using wire or cable, fiber optics, a telephone line, a cellular phone link, a radio frequency (RF) link, and / or other communications channels.
[0118] The computer system 2100 may include one or more sensors 2124. The sensors 2124 may measure and / or detect one or more physical quantities. The sensors 2124 may convert the measured or detected physical quantities into electrical signals in digital and / or analog form. For example, the sensors 2124 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 2124 may include a head-tracking sensor (e.g., a gyroscope) 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 2124 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.
[0119] Computer program medium and / or computer-readable medium may be used to refer to tangible (e.g., non-transitory) storage media, such as removable storage units 2116 and 2118, or a hard disk installed in hard disk drive 2110. These computer program products may be means for providing software to computer system 2100. Computer programs (also called computer control logic) may be stored in main memory 2106 and / or secondary memory 2108. Computer programs may be received via communications interface 2120. When executed, these computer programs may enable computer system 2100 to implement one or more exemplary embodiments of the present disclosure, as discussed herein. In particular, when executed, the computer programs may enable processor 2104 to perform processes of the present disclosure, such as any of the methods described herein. Thus, these computer programs may represent controllers of computer system 2100.
[0120] 22 illustrates exemplary elements of a computing device that may be used to implement any of the various devices 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 2230 may include one or more processors 2231 that may execute instructions stored on random access memory (RAM) 2233, removable media 2234 (e.g., a universal serial bus (USB) drive, a compact disc (CD) or digital versatile disc (DVD), or a floppy disk drive), or any other desired storage medium. Instructions may also be stored on an attached (or internal) hard drive 2235. Computing device 2230 may also include a security processor (not shown) that may execute instructions of one or more computer programs to monitor processes running on processor 2231 and any processes requesting access to any hardware and / or software components of computing device 2230 (e.g., ROM 2232, RAM 2233, removable media 2234, hard drive 2235, device controllers 2237, network interface 2239, GPS 2241, Bluetooth interface 2242, WiFi interface 2243, etc.). Computing device 2230 may include one or more output devices such as a display 2236 (e.g., a screen, display device, monitor, television, etc.) and may include one or more output device controllers 2237, such as a video processor. There may also be one or more user input devices 2238, such as a remote control, keyboard, mouse, touch screen, microphone, etc. Computing device 2230 may also include one or more network interfaces, such as network interface 2239, which may be a wired interface, a wireless interface, or a combination of the two.Network interface 2239 may provide an interface through which computing device 2230 communicates with network 2240 (e.g., a RAN, or any other network). Network interface 2239 may include a modem (e.g., a cable modem), and external network 2240 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, computing device 2230 may include a location detection device such as a global positioning system (GPS) microprocessor 2241, which may be configured to receive and process global positioning signals and, with possible assistance from external servers and antennas, determine the geographic location of computing device 2230.
[0121] While the example of FIG. 22 may be a hardware configuration, the components shown may be implemented as software. Changes may be made to add, remove, combine, divide, etc. components of the computing device 2230 as desired. Furthermore, the components may be implemented using basic computing devices and components, and the same components (e.g., processor 2231, ROM storage 2232, display 2236, 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. 22. 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).
[0122] 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.
[0123] Clause 1. A method comprising determining one or more symbols of a neighborhood configuration of a current edge based on vertex information of an edge spatial topology.
[0124] Clause 2. The method of clause 1, wherein each edge of the edge space topology is available for encoding the current edge, independent of the direction of the current edge.
[0125] Clause 3. The method of any one of clauses 1-2, further comprising determining a probability model based on one or more symbols of the neighborhood configuration.
[0126] Clause 4. The method of any one of clauses 1 to 3, further comprising entropy encoding vertex information of the current edge based on the determined probability model.
[0127] Clause 5. The method of any one of clauses 1 to 4, wherein determining one or more symbols of a neighborhood configuration includes selecting one of a plurality of different configurations of edge spatial topology based on a current edge direction.
[0128] Clause 6. The method of clause 5, wherein the plurality of different configurations includes a rotational configuration of the spatial topology of the edges.
[0129] Clause 7. The method of any one of clauses 5-6, wherein the plurality of different configurations comprises mirror configurations of the spatial topology of the edges.
[0130] Clause 8. The method of any one of clauses 1 to 7, wherein determining one or more symbols of the neighborhood configuration includes determining one or more symbols of the neighborhood configuration based on one or more vertex presence flags associated with the spatial topology of the edges.
[0131] Clause 9. The method of any one of clauses 1 to 8, wherein determining one or more symbols of the neighborhood configuration includes determining one or more symbols of the neighborhood configuration based on one or more vertex positions associated with a spatial topology of edges.
[0132] Clause 10. The method of any one of clauses 1 to 9, wherein the vertex information of the current edge includes a vertex presence flag associated with the current edge.
[0133] Clause 11. The method of any one of clauses 1 to 10, wherein the vertex information of the current edge includes a vertex position associated with the current edge.
[0134] Clause 12. The method of any one of clauses 1 to 11, wherein determining the probabilistic model includes determining the probabilistic model based on a lookup table that maps neighborhood configurations to the probabilistic model.
[0135] Clause 13. The method of any one of clauses 1 to 12, wherein determining the probability model includes determining the probability model based on a lookup table that maps a subset of one or more symbols of the neighborhood configuration to the probability model.
[0136] Clause 14. The method of any one of clauses 12 to 13, further comprising increasing the amount of symbols in the subset based on the amount of coded edges having neighborhood information that includes the symbols in the subset.
[0137] Clause 15. The method of any one of clauses 12-14, further comprising updating a lookup table for mapping subsets to different probability models based on vertex information of the current edge.
[0138] Clause 16. The method of any one of clauses 1 to 15, wherein the spatial topology of edges includes edges that do not intersect with the start point of the current edge.
[0139] Clause 17. The method of any one of clauses 1 to 16, wherein the spatial topology of the edges includes edges that belong to the same cuboid as the current edge.
[0140] Clause 18. The method of any one of clauses 1 to 17, wherein the spatial topology of the edges includes edges that are parallel to the current edge.
[0141] Clause 19. The method of any one of clauses 1 to 16, wherein the spatial topology of edges includes an edge that is perpendicular to the current edge and intersects with the end point of the current edge.
[0142] Clause 20. The method of any one of clauses 1-19, wherein the neighborhood configuration further includes a second set of one or more symbols indicating the direction of the current edge.
[0143] Clause 21. The method of any one of clauses 1 to 20, wherein the neighborhood configuration further includes a third set of one or more symbols determined based on at least one edge that is not available for encoding the current edge independent of the orientation of the current edge.
[0144] Clause 22. The method of any one of clauses 1 to 21, wherein the current edge belongs to a rectangular parallelepiped that contains at least one point of the point cloud.
[0145] Clause 23. A computing device comprising one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the method of any one of clauses 1 to 22.
[0146] Clause 24. A system comprising: a first computing device configured to perform the method of any one of clauses 1 to 22; and a second computing device configured to decode entropy-encoded vertex information of a current edge.
[0147] Clause 25. A computer-readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 1 to 22.
[0148] Clause 26. A method comprising: determining one or more symbols of a neighborhood configuration of a current edge based on vertex information of at least one edge that does not intersect with a start point of the current edge.
[0149] Clause 27. The method of clause 26, further comprising determining a probability model based on one or more symbols of the neighborhood configuration.
[0150] Clause 28. The method of any one of clauses 26-27, further comprising entropy coding vertex information of the current edge based on the determined probability model.
[0151] Clause 29. The method of any one of clauses 26 to 28, wherein at least one edge includes an edge that belongs to the same rectangular parallelepiped as the current edge.
[0152] Clause 30. The method of any one of clauses 26 to 29, wherein at least one side includes a side that is parallel to the current side.
[0153] Clause 31. The method of any one of clauses 26 to 30, wherein at least one side includes a side that is perpendicular to the current side and intersects with an end point of the current side.
[0154] Clause 32. The method of any one of clauses 26-31, wherein the vertex information of the current edge includes a first vertex presence flag associated with the current edge.
[0155] Clause 33. The method of any one of clauses 26-32, wherein the vertex information of the current edge includes a first vertex position associated with the current edge.
[0156] Clause 34. The method of any one of clauses 26 to 33, wherein determining one or more symbols of the neighborhood configuration includes determining one or more symbols of the neighborhood configuration based on a second vertex presence flag associated with at least one edge.
[0157] Clause 35. The method of any one of clauses 26 to 34, wherein determining one or more symbols of the neighborhood configuration includes determining one or more symbols of the neighborhood configuration based on a second vertex position associated with at least one edge.
[0158] Clause 36. The method of any one of clauses 26 to 35, wherein determining the probabilistic model includes determining the probabilistic model based on a look-up table that maps neighborhood configurations to the probabilistic model.
[0159] Clause 37. The method of any one of clauses 26 to 36, wherein determining the probability model comprises determining the probability model based on a lookup table that maps a subset of one or more symbols of the neighborhood configuration to the probability model.
[0160] Clause 38. The method of any one of clauses 36-37, further comprising increasing the quantity of symbols in the subset based on the quantity of coded edges having neighborhood information that includes the symbols in the subset.
[0161] Clause 39. The method of any one of clauses 36-38, further comprising updating a lookup table to map the subset to a different probability model based on vertex information of the current edge.
[0162] Clause 40. The method of any one of clauses 26 to 39, wherein the current edge belongs to a rectangular parallelepiped that contains at least one point of the point cloud.
[0163] Clause 41. A computing device comprising one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform a method according to any one of clauses 26 to 40.
[0164] Clause 42. A system comprising: a first computing device configured to perform the method of any one of clauses 26 to 40; and a second computing device configured to decode entropy-encoded vertex information of a current edge.
[0165] Clause 43. A computer-readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 26 to 40.
[0166] Clause 44. A method comprising: determining one or more symbols of a neighborhood configuration of a current edge based on vertex information of a subset of the edge space topology.
[0167] Clause 45. The method of clause 44, further comprising determining a probability model based on one or more symbols of the neighborhood configuration.
[0168] Clause 46. The method of any one of clauses 44-45, further comprising entropy coding the vertex information of the current edge based on the determined probability model.
[0169] Clause 47. The method of any one of clauses 44 to 46, wherein the spatial topology of the edges includes a first edge that is parallel to the current edge.
[0170] Clause 48. The method of clause 47, wherein the end point of the first edge coincides with the start point of the current edge.
[0171] Clause 49. The method of any one of clauses 44 to 48, wherein the spatial topology of the edge includes a second edge that is perpendicular to the current edge.
[0172] Clause 50. The method of clause 49, wherein the start point of the second edge coincides with the start point of the current edge.
[0173] Clause 51. The method of any one of clauses 44 to 50, wherein the spatial topology of the edges includes a third edge that is perpendicular to the current edge.
[0174] Clause 52. The method of clause 51, wherein the end point of the third edge coincides with the start point of the current edge.
[0175] Clause 53. The method according to any one of clauses 44 to 52, wherein the spatial topology of the edges includes a fourth edge that is parallel to the current edge and belongs to the first rectangular parallelepiped that includes the current edge.
[0176] Clause 54. The method of any one of clauses 44 to 53, wherein the spatial topology of the edges includes a fifth edge that is perpendicular to the current edge and intersects with an end point of the current edge.
[0177] Clause 55. The method of any one of clauses 44 to 54, wherein the spatial topology of the edges includes a sixth edge that belongs to a second rectangular parallelepiped that includes the current edge.
[0178] Clause 56. The method according to clause 55, wherein the sixth edge belongs to a first plane perpendicular to the current edge.
[0179] Clause 57. The method of any one of clauses 55-56, wherein the first plane contains the start point of the current edge.
[0180] Clause 58. The method of any one of clauses 44 to 57, wherein the spatial topology of the edges includes a seventh edge that belongs to a third rectangular parallelepiped that includes the current edge.
[0181] Clause 59. The method according to clause 58, wherein the seventh edge belongs to a second plane perpendicular to the current edge.
[0182] Clause 60. The method of any one of clauses 58-59, wherein the second plane includes the end point of the current edge.
[0183] Clause 61. A computing device comprising one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform a method according to any one of clauses 44 to 60.
[0184] Clause 62. A system comprising: a first computing device configured to perform the method of any one of clauses 44 to 60; and a second computing device configured to decode entropy-encoded vertex information of the current edge.
[0185] Clause 63. A computer-readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 44 to 60.
[0186] Clause 64. A method comprising determining one or more symbols of a neighborhood configuration of a current edge based on edge vertex information belonging only to the edge spatial topology.
[0187] Clause 65. The method of clause 64, wherein each edge of the edge space topology is available for encoding the current edge, independent of the direction of the current edge.
[0188] Clause 66. The method of any one of clauses 64-65, further comprising selecting a context / probability model for encoding the vertex information of the current edge based on a neighborhood configuration.
[0189] Clause 67. The method of any one of clauses 64-66, further comprising entropy encoding the vertex information of the current edge based on a context / probability model.
[0190] Clause 68. A method according to any one of clauses 64 to 67, wherein one of a plurality of different configurations of the spatial topology of the edges is selected to determine one or more symbols of neighborhood information based on the direction of the current edge.
[0191] Clause 69. The method of clause 68, wherein the plurality of different configurations comprises different rotational and / or mirror configurations of the spatial topology of the edges.
[0192] Clause 70. The method of any one of clauses 64 to 69, wherein determining further comprises determining one or more symbols of the neighborhood configuration based on one or more vertex presence flags of edges that belong only to the spatial topology of the edges.
[0193] Clause 71. The method of any one of clauses 64 to 70, wherein determining further comprises determining one or more symbols of the neighborhood configuration based on one or more vertex positions of edges that belong only to the spatial topology of edges.
[0194] Clause 72. The method of any one of clauses 64 to 71, wherein the vertex information of the current edge includes a vertex presence flag of the current edge.
[0195] Clause 73. The method of any one of clauses 64 to 72, wherein the vertex information of the current edge includes a vertex position of the current edge.
[0196] Clause 74. The method of any one of clauses 64 to 73, wherein selecting further comprises selecting a context / probability model for encoding the vertex information of the current edge based on a lookup table that maps neighborhood configurations to context / probability models.
[0197] Clause 75. The method of any one of clauses 64-74, wherein selecting further comprises selecting a context / probability model for encoding the vertex information of the current edge based on a lookup table that maps only a subset of the symbols in the neighborhood configuration to the context / probability model.
[0198] Clause 76. The method of clause 75, wherein the number of symbols in a subset is increased based on the number of encoded edges having neighborhood information that includes the same subset of symbols.
[0199] Clause 77. The method of any one of clauses 75-76, further comprising updating a lookup table to map a subset of symbols in the neighborhood configuration to different context / probability models based on current edge vertex information.
[0200] Clause 78. The method of any one of clauses 64 to 77, wherein the edges belonging only to the edge spatial topology include at least one edge that does not intersect with the start point of the current edge.
[0201] Clause 79. The method according to clause 78, wherein at least one edge further belongs to the same rectangular parallelepiped as the current edge.
[0202] Clause 80. The method of clause 79, wherein at least one edge is also parallel to the current edge.
[0203] Clause 81. The method of any one of clauses 79-80, wherein at least one edge is also perpendicular to the current edge and intersects with an end point of the current edge.
[0204] Clause 82. The method of any one of clauses 64 to 81, wherein the neighborhood configuration further includes a second set of one or more symbols indicating the direction of the current edge.
[0205] Clause 83. The method of any one of clauses 64 to 82, wherein the neighborhood configuration further includes a third set of one or more symbols determined based on at least one edge that is not available for encoding the current edge independent of the orientation of the current edge.
[0206] Clause 84. The method of any one of clauses 64 to 83, wherein the current edge is a rectangular parallelepiped that includes a portion of the point cloud.
[0207] Clause 85. A computing device comprising one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform a method according to any one of clauses 64 to 84.
[0208] Clause 86. A system comprising: a first computing device configured to perform the method of any one of clauses 64 to 84; and a second computing device configured to decode entropy-encoded vertex information of the current edge.
[0209] Clause 87. A computer-readable medium storing instructions that, when executed, cause performance of the method of any one of clauses 64 to 84.
[0210] The computing device may execute a method including a plurality of operations. One or more symbols of a neighborhood configuration of a current edge may be determined based on vertex information of the edge spatial topology. Each edge of the edge spatial topology may be available for encoding the current edge, independent of the direction of the current edge. A probability model may be determined based on the one or more symbols of the neighborhood configuration. Vertex information of the current edge may be entropy coded based on the determined probability model. Determining one or more symbols of the neighborhood configuration may include selecting one of a plurality of different configurations of the edge spatial topology based on the direction of the current edge. The plurality of different configurations may include a rotated configuration of the edge spatial topology. The plurality of different configurations may include a rotated configuration of the edge spatial topology and a mirrored configuration of the edge spatial topology. Determining one or more symbols of the neighborhood configuration may include determining one or more symbols of the neighborhood configuration based on one or more vertex presence flags associated with the edge spatial topology. Determining one or more symbols of the neighborhood configuration may include determining one or more symbols of the neighborhood configuration based on one or more vertex positions associated with the edge spatial topology. The vertex information of the current edge may include a vertex presence flag associated with the current edge. The vertex information of the current edge may include a vertex position associated with the current edge. Determining the probability model may include determining the probability model based on a lookup table that maps a neighborhood configuration to the probability model. Determining the probability model may include determining the probability model based on a lookup table that maps a subset of one or more symbols of the neighborhood configuration to the probability model. The amount of symbols in the subset may be increased with neighborhood information that includes the symbols in the subset based on the amount of encoded edges. Based on the vertex information of the current edge, the lookup table may be updated to map the subset to a different probability model. The spatial topology of the edge may include edges that do not intersect with the start point of the current edge. The spatial topology of the edge may include edges that belong to the same rectangular parallelepiped as the current edge. The spatial topology of the edge may include edges that are parallel to the current edge.The spatial topology of the edge may include an edge that is perpendicular to the current edge and intersects with the end point of the current edge. The neighborhood configuration may further include a second set of one or more symbols indicating the direction of the current edge. The neighborhood configuration may further include a third set of one or more symbols determined based on at least one edge that is unavailable for encoding the current edge independent of the direction of the current edge. The current edge may belong to a cuboid that includes at least one point of the point cloud. The computing device may include one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the computing device to perform the described methods, additional operations, and / or include additional elements. The system may include a first computing device configured to perform the described methods, additional operations, and / or include additional elements, and a second computing device configured to decode the entropy-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.
[0211] The computing device may execute a method including a plurality of operations. One or more symbols of a neighborhood configuration of the current edge may be determined based on vertex information of at least one edge that does not intersect with the start point of the current edge. A probability model may be determined based on the one or more symbols of the neighborhood configuration. The vertex information of the current edge may be entropy coded based on the determined probability model. The at least one edge may include an edge that belongs to the same rectangular parallelepiped as the current edge. The at least one edge may include an edge that is parallel to the current edge. The at least one edge may include an edge that is perpendicular to the current edge and intersects with the end point of the current edge. The vertex information of the current edge may include a first vertex presence flag associated with the current edge. The vertex information of the current edge may include a first vertex position associated with the current edge. Determining one or more symbols of the neighborhood configuration may include determining one or more symbols of the neighborhood configuration based on a second vertex presence flag associated with the at least one edge. Determining one or more symbols of the neighborhood configuration may include determining one or more symbols of the neighborhood configuration based on a second vertex position associated with the at least one edge. Determining the probability model may include determining the probability model based on a lookup table that maps the neighborhood configuration to the probability model. Determining the probability model may include determining the probability model based on a lookup table that maps a subset of one or more symbols of the neighborhood configuration to the probability model. The amount of symbols in the subset may be increased with neighborhood information including the symbols in the subset based on the amount of encoded edges. The lookup table may be updated to map the subset to a different probability model based on vertex information of the current edge. The current edge may belong to a cuboid that includes at least one point of the point cloud. The computing device may include one or more processors and memory that stores 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.
[0212] The computing device may execute a method including a plurality of operations. Based on vertex information of a subset of the edge spatial topology, one or more symbols of a neighborhood configuration of the current edge may be determined. Based on the one or more symbols of the neighborhood configuration, a probability model may be determined. Based on the determined probability model, the vertex information of the current edge may be entropy coded. The edge spatial topology may include a first edge parallel to the current edge. An end point of the first edge may coincide with a start point of the current edge. The edge spatial topology may include a second edge perpendicular to the current edge. An start point of the second edge may coincide with an start point of the current edge. The edge spatial topology may include a third edge perpendicular to the current edge. An end point of the third edge may coincide with an start point of the current edge. The edge spatial topology may include a fourth edge parallel to the current edge and belonging to a first rectangular parallelepiped including the current edge. The edge spatial topology may include a fifth edge perpendicular to the current edge and intersecting with an end point of the current edge. The spatial topology of the edge may include a sixth edge belonging to a second cuboid containing the current edge. The sixth edge may belong to a first plane perpendicular to the current edge. The first plane may include the start point of the current edge. The spatial topology of the edge may include a seventh edge belonging to a third cuboid containing the current edge. The seventh edge may belong to a second plane perpendicular to the current edge. The second plane may include the end point of the current edge. The computing device may include one or more processors and a memory 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, cause the described methods, additional operations, and / or include additional elements.
[0213] The computing device may execute a method including a plurality of operations. One or more symbols of a neighborhood configuration of a current edge may be determined based on vertex information of edges that belong only to the edge spatial topology. Each edge of the edge spatial topology may be available for encoding the current edge, independent of the direction of the current edge. A context / probability model for encoding the vertex information of the current edge may be selected based on the neighborhood configuration. The vertex information of the current edge may be entropy coded based on the context / probability model. One of a plurality of different configurations of the edge spatial topology may be selected to determine one or more symbols of neighborhood information based on the direction of the current edge. The plurality of different configurations may include different rotated and / or mirrored configurations of the edge spatial topology. The determining may further include determining one or more symbols of the neighborhood configuration based on one or more vertex presence flags of edges that belong only to the edge spatial topology. The determining may further include determining one or more symbols of the neighborhood configuration based on one or more vertex positions of edges that belong only to the edge spatial topology. The vertex information of the current edge may include a vertex presence flag of the current edge. The vertex information of the current edge may include a vertex position of the current edge. The selection may further include selecting a context / probability model for encoding the vertex information of the current edge based on a lookup table that maps a neighborhood configuration to a context / probability model. The selection may further include selecting a context / probability model for encoding the vertex information of the current edge based on a lookup table that maps only a subset of symbols of the neighborhood configuration to a context / probability model. The number of symbols in the subset may increase based on the number of encoded edges having neighborhood information that includes the same subset of symbols. The lookup table may be updated to map subsets of symbols of the neighborhood configuration to different context / probability models based on the vertex information of the current edge. The edges that belong only to the spatial topology of edges may include at least one edge that does not intersect with the start point of the current edge. At least one edge may also belong to the same rectangular parallelepiped as the current edge. At least one edge may also be parallel to the current edge.At least one edge may be further perpendicular to the current edge and may intersect with the end point of the current edge. The neighborhood configuration may further include a second set of one or more symbols indicating the direction of the current edge. The neighborhood configuration may further include a third set of one or more symbols determined based on at least one edge that is unavailable for encoding the current edge independent of the direction of the current edge. The current edge may be a rectangular prism that includes a portion of the point cloud. 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.
[0214] The computing device may execute a method including a plurality of operations. One or more symbols of a neighborhood configuration of a current edge may be determined based on vertex information of at least one edge that does not intersect with a start point of the current edge. A context / probability model for encoding the vertex information of the current edge may be selected based on the neighborhood configuration. The vertex information of the current edge may be entropy coded based on the context / probability model. At least one edge may further belong to the same cuboid as the current edge. At least one edge may further be parallel to the current edge. At least one edge may further be perpendicular to the current edge and may intersect with an end point of the current edge. The determining may further include determining one or more symbols of the neighborhood configuration based on one or more vertex presence flags of the at least one edge. The determining may further include determining one or more symbols of the neighborhood configuration based on one or more vertex positions of the at least one edge. The vertex information of the current edge may include a vertex presence flag of the current edge. The vertex information of the current edge may include a vertex position of the current edge. The selecting may further include selecting a context / probability model for encoding the vertex information of the current edge based on a lookup table that maps the neighborhood configuration to the context / probability model. The selecting may further include selecting a context / probability model for encoding the vertex information of the current edge based on a lookup table that maps only a subset of the symbols of the neighborhood configuration to the context / probability model. The number of symbols in the subset may increase based on the number of encoded edges having neighborhood information that includes the same subset of symbols. The lookup table may be updated to map a subset of the symbols of the neighborhood configuration to a different context / probability model based on the vertex information of the current edge. The current edge may be an edge of a rectangular prism that includes a portion of the point cloud. 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.
[0215] 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.
[0216] 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, the program code or code segments (e.g., 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.
[0217] 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, when executed by a processor or other data processing device in a computer, perform particular tasks or implement particular abstract data types. 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. Functionality may be implemented in whole or in part in firmware or hardware equivalents, such as integrated circuits, field programmable gate arrays (FPGAs), etc. Particular 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. A computer-readable medium may 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 procedures, functions, subprograms, programs, routines, subroutines, modules, software packages, classes, 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.
[0218] 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 in a device or system, may include one or more processors, memory, interfaces, and / or the like.
[0219] 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.
[0220] One or more elements of the embodiments 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 (e.g., C, C++, Fortran, Java, Basic, Matlab, etc.) or a modeling / simulation program such as Simulink, Stateflow, GNU Octave, or LabVIEW MathScript. 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++, etc. FPGAs, ASICs, and CPLDs are often programmed using hardware description languages (HDLs) such as Verilog or VHSIC Hardware Description Language (VHDL), which may configure connections between the less functional internal hardware modules of the programmable device. The techniques described above may be used in combination to achieve functionally modular results.
[0221] 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 communication 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, such as 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.
[0222] Although embodiments are described above, the 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 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: determining one or more symbols of a neighborhood configuration of a current edge based on vertex information of a spatial topology of edges, wherein each edge of the spatial topology of edges is available for encoding the current edge, independent of the direction of the current edge; determining a probability model based on the one or more symbols of the neighborhood; and entropy encoding the vertex information of the current edge based on the determined probability model.
2. determining the one or more symbols of the neighborhood configuration; The method of claim 1 , comprising selecting one of a plurality of different configurations of the spatial topology of edges based on the direction of the current edge.
3. The plurality of different configurations are: a rotational configuration of said spatial topology of edges, or 3. The method of claim 2, wherein the method further comprises at least one of: a mirror configuration of the spatial topology of edges;
4. 4. The method of claim 1, wherein determining the one or more symbols of the neighborhood configuration comprises determining the one or more symbols of the neighborhood configuration based on one or more vertex presence flags associated with the spatial topology of edges.
5. 5. The method of claim 1, wherein determining the one or more symbols of the neighborhood configuration comprises determining the one or more symbols of the neighborhood configuration based on one or more vertex positions associated with the spatial topology of edges.
6. The vertex information of the current edge is a vertex presence flag associated with the current edge; or A method according to any one of claims 1 to 5, further comprising at least one of: a vertex position associated with the current edge;
7. The determining of the probabilistic model comprises: the neighborhood configuration, or 7. The method of claim 1, further comprising determining the probability model based on a look-up table that maps at least one of a subset of the one or more symbols of the neighborhood configuration.
8. increasing the quantity of symbols in the subset based on the quantity of encoded edges having neighborhood information that includes the symbols in the subset. The method of claim 7.
9. and updating the lookup table to map the subset to a different probability model based on the vertex information of the current edge. The method according to any one of claims 7 to 8.
10. The spatial topology of edges is an edge that does not intersect with the start point of the current edge; an edge that belongs to the same rectangular parallelepiped as the current edge; an edge parallel to the current edge; and an edge perpendicular to the current edge and intersecting an end point of the current edge.
11. The neighborhood configuration is a second set of one or more symbols indicating the direction of the current edge; and a third set of one or more symbols determined based on at least one edge that is unavailable for encoding the current edge independent of the direction of the current edge.
12. The method according to any one of claims 1 to 11, wherein the current edge belongs to a cuboid that contains at least one point of the point cloud.
13. 1. A computing device comprising: one or more processors; a memory storing instructions that, when executed, cause the computing device to perform a method according to any one of claims 1 to 12.
14. 1. A system comprising: a first computing device configured to perform the method of any one of claims 1 to 12; a second computing device configured to decode the entropy-encoded vertex information of the current edge.
15. A computer readable medium storing instructions that, when executed, cause the method of any one of claims 1 to 12 to be performed.
Citation Information
Patent Citations
Account management method and apparatus, and computer device and storage medium
WO2023077748A1