Geometry-based point cloud compression trisoup syntax signaling

The G-PCC encoder does not signal syntax elements, and uses trisoup signaling technology to represent the point cloud data surface as a triangular mesh, which solves the problem of excessive number of encoding bits in the existing technology and achieves more efficient point cloud data encoding.

CN115299055BActive Publication Date: 2025-10-17QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202180022583.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2021-04-07
Filing Date
2021-04-08
Publication Date
2025-10-17
Estimated Expiration
2041-04-08

AI Technical Summary

Technical Problem

Existing point cloud compression technologies result in an excessive number of coding bits when signaling syntax elements, making it impossible to effectively utilize bandwidth.

Method used

The G-PCC encoder does not signal certain syntax elements, and the decoder determines their values ​​based on other information to reduce the number of coding bits. It uses trisoup signaling technology to represent the surface of point cloud data as a triangular mesh to reduce the number of coding bits.

Benefits of technology

By reducing the number of coding bits, the bandwidth requirement of the transmitted point cloud data is reduced and the coding efficiency is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115299055B_ABST
    Figure CN115299055B_ABST
Patent Text Reader

Abstract

An example device for processing point cloud data includes a memory configured to store point cloud data and one or more processors implemented in circuitry and coupled to the memory. The one or more processors are configured to count a number of edges of a cube of the point cloud data containing vertices. The one or more processors are configured to set a variable based on a total of the counts. The one or more processors are further configured to process the point cloud data based on the variable.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application claims priority to U.S. Application No. 17 / 224,674, filed April 7, 2021, and U.S. Provisional Patent Application 63 / 007,274, filed April 8, 2020, the entire contents of each of which are incorporated herein by reference. U.S. Application No. 17 / 224,674, filed April 7, 2021, claims the benefit of U.S. Provisional Patent Application 63 / 007,274, filed April 8, 2020. TECHNICAL FIELD

[0002] The present disclosure relates to point cloud encoding and decoding. SUMMARY

[0003] Generally, the present disclosure describes techniques for trisoup signaling for geometry-based point cloud compression (G-PCC). Trisoup is a geometry coding option in which a G-PCC encoder can represent a surface of an object captured in a point cloud as a series of triangular meshes. In some examples, the techniques of the present disclosure can also apply to G-PCC and other future standards. For example, a G-PCC encoder can refrain from signaling a syntax element and a G-PCC decoder can determine a value of the syntax element based on other information, rather than signaling a Trisoup syntax element that can be determined by the G-PCC decoder based on other information. In this way, the techniques of the present disclosure can reduce the number of bits used to encode point cloud data in Trisoup mode and reduce the bandwidth of transmitted encoded point cloud data.

[0004] A three-dimensional block or cube has 12 edges (e.g., four edges on a front surface, four edges on a back surface, and four edges between the front surface and the back surface). In Trisoup mode, a geometry can be represented within each cube as a surface that intersects at most once with each edge of the cube. Since a cube has 12 edges, there can be at most 12 such intersection points within a cube. Each such intersection point is referred to as a vertex.

[0005] In one example, the present disclosure describes a method including counting a number of edges of a cube of point cloud data containing vertices, setting a variable based on a total of the counts, and processing the point cloud data based on the variable.

[0006] In another example, the present disclosure describes an apparatus including a memory configured to store point cloud data and one or more processors implemented in circuitry and coupled to the memory, the one or more processors configured to: count a number of edges of a cube of point cloud data containing vertices; set a variable based on a total of the counts; and process the point cloud data based on the variable.

[0007] In yet another example, the disclosure describes a computer-readable storage medium storing instructions that, when executed, cause one or more processors to: count a number of edges of a cube of point cloud data containing vertices; set a variable based on a total number of counts; and process the point cloud data based on the variable.

[0008] In yet another example, the disclosure describes a device comprising means for counting a number of edges of a cube of point cloud data containing vertices; means for setting a variable based on a total number of counts; and means for processing the point cloud data based on the variable.

[0009] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF DRAWINGS

[0010] Figure 1 is a block diagram illustrating an example encoding and decoding system that can perform the techniques of this disclosure.

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

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

[0013] Figure 4 is a conceptual diagram illustrating an example trisoup illustration.

[0014] Figure 5 is a flowchart illustrating an example technique for processing point clouds according to this disclosure. DETAILED DESCRIPTION

[0015] According to some draft standards, such as the draft April 7, 2020, geometry-based point cloud compression (G-PCC) standard, syntax elements can be signaled by a G-PCC encoder to a G-PCC decoder so that the decoder can determine how to decode the encoded data. According to the draft G-PCC standard, a G-PCC encoder can signal a syntax element associated with a trisoup mode, even though the G-PCC decoder can be able to determine the information conveyed by the syntax element from other information available at the G-PCC decoder. Trisoup coding is a geometry coding option in which a G-PCC encoder can represent a surface of an object captured in a point cloud as a series of triangular meshes. As a result, the number of bits used to encode the point cloud data can be higher than the number of bits needed, thus not using bandwidth efficiently.

[0016] According to the techniques of this disclosure, the G-PCC encoder may not signal this syntax element, and the G-PCC decoder may determine the information otherwise conveyed by the syntax element by counting the number of other syntax elements with a specified value. In this way, the number of bits used to encode point cloud data in trisoup mode can be reduced, and the bandwidth of the transmitted encoded point cloud data can similarly be reduced.

[0017] Figure 1 is a block diagram illustrating an example encoding and decoding system 100 that can implement the techniques of this disclosure. The techniques of this disclosure generally relate to decoding (encoding and / or decoding) point cloud data, i.e., to support point cloud compression. Generally, point cloud data includes any data used to process a point cloud. Decoding can be effective in compressing and / or decompressing point cloud data.

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

[0019] exist Figure 1 In the example of , source device 102 includes a data source 104, a memory 106, a G-PCC encoder 200, and an output interface 108. Destination device 116 includes an input interface 122, a G-PCC decoder 300, a memory 120, and a data consumer 118. According to the present disclosure, the G-PCC encoder 200 of source device 102 and the G-PCC decoder 300 of destination device 116 can be configured to apply the technology of the present disclosure involving trisoup signaling. Therefore, source device 102 represents an example of an encoding device, while destination device 116 represents an example of a decoding device. In other examples, source device 102 and destination device 116 may include other components or arrangements. For example, source device 102 may receive data (e.g., point cloud data) from an internal or external source. Similarly, destination device 116 may interact with an external data consumer rather than a data consumer included in the same device.

[0020] like Figure 1 The system 100 shown is merely an example. In general, other digital encoding and / or decoding devices can perform the techniques of the present disclosure associated with trisoup signaling. The source device 102 and the destination device 116 are merely examples of such devices in which the source device 102 generates decoded data for transmission to the destination device 116. The present disclosure relates to a "decoding" device as a device that performs decoding (encoding and / or decoding) of data. Therefore, the G-PCC encoder 200 and the G-PCC decoder 300 represent examples of decoding devices, particularly encoders and decoders, respectively. In some examples, the source device 102 and the destination device 116 can operate in a substantially symmetrical manner such that each of the source device 102 and the destination device 116 includes encoding and decoding components. Therefore, the system 100 can support one-way or two-way transmission between the source device 102 and the destination device 116, for example, for streaming, playback, broadcasting, telephony, navigation, and other applications.

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

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

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

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

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

[0026] Output interface 108 and input interface 122 can represent wireless transmitters / receivers, modems, wired networking components (e.g., Ethernet cards), wireless communication components operating according to any of a variety of IEEE 802.11 standards, or other physical components. In examples where output interface 108 and input interface 122 comprise wireless components, output interface 108 and input interface 122 can be configured to transmit data (e.g., encoded data) according to a cellular communication standard (e.g., 4G, 4G-LTE (Long-Term Evolution), LTE Advanced, 5G, etc.). In some examples where output interface 108 comprises a wireless transmitter, output interface 108 and input interface 122 can be configured to transmit data (e.g., encoded data) according to other wireless standards (e.g., IEEE 802.11 specifications, IEEE 802.15 specifications (e.g., ZigBee standards), Bluetooth standards, etc.). In some examples, source device 102 and / or destination device 116 can include respective system on a chip (SoC) devices. For example, source device 102 can include an SoC device to perform functions attributed to G-PCC encoder 200 and / or output interface 108, and destination device 116 can include an SoC device to perform functions attributed to G-PCC decoder 300 and / or input interface 122. TM TM In some examples, source device 102 can output encoded data to a file server 114 or another intermediate storage device that can store encoded data generated by source device 102. Destination device 116 can access stored data from file server 114 via streaming or download. File server 114 can be any type of server device that is capable of storing encoded data and transmitting that encoded data to destination device 116. File server 114 can represent a web server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network attached storage (NAS) device. Destination device 116 can access encoded data from file server 114 through any standard data connection, including an Internet connection. This can include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., digital subscriber line (DSL), a cable modem, etc.), or a combination of both that is suitable for accessing encoded data stored on file server 114. File server 114 and input interface 122 can be configured to operate according to a streaming protocol, a download transmission protocol, or a combination thereof.

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

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

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

[0030] G-PCC encoder 200 and G-PCC decoder 300 can operate according to a coding standard, such as the Versatile Video Coding (V-PCC) standard or the Geometric Point Cloud Compression (G-PCC) standard. This disclosure can generally relate to coding (e.g., encoding and decoding) of pictures to include processes of encoding or decoding data. An encoded bitstream generally includes a series of values for syntax elements that represent coding decisions (e.g., coding modes).

[0031] The disclosure can generally relate to "signaling" certain information, such as syntax elements. The term "signaling" can generally relate to communication of values of syntax elements and / or other data used for decoding of encoded data. That is, the G-PCC encoder 200 can signal values of syntax elements in a bitstream. Generally, signaling involves generating values in a bitstream. As mentioned above, the source device 102 can transmit the bitstream to the destination device 116 in substantially real-time or non-real-time, e.g., can occur when storing syntax elements to the storage device 112 for later retrieval by the destination device 116.

[0032] ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) is investigating the potential need for standardization of point cloud coding techniques with compression capabilities that significantly exceed current methods, and will target the creation of a standard. This group is working on this exploration activity in a collaborative effort, called the Three-Dimensional Graphics Team (3DG), to evaluate compression technology designs proposed by their experts in this field.

[0033] Point cloud compression activities are categorized in two different approaches. The first approach is "Video Point Cloud Compression" (V-PCC), which segments 3D objects and projects the segments in multiple 2D planes (which are represented as "patches" in 2D frames), which are further coded by traditional 2D video codecs such as High Efficiency Video Coding (HEVC) (ITU-T H.265) codec. The second approach is "Geometry-based Point Cloud Compression" (G-PCC), which directly compresses 3D geometry, i.e., positions of a set of points in 3D space, and associated attribute values (for each point associated with the 3D geometry). G-PCC addresses compression of point clouds in Category 1 (static point clouds) and Category 3 (dynamically acquired point clouds). A recent draft of the G-PCC standard is available in G-PCC DIS, ISO / IEC JTC1 / SC29 / WG11 w19088, Brussels, Belgium, January 2020, and a description of the codec is available in G-PCC Codec Description v6, ISO / IEC JTC1 / SC29 / WG11 w19091, Brussels, Belgium, January 2020.

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

[0035] The 3D space occupied by the point cloud data can be enclosed by a virtual bounding box. The positions of the points in the bounding box can be represented by a certain precision; thus, the positions of one or more points can be quantized based on the precision. At the smallest level, the bounding box is divided into voxels, which are the smallest unit of space represented by a unit cube. A voxel in the bounding box can be associated with zero, one, or more than one point. The bounding box can be divided into multiple cubic / tessellated regions, which can be referred to as tiles. Each tile can be coded into one or more slices. The partitioning of the bounding box into slices and tiles can be based on the number of points in each partition, or based on other considerations (e.g., certain regions can be coded into tiles). The slice regions can be further partitioned by using similar partitioning decisions as in video codecs.

[0036] Figure 2 An overview of the G-PCC encoder 200 is provided. Figure 3 An overview of the G-PCC decoder 300 is provided. The modules shown are logical and do not necessarily correspond one-to-one with the implemented code in the reference implementation of the G-PCC codec, i.e., the TMC13 test model software studied by ISO / IEC MPEG (JTC1 / SC 29 / WG 11).

[0037] In both the G-PCC encoder 200 and the G-PCC decoder 300, the point cloud positions are coded first. The attribute coding depends on the decoded geometry. In Figure 2 and Figure 3 In the gray occlusion module is an option typically used for Category 1 data. The diagonal crosshatch module is an option typically used for Category 3 data. All other modules are common between Category 1 and Category 3.

[0038] For category 3 data, the compressed geometry is typically represented as an octree from the root all the way down to the leaf level of individual voxels. For category 1 data, the compressed geometry is typically represented by a pruned octree (i.e., an octree from the root down to the leaf level of blocks larger than voxels) plus a model approximating the surface within each leaf of the pruned octree. In this way, both category 1 and category 3 data share the octree coding mechanism, while category 1 data can additionally approximate the voxels within each leaf with a surface model. The surface model used is a triangle mesh containing 1-10 triangles per block, resulting in a triangle soup. Thus, the category 1 geometry codec is referred to as the trisoup geometry codec, while the category 3 geometry codec is referred to as the octree geometry codec.

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

[0040] Once the geometry is coded, the attributes corresponding to the geometry points are coded. When there are multiple attribute points corresponding to one reconstructed / decoded geometry point, the attribute values representing the reconstructed point can be derived.

[0041] There are three attribute coding methods in G-PCC: region adaptive hierarchical transform (RAHT) coding, interpolation-based hierarchical nearest-neighbor prediction (predictive transform), and interpolation-based hierarchical nearest-neighbor prediction with an update / promotion step (promoted transform). RAHT and promoted are typically used for category 1 data, while predictive is typically used for category 3 data. However, either method can be used for any data, and just like the geometry codecs in G-PCC, the attribute coding method used to code the point cloud is specified in the bitstream.

[0042] The coding of attributes can be done in levels of detail (LOD), where for each level of detail, a finer representation of the point cloud attributes can be obtained. Each level of detail can be specified based on a distance metric to neighboring nodes or based on a sampling distance.

[0043] At the G-PCC encoder 200, the residual obtained as an output of the coding method for attributes is quantized. The quantized residual can be coded using context adaptive arithmetic coding.

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

[0045] As shown in an example of Figure 2 The G-PCC encoder 200 can receive a set of positions and a set of attributes. The positions can include coordinates of points in a point cloud. The attributes can include information about the points in the point cloud, such as color information associated with the points in the point cloud.

[0046] The coordinate transformation unit 202 can apply a transformation to the coordinates of the points to transform the coordinates from an original domain to a transformed domain. The disclosure can refer to the transformed coordinates as transformed coordinates. The color transformation unit 204 can apply a transformation to transform the color information of the attributes to a different domain. For example, the color transformation unit 204 can transform the color information from an RGB color space to a YCbCr color space.

[0047] Further, in an example of Figure 2 The voxelization unit 206 can voxelize the transformed coordinates. The voxelization of the transformed coordinates can include quantization and removal of some points of the point cloud. In other words, multiple points of the point cloud can be contained within a single "voxel," which can thereafter be treated in some respects as a single point. Further, the octree analysis unit 210 can generate an octree based on the voxelized transformed coordinates. Additionally, in an example of Figure 2 The surface approximation analysis unit 212 can analyze the points to potentially determine a surface representation of the set of points.

[0048] In some examples, the surface approximation analysis unit 212 can count a number of edges of a cube of the point cloud data containing the vertices and set a variable based on a total number of the counts. In some examples, the surface approximation analysis unit 212 can also determine a difference value based at least in part on the variable. The difference value can also be referred to as a delta. The arithmetic encoding unit 214 can entropy encode syntax elements representing information of the surface and / or the octree determined by the surface approximation analysis unit 212. The G-PCC encoder 200 can output the syntax elements in a geometry bitstream.

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

[0050] Furthermore, the RAHT unit 218 may apply RAHT decoding to the attributes of the reconstructed points. Alternatively or additionally, the LOD generation unit 220 and the lifting unit 222 may apply LOD processing and lifting, respectively, to the attributes of the reconstructed points. The RAHT unit 218 and the lifting unit 222 may generate coefficients based on the attributes. The coefficient quantization unit 224 may quantize the coefficients generated by the RAHT unit 218 or the lifting unit 222. The arithmetic coding unit 226 may apply arithmetic decoding to the syntax elements representing the quantized coefficients. The G-PCC encoder 200 may output these syntax elements in the attribute bitstream.

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

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

[0053] The octree synthesis unit 306 may synthesize an octree based on syntax elements parsed from the geometry bitstream. In the case where surface approximation is used in the geometry bitstream, the surface approximation synthesis unit 310 may determine a surface model based on the syntax elements parsed from the geometry bitstream and based on the octree. In some examples, the surface approximation synthesis unit 310 may count the number of edges of a cube containing vertex point cloud data and set a variable based on the total number of counts. In some examples, the surface approximation synthesis unit 310 may determine a difference or increment based on the variable and syntax elements received in the bitstream from the G-PCC encoder 200.

[0054] Additionally, the geometry reconstruction unit 312 can perform reconstruction to determine coordinates of points in the point cloud. The inverse transform coordinate unit 320 can apply an inverse transform to the reconstructed coordinates to convert the reconstructed coordinates (positions) of points in the point cloud from the transformed domain back into the original domain.

[0055] Additionally, in examples where the attribute values are encoded using a RAHT-based technique, the RAHT unit 314 can perform RAHT decoding to determine the color values of points of the point cloud based on the inverse quantized attribute values. Figure 3

[0056] Depending on how the attribute values are encoded, the RAHT unit 314 can perform RAHT decoding to determine the color values of points of the point cloud based on the inverse quantized attribute values. Alternatively, the LOD generation unit 316 and the inverse lifting unit 318 can use a technique based on level of detail to determine the color values of points of the point cloud.

[0057] Additionally, in examples where the attribute values are encoded using a RAHT-based technique, the RAHT unit 314 can perform RAHT decoding to determine the color values of points of the point cloud based on the inverse quantized attribute values. Figure 3

[0058] The various units of G-PCC encoder 200 and G-PCC decoder 300 are shown to help understand the operations performed by G-PCC encoder 200 and G-PCC decoder 300. These units can be implemented as fixed function circuitry, programmable circuitry, or a combination thereof. Fixed function circuitry refers to circuitry that provides specific functionality, and is pre-set in the operations that can be performed. Programmable circuitry refers to circuitry that can be programmed to perform various tasks, and provides flexible functionality in the operations that can be performed. For instance, programmable circuitry can execute software or firmware that cause the programmable circuitry to operate in ways defined by instructions of the software or firmware. Fixed function circuitry can execute software instructions (e.g., to receive parameters or output parameters), but the types of operations that the fixed function circuitry executes are generally immutable. In some examples, one or more of these units can be different circuit blocks (fixed function or programmable), and in some examples, one or more of these units can be integrated circuitry. Figure 2 Figure 3

[0059] ​​​​Trisoup decoding is now discussed in more detail. Trisoup decoding is a geometry coding option in which the G-PCC encoder 200 can represent the surface of an object captured in a point cloud as a series of triangular meshes. Trisoup decoding can typically be used for dense surface point clouds. A decoder (e.g., the G-PCC decoder 300) can reconstruct a point cloud from a mesh surface with a specified voxel granularity.

[0060] If trisoup geometry coding is used, a parameter trisoup_node_size can be used to define the size of a triangular node in voxels. Octree encoding, for example performed by the G-PCC encoder 200, and octree decoding, for example performed by the G-PCC decoder 300, stop at leaf level 1 in this case, the leaf nodes of the octree represent a cube of width W = 2^(max_node_size_log2,-1), and the octree is considered to be pruned. In this case, no inferred direct coding mode is allowed. The inferred direct coding mode is a coding mode that facilitates the coding of positions, directly replacing further octree recursive splitting.

[0061] If the parameter trisoup_node_size > 0, the cube is 2x2x2 or larger, and it can be desirable to represent the set of voxels inside the cube by some model. The geometry is represented inside each cube as a surface that intersects at most once with each edge of the cube. Since a cube has 12 edges, there can be at most 12 such intersection points inside a cube. Each such intersection point is referred to as a vertex. In some examples, the G-PCC encoder 200 or the G-PCC decoder 300 can detect a vertex along an edge only if there is at least one occupied voxel adjacent to the edge in all cubes that share the edge. The position of a detected vertex along an edge is the average position of all such voxels adjacent to the edge in all cubes that share the edge.

[0062] Vertices (nominally the intersection of a surface with the edges of a cube) are shared across adjacent cubes, not only guaranteeing continuity across cubes of a reconstructed surface, but also reducing the number of bits needed to code the set of vertices. The set of vertices can be coded, e.g., in two steps, by the G-PCC encoder 200 or the G-PCC decoder 300. For example, in a first step, the G-PCC encoder 200 can be configured to compute the set of all unique edges (or segments) of the occupied cubes. The G-PCC encoder 200 can be configured to determine which segments contain vertices and which segments do not contain vertices using a bit vector (or segment indicator). In a second step, for each segment that contains a vertex, the G-PCC encoder 200 can be configured to apply a uniform scalar quantizer to the position of the vertex along the segment to obtain a small number of levels. This number is typically equal to the cube size if the desired geometry spatial resolution is close to the voxel resolution, but this number can be any number of levels. The arithmetic encoding unit 214 can entropy encode the segment indicators and the vertex positions. Thus, the geometry bitstream becomes a composite bitstream that includes the octree, the segment indicators, and the vertex position bitstreams. The geometry arithmetic decoding unit 302 can decode the composite bitstream.

[0063] Figure 4 is a conceptual diagram showing an example trisoup illustration. In Figure 4 In the example of, a cube 400 is depicted. A regular grid with distances between lines d is also depicted. Triangles 402 are circled at the intersection with the grid lines. These circled points represent points that will be part of the reconstructed point cloud.

[0064] The trisoup syntax and semantics within the G-PCC draft standard are shown below:

[0065]

[0066] trisoup_sampling_value_minus1 plus 1 specifies the step size of point sampling on the triangle surface in the trisoup decoding process specified in 8.2.3.3.

[0067] num_unique_segments_minus1 plus 1 specifies the number of segment indicators.

[0068] segment_indicator[i] indicates for a unique edge whether the edge intersects with the surface and thus contains a vertex (1) or does not contain a vertex (0).

[0069] num_vertices_minus1 plus 1 specifies the number of vertices.

[0070] vertex_position[i] indicates the position of a vertex along the edge. The value of vertex_position[i] should be in the range of 0 to (1 « log2_trisoup_node_size) - 1, inclusive.

[0071] According to the G-PCC draft syntax, a syntax element is signaled that indicates both the number of unique edges or segments (e.g., num_unique_segments_minus1) and the number of vertices (e.g., num_vertices_minus1). For example, the G-PCC encoder 200 can signal both num_unique_segments_minus1 and num_vertices_minus1. However, for each unique edge, the G-PCC encoder 200 can signal whether the edge contains a vertex (e.g., an intersection of a trisoup geometry and an edge) or does not contain a vertex (e.g., there is no such intersection) like the segment_indicator. A segment_indicator with a value of 1 indicates that the edge contains a vertex, and a segment_indicator with a value of 0 indicates that the edge does not contain a vertex. Thus, the G-PCC decoder 300 can determine num_vertices_minus1 from the segment indicator (e.g., segment_indicator) information. Thus, the signaling for trisoup mode can be improved to remove syntax elements that provide information that is easily determined by the G-PCC decoder 300. This can reduce the signaling overhead.

[0072] Additionally, num_unique_segments_minus1 is coded with an exponential Golomb code with order 0 (e.g., EG(0)). However, a typical point cloud can have approximately 105- 106 unique edges; thus, EG(0) coding can not be optimal for coding such large numbers. Also, the number of unique edges increases as the trisoup node size decreases and the number of cubes increases.

[0073] The signaling of num_vertices_minus1 is now discussed. In some examples, according to the techniques of this disclosure, the G-PCC decoder 300 can count the number of edges for which segment_indicator[] is 1.

[0074]

[0075] The G-PCC decoder 300 can then set a variable count_minusl to (count - 1). In one example, count_minusl is used as the value of num_vertices_minusl, i.e., num_vertices_minusl = count_minusl. Thus, num_vertices_minusl is not signaled by the G-PCC encoder 200, but instead is derived by the G-PCC decoder 300 based on the value of count_minusl. For example, the G-PCC decoder 300 can determine the value of num_vertices_minusl from count_minusl. The following shows the revision of the G-PCC standard draft that reflects this technique. The beginning of the change is marked as <delete>The end of the deletion is marked as< / delete>

[0076]

[0077]

[0078] In another example, the value of the variable count_minusl can be used as a predicted value for the value of the variable num_vertices_minusl. The variable count_minusl can also be used to determine a difference or delta value, e.g., num_vertices_delta = num_vertices_minusl - count_minusl. The G-PCC encoder 200 can signal num_vertices_delta instead of signaling the variable num_vertices_minusl. num_vertices_delta can be coded with EG(k) (k can be, for example, pre-determined or signaled by the G-PCC encoder 200) or truncated unary binarization. The following shows the revision of the G-PCC standard draft that reflects this example. The beginning of the change is marked as <change>and the end of the change is marked as< / change> .

[0079]

[0080] Signaling of num_unique_segments minus 1 is now discussed. In some examples, instead of EG(0) binarization, EG(k) binarization can be used for coding of num_unique_segments_minus1. EG(k) is the k-th order exponential Golomb code, and EG(0) is the 0-th order exponential Golomb code, for example. When log2_trisoup_node_size (= log2(trisoup_node_size)) is reduced by 1, the number of unique edges is roughly scaled by a factor of 4. Therefore, the value of k can be incremented by 2 to balance the scaling factor of 4. Thus, k is defined as

[0081] k = p - (log2_trisoup_node_size « 1)

[0082] The value of p = 22 can provide good performance on different sequence sets. However, different values of p can be used, and can be predetermined at the G-PCC encoder 200 and G-PCC decoder 300, inferred by the G-PCC decoder 300, or signaled by the G-PCC encoder 200. Note that the determination of k does not require any additional signaling, since it is computed from p and log2_trisoup_node_size. If p is predetermined or inferred, then k or p does not need to be signaled.

[0083] Figure 5 is a flowchart illustrating an example technique for processing point cloud data according to this disclosure. The G-PCC decoder 300 can count a number of edges of cubes containing vertices of point cloud data (500). For example, the G-PCC decoder 300 can count the number of edges for which a value of a corresponding syntax element indicates that the corresponding edge includes a vertex. For example, the G-PCC decoder 300 can count the number of edges for which a value of a corresponding segment_indicator[] is equal to 1. For example, for a given edge, a segment_indicator[] having a value equal to 1 can indicate that the given edge includes a vertex.

[0084] The G-PCC decoder 300 can set a variable based on the total count (502). For example, the G-PCC decoder 300 can set a variable such as count_minus1 equal to the total count minus 1. The G-PCC decoder 300 can process the point cloud data based on the variable (504). For example, the G-PCC decoder 300 can process the point cloud using count_minus1.

[0085] In some examples, the G-PCC decoder can determine the difference value based on the variable and the syntax element, and process the point cloud based on the difference value. In some examples, a value of the syntax element indicates a number of vertices in the cube minus 1, and the difference value is equal to the value of the syntax element minus the total number of counts minus 1. For example, the syntax element can be num_vertices_minusl, and the difference value can be equal to num_vertices_minusl minus the total number of counts minus 1. In some examples, the G-PCC encoder 200 or the G-PCC decoder 300 can code the difference value with an exponential Golomb code. In some examples, the G-PCC decoder 300 can include a display configured to display an image based on the point cloud data.

[0086] By the G-PCC encoder 200 not signaling a syntax element, such as num_vertices_minusl, and the G-PCC decoder determining information otherwise conveyed by the syntax element, the number of bits used to encode the point cloud data in trisoup mode can be reduced, and the bandwidth of the transmitted encoded point cloud data can similarly be reduced. While the techniques of this disclosure can not affect the quality of geometry reconstruction (and the quality of attribute reconstruction) in the G-PCC codec design draft, the techniques of this disclosure can reduce the number of bits used to code the content.

[0087] Examples in various aspects of the disclosure can be used alone or in any combination.

[0088] The disclosure includes the following non-limiting examples.

[0089] Clause 1A. A method of coding point cloud data, the method comprising: counting a number of edges or segments containing vertices; setting a variable to a total number of counts minus 1; and coding the point cloud data based on the variable.

[0090] Clause 2A. The method of clause 1A, wherein counting the number of edges or segments containing vertices comprises counting a number of edges or segments for which segment_indicator[] is 1.

[0091] Clause 3A. The method of clause 1A or clause 2A, wherein the variable is count_minusl.

[0092] Clause 4A. The method of any combination of clauses 1A-3A, further comprising: determining an increment based on the variable and a syntax element; and coding the point cloud data based on the increment.

[0093] Clause 5A. The method of clause 4A, wherein the syntax element is num_vertices_minus1 and the increment is equal to num_vertices_minus1 minus the total number of counts minus one.

[0094] Clause 6A. The method of Clause 5A, further comprising decoding the increment using an Exponential Golomb code having an order k (EG(k)).

[0095] Clause 7A. The method of clause 6A, wherein k is signaled in the bitstream.

[0096] Clause 8A. The method of Clause 6A, wherein k is inferred.

[0097] Clause 9A. The method of Clause 6A, wherein k is predetermined.

[0098] Clause 10A. The method of any combination of clauses 4A-5A, further comprising decoding the delta using truncated unary binarization.

[0099] Clause 11A. The method as recited in any combination of clauses 4A-10A, wherein the increment is signaled in the bitstream.

[0100] Clause 12A. A method of coding point cloud data, the method comprising: determining a syntax element; coding the syntax element using EG(k); and coding the point cloud data based on the syntax element, where k is a non-zero number.

[0101] Clause 13A. The method of clause 12A, wherein the syntax element is num_unique_segments_minus1 and k=p−(log2_trisoup_node_size<<1), where p is a number.

[0102] Clause 14A. The method of Clause 13A, wherein p is 22.

[0103] Clause 15A. The method of Clause 13A or 14A, wherein p is predetermined.

[0104] Clause 16A. The method of any combination of clauses 13A to 15A, wherein p is signaled in the bitstream.

[0105] Clause 17A. The method of any combination of Clause 15A, wherein p is inferred.

[0106] Clause 18A. The method of any combination of Clauses 1A-17A, further comprising generating a point cloud.

[0107] Clause 19A. The method of any combination of Clauses 1A-17A, wherein the decoding comprises decoding.

[0108] Clause 20A. The method of any combination of Clauses 1A-18A, wherein the decoding comprises encoding.

[0109] Clause 21A. A device for processing a point cloud, the device comprising one or more means for performing the method of any of Clauses 1A-20A.

[0110] Clause 22A. The device of Clause 21A, wherein the one or more means comprise one or more processors implemented in circuitry.

[0111] Clause 23A. The device of any of Clauses 21A or 22A, further comprising a memory for storing data representative of the point cloud.

[0112] Clause 24A. The device of any of Clauses 21A-23A, wherein the device comprises a decoder.

[0113] Clause 25A. The device of any of Clauses 21A-24A, wherein the device comprises an encoder.

[0114] Clause 26A. The device of any of Clauses 21A-25A, further comprising a device for generating the point cloud.

[0115] Clause 27A. The device of any of Clauses 21A-26A, further comprising a display for presenting an image based on the point cloud.

[0116] Clause 28A. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to perform the method of any of Clauses 1A-20A.

[0117] Clause 1B. A method of processing point cloud data, the method comprising:

[0118] counting a number of edges of a cube of point cloud data containing vertices, setting a variable based on a total number of counts, and processing the point cloud data based on the variable.

[0119] Clause 2B. The method of Clause 1B, wherein the variable comprises the total number of counts minus 1.

[0120] Clause 3B. The method of Clause 1B or Clause 2B, wherein counting the number of edges containing vertices comprises counting a number of edges comprising a vertex based on values of respective syntax elements indicating the number of edges comprising the vertex.

[0121] Clause 4B. The method of clause 3B, wherein counting the number of edges that include a vertex based on the value of the respective syntax element comprises counting the number of edges for which the value of the respective segment indicator[] is equal to 1.

[0122] Clause 5B. The method of any combination of clauses 1B-4B, wherein the variable is count_minus 1.

[0123] Clause 6B. The method of any combination of clauses 1B-5B, further comprising determining a difference value based on the variable and the syntax element; and processing the point cloud data based on the difference value.

[0124] Clause 7B. The method of clause 6B, wherein the value of the syntax element indicates the number of vertices in the cube minus 1, and the difference value is equal to the value of the syntax element minus the total number of counts minus 1.

[0125] Clause 8B. The method of clause 6B or clause 7B, further comprising coding the difference value with an exponential Golomb code.

[0126] Clause 9B. A device for processing point cloud data, the device comprising:

[0127] a memory configured to store the point cloud data; and one or more processors implemented in circuitry and coupled to the memory, the one or more processors configured to: count a number of edges of a cube of point cloud data containing vertices; set a variable based on a total number of counts; and process the point cloud data based on the variable.

[0128] Clause 10B. The device of clause 9B, wherein the variable comprises the total number of counts minus 1.

[0129] Clause 11B. The device of clause 9B or clause 10B, wherein as part of counting the number of edges, the one or more processors are configured to count the number of edges that include a vertex based on the value of a respective syntax element.

[0130] Clause 12B. The device of clause 11B, wherein as part of counting the number of edges, the one or more processors are configured to count the number of edges for which the value of the respective segment indicator[] is equal to 1.

[0131] Clause 13B. The device of any combination of clauses 9B-12B, wherein the variable is count_minus 1.

[0132] Clause 14B. The device of any combination of Clauses 9B-13B, wherein the one or more processors are further configured to determine a difference value based on the variable and the syntax element; and process the point cloud data based on the difference value.

[0133] Clause 15B. The device of Clause 14B, wherein the value of the syntax element indicates a number of vertices in the cube minus 1, and the difference value is equal to the value of the syntax element minus the total number of counts minus 1.

[0134] Clause 16B. The device of Clause 14B or Clause 15B, further comprising coding the difference value with an exponential Golomb code.

[0135] Clause 17B. The device of any combination of Clauses 9B-16B, further comprising a display configured to display an image based on the point cloud data.

[0136] Clause 18B. A non-transitory computer-readable medium storing instructions that, when executed, cause one or more processors to: count a number of edges of a cube of point cloud data containing vertices; set a variable based on a total number of counts; and process the point cloud data based on the variable.

[0137] Clause 19B. The non-transitory computer-readable medium of Clause 18B, wherein the variable comprises the total number of counts minus 1.

[0138] Clause 20B. A device for processing point cloud data, the device comprising:

[0139] means for counting a number of edges of a cube of point cloud data containing vertices; means for setting a variable based on a total number of counts; and means for processing the point cloud data based on the variable.

[0140] It is recognized that depending on the example, certain acts or events of any of the techniques described herein can be performed in a different sequence, can be added, modified or omitted (e.g., not all described acts or events are necessary for the practice of the techniques), and / or can be performed concurrently in rather than sequentially. Furthermore, certain acts or events can be performed at least partially concurrently with, in parallel to, or in some cases, prior to, or subsequent to, each other. In some examples, portions of acts or events can be performed by multiple components or articles of manufacture.

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

[0142] By way of example, and not limitation, such computer-readable storage media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other storage medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any

[0143] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term "processor" as used herein can refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein can be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques could be fully implemented in one or more circuits or logic elements.

[0144] The techniques of this disclosure can be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or IC package (e.g., a chip set), among others. Various components, modules, or units are described herein as being stored in or on memory, which can include one or more types of memory such as volatile memory (e.g., dynamic random access memory, DRAM, or static RAM, SRAM) or nonvolatile memory (e.g., read only memory, ROM, electrically programmable read only memory, EPROM, electrically erasable programmable read only memory, EEPROM, or flash memory). In some examples, the memory can include one or more types of removable media and / or built-in memory controlled by a mobile processor or a desktop processor.

[0145] Various examples have been described. These and other examples are within the scope of the following claims.

Claims

1. A method for encoding point cloud data, the method comprising: counting a number of edges of a cube of the point cloud data that contain corresponding vertices, each corresponding vertex being a corresponding intersection between an edge of the cube and a surface representing a geometric shape within the cube; Set a variable equal to the total of said count minus 1; determining a difference between the variable and a value of a first syntax element indicating the number of vertices in the cube minus one; as well as The point cloud data is encoded, wherein encoding the point cloud data comprises signaling the difference in a bitstream.

2. The method according to claim 1, wherein Counting the number of edges that include the vertex includes counting the number of edges where the value of the corresponding syntax element indicates that the corresponding edge includes the vertex.

3. The method according to claim 2, wherein: Counting the number of edges wherein the value of the corresponding syntax element indicates that the corresponding edge includes a vertex comprises counting the number of edges for which the value of the corresponding segment_indicator[ ] is equal to 1.

4. The method according to claim 1, wherein The variable is count_minus 1.

5. The method according to claim 1, wherein Encoding the point cloud data includes encoding the difference using an Exponential Golomb code.

6. A method for decoding point cloud data, the method comprising: counting a number of edges of a cube of the point cloud data that contain corresponding vertices, each corresponding vertex being a corresponding intersection between an edge of the cube and a surface representing a geometric shape within the cube; Set a variable equal to the total of said count minus 1; determining a difference value signaled in the bitstream; determining a value of a first syntax element indicating the number of vertices in the cube minus 1, the value of the first syntax element being equal to the sum of the difference value and the variable; and The point cloud data is decoded based on the value of the first syntax element.

7. The method according to claim 6, wherein: Determining the difference value signaled in the bitstream includes decoding the difference value using an Exponential Golomb code.

8. The method of claim 6, wherein: Counting the number of edges that include the vertex includes counting the number of edges where the value of the corresponding syntax element indicates that the corresponding edge includes the vertex.

9. A device for encoding point cloud data, the device comprising: a memory configured to store the point cloud data; as well as One or more processors implemented in circuitry and coupled to the memory, the one or more processors configured to: counting a number of edges of a cube of the point cloud data that contain corresponding vertices, each corresponding vertex being a corresponding intersection between an edge of the cube and a surface representing a geometric shape within the cube; Set a variable equal to the total of said count minus 1; determining a difference between the variable and a value of a first syntax element indicating the number of vertices in the cube minus one; as well as The point cloud data is encoded, wherein encoding the point cloud data comprises signaling the difference in a bitstream.

10. The apparatus of claim 9, wherein: As part of counting the number of edges, the one or more processors are configured to count a number of edges where a value of a corresponding syntax element indicates that the corresponding edge includes a vertex.

11. The apparatus of claim 10, wherein: As part of counting the number of edges, the one or more processors are configured to count a number of edges where the value of the corresponding segment_indicator[ ] is equal to 1.

12. The apparatus of claim 9, wherein: The variable is count_minus 1.

13. The apparatus of claim 9, wherein: Encoding the point cloud data includes encoding the difference using an Exponential Golomb code.

14. A device for decoding point cloud data, the device comprising: a memory configured to store the point cloud data; as well as One or more processors implemented in circuitry and coupled to the memory, the one or more processors configured to: counting a number of edges of a cube of the point cloud data that contain corresponding vertices, each corresponding vertex being a corresponding intersection between an edge of the cube and a surface representing a geometric shape within the cube; Set a variable equal to the total of said count minus 1; determining a difference value signaled in the bitstream; determining a value of a first syntax element indicating the number of vertices in the cube minus 1, the value of the first syntax element being equal to the sum of the difference value and the variable; and The point cloud data is decoded based on the value of the first syntax element.

15. The apparatus of claim 14, wherein: As part of counting the number of edges, the one or more processors are configured to count a number of edges where the value of the corresponding syntax element indicates that the corresponding edge includes a vertex.

16. The apparatus of claim 14, wherein: To determine the difference value signaled in the bitstream, the one or more processors are configured to decode the difference value using an Exponential Golomb code.

17. The apparatus of claim 14, further comprising: A display is configured to display an image based on the point cloud data.

18. A non-transitory computer-readable medium storing instructions that, when executed, cause one or more processors to: counting a number of edges of a cube of point cloud data containing corresponding vertices, each corresponding vertex being a corresponding intersection point between an edge of the cube and a surface representing a geometric shape within the cube; Set a variable equal to the total of said count minus 1; determining a difference between the variable and a value of a first syntax element indicating the number of vertices in the cube minus one; as well as The point cloud data is encoded, wherein encoding the point cloud data comprises signaling the difference in a bitstream.

19. A non-transitory computer-readable medium storing instructions that, when executed, cause one or more processors to: counting a number of edges of a cube of point cloud data containing corresponding vertices, each corresponding vertex being a corresponding intersection point between an edge of the cube and a surface representing a geometric shape within the cube; Set a variable equal to the total of said count minus 1; determining a difference value signaled in the bitstream; determining a value of a first syntax element indicating the number of vertices in the cube minus 1, the value of the first syntax element being equal to the sum of the difference value and the variable; and The point cloud data is decoded based on the value of the first syntax element.

20. A device for encoding point cloud data, the device comprising: means for counting the number of edges of a cube of the point cloud data containing corresponding vertices, each corresponding vertex being a corresponding intersection point between an edge of the cube and a surface representing a geometric shape within the cube; means for setting a variable equal to the total of said count minus one; means for determining a difference between the variable and a value of a first syntax element indicating the number of vertices in the cube minus one; as well as Means for encoding the point cloud data, wherein encoding the point cloud data comprises signaling the difference in a bitstream.

21. A device for decoding point cloud data, the device comprising: means for counting the number of edges of a cube of the point cloud data containing corresponding vertices, each corresponding vertex being a corresponding intersection point between an edge of the cube and a surface representing a geometric shape within the cube; means for setting a variable equal to the total of said count minus one; means for determining a difference value signaled in a bitstream; means for determining a value of a first syntax element indicating the number of vertices in the cube minus one, the value of the first syntax element being equal to the sum of the difference value and the variable; as well as Means for decoding the point cloud data based on a value of the first syntax element.