Coding method, point cloud coder, code stream and storage medium
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
- Filing Date
- 2023-12-29
- Publication Date
- 2026-07-31
AI Technical Summary
In the existing point cloud encoding and decoding technology, the design of the repetitive point codec scheme is unreasonable, resulting in insolable encoding efficiency.
Adjust the probability model of the identification information related to the repetitive points during point cloud encoding and decoding to make it more in line with the actual situation. The repetitive points of nodes using the direct encoding mode and multi-forktree leaf nodes are respectively processed through different probability models.
It improves the encoding and decoding efficiency of point cloud, reduces the bit output during encoding and decoding, and improves the utilization rate of encoding code rate.
Smart Images

Figure CN122498149A_ABST
Abstract
Description
Coding and decoding methods, point cloud codecs, code streams, and storage media Technical Field
[0001] The present application relates to the field of video coding and decoding technology, and in particular to a coding and decoding method, a point cloud codec, a code stream, and a storage medium. Background Art
[0002] In the geometry-based point cloud compression (G-PCC) codec framework, the geometric and attribute information of a point cloud are encoded and decoded separately. During the geometry encoding process, the encoding and decoding scheme for duplicate points is not designed properly, reducing coding efficiency.
[0003] Summary of the Invention
[0004] This application provides a coding and decoding method, a point cloud codec, a code stream, and a storage medium. The following introduces various aspects of this application.
[0005] In a first aspect, a decoding method is provided, which is applied to a point cloud decoder, comprising: decoding first identification information according to a first probability model, the first identification information being used to indicate whether a current node contains duplicate points; if the first identification information indicates that the current node contains duplicate points, determining the number of duplicate points contained in the current node; wherein the first probability model satisfies at least one of the following: an initial value of the first probability model is not equal to a first value, the first value corresponding to: the probabilities of a maximum probability symbol (MPS) and a minimum probability symbol (LPS) are equal; the first probability model is different from a second probability model, the second probability model being a probability model corresponding to the second identification information; wherein the first identification information is used to indicate whether a node using a direct coding mode contains duplicate points, and the second identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points; or, the first identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points, and the second identification information is used to indicate whether a node using a direct coding mode contains duplicate points.
[0006] According to a second aspect, a coding method is provided, which is applied to a point cloud encoder, comprising: encoding first identification information according to a first probability model, the first identification information being used to indicate whether the current node contains duplicate points; if the first identification information indicates that the current node contains duplicate points, encoding the number of duplicate points contained in the current node; wherein, the first probability model satisfies at least one of the following: an initial value of the first probability model is not equal to a first value, and the first value corresponds to: the probabilities of MPS and LPS are equal; the first probability model is different from the second probability model, and the second probability model is a probability model corresponding to the second identification information; wherein, the first identification information is used to indicate whether a node using a direct coding mode contains duplicate points, and the second identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points; or, the first identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points, and the second identification information is used to indicate whether a node using a direct coding mode contains duplicate points.
[0007] According to a third aspect, a point cloud decoder is provided, comprising: a decoding unit configured to decode first identification information according to a first probability model, the first identification information being used to indicate whether a current node contains duplicate points; a determination unit configured to determine the number of duplicate points contained in the current node if the first identification information indicates that the current node contains duplicate points; wherein the first probability model satisfies at least one of the following: an initial value of the first probability model is not equal to a first value, and the first value corresponds to: the probabilities of MPS and LPS are equal; the first probability model is different from the second probability model, and the second probability model is a probability model corresponding to the second identification information; wherein the first identification information is used to indicate whether a node using a direct coding mode contains duplicate points, and the second identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points; or, the first identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points, and the second identification information is used to indicate whether a node using a direct coding mode contains duplicate points.
[0008] In a fourth aspect, a point cloud decoder is provided, comprising: a memory for storing a computer program; and a processor for executing the method of the first aspect when running the computer program.
[0009] In a fifth aspect, a point cloud encoder is provided, comprising: a first encoding unit, configured to encode first identification information according to a first probability model, the first identification information being used to indicate whether the current node contains duplicate points; a second encoding unit, configured to encode the number of duplicate points contained in the current node if the first identification information indicates that the current node contains duplicate points; wherein the first probability model satisfies at least one of the following: an initial value of the first probability model is not equal to a first value, and the first value corresponds to: the probabilities of MPS and LPS are equal; the first probability model is different from the second probability model, and the second probability model is a probability model corresponding to the second identification information; wherein the first identification information is used to indicate whether a node using a direct encoding mode contains duplicate points, and the second identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points; or, the first identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points, and the second identification information is used to indicate whether a node using a direct encoding mode contains duplicate points.
[0010] In a sixth aspect, a point cloud encoder is provided, comprising: a memory for storing a computer program; and a processor for executing the method of the second aspect when running the computer program.
[0011] In a seventh aspect, a computer-readable storage medium is provided, wherein the computer-readable storage medium stores a computer program, and when the computer program is executed, the method of any one of the first to second aspects is implemented.
[0012] In an eighth aspect, a computer program product is provided, comprising a computer program, which implements the method of any one of the first to second aspects when the computer program is executed.
[0013] In the ninth aspect, a non-volatile computer-readable storage medium for storing a bit stream is provided, wherein the bit stream is generated by an encoding method using a point cloud encoder, or the bit stream is decoded by a decoding method using a point cloud decoder, wherein the decoding method is the method described in the first aspect and the encoding method is the method described in the second aspect.
[0014] According to a tenth aspect, a code stream is provided, comprising a code stream generated according to the method described in the second aspect.
[0015] The embodiment of the present application adjusts the probability model of identification information related to repeated points. The adjusted probability model is more consistent with the actual situation and helps to improve the encoding and decoding efficiency of the point cloud. BRIEF DESCRIPTION OF THE DRAWINGS
[0016] FIG1A is a schematic diagram of a three-dimensional point cloud image.
[0017] FIG1B is a partially enlarged view of a three-dimensional point cloud image.
[0018] FIG2A is a schematic diagram of six viewing angles of a point cloud image.
[0019] FIG2B is a schematic diagram of a data storage format corresponding to a point cloud image.
[0020] FIG3 is a schematic diagram of a network architecture for point cloud encoding and decoding.
[0021] FIG4A is a schematic diagram of a composition framework of a G-PCC encoder.
[0022] FIG4B is a schematic diagram of a composition framework of a G-PCC decoder.
[0023] FIG5 is an example diagram of a direct coding model (DCM).
[0024] FIG6 is a diagram illustrating an example of an inference process of an infer direct coding model (IDCM).
[0025] FIG7 is a schematic diagram of the updating process of the probability model.
[0026] FIG8 is a schematic diagram of the renormalization process.
[0027] FIG9 is a flowchart of a decoding method provided by an embodiment of the present application.
[0028] FIG10 is a flowchart of an encoding method provided by an embodiment of the present application.
[0029] FIG11 is a flowchart of a decoding method provided in another embodiment of the present application.
[0030] FIG12 is a flowchart of an encoding method provided in another embodiment of the present application.
[0031] FIG13 is a schematic diagram of the structure of a point cloud decoder provided in one embodiment of the present application.
[0032] FIG14 is a schematic diagram of the structure of a point cloud decoder provided in another embodiment of the present application.
[0033] FIG15 is a schematic diagram of the structure of a point cloud encoder provided by an embodiment of the present application.
[0034] FIG16 is a schematic diagram of the structure of a point cloud encoder provided in another embodiment of the present application. DETAILED DESCRIPTION
[0035] In order to enable a more detailed understanding of the features and technical contents of the embodiments of the present application, the implementation of the embodiments of the present application is described in detail below with reference to the accompanying drawings. The attached drawings are for reference only and are not used to limit the embodiments of the present application.
[0036] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by those skilled in the art to which this application pertains. The terms used herein are for the purpose of describing the embodiments of this application only and are not intended to limit this application.
[0037] In the following description, reference is made to “some embodiments” or “some implementations”, which describe a subset of all possible embodiments, but it will be understood that “some embodiments” or “some implementations” may be the same subset or different subsets of all possible embodiments and may be combined with each other without conflict.
[0038] It should also be pointed out that the terms "first\second\third" involved in the embodiments of the present application are only used to distinguish similar objects and do not represent a specific ordering of the objects. It can be understood that "first\second\third" can be interchanged with a specific order or sequence where permitted, so that the embodiments of the present application described here can be implemented in an order other than that illustrated or described here.
[0039] The embodiments of the present application can be applied to point cloud encoding and decoding. For ease of understanding, the point cloud and its encoding and decoding methods are first introduced below.
[0040] A point cloud is a three-dimensional representation of an object's surface. Point clouds can be collected using acquisition equipment such as photoelectric radars, lidars, laser scanners, and multi-view cameras.
[0041] A point cloud is a set of irregularly distributed discrete points in space that represent the spatial structure and surface properties of a three-dimensional object or scene. Figure 1A shows a 3D point cloud image. Figure 1B shows a zoomed-in view of the same 3D point cloud image. As can be seen from Figures 1A and 1B, the point cloud surface is composed of densely distributed points.
[0042] In two-dimensional images, each pixel contains information and is distributed regularly, so there's no need to record its location. However, the distribution of points in a point cloud in three-dimensional space is random and irregular, so recording the location of each point in space is necessary to fully represent the point cloud. Similar to two-dimensional images, each location in the acquisition process has corresponding attribute information, typically an RGB color value, which reflects the object's color. For point clouds, in addition to color information, each point's corresponding attribute information also commonly includes reflectance values, which reflect the surface texture of the object. Therefore, point cloud data typically includes both point location information and point attribute information. Point location information can also be referred to as point geometric information. For example, point geometric information can be the point's three-dimensional coordinate information (x, y, z). Point attribute information can include color information and / or reflectance. For example, reflectance can be one-dimensional reflectance information (r); color information can be information in any color space, or it can be three-dimensional color information, such as RGB information. Here, R represents red (R), G represents green (G), and B represents blue (B). For another example, the color information may be luminance and chrominance (YCbCr, YUV) information, where Y represents brightness (luma), Cb (U) represents blue color difference, and Cr (V) represents red color difference.
[0043] For example, a point cloud generated using laser measurement principles can include both its 3D coordinate information and its reflectivity. For another example, a point cloud generated using photogrammetry principles can include both its 3D coordinate information and its 3D color information. For another example, a point cloud generated using a combination of laser measurement and photogrammetry principles can include both its 3D coordinate information, its reflectivity value, and its 3D color information.
[0044] Figures 2A and 2B show a point cloud image and its corresponding data storage format. Figure 2A provides six viewing angles of the point cloud image, while Figure 2B consists of a file header and data. The header includes the data format, data representation type, the total number of points in the point cloud, and the content represented by the point cloud. For example, the point cloud is in ".ply" format, represented by ASCII code, with a total of 207,242 points. Each point has 3D coordinate information (x, y, z) and 3D color information (r, g, b).
[0045] Point clouds can be divided into the following types according to the acquisition method:
[0046] Static point cloud: the object is stationary and the device that acquires the point cloud is also stationary;
[0047] Dynamic point cloud: The object is moving, but the device that obtains the point cloud is stationary;
[0048] Dynamic point cloud acquisition: The device used to acquire the point cloud is in motion.
[0049] For example, point clouds can be divided into two categories according to their usage:
[0050] Category 1: Machine perception point cloud, which can be used in scenarios such as autonomous navigation systems, real-time inspection systems, geographic information systems, visual sorting robots, and disaster relief robots;
[0051] Category 2: Human eye perception point cloud, which can be used in point cloud application scenarios such as digital cultural heritage, free viewpoint broadcasting, 3D immersive communication, and 3D immersive interaction.
[0052] Point clouds can flexibly and conveniently express the spatial structure and surface properties of three-dimensional objects or scenes. Moreover, since point clouds are obtained by directly sampling real objects, they can provide a strong sense of reality while ensuring accuracy. Therefore, they are widely used, including virtual reality games, computer-aided design, geographic information systems, automatic navigation systems, digital cultural heritage, free viewpoint broadcasting, three-dimensional immersive remote presentation, and three-dimensional reconstruction of biological tissues and organs.
[0053] Point clouds are primarily collected through computer generation, 3D laser scanning, and 3D photogrammetry. Computers can generate point clouds of virtual 3D objects and scenes; 3D laser scanning can obtain point clouds of static real-world 3D objects or scenes, generating millions of point clouds per second; and 3D photogrammetry can obtain point clouds of dynamic real-world 3D objects or scenes, generating tens of millions of point clouds per second. These technologies reduce the cost and time required to acquire point cloud data while improving data accuracy. While changes in point cloud data acquisition methods have made it possible to acquire large amounts of point cloud data, the processing of this massive amount of 3D point cloud data is facing bottlenecks due to storage space and transmission bandwidth constraints, as application demands grow.
[0054] For example, taking a point cloud video with a frame rate of 30 frames per second (fps), each frame contains 700,000 points, and each point has coordinate information (xyz, float) and color information (RGB, uchar). Therefore, the data volume of a 10-second point cloud video is approximately 0.7 million × (4 bytes × 3 + 1 byte × 3) × 30 fps × 10 seconds = 3.15 GB, where 1 byte is 10 bits. For a 1280 × 720 2D video with a YUV sampling format of 4:2:0 and a frame rate of 24 fps, the data volume for 10 seconds is approximately 1280 × 720 × 12 bits × 24 fps × 10 seconds ≈ 0.33 GB. The data volume of a 10-second two-view 3D video is approximately 0.33 × 2 = 0.66 GB. This shows that the data volume of a point cloud video far exceeds that of 2D and 3D videos of the same length. Therefore, to better manage data, save server storage space, and reduce transmission traffic and time between servers and clients, point cloud compression has become a key issue in promoting the development of the point cloud industry. Specifically, since point clouds are collections of massive numbers of points, storing them not only consumes a large amount of memory but is also inconvenient for transmission. There is also insufficient bandwidth to support direct transmission of point clouds without compression across the network layer. Therefore, point cloud compression is necessary.
[0055] Currently, point cloud coding frameworks that can compress point clouds can include the geometry-based point cloud compression (G-PCC) codec framework or the video-based point cloud compression (V-PCC) codec framework provided by the Moving Picture Experts Group (MPEG), or the AVS-PCC codec framework provided by the Audio Video Coding Standard (AVS). The G-PCC codec framework can be used to compress the first type of static point clouds and the third type of dynamically acquired point clouds, and can be based on the Point Cloud Compression Test Platform (Test Model Compression 13, TMC13). The V-PCC codec framework can be used to compress the second type of dynamic point clouds, and can be based on the Point Cloud Compression Test Platform (Test Model Compression 2, TMC2). Therefore, the G-PCC codec framework is also called the Point Cloud Codec TMC13, and the V-PCC codec framework is also called the Point Cloud Codec TMC2.
[0056] FIG3 shows a schematic diagram of a network architecture for point cloud encoding and decoding. As shown in FIG3 , the network architecture includes one or more electronic devices 13 to 1N and a communication network 01, wherein the electronic devices 13 to 1N can perform video interaction through the communication network 01. During implementation, the electronic devices can be various types of devices with point cloud encoding and decoding functions. For example, the electronic devices can include mobile phones, tablet computers, personal computers, personal digital assistants, navigators, digital phones, video phones, televisions, sensor devices, servers, etc., and the embodiments of the present application are not limited thereto. Among them, the decoder or encoder in the embodiments of the present application can be the above-mentioned electronic devices.
[0057] Among them, the electronic device in the embodiment of the present application has a point cloud encoding and decoding function, generally including a point cloud encoder (ie, encoder) and a point cloud decoder (ie, decoder).
[0058] The following uses the G-PCC encoding and decoding framework as an example to illustrate the point cloud encoding and decoding method.
[0059] In the point cloud G-PCC codec framework, the point cloud data to be encoded is first divided into multiple slices through slice partitioning. In each slice, the geometric information and attribute information of the point cloud are encoded separately.
[0060] Figure 4A shows a schematic diagram of the encoding framework of a G-PCC encoder. As shown in Figure 4A, during the geometry encoding process, the geometric information is transformed so that the entire point cloud is contained within a bounding box, and then quantized. Quantization primarily serves a scaling purpose. Due to quantization rounding, the geometric information of some point clouds becomes identical. Parameters are then used to determine whether to remove duplicate points. This process of quantization and removing duplicate points is also known as voxelization. The bounding box is then partitioned into an octree or constructed as a prediction tree. During this process, arithmetic coding is performed on the points in the leaf nodes of the partition to generate a binary geometry bitstream. Alternatively, arithmetic coding is performed on the intersections (vertex) generated by the partition (surface fitting is performed based on the intersections) to generate a binary geometry bitstream. During the attribute encoding process, after the geometry encoding is completed and the geometric information is reconstructed, color conversion is required to convert the color information (i.e., attribute information) from the RGB color space to the YUV color space. The reconstructed geometry information is then used to recolor the point cloud so that the unencoded attribute information corresponds to the reconstructed geometry information. Attribute encoding primarily targets color information. Two main transformation methods are used during the color encoding process: a distance-based lifting transform that relies on level of detail (LOD) partitioning, and a direct region adaptive hierarchical transform (RAHT). Both methods convert color information from the spatial domain to the frequency domain, obtaining high- and low-frequency coefficients. These coefficients are then quantized and arithmetic-coded to generate a binary attribute bitstream.
[0061] Figure 4B shows a schematic diagram of the decoding framework of a G-PCC decoder. As shown in Figure 4B, for the acquired binary bit stream, the geometric bit stream and attribute bit stream in the binary bit stream are first decoded independently. When decoding the geometric bit stream, the geometric information of the point cloud is obtained through arithmetic decoding-reconstruction of the octree / reconstruction of the prediction tree-reconstruction of the geometry-coordinate inverse conversion; when decoding the attribute bit stream, the attribute information of the point cloud is obtained through arithmetic decoding-inverse quantization-LOD partitioning / RAHT-color inverse conversion, and the point cloud data to be encoded (i.e., the output point cloud) is restored based on the geometric information and attribute information.
[0062] As shown in Figures 4A and 4B , G-PCC's current geometric codecs can be categorized into: octree-based, triangle soup (trisoup)-based, and prediction tree-based. The following describes the specific implementations of these three geometric codecs in more detail.
[0063] Octree-based geometry encoding and decoding
[0064] At the encoding end, the geometric information of the point cloud is first transformed into coordinates so that all the point clouds are contained in a grid consisting of two extreme points (0, 0, 0) and (2 d , 2 d , 2 d ) in the bounding box defined by . Then, the points in the bounding box are voxelized, that is, quantized, rounded, and duplicate points are removed (whether duplicate points are removed can be determined by parameters). Next, the non-empty nodes in the bounding box (or non-empty sub-cubes, that is, sub-cubes containing point clouds) are continuously divided into octrees in a breadth-first traversal order. At the same octree depth, a node will be divided into 8 child nodes until the leaf node obtained by the division is a 1x1x1 unit cube. The division is stopped. Whether there is a point occupation in the node (1 for occupation, 0 for non-occupancy) can be represented by an 8-bit binary code. The 8-bit binary code is called an occupancy code. The placeholder code of each node is encoded to generate a binary code stream.
[0065] On the decoding side, the placeholder code for each node is continuously parsed in a breadth-first traversal order, and the nodes are continuously divided until a 1x1x1 unit cube is obtained. The number of points contained in each leaf node is then parsed to recover the reconstructed geometric information of the point cloud.
[0066] Trisoup-based geometric encoding and decoding
[0067] At the encoding end, the first step is to divide the point cloud based on the octree. Different from the geometric information encoding based on the octree structure, the geometric encoding based on trisoup does not need to divide the point cloud step by step into leaf nodes with a side length of 1x1x1, but divides it into leaf nodes with a specified side length. After reaching the leaf node with a specified side length, the surface information composed of the voxels in the node can be represented by a series of triangle meshes. In G-PCC, the parameter trisoup node size is used to represent the size of the block where the triangle face is located. When the trisoup node size is greater than 0, the voxel set in the node is represented by a geometric face. The up to twelve intersection points generated by the geometric face and the twelve edges of the block are called vertices. The vertex coordinates of each block are encoded in sequence to generate a binary code stream.
[0068] On the decoder side, to decode the point cloud geometry from the node triangles, each voxel within the node cube must be checked to see if it intersects the triangles. This technique is called triangle rasterization. For example, six unit vectors (0,0,1), (0,0,1), (0,0,1), (0,0,1), (0,0,1), (0,0,1) can be used to perform an intersection check to see if each unit vector intersects the triangle. If so, the intersection point is calculated and the decoded cube is output. The number of points generated by the decoder is determined by the grid distance d.
[0069] Geometric encoding and decoding based on prediction tree
[0070] On the encoding side, the input point cloud is first sorted. Currently used sorting methods include unordered, Morton order, azimuth order, and radial distance order. Two different approaches can be used to establish the prediction tree structure on the encoding side. One approach is to build a prediction tree based on a KD-Tree. This prediction tree construction method is also called the high-latency slow mode. The other approach uses lidar calibration information to divide each point into different lasers and establish a prediction structure based on these lasers. This prediction tree construction method is also called the low-latency fast mode. Next, based on the prediction tree structure, each node in the prediction tree is traversed. Different prediction modes are selected to predict the node's geometric position information to obtain a prediction residual. This geometric prediction residual is then quantized using a quantization parameter. Finally, through continuous iteration, the prediction residual of the prediction tree node position information, the prediction tree structure, and the quantization parameter are encoded to generate a binary bitstream.
[0071] On the decoding side, the decoder continuously parses the bitstream to reconstruct the prediction tree structure. Next, the decoder parses the prediction residual information and quantization parameters for each prediction node, dequantizes the prediction residual, and recovers the reconstructed geometric position information for each node, ultimately completing the geometric reconstruction on the decoding side.
[0072] The previous article introduced the basic concepts of point clouds and the basic methods of point cloud encoding and decoding. The present embodiment mainly improves the processing method of duplicate points in point cloud encoding and decoding. The following article provides a detailed introduction to the technologies related to duplicate points in the point cloud encoding and decoding process.
[0073] Quantization and duplicate point removal (voxelization) in G-PCC
[0074] In G-PCC, the geometric preprocessing stage includes a key step, namely voxelization. In the voxelization process, the position of the point is expressed as a non-negative integer before compression. In order to obtain these integer values, the position of the point is rounded. Let the initial position of the point be The quantification method for this point is as follows:
[0075] Round(.) means rounding the value in the brackets to the nearest integer.
[0076] After quantization, multiple points may be located at the same position. These points are called duplicate points. The removal of duplicate points is optional and is controlled by the syntax element geom_unique_points_flag in the geometry parameter set (GPS) layer. When unique_points_flag is set to 0, the encoder encodes the number of duplicate points. Similarly, the decoder decodes the number of duplicate points only when the decoded unique_points_flag is equal to 0.
[0077] Therefore, the voxelization process in geometric preprocessing can be regarded as a bounding box of [i-0.5,i+0.5)×[j-0.5,j+0.5)×[k-0.5,k+0.5) (where i, j, k are between 0 and 2 d -1) are replaced by the center point of the bounding box.
[0078] Direct coding model (DCM)
[0079] As shown in Figure 5, in G-PCC, entropy coding of point coordinates within a node or subnode is called DCM. DCM is primarily used to handle isolated nodes. Unlike the octree partitioning process, which utilizes neighbor context information for entropy coding, DCM directly encodes the three coordinate components of the point.
[0080] For the node to be encoded, whether to enable DCM needs to be inferred through the parent node and its neighbor information. This process is called infer direct coding model (IDCM). As shown in Figure 6, IDCM will first determine whether the current node is eligible for DCM encoding. If the current node is eligible for DCM encoding, DCM encoding can be performed on the current node (of course, other judgment conditions can also be introduced, such as determining whether the number of points in the current node is less than a threshold (nb_points≤th), etc.). If the current node is not eligible for DCM encoding, octree encoding can be performed on the current node.
[0081] Whether the current node is eligible for DCM coding may be determined based on information about the parent node of the current node or the neighbors of the parent node, which may be referred to as inference.
[0082] The inferences about DCM coding eligibility can be divided into the following two categories:
[0083] 1) Parent-based eligibility: There is only one occupied child node (i.e., the current node) at the parent node level, and the grandparent node (i.e., the parent node of the parent node) has at most two occupied child nodes (i.e., the parent node and possibly one other node).
[0084] 2) 6N qualification: There is only one occupied child node (i.e. the current node) at the parent node level, and no occupied neighbor nodes (the neighbor nodes mentioned here refer to the 6 neighbor nodes in the top, bottom, left, right, front and back).
[0085] To accommodate different compression efficiencies and / or encoding times, IDCM has three possible inference methods. Inference method 1: If the current node meets both parent-based and 6N qualifications, DCM encoding is enabled. This inference method produces the best compression results, but takes longer. Inference method 2: If the current node meets 6N qualifications, DCM encoding is enabled. This inference method relaxes the DCM judgment criteria, leading to more nodes using DCM. Inference method 3: If the current node meets parent-based qualifications, DCM encoding is enabled. This inference method uses more relaxed judgment criteria, but has lower compression efficiency.
[0086] If the current node meets the DCM encoding qualifications, a binary flag is first encoded to indicate whether the current node uses DCM. If the flag is 1, it means that the current node uses DCM; if the flag is 0, it means that the current node does not use DCM.
[0087] If the DCM mode is adopted, the following steps can be used to encode the current node.
[0088] First: Encode the binary syntax element direct_point_cnt_eq2. direct_point_cnt_eq2 indicates whether the current node contains two different points (i.e., the two points have different geometric information). If direct_point_cnt_eq2 is 1, it means that the current node contains two different points; if direct_point_cnt_eq2 is 0, it means that the current node only contains points with the same geometric information (it can contain only one point or multiple points with the same geometric information).
[0089] Second: If direct_point_cnt_eq2 is 0, encode the number of duplicate points. First, encode the binary syntax element DupPointsCntGt0 to identify whether the current node contains duplicate points. If DupPointsCntGt0 is 1, it means that the current node contains duplicate points; if DupPointsCntGt0 is 0, it means that the current node does not contain duplicate points, and the number of duplicate points is 0. If DupPointsCntGt0 is 1, further encode the binary syntax element DupPointsCntGt1. DupPointsCntGt1 is used to identify whether the current node contains 1 duplicate point (that is, the geometric information of the two points is the same). If DupPointsCntGt1 is 1, it means that the current node contains more than 1 duplicate point; if DupPointsCntGt1 is 0, it means that the current node contains 1 duplicate point. If DupPointsCntGt1 is 1, further encode the syntax element DupPointsCntEg1. DupPointsCntEg1+2 is the number of duplicate points.
[0090] Encoding and decoding of duplicate points of multi-tree leaf nodes
[0091] In the multi-tree (such as octree) encoding of G-PCC, the multi-tree leaf nodes may contain duplicate points. The encoding method of the number of duplicate points of the multi-tree leaf nodes includes the following steps. First, encode the binary syntax element DupPointsCntGt0L. DupPointsCntGt0L can be used to indicate whether the leaf node contains duplicate points. If DupPointsCntGt0L is 1, it means that the leaf node contains duplicate points; if DupPointsCntGt0L is 0, it means that the leaf node does not contain duplicate points. Then, when DupPointsCntGt0L is 1, the number of duplicate points in the leaf node is encoded using Exponential Columbus.
[0092] The method for decoding the number of duplicate points in a multi-tree leaf node includes the following steps. First, the binary syntax element DupPointsCntGt0L is decoded. If DupPointsCntGt0L is 1, it indicates that the leaf node contains duplicate points; if DupPointsCntGt0L is 0, it indicates that the leaf node does not contain duplicate points. When DupPointsCntGt0L is 1, the number of duplicate points in the leaf node is decoded using Exponential Columbus decoding.
[0093] Entropy coding probability model and initialization
[0094] For a probability model, the interval starting point (Low) and interval width (Range) of the corresponding arithmetic encoder are first determined. Then, the interval size of MPS and LPS can be continuously updated according to the input binary (bin) value, and the Low value is finally used as the encoded output.
[0095] The following describes in detail the updating process of the probability model in conjunction with FIG8 .
[0096] First, initialize Low and Range (the initial interval width of Range is 510, represented by 9 bits). If the initial value of the probability model is the first value (the first value corresponds to the case where the probabilities of MPS and LPS are equal, that is, if the initial value of the probability model is the first value, the probabilities of MPS and LPS are equal, both 0.5), then the initial interval R of MPS is MPS Width and initial interval width R of LPS LPS The two intervals are the same, each taking up half of the initial width of Range.
[0097] Secondly, determine whether the Bin value to be encoded is equal to LPS or MPS, thereby updating Low and Range. See Figure 7, if Bin = LPS, then Low = Low + R MPS , Range = R LPS ; If Bin = MPS, then Low remains unchanged and Range is equal to R MPS .
[0098] Then, the probability model is updated using Bin value, Low, and Range.
[0099] As Range is updated, its value may become less than half the initial interval length, that is, less than 256. In this case, a renormalization process is required. Figure 8 illustrates the renormalization process. During the renormalization process, Low and Range are left-shifted until Range's value is greater than half the initial interval width. The left shift of Range expands the arithmetic encoder's interval width, while the left shift of Low increases the number of output bits. Both left shifts are the same.
[0100] The previous article provided a detailed introduction to point cloud encoding and decoding, as well as duplicate point handling within point cloud encoding and decoding. A careful examination revealed that some algorithmic design issues within point cloud encoding and decoding still present irrationalities, reducing encoding and decoding efficiency. This is analyzed in detail below.
[0101] As mentioned above, the syntax element DupPointsCntGt0 in DCM encoding is used to identify whether the node using DCM contains duplicate points, and the syntax element DupPointsCntGt0L in the multi-tree tree child node is used to identify whether the multi-tree tree child node contains duplicate points. In the related art, DupPointsCntGt0 and DupPointsCntGt0L use the same probability model for entropy coding. However, the actual probability that a node using DCM encoding and decoding contains duplicate points is different from the actual probability that a multi-tree tree child node contains duplicate points. Using the same probability model for entropy coding for both does not conform to the actual situation, and therefore results in a loss of coding efficiency.
[0102] Furthermore, the syntax element DupPointsCntGt0 in DCM encoding and the syntax element DupPointsCntGt0L in multitree tree leaf nodes are very likely to be 0. This means that in most cases, nodes encoded and decoded using DCM and multitree tree leaf nodes do not contain duplicate points. Related technologies do not fully utilize this prior information, and instead set the initial value of the probability model corresponding to DupPointsCntGt0 (which shares the same probability model with DupPointsCntGt0L) to the first value (the first value corresponds to the case where the probabilities of MPS and LPS are equal. That is, if the initial value of the probability model is the first value, the probabilities of MPS and LPS are equal, both 0.5). If the initial value of the probability model is set to the first value, the initial bin widths corresponding to MPS and LPS are the same. In this case, the encoder needs to continuously output bits (output bin value 0) to update the bin width corresponding to the MPS until the MPS bin width reaches a certain level. Bit savings only begin when the MPS bin width reaches the bin width corresponding to an MPS close to 1. The output of these bits is actually caused by an improper initial value setting. If the initial value can be set appropriately, the process of "continuously outputting bits to make the MPS interval reach a certain level" mentioned above can be avoided, thereby improving the coding efficiency.
[0103] In response to the above problems, an embodiment of the present application proposes a coding method, including: encoding first identification information according to a first probability model, the first identification information being used to indicate whether the current node contains duplicate points; if the first identification information indicates that the current node contains duplicate points, encoding the number of duplicate points contained in the current node; wherein, the first probability model satisfies at least one of the following: an initial value of the first probability model is not equal to a first value, and the first value corresponds to: the probabilities of MPS and LPS are equal; the first probability model is different from the second probability model, and the second probability model is a probability model corresponding to the second identification information; wherein, the first identification information is used to indicate whether a node using DCM contains duplicate points, and the second identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points; or, the first identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points, and the second identification information is used to indicate whether a node using a direct coding mode contains duplicate points.
[0104] An embodiment of the present application also proposes a decoding method, comprising: decoding first identification information according to a first probability model, the first identification information being used to indicate whether the current node contains duplicate points; if the first identification information indicates that the current node contains duplicate points, determining the number of duplicate points contained in the current node; wherein the first probability model satisfies at least one of the following: an initial value of the first probability model is not equal to a first value, and the first value corresponds to: the probabilities of MPS and LPS are equal; the first probability model is different from the second probability model, and the second probability model is a probability model corresponding to the second identification information; wherein the first identification information is used to indicate whether a node using DCM contains duplicate points, and the second identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points; or, the first identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points, and the second identification information is used to indicate whether a node using a direct coding mode contains duplicate points.
[0105] In an embodiment of the present application, the initial value of the probability model corresponding to the first identification information is set to be unequal to the first value (the first value corresponds to the case where the probabilities of MPS and LPS are equal) and / or the probability model corresponding to the first identification information and the probability model corresponding to the second identification information are set to different probability models. The above setting method is more in line with the actual situation, thereby helping to improve the encoding and decoding efficiency of the point cloud.
[0106] The following is a more detailed explanation of the embodiments of the present application in combination with Example 1 and Example 2. Example 1 is described from the perspective of the DCM encoding and decoding process, and Example 2 is described from the perspective of the encoding and decoding process of the leaf nodes of the multi-tree. In Example 1, the first identification information is used to indicate whether the node using DCM contains duplicate points, and the second identification information is used to indicate whether the leaf nodes of the multi-tree contain duplicate points. In Example 2, the first identification information is used to indicate whether the leaf nodes of the multi-tree contain duplicate points, and the second identification information is used to indicate whether the nodes using the direct coding mode contain duplicate points. It should be understood that the point cloud encoding and decoding process may require both DCM encoding and decoding and encoding and decoding of the leaf nodes of the multi-tree, so Example 1 and Example 2 can be combined with each other.
[0107] Example 1: DCM encoding and decoding
[0108] FIG9 is a flow chart of a decoding method according to an embodiment of the present application. The method of FIG9 can be applied to a decoder. The decoder can be, for example, a decoder supporting G-PCC.
[0109] In step S910, the first identification information is decoded (such as entropy decoding) according to the first probability model. The first identification information is used to indicate whether the current node (the current node refers to the node using DCM) contains duplicate points. The first identification information can be, for example, a binary syntax element DupPointsCntGt0. The value of the first identification information may include a value and b value. Among them, the value a can be, for example, 1, and the value b can be, for example, 0. If the value of the first identification information is a value, it can be indicated that the current node contains duplicate points. If the value of the first identification information is b value, it can be indicated that the current node does not contain duplicate points.
[0110] The first probability model refers to a probability model used to entropy decode the first identification information. The MPS of the first probability model can be 0 (i.e., bin value 0), and the LPS can be 1 (i.e., bin value 1). The initial value of the first probability model can include the probability initial value of the MPS and / or the probability initial value of the LPS of the first probability model. In other words, the initial value of the first probability model can be used to represent the probability of the first probability model being 0 and / or 1.
[0111] In some implementations, the initial value of the first probability model is not equal to the first value. The first value corresponds to the case where the probabilities of the MPS and LPS are equal. That is, if the initial value of the first probability model is the first value, the probabilities of the MPS and LPS are equal. Because the probability of the first identification information being 0 is very high, setting the initial value of the first probability model to be not equal to the first value is more consistent with actual conditions and can reduce the decoder's process of continuously updating the MPS interval width based on the renormalization operation, thereby improving decoding efficiency.
[0112] Exemplarily, the initial value of the first probability model can be set so that the probability of the MPS is greater than or equal to 0.6, 0.7, 0.8 or 0.9. Optionally, the initial value of the first probability model can be set so that the probability of the MPS is equal to 1. For example, the initial value of the first probability model can be equal to 1, which is 0xffff at 16-bit binary precision. Since the probability that the first identification information has a value of 0 is very high, setting the initial value of the first probability model to a value that makes the probability of the MPS equal to 1 is more consistent with the actual situation, and can minimize the process of the decoder continuously updating the MPS interval width based on the renormalization operation, thereby improving decoding efficiency.
[0113] As mentioned above, the first probability model is used to decode the first identification information. In some implementations, in addition to being used to decode the first identification information, the first probability model can also be used to decode the second identification information. The second identification information is used to indicate whether the leaf node of a multi-branch tree (such as an octree, a quadtree, or a binary tree) contains duplicate points. The second identification information can be, for example, a binary syntax element DupPointsCntGt0L. The value of the second identification information may include a value and b value. Among them, the value a can be, for example, 1, and the value b can be, for example, 0. If the value of the second identification information is value a, it can be indicated that the leaf node of the multi-branch tree contains duplicate points. If the value of the second identification information is value b, it can be indicated that the leaf node of the multi-branch tree does not contain duplicate points.
[0114] However, the actual probability of a node using DCM containing duplicate points is different from the actual probability of a multi-tree tree leaf node containing duplicate points. Using the same probability model for entropy decoding is inconsistent with the actual situation and may reduce decoding efficiency. Therefore, in other implementations, the second identification information can correspond to a second probability model (i.e., the second identification information can be decoded using the second probability model). The probability models corresponding to the first identification information and the second identification information are set to different probability models, and the update processes of the two probability models do not affect each other, which helps to improve decoding efficiency.
[0115] In some implementations, before executing step S910, the third identification information may be decoded first. The third identification information is used to indicate whether the current node contains points with different geometric information. The third identification information may be, for example, a binary syntax element direct_point_cnt_eq2. The value of the third identification information may include a value and b value. Among them, the value a may be, for example, 1, and the value b may be, for example, 0. If the value of the third identification information is a, it may indicate that the current node contains points with different geometric information (such as 2 points with different geometric information). If the value of the third identification information is b, it may indicate that the current node only contains points with the same geometric information. For example, the current node only includes 1 point; or, the current node includes multiple points, and the geometric information of the multiple points is the same. If the third identification information indicates that the current node only contains points with the same geometric information, continue to execute step S910; otherwise, step S910 may not be executed.
[0116] Continuing to refer to FIG. 9 , in some implementations, the method of FIG. 9 may further include step S920 , ie, if the first identification information indicates that the current node includes duplicate points, determining the number of duplicate points included in the current node.
[0117] For example, the fourth identification information can be decoded. The fourth identification information is used to indicate whether the current node contains 1 duplicate point. The fourth identification information can be, for example, a binary syntax element DupPointsCntGt1. The value of the fourth identification information may include a value and b value. Among them, the value a can be, for example, 1, and the value b can be, for example, 0. If the value of the fourth identification information is a value, it can be indicated that the current node contains multiple duplicate points (or more than 1 duplicate points). If the value of the fourth identification information is b value, it can be indicated that the current node contains 1 duplicate point. If the fourth identification information indicates that the current node contains 1 duplicate point, the number of duplicate points is determined to be 1.
[0118] Furthermore, in some implementations, if the fourth identification information indicates that the current node includes multiple duplicate points, the fifth identification information is decoded. The fifth identification information is used to indicate or determine the number of duplicate points contained in the current node. The fifth identification information can be, for example, a binary syntax element DupPointsCntEg1. The fifth identification information can be, for example, based on 0-order exponential Golomb decoding. After parsing the value of the fifth identification information, the number of duplicate points contained in the current node can be determined based on the value of the fifth identification information. For example, the sum of the value of the fifth identification information and 2 can be determined as the number of duplicate points contained in the current node (such as DupPointsCntEg1+2).
[0119] As mentioned above, the current node is a node that uses DCM (if the current node does not use DCM, multitree decoding can be performed on the current node). Before executing step S910, whether the current node uses DCM (i.e., whether it is eligible for DCM decoding) can be inferred based on the information of the parent node and / or the information of the parent node's neighbors. The following provides a detailed example of how to infer whether the current node uses DCM.
[0120] In some implementations, it can be determined whether the first condition and / or the second condition are met based on the information of the parent node. The first condition may include that the number of occupied child nodes of the parent node is 1, and the number of occupied child nodes of the grandparent node of the current node (i.e., the parent node of the parent node) is less than or equal to 2 (i.e., the parent node and possibly another node). The second condition may include that the number of occupied child nodes of the parent node is 1, and the neighbor nodes of the parent node (the neighbor nodes mentioned here can, for example, refer to 6 neighbor nodes in the upper, lower, left, right, front and back) are not occupied. If the first condition and / or the second condition are met, it is determined that the current node uses DCM. For example, if the first condition is met, it is determined that the current node uses DCM. For another example, if the second condition is met, it is determined that the current node uses DCM. For another example, if the first condition and the second condition are met at the same time, it is determined that the current node uses DCM.
[0121] The following uses the first condition of "parent-based qualification" and the second condition of "6N qualification" as an example to illustrate in more detail whether the current node uses DCM decoding.
[0122] Whether the current node is eligible for DCM decoding may be determined based on information about the parent node of the current node or the neighbors of the parent node, which may be referred to as inference.
[0123] The inference of DCM decoding eligibility can be divided into the following two categories:
[0124] 1) Parent-based eligibility: There is only one occupied child node (i.e., the current node) at the parent node level, and the grandparent node (i.e., the parent node of the parent node) has at most two occupied child nodes (i.e., the parent node and possibly one other node).
[0125] 2) 6N qualification: There is only one occupied child node (i.e. the current node) at the parent node level, and no occupied neighbor nodes (the neighbors mentioned here refer to the 6 neighbor nodes above, below, left, right, front, and back).
[0126] IDCM has three possible inference methods. Inference method 1: If the current node meets the parent-based qualifications and 6N qualifications, DCM decoding is enabled. Inference method 2: If the current node meets the 6N qualifications, DCM decoding is enabled. Inference method 3: If the current node meets the parent-based qualifications, DCM decoding is enabled.
[0127] After decoding the first identification information, the value of the coding interval parameter can also be updated according to the value of the first identification information. The coding interval parameter may include a first parameter and / or a second parameter. The first parameter is used to indicate the starting point of the coding interval (the starting point of the coding interval of the arithmetic encoder). The first parameter can be represented by Low. The second parameter is used to indicate the width of the coding interval. The second parameter can be represented by Range. The initial value of the second parameter can be 510, represented by 9 bits. After updating the value of the coding interval parameter according to the value of the first identification information, the first probability model can be updated according to the value of the first identification information and the updated value of the coding interval parameter.
[0128] For example, first, determine whether the value of the first identification information is equal to LPS or MPS, and then update Low and Range. See Figure 7, if Bin = LPS, then Low = Low + R MPS , Range = R LPS ; If Bin = MPS, then Low remains unchanged and Range is equal to R MPS . R MPS Indicates the interval width corresponding to MPS, R LPS Indicates the interval width corresponding to LPS.
[0129] Then, the probability model is updated using Bin value, Low, and Range.
[0130] As Range is updated, the value of Range may be less than half of the initial interval length, that is, less than 256. At this time, a renormalization process is required. Figure 8 shows the process of the renormalization process. During the renormalization process, Low and Range will be left shifted (it should be noted that the "left shift operation on the parameter" mentioned in the various embodiments of the present application refers to the left shift operation on the binary value of the parameter) until the value of Range is greater than half of the initial interval width. The left shift of Range is to expand the interval width of the arithmetic encoder, and the left shift of Low is to output bits. The number of bits of the left shift of the two is the same.
[0131] The decoding method provided by the embodiment of the present application is described in detail above in conjunction with Figure 9. The encoding method provided by the embodiment of the present application is described in detail below in conjunction with Figure 10.
[0132] FIG10 is a flow chart of an encoding method according to an embodiment of the present application. The method of FIG10 can be applied to a point cloud encoder. The point cloud encoder can be, for example, a decoder supporting G-PCC.
[0133] In step S1010, the first identification information is encoded (such as entropy coding) according to the first probability model. The first identification information is used to indicate whether the current node (the current node refers to the node using DCM) contains duplicate points. The first identification information can be, for example, a binary syntax element DupPointsCntGt0. The value of the first identification information may include a value and b value. Among them, the value a can be, for example, 1, and the value b can be, for example, 0. If the value of the first identification information is a value, it can be indicated that the current node contains duplicate points. If the value of the first identification information is b value, it can be indicated that the current node does not contain duplicate points.
[0134] The first probability model refers to a probability model used to entropy encode the first identification information. The MPS of the first probability model can be 0 (i.e., bin value 0), and the LPS can be 1 (i.e., bin value 1). The initial value of the first probability model can include the probability initial value of the MPS and / or the probability initial value of the LPS of the first probability model. In other words, the initial value of the first probability model can be used to represent the probability of the first probability model being 0 and / or 1.
[0135] In some implementations, the initial value of the first probability model is not equal to the first value. The first value corresponds to a situation where the probabilities of the MPS and the LPS are equal. That is, if the initial value of the first probability model is the first value, the probabilities of the MPS and the LPS are equal. That is, in the first probability model, the initial interval width corresponding to the MPS is greater than the initial interval width corresponding to the LPS. Since the probability that the first identification information has a value of 0 is very high, setting the initial value of the first probability model to be not equal to the first value is more consistent with actual conditions, and can reduce the process of the encoder continuously updating the MPS interval width based on the renormalization operation, thereby improving coding efficiency.
[0136] Exemplarily, the initial value of the first probability model can be set so that the probability of MPS is greater than or equal to 0.6, 0.7, 0.8 or 0.9. Optionally, the initial value of the first probability model can be set so that the probability of MPS is equal to 1. For example, the initial value of the first probability model can be equal to 1, which is 0xffff at 16-bit binary precision. Since the probability that the first identification information has a value of 0 is very high, setting the initial value of the first probability model to a value that makes the probability of MPS equal to 1 is more consistent with the actual situation, and can minimize the process of the encoder continuously updating the MPS interval width based on the renormalization operation, thereby improving coding efficiency.
[0137] As mentioned above, the first probability model is used to encode the first identification information. In some implementations, in addition to being used to encode the first identification information, the first probability model can also be used to encode the second identification information. The second identification information is used to indicate whether the leaf node of a multi-branch tree (such as an octree, a quadtree, or a binary tree) contains duplicate points. The second identification information can be, for example, a binary syntax element DupPointsCntGt0L. The value of the second identification information may include a value and b value. Among them, the value a can be, for example, 1, and the value b can be, for example, 0. If the value of the second identification information is value a, it can be indicated that the leaf node of the multi-branch tree contains duplicate points. If the value of the second identification information is value b, it can be indicated that the leaf node of the multi-branch tree does not contain duplicate points.
[0138] However, the actual probability of a node using DCM containing duplicate points is different from the actual probability of a multi-tree tree leaf node containing duplicate points. Using the same probability model for entropy coding for both is inconsistent with the actual situation and may reduce coding efficiency. Therefore, in other implementations, the second identification information can correspond to a second probability model (i.e., the second identification information can be encoded using the second probability model). The probability models corresponding to the first identification information and the second identification information are set to different probability models, and the update processes of the two probability models do not affect each other, which helps to improve coding efficiency.
[0139] In some implementations, before executing step S1010, the third identification information may be encoded first. The third identification information is used to indicate whether the current node contains points with different geometric information. The third identification information may be, for example, a binary syntax element direct_point_cnt_eq2. The value of the third identification information may include a value and b value. Among them, the value a may be, for example, 1, and the value b may be, for example, 0. If the value of the third identification information is a, it may indicate that the current node contains points with different geometric information (such as 2 points with different geometric information). If the value of the third identification information is b, it may indicate that the current node only contains points with the same geometric information. For example, the current node only includes 1 point; or, the current node includes multiple points, and the geometric information of the multiple points is the same. If the third identification information indicates that the current node only contains points with the same geometric information, continue to execute step S1010; otherwise, step S1010 may not be executed.
[0140] Continuing to refer to FIG. 10 , in some implementations, the method of FIG. 10 may further include step S1020 , ie, if the first identification information indicates that the current node includes duplicate points, encoding the number of duplicate points included in the current node.
[0141] For example, the fourth identification information can be encoded. The fourth identification information is used to indicate whether the current node contains 1 duplicate point. The fourth identification information can be, for example, a binary syntax element DupPointsCntGt1. The value of the fourth identification information may include value a and value b. Among them, value a can be, for example, 1, and value b can be, for example, 0. If the value of the fourth identification information is value a, it can indicate that the current node contains multiple duplicate points (or more than 1 duplicate points). If the value of the fourth identification information is value b, it can indicate that the current node contains 1 duplicate point. If the fourth identification information indicates that the current node contains 1 duplicate point, the number of duplicate points is 1.
[0142] Furthermore, in some implementations, if the fourth identification information indicates that the current node includes multiple duplicate points, the fifth identification information is encoded. The fifth identification information is used to indicate or determine the number of duplicate points included in the current node. The fifth identification information may, for example, be a binary syntax element DupPointsCntEg1. The fifth identification information may, for example, be based on a 0-order Exponential Golomb coding. The number of duplicate points included in the current node may be equal to the sum of the value of the fifth identification information and 2 (e.g., DupPointsCntEg1+2).
[0143] As mentioned above, the current node is a node that uses DCM (if the current node does not use DCM, then multitree encoding can be performed on the current node). Before executing step S1010, whether the current node uses DCM (i.e., whether it is eligible for DCM encoding) can be inferred based on the information of the parent node and / or the information of the parent node's neighbors. The following provides a detailed example of how to infer whether the current node uses DCM.
[0144] In some implementations, it can be determined whether the first condition and / or the second condition are met based on the information of the parent node. The first condition may include that the number of occupied child nodes of the parent node is 1, and the number of occupied child nodes of the grandparent node of the current node (i.e., the parent node of the parent node) is less than or equal to 2 (i.e., the parent node and possibly another node). The second condition may include that the number of occupied child nodes of the parent node is 1, and the neighbor nodes of the parent node (the neighbor nodes mentioned here can, for example, refer to 6 neighbor nodes in the upper, lower, left, right, front and back) are not occupied. If the first condition and / or the second condition are met, it is determined that the current node uses DCM. For example, if the first condition is met, it is determined that the current node uses DCM. For another example, if the second condition is met, it is determined that the current node uses DCM. For another example, if the first condition and the second condition are met at the same time, it is determined that the current node uses DCM.
[0145] The following uses the first condition of "parent-based qualification" and the second condition of "6N qualification" as an example to illustrate in more detail whether the current node uses DCM encoding.
[0146] Whether the current node is eligible for DCM coding may be determined based on information about the parent node of the current node or the neighbors of the parent node, which may be referred to as inference.
[0147] The inferences about DCM coding eligibility can be divided into the following two categories:
[0148] 1) Parent-based eligibility: There is only one occupied child node (i.e., the current node) at the parent node level, and the grandparent node (i.e., the parent node of the parent node) has at most two occupied child nodes (i.e., the parent node and possibly one other node).
[0149] 2) 6N qualification: There is only one occupied child node (i.e. the current node) at the parent node level, and no occupied neighbor nodes (the neighbors mentioned here refer to the 6 neighbor nodes above, below, left, right, front, and back).
[0150] IDCM has three possible inference methods. Inference method 1: If the current node meets the parent-based qualifications and 6N qualifications, then DCM encoding is enabled. Inference method 2: If the current node meets the 6N qualifications, then DCM encoding is enabled. Inference method 3: If the current node meets the parent-based qualifications, then DCM encoding is enabled.
[0151] After encoding the first identification information, the value of the coding interval parameter can also be updated according to the value of the first identification information. The coding interval parameter may include a first parameter and / or a second parameter. The first parameter is used to indicate the starting point of the coding interval (the starting point of the coding interval of the arithmetic encoder). The first parameter can be represented by Low. The second parameter is used to indicate the width of the coding interval. The second parameter can be represented by Range. The initial value of the second parameter can be 510, represented by 9 bits. After updating the value of the coding interval parameter according to the value of the first identification information, the first probability model can be updated according to the value of the first identification information and the updated value of the coding interval parameter.
[0152] For example, first, determine whether the value of the first identification information is equal to LPS or MPS, and then update Low and Range. See Figure 7, if Bin = LPS, then Low = Low + R MPS , Range = R LPS ; If Bin = MPS, then Low remains unchanged and Range is equal to R MPS . R MPS Indicates the interval width corresponding to MPS, R LPSIndicates the interval width corresponding to LPS.
[0153] Then, the probability model is updated using Bin value, Low, and Range.
[0154] As Range is updated, its value may become less than half the initial interval length, that is, less than 256. In this case, a renormalization process is required. Figure 8 illustrates the renormalization process. During the renormalization process, Low and Range are left-shifted until Range's value is greater than half the initial interval width. The left shift of Range expands the arithmetic encoder's interval width, while the left shift of Low increases the number of output bits. Both left shifts are the same.
[0155] The following describes the first embodiment in more detail with reference to specific examples. It should be noted that the following examples are merely intended to help those skilled in the art understand the embodiments of the present application, and are not intended to limit the embodiments of the present application to the specific numerical values or specific scenarios illustrated. It is obvious that those skilled in the art can make various equivalent modifications or changes based on the examples given, and such modifications or changes also fall within the scope of the embodiments of the present application.
[0156] The following are some of the syntax elements involved in this example.
[0157] If direct_point_cnt_eq2 in the above syntax element is 1, it indicates that the node contains two different points. If it is 0, it indicates that the node contains only points with the same geometric information (one point, or multiple points with the same geometric information). direct_dup_point_cnt is used to identify the number of duplicate points. If direct_dup_point_cnt is not present, the number of duplicate points in the node is inferred to be 0. If direct_dup_point_cnt is present, it identifies the number of duplicate points. The value of direct_dup_point_cnt plus 1 is the number of points in the node.
[0158] Encoding process:
[0159] As shown in Figure 5, in G-PCC, entropy coding of point coordinates within a node or subnode is called DCM. DCM is primarily used to handle isolated nodes. Unlike the octree partitioning process, which utilizes neighbor context information for entropy coding, DCM directly encodes the three component coordinates of the point.
[0160] For the node to be encoded, whether DCM is enabled is inferred from the information of the parent node and its neighbors. This process is called IDCM. As shown in Figure 6, IDCM will first determine whether the current node is eligible for DCM encoding. If the current node is eligible for DCM encoding, then DCM encoding can be performed on the current node (of course, other judgment conditions can also be introduced, such as whether the number of points in the current node is less than a threshold (nb_points≤th), etc.). If the current node is not eligible for DCM encoding, then octree encoding can be performed on the current node.
[0161] Whether the current node is eligible for DCM coding may be determined based on information about the parent node of the current node or the neighbors of the parent node, which may be referred to as inference.
[0162] The inferences about DCM coding eligibility can be divided into the following two categories:
[0163] 1) Parent-based eligibility: There is only one occupied child node (i.e., the current node) at the parent node level, and the grandparent node (i.e., the parent node of the parent node) has at most two occupied child nodes (i.e., the parent node and possibly one other node).
[0164] 2) 6N qualification: There is only one occupied child node (i.e. the current node) at the parent node level, and no occupied neighbor nodes (the neighbors mentioned here refer to the 6 neighbor nodes above, below, left, right, front, and back).
[0165] To accommodate different compression efficiencies and / or encoding times, IDCM has three possible inference methods. Inference method 1: If the current node meets both parent-based and 6N qualifications, DCM encoding is enabled. This inference method produces the best compression results, but takes longer. Inference method 2: If the current node meets 6N qualifications, DCM encoding is enabled. This inference method relaxes the DCM judgment criteria, leading to more nodes using DCM. Inference method 3: If the current node meets parent-based qualifications, DCM encoding is enabled. This inference method uses more relaxed judgment criteria, but has lower compression efficiency.
[0166] If the current node meets the DCM encoding qualifications, a binary flag is first encoded to indicate whether the current node uses DCM. If the flag is 1, it means that the current node uses DCM; if the flag is 0, it means that the current node does not use DCM.
[0167] If the DCM mode is adopted, the following steps can be used to encode the current node.
[0168] First: Encode the binary syntax element direct_point_cnt_eq2. direct_point_cnt_eq2 indicates whether the current node contains two different points (i.e., the two points have different geometric information). If direct_point_cnt_eq2 is 1, it means that the current node contains two different points; if direct_point_cnt_eq2 is 0, it means that the current node only contains points with the same geometric information (it can contain only one point or multiple points with the same geometric information).
[0169] Second: If direct_point_cnt_eq2 is 0, the number of duplicate points direct_dup_point_cnt is encoded. First, the binary syntax element DupPointsCntGt0 is encoded to identify whether the current node contains duplicate points. If DupPointsCntGt0 is 1, it means that the current node contains duplicate points; if DupPointsCntGt0 is 0, it means that the current node does not contain duplicate points, and the number of duplicate points is 0. If DupPointsCntGt0 is 1, the binary syntax element DupPointsCntGt1 is further encoded. DupPointsCntGt1 is used to identify whether the current node contains 1 duplicate point (that is, the geometric information of the two points is the same). If DupPointsCntGt1 is 1, it means that the current node contains more than 1 duplicate point; if DupPointsCntGt1 is 0, it means that the current node contains 1 duplicate point, and direct_dup_point_cnt=1. If DupPointsCntGt1 is 1, the syntax element DupPointsCntEg1 is further encoded. DupPointsCntEg1+2 is the number of repeated points, and direct_dup_point_cnt=DupPointsCntEg1+2.
[0170] When DupPointsCntGt0 is entropy encoded, the first probability model is used to entropy encode DupPointsCntGt0. The initial value of the first probability model (i.e., the probability that MPS is 0) can be set to 1. It is 0xffff at 16-bit binary precision. Since the probability that DupPointsCntGt0 takes the value of 0 is very high, setting the initial value of the first probability model to 1 is more consistent with the actual situation, which can minimize the process of the encoder continuously updating the MPS interval width based on the renormalization operation, thereby improving the coding efficiency. In addition, DupPointsCntGt0 and DupPointsCntGt0L (used to identify whether the multi-tree leaf node contains duplicate points) use different probability models.
[0171] After encoding DupPointsCntGt0, the value of the coding interval parameter can also be updated according to the value of DupPointsCntGt0. The coding interval parameter may include a first parameter and / or a second parameter. The first parameter is used to indicate the starting point of the coding interval (the coding interval starting point of the arithmetic encoder). The first parameter can be represented by Low. The second parameter is used to indicate the width of the coding interval. The second parameter can be represented by Range. The initial value of the second parameter can be 510, represented by 9 bits. After updating the value of the coding interval parameter according to the value of DupPointsCntGt0, the first probability model can be updated according to the value of DupPointsCntGt0 and the updated value of the coding interval parameter.
[0172] For example, first, determine whether the value of DupPointsCntGt0 is equal to LPS or MPS, and then update Low and Range. See Figure 7, if Bin = LPS, then Low = Low + R MPS , Range = R LPS ; If Bin = MPS, then Low remains unchanged and Range is equal to R MPS . R MPS Indicates the interval width corresponding to MPS, R LPS Indicates the interval width corresponding to LPS.
[0173] Then, the probability model is updated using Bin value, Low, and Range.
[0174] As Range is updated, its value may become less than half the initial interval length, that is, less than 256. In this case, a renormalization process is required. Figure 8 illustrates the renormalization process. During the renormalization process, Low and Range are left-shifted until Range's value is greater than half the initial interval width. The left shift of Range expands the arithmetic encoder's interval width, while the left shift of Low increases the number of output bits. Both left shifts are the same.
[0175] Decoding process:
[0176] For the node to be decoded, whether DCM is enabled is inferred from the information of the parent node and its neighbors. This process is called IDCM. As shown in Figure 6, IDCM will first determine whether the current node is eligible for DCM decoding. If the current node is eligible for DCM decoding, DCM decoding can be performed on the current node (of course, other judgment conditions can also be introduced, such as whether the number of points in the current node is less than a threshold (nb_points≤th)). If the current node is not eligible for DCM decoding, octree decoding can be performed on the current node.
[0177] Whether the current node is eligible for DCM decoding may be determined based on information about the parent node of the current node or the neighbors of the parent node, which may be referred to as inference.
[0178] The inference of DCM decoding eligibility can be divided into the following two categories:
[0179] 1) Parent-based eligibility: There is only one occupied child node (i.e., the current node) at the parent node level, and the grandparent node (i.e., the parent node of the parent node) has at most two occupied child nodes (i.e., the parent node and possibly one other node).
[0180] 2) 6N qualification: There is only one occupied child node (i.e. the current node) at the parent node level, and no occupied neighbor nodes (the neighbors mentioned here refer to the 6 neighbor nodes above, below, left, right, front, and back).
[0181] To accommodate different compression efficiencies and / or decoding times, IDCM has three possible inference methods. Inference method 1: If the current node meets both parent-based and 6N qualifications, DCM decoding is enabled. This inference method offers the best compression results, but at the expense of longer compression times. Inference method 2: If the current node meets 6N qualifications, DCM decoding is enabled. This inference method relaxes the DCM judgment criteria, leading to more nodes using DCM. Inference method 3: If the current node meets parent-based qualifications, DCM decoding is enabled. This inference method uses more relaxed judgment criteria, but results in lower compression efficiency.
[0182] If the current node meets the DCM decoding qualifications, it first decodes a binary flag to indicate whether the current node uses DCM. If the flag is 1, it means that the current node uses DCM; if the flag is 0, it means that the current node does not use DCM.
[0183] If the DCM mode is used, the following steps can be used to decode the current node.
[0184] First: Decode the binary syntax element direct_point_cnt_eq2. direct_point_cnt_eq2 indicates whether the current node contains two different points (i.e., the two points have different geometric information). If direct_point_cnt_eq2 is 1, it means that the current node contains two different points; if direct_point_cnt_eq2 is 0, it means that the current node only contains points with the same geometric information (it can contain only one point or multiple points with the same geometric information).
[0185] Second: If direct_point_cnt_eq2 is 0, decode the binary syntax element DupPointsCntGt0 to identify whether the current node contains duplicate points. If DupPointsCntGt0 is 1, it means that the current node contains duplicate points; if DupPointsCntGt0 is 0, it means that the current node does not contain duplicate points, that is, direct_dup_point_cnt=0. If DupPointsCntGt0 is 1, further decode the binary syntax element DupPointsCntGt1. DupPointsCntGt1 is used to identify whether the current node contains 1 duplicate point (that is, the geometric information of the two points is the same). If DupPointsCntGt1 is 1, it means that the current node contains more than 1 duplicate points; if DupPointsCntGt1 is 0, it means that the current node contains 1 duplicate point, direct_dup_point_cnt=1. If DupPointsCntGt1 is 1, further decode the syntax element DupPointsCntEg1. direct_dup_point_cnt=DupPointsCntEg1+2.
[0186] When entropy decoding DupPointsCntGt0, the first probability model can be used to entropy decode DupPointsCntGt0. The initial value of the first probability model (i.e., the probability that MPS is 0) can be set to 1. It is 0xffff at 16-bit binary precision. Since the probability that DupPointsCntGt0 takes the value of 0 is very high, setting the initial value of the first probability model to 1 is more consistent with the actual situation, which can minimize the process of the decoder continuously updating the MPS interval width based on the renormalization operation, thereby improving decoding efficiency. In addition, DupPointsCntGt0 and DupPointsCntGt0L (used to identify whether a multi-tree tree leaf node contains duplicate points) use different probability models.
[0187] After decoding DupPointsCntGt0, the value of the coding interval parameter can also be updated according to the value of DupPointsCntGt0. The coding interval parameter may include a first parameter and / or a second parameter. The first parameter is used to indicate the starting point of the coding interval. The first parameter can be represented by Low. The second parameter is used to indicate the width of the coding interval. The second parameter can be represented by Range. The initial value of the second parameter can be 510, represented by 9 bits. After updating the value of the coding interval parameter according to the value of DupPointsCntGt0, the first probability model can be updated according to the value of DupPointsCntGt0 and the updated value of the coding interval parameter.
[0188] For example, first, determine whether the value of DupPointsCntGt0 is equal to LPS or MPS, and then update Low and Range. See Figure 7, if Bin = LPS, then Low = Low + R MPS , Range = R LPS ; If Bin = MPS, then Low remains unchanged and Range is equal to R MPS . R MPS Indicates the interval width corresponding to MPS, R LPS Indicates the interval width corresponding to LPS.
[0189] Then, the probability model is updated using Bin value, Low, and Range.
[0190] As Range is updated, its value may become less than half the initial interval length, that is, less than 256. In this case, a renormalization process is required. Figure 8 illustrates the renormalization process. During the renormalization process, Low and Range are left-shifted until Range's value is greater than half the initial interval width. The left shift of Range expands the interval width, while the left shift of Low outputs bits. The number of bits left-shifted in both cases is the same.
[0191] This technical solution rationally uses the probability model and the correct initial value to further improve the G-PCC geometric coding efficiency. The bits per input point ratio (Bpip Ratio) under the condition of lossless compression of geometric information indicates: when the point cloud quality is not lost, the percentage of the encoding rate of this technical solution to the encoding rate of the related technology. The lower the value of this parameter, the greater the bit rate saved by this technical solution. Table 1 shows the test results of this technical solution. It can be seen from Table 1 that this technical solution has made a significant improvement in bit rate saving compared with the related technology.
[0192] Table 1 Bpip Ratio of the geometry-based solid content test model (GES-TM)-v3.0 lossless compression (CW condition)
[0193] Example 2: Multi-tree leaf node encoding and decoding
[0194] FIG11 is a flow chart of a decoding method according to an embodiment of the present application. The method of FIG11 can be applied to a point cloud decoder. The decoder can, for example, be a decoder supporting G-PCC.
[0195] In step S1110, the first identification information is decoded (such as entropy decoding) according to the first probability model. The first identification information is used to indicate whether the current node contains duplicate points. Different from the first embodiment, the current node mentioned here refers to the leaf node of a multi-tree (such as an octree, a quadtree or a binary tree). The first identification information can be, for example, a binary syntax element DupPointsCntGt0L. The value of the first identification information may include a value and b value. Among them, the value a can be, for example, 1, and the value b can be, for example, 0. If the value of the first identification information is value a, it can be indicated that the current node contains duplicate points. If the value of the first identification information is value b, it can be indicated that the leaf node of the multi-tree tree does not contain duplicate points.
[0196] The first probability model refers to a probability model used to entropy decode the first identification information. The MPS of the first probability model can be 0 (i.e., bin value 0), and the LPS can be 1 (i.e., bin value 1). The initial value of the first probability model can include the probability initial value of the MPS and / or the probability initial value of the LPS of the first probability model. In other words, the initial value of the first probability model can be used to represent the probability of the first probability model being 0 and / or 1.
[0197] In some implementations, the initial value of the first probability model is not equal to the first value (the first value corresponds to an equal probability of the MPS and the LPS). That is, in the first probability model, the initial interval width corresponding to the MPS is larger than the initial interval width corresponding to the LPS. Because the probability of the first identification information being 0 is very high, setting the initial value of the first probability model to be not equal to the first value is more consistent with actual conditions and can reduce the decoder's process of continuously updating the MPS interval width based on the renormalization operation, thereby improving decoding efficiency.
[0198] Exemplarily, the initial value of the first probability model can be set so that the probability of MPS is greater than or equal to 0.6, 0.7, 0.8 or 0.9. Optionally, the initial value of the first probability model (i.e., the probability that MPS is 0) can be set so that the probability of MPS is equal to 1. The initial value of the first probability model can be equal to 1, for example, or 0xffff at 16-bit binary precision. . Since the probability that the first identification information has a value of 0 is very high, setting the initial value of the first probability model to a value that makes the probability of MPS equal to 1 is more consistent with the actual situation, and can minimize the process of the decoder continuously updating the MPS interval width based on the renormalization operation, thereby improving decoding efficiency.
[0199] As mentioned above, the first probability model is used to decode the first identification information. In some implementations, in addition to being used to decode the first identification information, the first probability model can also be used to decode the second identification information. The second identification information is used to indicate whether the node using DCM contains duplicate points. The second identification information can be, for example, a binary syntax element DupPointsCntGt0. The value of the second identification information may include a value and b value. Among them, the value a can be, for example, 1, and the value b can be, for example, 0. If the value of the second identification information is a value, it can be indicated that the node using DCM contains duplicate points. If the value of the second identification information is b value, it can be indicated that the node using DCM does not contain duplicate points.
[0200] However, the actual probability of a node using DCM containing duplicate points is different from the actual probability of a multi-tree tree leaf node containing duplicate points. Using the same probability model for entropy decoding for both is inconsistent with the actual situation and may reduce decoding efficiency. Therefore, in other implementations, the second identification information can correspond to a second probability model (that is, the second identification information can be decoded using the second probability model). The probability models corresponding to the second identification information and the first identification information are set to different probability models, and the update processes of the two probability models do not affect each other, which helps to improve decoding efficiency.
[0201] 11 , in step S1120 , if the first identification information indicates that the current node contains duplicate points, the number of duplicate points contained in the current node is determined. For example, the number of duplicate points contained in the current node can be determined based on Exponential Golomb decoding.
[0202] After decoding the first identification information, the value of the coding interval parameter can also be updated according to the value of the first identification information. The coding interval parameter may include a first parameter and / or a second parameter. The first parameter is used to indicate the starting point of the coding interval (the starting point of the coding interval of the arithmetic encoder). The first parameter can be represented by Low. The second parameter is used to indicate the width of the coding interval. The second parameter can be represented by Range. The initial value of the second parameter can be 510, represented by 9 bits. After updating the value of the coding interval parameter according to the value of the first identification information, the first probability model can be updated according to the value of the first identification information and the updated value of the coding interval parameter.
[0203] For example, first, determine whether the value of the first identification information is equal to LPS or MPS, and then update Low and Range. See Figure 7, if Bin = LPS, then Low = Low + R MPS , Range = R LPS ; If Bin = MPS, then Low remains unchanged and Range is equal to R MPS . R MPS Indicates the interval width corresponding to MPS, R LPS Indicates the interval width corresponding to LPS.
[0204] Then, the probability model is updated using Bin value, Low, and Range.
[0205] As Range is updated, its value may become less than half the initial interval length, that is, less than 256. In this case, a renormalization process is required. Figure 8 illustrates the renormalization process. During the renormalization process, Low and Range are left-shifted until Range's value is greater than half the initial interval width. The left shift of Range expands the arithmetic encoder's interval width, while the left shift of Low increases the number of output bits. Both left shifts are the same.
[0206] The decoding method provided by the embodiment of the present application is described in detail above in conjunction with Figure 11. The encoding method provided by the embodiment of the present application is described in detail below in conjunction with Figure 12.
[0207] FIG12 is a flow chart of an encoding method according to an embodiment of the present application. The method of FIG12 can be applied to a point cloud encoder. The point cloud encoder can be, for example, an encoder that supports G-PCC.
[0208] In step S1210, the first identification information is encoded (such as entropy coding) according to the first probability model. The first identification information is used to indicate whether the current node contains duplicate points. Different from the first embodiment, the current node mentioned here refers to the leaf node of a multi-branch tree (such as an octree, a quadtree or a binary tree). The first identification information can be, for example, a binary syntax element DupPointsCntGt0L. The value of the first identification information may include a value and b value. Among them, the value a can be, for example, 1, and the value b can be, for example, 0. If the value of the first identification information is value a, it can be indicated that the current node contains duplicate points. If the value of the first identification information is value b, it can be indicated that the leaf node of the multi-branch tree does not contain duplicate points.
[0209] The first probability model refers to a probability model used to entropy encode the first identification information. The MPS of the first probability model can be 0 (i.e., bin value 0), and the LPS can be 1 (i.e., bin value 1). The initial value of the first probability model can include the probability initial value of the MPS and / or the probability initial value of the LPS of the first probability model. In other words, the initial value of the first probability model can be used to represent the probability of the first probability model being 0 and / or 1.
[0210] In some implementations, the initial value of the first probability model is not equal to the first value (the probability of the first value corresponding to the MPS and LPS is equal). That is, in the first probability model, the initial interval width corresponding to the MPS is larger than the initial interval width corresponding to the LPS. Because the probability of the first identification information taking a value of 0 is very high, setting the initial value of the first probability model to be not equal to the first value is more consistent with actual conditions and can reduce the encoder's process of continuously updating the MPS interval width based on the renormalization operation, thereby improving encoding efficiency.
[0211] Exemplarily, the setting of the initial value of the first probability model can make the probability of MPS greater than or equal to 0.6, 0.7, 0.8 or 0.9. Optionally, the setting of the initial value of the first probability model (i.e., the probability that the MPS is 0) can make the probability of MPS equal to 1. The initial value of the first probability model can be equal to 1, for example, or 0xffff at 16-bit binary precision. Since the probability that the first identification information takes a value of 0 is very high, setting the initial value of the first probability model to a value that makes the probability of MPS equal to 1 is more consistent with the actual situation, and can minimize the process of the decoder continuously updating the MPS interval width based on the renormalization operation, thereby improving decoding efficiency.
[0212] As mentioned above, the first probability model is used to encode the first identification information. In some implementations, in addition to being used to encode the first identification information, the first probability model can also be used to encode the second identification information. The second identification information is used to indicate whether the node using DCM contains duplicate points. The second identification information can be, for example, a binary syntax element DupPointsCntGt0. The value of the second identification information may include a value and b value. Among them, the value a can be, for example, 1, and the value b can be, for example, 0. If the value of the second identification information is a value, it can be indicated that the node using DCM contains duplicate points. If the value of the second identification information is b value, it can be indicated that the node using DCM does not contain duplicate points.
[0213] However, the actual probability of a node using DCM containing duplicate points is different from the actual probability of a multi-tree tree leaf node containing duplicate points. Using the same probability model for entropy coding for both is inconsistent with the actual situation and may reduce coding efficiency. Therefore, in other implementations, the second identification information can correspond to a second probability model (i.e., the second identification information can be encoded using a second probability model). The probability models corresponding to the second identification information and the first identification information are set to different probability models, and the update processes of the two probability models do not affect each other, which helps to improve coding efficiency.
[0214] 12 , in step S1220 , if the first identification information indicates that the current node contains duplicate points, the number of duplicate points contained in the current node is encoded, for example, the number of duplicate points contained in the current node can be encoded based on Exponential Golomb coding.
[0215] After encoding the first identification information, the value of the coding interval parameter can also be updated according to the value of the first identification information. The coding interval parameter may include a first parameter and / or a second parameter. The first parameter is used to indicate the starting point of the coding interval (the starting point of the coding interval of the arithmetic encoder). The first parameter can be represented by Low. The second parameter is used to indicate the width of the coding interval. The second parameter can be represented by Range. The initial value of the second parameter can be 510, represented by 9 bits. After updating the value of the coding interval parameter according to the value of the first identification information, the first probability model can be updated according to the value of the first identification information and the updated value of the coding interval parameter.
[0216] For example, first, determine whether the value of the first identification information is equal to LPS or MPS, and then update Low and Range. See Figure 7, if Bin = LPS, then Low = Low + R MPS , Range = R LPS ; If Bin = MPS, then Low remains unchanged and Range is equal to R MPS . R MPSIndicates the interval width corresponding to MPS, R LPS Indicates the interval width corresponding to LPS.
[0217] Then, the probability model is updated using Bin value, Low, and Range.
[0218] As Range is updated, its value may become less than half the initial interval length, that is, less than 256. In this case, a renormalization process is required. Figure 8 illustrates the renormalization process. During the renormalization process, Low and Range are left-shifted until Range's value is greater than half the initial interval width. The left shift of Range expands the arithmetic encoder's interval width, while the left shift of Low increases the number of output bits. Both left shifts are the same.
[0219] The second embodiment is described in more detail below with reference to specific examples. It should be noted that the following examples are only intended to help those skilled in the art understand the embodiments of the present application, and are not intended to limit the embodiments of the present application to the specific numerical values or specific scenarios illustrated. It is obvious that those skilled in the art can make various equivalent modifications or changes based on the examples given, and such modifications or changes also fall within the scope of the embodiments of the present application.
[0220] Encoding process:
[0221] In the multi-tree (such as octree) encoding of G-PCC, the multi-tree leaf nodes may contain duplicate points. The encoding method of the multi-tree leaf nodes includes the following steps. First, encode the binary syntax element DupPointsCntGt0L. DupPointsCntGt0L can be used to indicate whether the leaf node contains duplicate points. If DupPointsCntGt0L is 1, it means that the leaf node contains duplicate points; if DupPointsCntGt0L is 0, it means that the leaf node does not contain duplicate points. Then, when DupPointsCntGt0L is 1, the number of duplicate points is encoded using Exponential Columbus.
[0222] When encoding the binary syntax element DupPointsCntGt0L, the first probability model can be used to perform entropy coding on DupPointsCntGt0L. The initial value of the first probability model (i.e., the probability that MPS is 0) can be set to 1. It is 0xffff at 16-bit binary precision. Since the probability that DupPointsCntGt0L takes the value of 0 is very high, setting the initial value of the first probability model to 1 is more consistent with the actual situation, which can minimize the process of the encoder continuously updating the MPS interval width based on the renormalization operation, thereby improving the coding efficiency. In addition, DupPointsCntGt0L and DupPointsCntGt0 (used to identify whether the node using DCM contains duplicate points) use different probability models.
[0223] After encoding DupPointsCntGt0L, the value of the coding interval parameter can also be updated according to the value of DupPointsCntGt0L. The coding interval parameter may include a first parameter and / or a second parameter. The first parameter is used to indicate the starting point of the coding interval (the coding interval starting point of the arithmetic encoder). The first parameter can be represented by Low. The second parameter is used to indicate the width of the coding interval. The second parameter can be represented by Range. The initial value of the second parameter can be 510, represented by 9 bits. After updating the value of the coding interval parameter according to the value of DupPointsCntGt0L, the first probability model can be updated according to the value of DupPointsCntGt0L and the updated value of the coding interval parameter.
[0224] For example, first, determine whether the value of DupPointsCntGt0L is equal to LPS or MPS, and then update Low and Range. See Figure 7, if Bin = LPS, then Low = Low + R MPS , Range = R LPS ; If Bin = MPS, then Low remains unchanged and Range is equal to R MPS . R MPS Indicates the interval width corresponding to MPS, R LPS Indicates the interval width corresponding to LPS.
[0225] Then, the probability model is updated using Bin value, Low, and Range.
[0226] As Range is updated, its value may become less than half the initial interval length, that is, less than 256. In this case, a renormalization process is required. Figure 8 illustrates the renormalization process. During the renormalization process, Low and Range are left-shifted until Range's value is greater than half the initial interval width. The left shift of Range expands the arithmetic encoder's interval width, while the left shift of Low increases the number of output bits. Both left shifts are the same.
[0227] Decoding process:
[0228] The decoding method for a multitree leaf node includes the following steps. First, the binary syntax element DupPointsCntGt0L is decoded. If DupPointsCntGt0L is 1, it indicates that the leaf node contains duplicate points; if DupPointsCntGt0L is 0, it indicates that the leaf node does not contain duplicate points. If DupPointsCntGt0L is 1, Exponential Columbus decoding is continued to determine the number of duplicate points.
[0229] When encoding the binary syntax element DupPointsCntGt0L, the first probability model can be used to perform entropy decoding on DupPointsCntGt0L. The initial value of the first probability model (i.e., the probability that MPS is 0) can be set to 1. It is 0xffff at 16-bit binary precision. Since the probability that DupPointsCntGt0L takes the value of 0 is very high, setting the initial value of the first probability model to 1 is more consistent with the actual situation, which can minimize the process of the decoder continuously updating the MPS interval width based on the renormalization operation, thereby improving decoding efficiency. In addition, DupPointsCntGt0L and DupPointsCntGt0 (used to identify whether the node using DCM contains duplicate points) use different probability models.
[0230] After decoding DupPointsCntGt0L, the value of the coding interval parameter can also be updated according to the value of DupPointsCntGt0L. The coding interval parameter may include a first parameter and / or a second parameter. The first parameter is used to indicate the starting point of the coding interval. The first parameter can be represented by Low. The second parameter is used to indicate the width of the coding interval. The second parameter can be represented by Range. The initial value of the second parameter can be 510, represented by 9 bits. After the value of the coding interval parameter is updated according to the value of DupPointsCntGt0L, the first probability model can be updated according to the value of DupPointsCntGt0L and the updated value of the coding interval parameter.
[0231] For example, first, determine whether the value of DupPointsCntGt0L is equal to LPS or MPS, and then update Low and Range. See Figure 7, if Bin = LPS, then Low = Low + R MPS , Range = R LPS ; If Bin = MPS, then Low remains unchanged and Range is equal to R MPS . R MPS Indicates the interval width corresponding to MPS, R LPS Indicates the interval width corresponding to LPS.
[0232] Then, the probability model is updated using Bin value, Low, and Range.
[0233] As Range is updated, its value may become less than half the initial interval length, that is, less than 256. In this case, a renormalization process is required. Figure 8 illustrates the renormalization process. During the renormalization process, Low and Range are left-shifted until Range's value is greater than half the initial interval width. The left shift of Range expands the interval width, while the left shift of Low outputs bits. The number of bits left-shifted in both cases is the same.
[0234] This technical solution rationally utilizes a probability model and correct initial values to further improve the efficiency of G-PCC geometric coding. The Bpip Ratio under lossless compression of geometric information represents the percentage of the encoding bitrate of this technical solution compared to the encoding bitrate of related technologies, assuming no loss of point cloud quality. The lower the value of this parameter, the greater the bitrate savings achieved by this technical solution. Table 2 shows the test results of this technical solution, which shows that this technical solution achieves significant improvements in bitrate savings compared to related technologies.
[0235] Table 2 Bpip Ratio of GES-TM-v3.0 lossless compression (CW condition)
[0236] The method embodiment of the present application is described in detail above in conjunction with Figures 1 to 12. The device embodiment of the present application is described in detail below in conjunction with Figures 13 to 16. It should be understood that the description of the method embodiment corresponds to the description of the device embodiment. Therefore, for parts not described in detail, reference can be made to the above method embodiment.
[0237] FIG13 is a flow chart of a point cloud decoder provided by an embodiment of the present application. The point cloud decoder 1300 shown in FIG13 includes a decoding unit 1310 and a determination unit 1320. The decoding unit 1310 is configured to decode first identification information according to a first probability model, wherein the first identification information is used to indicate whether the current node contains duplicate points; the determination unit 1320 is configured to determine the number of duplicate points contained in the current node if the first identification information indicates that the current node contains duplicate points; wherein the first probability model satisfies at least one of the following: an initial value of the first probability model is not equal to a first value, wherein the first value corresponds to: the probabilities of MPS and LPS are equal; the first probability model is different from the second probability model, wherein the second probability model is a probability model corresponding to the second identification information; wherein the first identification information is used to indicate whether a node using a direct coding mode contains duplicate points, and the second identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points; or, the first identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points, and the second identification information is used to indicate whether a node using a direct coding mode contains duplicate points.
[0238] In some implementations, the initial value of the first probability model is set so that the probability of the MPS is greater than or equal to 0.8.
[0239] In some implementations, the initial value of the first probability model is set so that the probability of the MPS is equal to 1.
[0240] In some implementations, the MPS is 0 and the LPS is 1.
[0241] In some implementations, the first identification information is used to indicate whether a node using a direct coding mode contains repeated points.
[0242] In some implementations, the decoding unit 1310 is configured to: decode third identification information, where the third identification information is used to indicate whether the current node contains points with different geometric information; if the third identification information indicates that the current node only contains points with the same geometric information, then decode the first identification information according to the first probability model.
[0243] In some implementations, the determination unit 1320 is configured to: decode fourth identification information, where the fourth identification information is used to indicate whether the current node contains 1 duplicate point; if the fourth identification information indicates that the current node contains 1 duplicate point, determine that the number of duplicate points is 1.
[0244] In some implementations, the determination unit 1320 is further configured to: if the fourth identification information indicates that the current node includes multiple duplicate points, decode the fifth identification information, and the fifth identification information is used to determine the number of duplicate points contained in the current node; and determine the number of duplicate points contained in the current node based on the value of the fifth identification information.
[0245] In some implementations, the determining unit 1320 is configured to determine the sum of the value of the fifth identification information and 2 as the number of repeated points included in the current node.
[0246] In some implementations, decoding the fifth identification information includes: decoding the fifth identification information based on 0th-order Exponential Golomb decoding.
[0247] In some implementations, the determining unit 1320 is further configured to: before decoding the first identification information according to the first probability model, determine whether the current node uses a direct coding mode according to information of a parent node of the current node.
[0248] In some implementations, the determination unit 1320 is configured to: determine whether the first condition and / or the second condition are met based on the information of the parent node; if the first condition and / or the second condition are met, determine that the current node uses a direct coding mode; wherein the first condition includes that the number of occupied child nodes of the parent node is 1, and the number of occupied child nodes of the grandparent node of the current node is less than or equal to 2; wherein the second condition includes that the number of occupied child nodes of the parent node is 1, and none of the neighboring nodes of the parent node are occupied.
[0249] In some implementations, the decoding unit 1310 is further configured to: if the current node does not use the direct coding mode, perform multi-tree decoding on the current node.
[0250] In some implementations, the first identification information is used to indicate whether a leaf node of the multi-branch tree contains duplicate points.
[0251] In some implementations, the determining unit 1320 is configured to: determine the number of repeated points contained in the current node based on Exponential Golomb decoding.
[0252] In some implementations, the point cloud decoder 1300 also includes: an updating unit, configured to: update the value of the coding interval parameter according to the value of the first identification information, the coding interval parameter includes a first parameter and / or a second parameter, the first parameter is used to indicate the starting point of the coding interval, and the second parameter is used to indicate the width of the coding interval; update the first probability model according to the value of the first identification information and the updated value of the coding interval parameter.
[0253] In some implementations, the update unit is configured to: if the value of the first identification information is equal to the MPS, determine the probability of the MPS as the updated value of the second parameter; and / or if the value of the first identification information is equal to the LPS, determine the sum of the value of the first parameter and the probability of the MPS as the updated value of the first parameter, and determine the probability of the LPS as the updated value of the second parameter.
[0254] In some implementations, the updating unit is further configured to: if the updated value of the second parameter is less than half of the initial value of the second parameter, perform a left shift operation on the first parameter and the second parameter.
[0255] It is understandable that in the embodiments of the present application, a "unit" can be a portion of a circuit, a portion of a processor, a portion of a program or software, etc., and of course it can also be a module, or it can be non-modular. Moreover, the various components in this embodiment can be integrated into a processing unit, or each unit can exist physically separately, or two or more units can be integrated into a single unit. The above-mentioned integrated units can be implemented in the form of hardware or in the form of software functional modules.
[0256] If the integrated unit is implemented as a software functional module and not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this embodiment, or the portion that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions for causing a computer device (which can be a personal computer, server, or network device, etc.) or a processor to perform all or part of the steps of the method described in this embodiment. The aforementioned storage medium includes various media that can store program code, such as a USB flash drive, a mobile hard drive, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk.
[0257] Therefore, an embodiment of the present application provides a computer-readable storage medium, which is applied to the point cloud decoder 1300. The computer-readable storage medium stores a computer program, and when the computer program is executed by a processor, it implements the aforementioned decoding method.
[0258] Based on the composition of the above-mentioned point cloud decoder and the computer-readable storage medium, refer to Figure 14, which shows a specific hardware structure diagram of the point cloud decoder provided by an embodiment of the present application. As shown in Figure 14, the point cloud decoder 1400 may include: a communication interface 1410, a memory 1420 and a processor 1430; each component is coupled together through a bus system 1440. It can be understood that the bus system 1440 is used to achieve connection and communication between these components. In addition to the data bus, the bus system 1440 also includes a power bus, a control bus and a status signal bus. However, for the sake of clarity, various buses are labeled as bus system 1440 in Figure 14. Among them,
[0259] The communication interface 1410 is used to receive and send signals when sending and receiving information with other external network elements.
[0260] The memory 1420 is used to store computer programs.
[0261] The processor 1430 is configured to, when running the computer program, execute:
[0262] Decoding first identification information according to a first probability model, where the first identification information is used to indicate whether the current node contains a duplicate point;
[0263] If the first identification information indicates that the current node includes duplicate points, determining the number of duplicate points included in the current node;
[0264] The first probability model satisfies at least one of the following:
[0265] The initial value of the first probability model is not equal to a first value, the first value corresponding to: equal probabilities of MPS and LPS;
[0266] The first probability model is different from the second probability model, and the second probability model is a probability model corresponding to the second identification information; wherein the first identification information is used to indicate whether a node using a direct coding mode contains duplicate points, and the second identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points; or, the first identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points, and the second identification information is used to indicate whether a node using a direct coding mode contains duplicate points.
[0267] It is understood that the memory 1420 in the embodiment of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. By way of example and not limitation, many forms of RAM are available, such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate synchronous DRAM (DDRSDRAM), enhanced synchronous DRAM (ESDRAM), synchronous link DRAM (SLDRAM), and direct RAM bus random access memory (DRRAM). The memory 1420 of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.
[0268] The processor 1430 may be an integrated circuit chip with signal processing capabilities. During implementation, each step of the above method can be completed by hardware integrated logic circuits or software instructions in the processor 1430. The above-mentioned processor 1430 can be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. The various methods, steps, and logic block diagrams disclosed in the embodiments of this application can be implemented or executed. The general-purpose processor can be a microprocessor or any conventional processor. The steps of the method disclosed in the embodiments of this application can be directly implemented and executed by a hardware decoding processor, or by a combination of hardware and software modules in the decoding processor. The software module can be located in a storage medium mature in the art, such as random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, etc. The storage medium is located in the memory 1420 , and the processor 1430 reads the information in the memory 1420 and completes the steps of the above method in combination with its hardware.
[0269] It is to be understood that these embodiments described in the present application can be implemented with hardware, software, firmware, middleware, microcode or its combination.For hardware implementation, the processing unit can be implemented in one or more application specific integrated circuits (Application Specific Integrated Circuits, ASIC), digital signal processor (Digital Signal Processing, DSP), digital signal processing equipment (DSP Device, DSPD), programmable logic device (Programmable Logic Device, PLD), field programmable gate array (Field-Programmable Gate Array, FPGA), general-purpose processor, controller, microcontroller, microprocessor, other electronic units for performing functions described in the present application or its combination.For software implementation, the technology described in the present application can be realized by the module (such as process, function etc.) that performs functions described in the present application. The software code can be stored in a memory and executed by a processor. The memory can be implemented in the processor or outside the processor.
[0270] Optionally, as another embodiment, the processor 1430 is further configured to execute the decoding method described in the above embodiment when running the computer program.
[0271] FIG15 is a schematic diagram of the structure of a point cloud encoder provided by an embodiment of the present application. The point cloud encoder 1500 of FIG15 includes a first encoding unit 1510 and a second encoding unit 1520. The first encoding unit 1510 is configured to encode first identification information according to a first probability model, wherein the first identification information is used to indicate whether the current node contains duplicate points; the second encoding unit 1520 is configured to encode the number of duplicate points contained in the current node if the first identification information indicates that the current node contains duplicate points; wherein the first probability model satisfies at least one of the following: an initial value of the first probability model is not equal to a first value, wherein the first value corresponds to: the probabilities of the MPS and the LPS are equal; the first probability model is different from the second probability model, wherein the second probability model is a probability model corresponding to the second identification information; wherein the first identification information is used to indicate whether a node using a direct coding mode contains duplicate points, and the second identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points; or, the first identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points, and the second identification information is used to indicate whether a node using a direct coding mode contains duplicate points.
[0272] In some implementations, the initial value of the first probability model is set so that the probability of the MPS is greater than or equal to 0.8.
[0273] In some implementations, the initial value of the first probability model is set so that the probability of the MPS is equal to 1.
[0274] In some implementations, the MPS is 0 and the LPS is 1.
[0275] In some implementations, the first identification information is used to indicate whether a node using a direct coding mode contains repeated points.
[0276] In some implementations, the first encoding unit 1510 is configured to: encode third identification information, where the third identification information is used to indicate whether the current node contains points with different geometric information; if the third identification information indicates that the current node only contains points with the same geometric information, then encode the first identification information according to the first probability model.
[0277] In some implementations, the second encoding unit 1520 is configured to: encode fourth identification information, where the fourth identification information is used to indicate whether the current node contains 1 repeated point. If the fourth identification information indicates that the current node contains 1 repeated point, the number of repeated points is 1.
[0278] In some implementations, the second encoding unit 1520 is further configured to: if the fourth identification information indicates that the current node includes multiple repeated points, encode the fifth identification information, and the number of repeated points is equal to the sum of the value of the fifth identification information and 2.
[0279] In some implementations, the second encoding unit 1520 is configured to: encode the fifth identification information based on 0th-order Exponential Golomb coding.
[0280] In some implementations, the encoder 1500 further includes a first determination unit configured to determine whether the current node uses a direct coding mode based on information of a parent node of the current node before encoding the first identification information according to the first probability model.
[0281] In some implementations, the determination unit is configured to: determine whether the first condition and / or the second condition is met based on the information of the parent node; if the first condition and / or the second condition is met, determine that the current node uses a direct coding mode; wherein the first condition includes that the number of occupied child nodes of the parent node is 1, and the number of occupied child nodes of the grandparent node of the current node is less than or equal to 2; wherein the second condition includes that the number of occupied child nodes of the parent node is 1, and none of the neighboring nodes of the parent node are occupied.
[0282] In some implementations, the encoder 1500 further includes a third encoding unit configured to: if the current node does not use the direct encoding mode, perform multi-tree encoding on the current node.
[0283] In some implementations, the first identification information is used to indicate whether a leaf node of the multi-branch tree contains duplicate points.
[0284] In some implementations, the second encoding unit 1520 is configured to: encode the number of repeated points contained in the current node based on exponential Golomb coding.
[0285] In some implementations, the encoder 1500 also includes an updating unit configured to: update the value of the coding interval parameter according to the value of the first identification information, the coding interval parameter including a first parameter and / or a second parameter, the first parameter is used to indicate the starting point of the coding interval, and the second parameter is used to indicate the width of the coding interval; update the first probability model according to the value of the first identification information and the updated value of the coding interval parameter.
[0286] In some implementations, the update unit is configured to: if the value of the first identification information is equal to the MPS, determine the probability of the MPS as the updated value of the second parameter; and / or, if the value of the first identification information is equal to the LPS, determine the sum of the value of the first parameter and the probability of the MPS as the updated value of the first parameter, and determine the probability of the LPS as the updated value of the second parameter.
[0287] In some implementations, the updating unit is further configured to: if the updated value of the second parameter is less than half of the initial value of the second parameter, perform a left shift operation on the first parameter and the second parameter.
[0288] It is understandable that in the embodiments of the present application, a "unit" can be a portion of a circuit, a portion of a processor, a portion of a program or software, etc., and of course it can also be a module, or it can be non-modular. Moreover, the various components in this embodiment can be integrated into a processing unit, or each unit can exist physically separately, or two or more units can be integrated into a single unit. The above-mentioned integrated units can be implemented in the form of hardware or in the form of software functional modules.
[0289] If the integrated unit is implemented as a software functional module and is not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this embodiment, or the portion that contributes to the prior art, or all or part of the technical solution can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions for causing a computer device (which can be a personal computer, server, or network device, etc.) or a processor to execute all or part of the steps of the method described in this embodiment. The aforementioned storage medium includes various media that can store program code, such as a USB flash drive, a mobile hard drive, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk.
[0290] Therefore, an embodiment of the present application provides a computer-readable storage medium, which is applied to the point cloud encoder 1500. The computer-readable storage medium stores a computer program, and when the computer program is executed by a processor, it implements the encoding method in the aforementioned embodiment.
[0291] Based on the composition of the above-mentioned encoder 1500 and the computer-readable storage medium, refer to Figure 16, which shows a specific hardware structure diagram of the point cloud encoder provided by an embodiment of the present application. As shown in Figure 16, the point cloud encoder 1600 may include: a communication interface 1610, a memory 1620 and a processor 1630; each component is coupled together through a bus system 1640. It can be understood that the bus system 1640 is used to achieve connection and communication between these components. In addition to the data bus, the bus system 1640 also includes a power bus, a control bus and a status signal bus. However, for the sake of clarity, various buses are labeled as bus system 1640 in Figure 16. Among them,
[0292] The communication interface 1610 is used to receive and send signals when sending and receiving information with other external network elements.
[0293] The memory 1620 is used to store computer programs.
[0294] The processor 1630 is configured to, when running the computer program, execute:
[0295] Encoding first identification information according to a first probability model, where the first identification information is used to indicate whether the current node contains a duplicate point;
[0296] If the first identification information indicates that the current node includes repeated points, encoding the number of repeated points included in the current node;
[0297] The first probability model satisfies at least one of the following:
[0298] The initial value of the first probability model is not equal to a first value, the first value corresponding to: equal probabilities of MPS and LPS;
[0299] The first probability model is different from the second probability model, and the second probability model is a probability model corresponding to the second identification information; wherein the first identification information is used to indicate whether a node using a direct coding mode contains duplicate points, and the second identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points; or, the first identification information is used to indicate whether a leaf node of a multi-branch tree contains duplicate points, and the second identification information is used to indicate whether a node using a direct coding mode contains duplicate points.
[0300] It is understood that the memory 1620 in the embodiment of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. By way of example and not limitation, many forms of RAM are available, such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate synchronous DRAM (DDRSDRAM), enhanced synchronous DRAM (ESDRAM), synchronous link DRAM (SLDRAM), and direct RAM bus random access memory (DRRAM). The memory 1620 of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.
[0301] The processor 1630 may be an integrated circuit chip with signal processing capabilities. During implementation, each step of the above method can be completed by hardware integrated logic circuits or software instructions in the processor 1630. The above-mentioned processor 1630 can be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. The various methods, steps, and logic block diagrams disclosed in the embodiments of this application can be implemented or executed. The general-purpose processor can be a microprocessor or any conventional processor. The steps of the method disclosed in the embodiments of this application can be directly implemented and executed by a hardware decoding processor, or by a combination of hardware and software modules in the decoding processor. The software module can be located in a storage medium mature in the art, such as random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, etc. The storage medium is located in the memory 1620 , and the processor 1630 reads the information in the memory 1620 and completes the steps of the above method in combination with its hardware.
[0302] It is to be understood that these embodiments described in the present application can be implemented with hardware, software, firmware, middleware, microcode or its combination.For hardware implementation, the processing unit can be implemented in one or more application specific integrated circuits (Application Specific Integrated Circuits, ASIC), digital signal processor (Digital Signal Processing, DSP), digital signal processing equipment (DSP Device, DSPD), programmable logic device (Programmable Logic Device, PLD), field programmable gate array (Field-Programmable Gate Array, FPGA), general-purpose processor, controller, microcontroller, microprocessor, other electronic units for performing functions described in the present application or its combination.For software implementation, the technology described in the present application can be realized by the module (such as process, function etc.) that performs functions described in the present application. The software code can be stored in a memory and executed by a processor. The memory can be implemented in the processor or outside the processor.
[0303] Optionally, as another embodiment, the processor 1630 is further configured to execute the encoding method described in the above embodiment when running the computer program.
[0304] It should be noted that, in this application, the terms "comprises," "includes," or any other variations thereof are intended to encompass non-exclusive inclusion, such that a process, method, article, or apparatus comprising a series of elements includes not only those elements but also other elements not explicitly listed, or elements inherent to such process, method, article, or apparatus. In the absence of further limitations, an element defined by the phrase "comprising a ..." does not exclude the presence of other identical elements in the process, method, article, or apparatus comprising the element.
[0305] The serial numbers of the above embodiments of the present application are for description only and do not represent the advantages or disadvantages of the embodiments.
[0306] The methods disclosed in the several method embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments.
[0307] The features disclosed in the several product embodiments provided in this application can be arbitrarily combined without conflict to obtain new product embodiments.
[0308] The features disclosed in the several method or device embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments or device embodiments.
[0309] The above description is merely a specific embodiment of the present application, but the scope of protection of the present application is not limited thereto. Any changes or substitutions that can be easily conceived by a person skilled in the art within the technical scope disclosed in this application should be included in the scope of protection of this application. Therefore, the scope of protection of this application should be based on the scope of protection of the claims.
Claims
1. A decoding method, applied to a point cloud decoder, comprising: Decoding first identification information according to a first probability model, where the first identification information is used to indicate whether the current node contains duplicate points; If the first identification information indicates that the current node contains duplicate points, determining the number of duplicate points contained in the current node; Wherein, the first probability model satisfies at least one of the following: The initial value of the first probability model is not equal to a first value, and the first value corresponds to: the probabilities of the maximum probability symbol MPS and the minimum probability symbol LPS being equal; The first probability model is different from a second probability model, and the second probability model is the probability model corresponding to second identification information; Wherein, the first identification information is used to indicate whether a node using a direct coding mode contains duplicate points, and the second identification information is used to indicate whether a leaf node of a multi - way tree contains duplicate points; or, The first identification information is used to indicate whether a leaf node of a multi - way tree contains duplicate points, and the second identification information is used to indicate whether a node using a direct coding mode contains duplicate points.
2. The method according to claim 1, wherein, The initial value of the first probability model is set such that the probability of the MPS is greater than or equal to 0.
8.
3. The method according to claim 1, wherein The initial value of the first probability model is set such that the probability of the MPS is equal to 1.
4. The method according to claim 1, wherein, The MPS is 0 and the LPS is 1.
5. The method according to claim 1, wherein the first identification information is used to indicate whether a node using a direct coding mode contains duplicate points.
6. The method according to claim 5, wherein, The decoding the first identification information according to the first probability model includes: Decoding third identification information, where the third identification information is used to indicate whether the current node contains points with different geometric information; If the third identification information indicates that the current node only contains points with the same geometric information, decoding the first identification information according to the first probability model.
7. The method according to claim 5, wherein The determining the number of duplicate points contained in the current node includes: Decoding fourth identification information, where the fourth identification information is used to indicate whether the current node contains 1 duplicate point; If the fourth identification information indicates that the current node contains 1 duplicate point, determining that the number of duplicate points is 1.
8. The method according to claim 7, wherein The determining the number of duplicate points contained in the current node further includes: If the fourth identification information indicates that the current node includes multiple duplicate points, decoding fifth identification information, where the fifth identification information is used to determine the number of duplicate points contained in the current node; Determining the number of duplicate points contained in the current node according to the value of the fifth identification information.
9. The method according to claim 8, wherein, The determining the number of duplicate points contained in the current node according to the value of the fifth identification information includes: Determining the sum of the value of the fifth identification information and 2 as the number of duplicate points contained in the current node.
10. The method according to claim 8 or 9, wherein, The decoding the fifth identification information includes: Decoding the fifth identification information based on 0 - order exponential Golomb.
11. The method according to claim 5, wherein, Before the decoding the first identification information according to the first probability model, the method further includes: Determining whether the current node uses a direct coding mode according to the information of the parent node of the current node.
12. The method according to claim 11, wherein, Determining whether the current node uses the direct coding mode according to the information of the parent node of the current node includes: Determining whether the first condition and / or the second condition is satisfied according to the information of the parent node; If the first condition and / or the second condition is satisfied, determining that the current node uses the direct coding mode; Wherein, the first condition includes that the number of occupied child nodes of the parent node is 1, and the number of occupied child nodes of the grandparent node of the current node is less than or equal to 2; Wherein, the second condition includes that the number of occupied child nodes of the parent node is 1, and none of the neighbor nodes of the parent node are occupied.
13. The method according to claim 11, wherein, The method further includes: If the current node does not use the direct coding mode, performing multi-way tree decoding on the current node.
14. The method according to claim 1, wherein the first identification information is used to indicate whether the leaf node of the multi-way tree contains duplicate points.
15. The method according to claim 14, wherein determining the number of duplicate points included in the current node includes: Decoding the number of duplicate points included in the current node based on exponential Golomb.
16. The method according to claim 1, wherein The method further includes: Updating the value of the coding interval parameter according to the value of the first identification information, where the coding interval parameter includes a first parameter and / or a second parameter, the first parameter is used to indicate the starting point of the coding interval, and the second parameter is used to indicate the width of the coding interval; Updating the first probability model according to the value of the first identification information and the updated value of the coding interval parameter.
17. The method according to claim 16, wherein, The updating the value of the coding interval parameter according to the value of the first identification information includes: If the value of the first identification information is equal to MPS, determining the probability of MPS as the updated value of the second parameter; and / or If the value of the first identification information is equal to LPS, determining the sum of the value of the first parameter and the probability of MPS as the updated value of the first parameter, and determining the probability of LPS as the updated value of the second parameter.
18. The method according to claim 17, wherein, The method further includes: If the updated value of the second parameter is less than half of the initial value of the second parameter, performing a left shift operation on the first parameter and the second parameter.
19. An encoding method applied to a point cloud encoder, including: Encoding the first identification information according to the first probability model, where the first identification information is used to indicate whether the current node contains duplicate points; If the first identification information indicates that the current node contains duplicate points, encoding the number of duplicate points included in the current node; Wherein, the first probability model satisfies at least one of the following: The initial value of the first probability model is not equal to the first value, and the first value corresponds to: the probabilities of the maximum probability symbol MPS and the minimum probability symbol LPS are equal; The first probability model is different from the second probability model, and the second probability model is the probability model corresponding to the second identification information; Wherein, the first identification information is used to indicate whether the node using the direct coding mode contains duplicate points, and the second identification information is used to indicate whether the leaf node of the multi-way tree contains duplicate points; or, The first identification information is used to indicate whether the leaf nodes of the multi-way tree contain duplicate points, and the second identification information is used to indicate whether the nodes using the direct coding mode contain duplicate points.
20. The method according to claim 19, wherein, The initial value of the first probability model is set such that the probability of the MPS is greater than or equal to 0.
8.
21. The method according to claim 19, wherein, The initial value of the first probability model is set such that the probability of the MPS is equal to 1.
22. The method according to claim 19, wherein, The MPS is 0 and the LPS is 1.
23. The method according to claim 19, wherein the first identification information is used to indicate whether the nodes using the direct coding mode contain duplicate points.
24. The method according to claim 23, wherein, The encoding of the first identification information according to the first probability model includes: Encoding third identification information, where the third identification information is used to indicate whether the current node contains points with different geometric information; If the third identification information indicates that the current node only contains points with the same geometric information, then encode the first identification information according to the first probability model.
25. The method according to claim 23, wherein, The encoding of the number of duplicate points contained in the current node includes: Encoding fourth identification information, where the fourth identification information is used to indicate whether the current node contains one duplicate point. If the fourth identification information indicates that the current node contains one duplicate point, then the number of duplicate points is 1.
26. The method according to claim 25, wherein, The encoding of the number of duplicate points contained in the current node further includes: If the fourth identification information indicates that the current node includes multiple duplicate points, then encode fifth identification information, and the number of duplicate points is equal to the value of the fifth identification information plus 2.
27. The method according to claim 26, wherein, The encoding of the fifth identification information includes: Encoding the fifth identification information based on 0th order exponential Golomb coding.
28. The method according to claim 23, wherein, Before encoding the first identification information according to the first probability model, the method further includes: Determining whether the current node uses the direct coding mode according to the information of the parent node of the current node.
29. The method according to claim 28, wherein, The determining whether the current node uses the direct coding mode according to the information of the parent node of the current node includes: Determining whether the first condition and / or the second condition is satisfied according to the information of the parent node; If the first condition and / or the second condition is satisfied, then determine that the current node uses the direct coding mode; Wherein, the first condition includes that the number of occupied child nodes of the parent node is 1, and the number of occupied child nodes of the grandparent node of the current node is less than or equal to 2; Wherein, the second condition includes that the number of occupied child nodes of the parent node is 1, and none of the neighbor nodes of the parent node are occupied.
30. The method according to claim 28, wherein, The method further includes: If the current node does not use the direct coding mode, then perform multi-way tree coding on the current node.
31. The method according to claim 19, wherein the first identification information is used to indicate whether the leaf nodes of the multi-way tree contain duplicate points.
32. The method according to claim 31, wherein the encoding of the number of duplicate points contained in the current node includes: Encoding the number of duplicate points contained in the current node based on exponential Golomb coding.
33. The method according to claim 19, wherein, The method further includes: Updating the value of the coding interval parameter according to the value of the first identification information, where the coding interval parameter includes a first parameter and / or a second parameter, the first parameter is used to indicate the starting point of the coding interval, and the second parameter is used to indicate the width of the coding interval; Updating the first probability model according to the value of the first identification information and the updated value of the coding interval parameter.
34. The method according to claim 33, wherein, The updating the value of the coding interval parameter according to the value of the first identification information includes: If the value of the first identification information is equal to MPS, determining the probability of the MPS as the updated value of the second parameter; and / or If the value of the first identification information is equal to LPS, determining the sum of the value of the first parameter and the probability of MPS as the updated value of the first parameter, and determining the probability of the LPS as the updated value of the second parameter.
35. The method according to claim 34, wherein, The method further includes: If the updated value of the second parameter is less than half of the initial value of the second parameter, performing a left shift operation on the first parameter and the second parameter.
36. A point cloud decoder, comprising: A decoding unit configured to decode first identification information according to a first probability model, where the first identification information is used to indicate whether the current node contains duplicate points; A determining unit configured to determine the number of duplicate points contained in the current node if the first identification information indicates that the current node contains duplicate points; Wherein, the first probability model satisfies at least one of the following: The initial value of the first probability model is not equal to a first value, and the first value corresponds to: the probabilities of the maximum probability symbol MPS and the minimum probability symbol LPS being equal; The first probability model is different from a second probability model, and the second probability model is the probability model corresponding to second identification information; Wherein, the first identification information is used to indicate whether a node using a direct coding mode contains duplicate points, and the second identification information is used to indicate whether a leaf node of a multi-way tree contains duplicate points; or, The first identification information is used to indicate whether a leaf node of a multi-way tree contains duplicate points, and the second identification information is used to indicate whether a node using a direct coding mode contains duplicate points.
37. A point cloud decoder, comprising: A memory for storing a computer program; A processor for executing the method according to any one of claims 1 to 18 when running the computer program.
38. A point cloud encoder, comprising: A first encoding unit configured to encode first identification information according to a first probability model, where the first identification information is used to indicate whether the current node contains duplicate points; A second encoding unit configured to encode the number of duplicate points contained in the current node if the first identification information indicates that the current node contains duplicate points; Wherein, the first probability model satisfies at least one of the following: The initial value of the first probability model is not equal to a first value, and the first value corresponds to: the probabilities of the maximum probability symbol MPS and the minimum probability symbol LPS being equal; The first probability model is different from a second probability model, and the second probability model is the probability model corresponding to second identification information; Wherein, the first identification information is used to indicate whether the nodes using the direct coding mode contain duplicate points, and the second identification information is used to indicate whether the leaf nodes of the multi - fork tree contain duplicate points; or, The first identification information is used to indicate whether the leaf nodes of the multi - fork tree contain duplicate points, and the second identification information is used to indicate whether the nodes using the direct coding mode contain duplicate points.
39. A point cloud encoder, comprising: A memory for storing a computer program; A processor for, when running the computer program, executing the method according to any one of claims 19 to 35.
40. A non-volatile computer-readable storage medium storing a bitstream, the bitstream being generated by an encoding method using an encoder, or the bitstream being decoded by a decoding method using a decoder, wherein, The decoding method is the method according to any one of claims 1 to 18, and the encoding method is the method according to any one of claims 19 to 35.
41. A bitstream, the bitstream comprising the bitstream generated by the method according to any one of claims 19 to 35.
42. A computer-readable storage medium, wherein, The computer - readable storage medium stores a computer program, and when the computer program is executed, it implements the method according to any one of claims 1 to 18 or 19 to 35.