Decoding methods, encoding methods, decoders, and encoders

By combining the zero-run-length decoding algorithm to improve entropy decoding performance, the limitations of point cloud data storage and transmission bandwidth are solved, enabling more efficient point cloud data management and transmission.

CN119343925BActive Publication Date: 2026-05-26GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
View PDF 3 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
Filing Date
2022-06-17
Publication Date
2026-05-26

Smart Images

  • Figure CN119343925B_ABST
    Figure CN119343925B_ABST
Patent Text Reader

Abstract

This application provides a decoding method, an encoding method, a decoder, and an encoder. The decoding method includes: obtaining a value to be decoded based on a bitstream of a point cloud; decoding the value to be decoded using at least one entropy decoding algorithm maintained by the decoder to obtain a target decoded value; the target decoded value is a zero-run value or the quotient of the zero-run value; wherein the quotient of the zero-run value is determined based on the ratio between the zero-run value and a preset value. This application combines at least one entropy decoding algorithm maintained by the decoder into the zero-run decoding process, which can improve the entropy decoding performance.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of encoding and decoding technology, and more specifically, to decoding methods, encoding methods, decoders, and encoders. Background Technology

[0002] Point clouds are becoming increasingly prevalent in various fields, such as virtual / augmented reality, robotics, geographic information systems, and medicine. With the continuous improvement in the accuracy and speed of scanning equipment, it is possible to accurately acquire large amounts of point clouds from the surface of objects; often, a single scene can correspond to hundreds of thousands of points. This massive number of points also presents challenges for computer storage and transmission. Therefore, point compression has become a hot topic.

[0003] For point cloud compression, the main focus is on compressing its geometric and attribute information. Specifically, the encoder first divides the point cloud's geometric information into an octree, then uses an entropy coding algorithm to entropy-encode the geometric information expressed through the octree structure to obtain a geometric bitstream. Simultaneously, the encoder reconstructs the geometric information based on the octree structure, predicts the attribute information of the current point based on the reconstructed geometric information, and obtains the residual of the current point by subtracting it from the original attribute information. This residual is then quantized to obtain the quantized residual, and entropy coding is used to entropy-encode the quantized residual to obtain the attribute bitstream.

[0004] However, improving the performance of entropy encoding and decoding remains a critical technical problem that needs to be solved in this field. Summary of the Invention

[0005] This application provides a decoding method, an encoding method, a decoder, and an encoder, which can improve entropy decoding performance.

[0006] Firstly, this application provides a decoding method, including:

[0007] Obtain the value to be decoded from the bitstream of point cloud;

[0008] The value to be decoded is decoded using at least one entropy decoding algorithm maintained by the decoder to obtain a target decoded value; the target decoded value is a zero run value or the quotient of the zero run value; wherein the quotient of the zero run value is determined according to the ratio between the zero run value and a preset value.

[0009] Secondly, this application provides an encoding method, including:

[0010] The value to be encoded is determined based on the zero run value;

[0011] The value to be encoded is encoded using at least one entropy coding algorithm maintained by the encoder.

[0012] Thirdly, this application provides a decoder, including:

[0013] The acquisition unit is used to acquire the value to be decoded based on the bit stream of the point cloud;

[0014] A decoding unit is used to decode the value to be decoded using at least one entropy decoding algorithm maintained by the decoder to obtain a target decoded value.

[0015] Fourthly, this application provides an encoder, comprising:

[0016] The acquisition unit is used to determine the value to be encoded based on the zero run value;

[0017] An encoding unit is used to encode the value to be encoded using at least one entropy encoding algorithm maintained by the encoder.

[0018] Fifthly, this application provides a decoder, comprising:

[0019] Processor, adapted to implement computer instructions; and,

[0020] A computer-readable storage medium storing computer instructions adapted for loading by a processor and executing the decoding method of the first aspect or its implementations described above.

[0021] In one implementation, there are one or more processors and one or more memories.

[0022] In one implementation, the computer-readable storage medium may be integrated with the processor, or the computer-readable storage medium may be disposed separately from the processor.

[0023] Sixthly, this application provides an encoder, comprising:

[0024] Processor, adapted to implement computer instructions; and,

[0025] A computer-readable storage medium storing computer instructions adapted for loading by a processor and executing the encoding methods of the second aspect above or its various implementations.

[0026] In one implementation, there are one or more processors and one or more memories.

[0027] In one implementation, the computer-readable storage medium may be integrated with the processor, or the computer-readable storage medium may be disposed separately from the processor.

[0028] In a seventh aspect, this application provides a computer-readable storage medium storing computer instructions that, when read and executed by a processor of a computer device, cause the computer device to perform the decoding method described in the first aspect or the encoding method described in the second aspect.

[0029] Eighthly, embodiments of this application provide a computer program product or computer program including computer instructions stored in a computer-readable storage medium. A processor of a computer device reads the computer instructions from the computer-readable storage medium and executes the computer instructions, causing the computer device to perform the decoding method described in the first aspect or the encoding method described in the second aspect.

[0030] Ninthly, this application provides a bitstream, which is the bitstream involved in the method described in the first aspect above or the bitstream generated by the method described in the second aspect above.

[0031] Based on the above technical solutions, the embodiments of this application combine at least one entropy decoding algorithm maintained by the decoder into the zero-run-length decoding process, which can improve the entropy decoding performance. Attached Figure Description

[0032] Figure 1 This is an example of a point cloud image provided in an embodiment of this application.

[0033] Figure 2 yes Figure 1 A magnified view of a portion of the point cloud image shown.

[0034] Figure 3 This is an example of a point cloud image with six viewing angles provided in the embodiments of this application.

[0035] Figure 4 This is a schematic block diagram of the coding framework provided in the embodiments of this application.

[0036] Figures 5 to 7 The arrangement of Morton codes in two-dimensional space is shown.

[0037] Figure 8 The arrangement of Morton codes in three-dimensional space is shown.

[0038] Figure 9 This is a schematic block diagram of the decoding framework provided in the embodiments of this application.

[0039] Figure 10 This is a schematic flowchart of the decoding method provided in the embodiments of this application.

[0040] Figure 11This is a schematic flowchart of the encoding method provided in the embodiments of this application.

[0041] Figure 12 This is a schematic flowchart of the decoder provided in the embodiments of this application.

[0042] Figure 13 This is a schematic flowchart of the encoder provided in the embodiments of this application.

[0043] Figure 14 This is a schematic block diagram of the electronic device provided in the embodiments of this application. Detailed Implementation

[0044] The technical solutions in the embodiments of this application will now be described with reference to the accompanying drawings.

[0045] A point cloud is a set of discrete points in space that are randomly distributed and represent the spatial structure and surface properties of a three-dimensional object or scene. Figure 1 and Figure 2 The images show a 3D point cloud and a magnified view of a portion of it, revealing that the point cloud surface is composed of densely distributed points.

[0046] Two-dimensional images convey information at each pixel, thus eliminating the need to record its position. However, the distribution of points in a point cloud in three-dimensional space is random and irregular, requiring the recording of each point's position in space to fully represent a point cloud. Similar to two-dimensional images, each point in a point cloud has corresponding attribute information, typically RGB color values ​​reflecting the object's color. For point clouds, in addition to color, the attribute information for each point can also be a reflectance value, reflecting the object's surface material. Each point in a point cloud can include geometric and attribute information. Geometric information refers to the point's Cartesian three-dimensional coordinates. Attribute information for each point can include, but is not limited to, at least one of the following: color information, material information, and laser reflection intensity information. Color information can be from any color space. For example, color information can be Red, Green, Blue (RGB) information. Alternatively, color information can be luminance / chromaticity (YCbCr, YUV) information. Where Y represents luminance (Luma), Cb(U) represents the blue chromaticity component, and Cr(V) represents the red chromaticity component. Each point in a point cloud has the same number of attribute information. For example, each point in a point cloud has two attribute information: color and laser reflection intensity. Alternatively, each point in a point cloud may have three attribute information: color, material, and laser reflection intensity.

[0047] Point cloud images can have multiple viewing angles, for example, such as Figure 3 The point cloud image shown can be viewed from six angles. The data storage format of the point cloud image consists of a header information part and a data part. The header information includes the data format, data representation type, total number of points in the point cloud, and the content represented by the point cloud.

[0048] For example, the data storage format of a point cloud image can be implemented as follows:

[0049] ply

[0050] Format ascii 1.0

[0051] element vertex 207242

[0052] property float x

[0053] property float y

[0054] property float z

[0055] property uchar red

[0056] property uchar green

[0057] property uchar blue 75 318 0 0 142 0 75 319 0 0 143 0 75 319 1 1 9 9 75 315 0 1 9 9;

[0062] The data storage format for the aforementioned point cloud image is ".ply", represented by ASCII code, with a total of 207242 points. Each point has three-dimensional position information (xyz) and three-dimensional color information (rgb).

[0063] Point clouds can flexibly and conveniently express the spatial structure and surface properties of three-dimensional objects or scenes. Since point clouds are obtained by directly sampling real objects, they can provide a strong sense of realism 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.

[0064] For example, point clouds can be divided into two main categories based on application scenarios: machine-perceived point clouds and human-perceived point clouds. Application scenarios for machine-perceived point clouds include, but are not limited to: autonomous navigation systems, real-time inspection systems, geographic information systems, visual sorting robots, and disaster relief robots. Application scenarios for human-perceived point clouds include, but are not limited to: digital cultural heritage, free-viewpoint broadcasting, 3D immersive communication, and 3D immersive interaction. Correspondingly, point clouds can be divided into dense point clouds and sparse point clouds based on the acquisition method; they can also be divided into static point clouds and dynamic point clouds based on the acquisition path. More specifically, they can be divided into three types of point clouds: first static point clouds, second type dynamic point clouds, and third type dynamically acquired point clouds. For first static point clouds, the object is stationary, and the device acquiring the point cloud is also stationary; for second type dynamic point clouds, the object is moving, but the device acquiring the point cloud is stationary; for third type dynamically acquired point clouds, the device acquiring the point cloud is moving.

[0065] For example, point cloud acquisition methods include, but are not limited to, 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, acquiring millions of point clouds per second; 3D photogrammetry can obtain point clouds of dynamic real-world 3D objects or scenes, acquiring tens of millions of point clouds per second. Specifically, point clouds of object surfaces can be acquired using acquisition devices such as photoelectric radar, lidar, laser scanners, and multi-view cameras. Point clouds obtained based on laser measurement principles can include the 3D coordinate information and laser reflection intensity of points. Point clouds obtained based on photogrammetry principles can include the 3D coordinate information and color information of points. Point clouds obtained by combining laser measurement and photogrammetry principles can include the 3D coordinate information, laser reflection intensity, and color information of points. These technologies reduce the cost and time required for point cloud data acquisition and improve data accuracy. For example, in the medical field, point clouds of biological tissues and organs can be obtained using magnetic resonance imaging (MRI), computed tomography (CT), and electromagnetic positioning information. These technologies have reduced the cost and time required to acquire point clouds and improved data accuracy. This revolution in point cloud data acquisition has made it possible to acquire massive amounts of point cloud data. However, with the growth of application demands, the processing of massive 3D point cloud data is encountering bottlenecks due to limitations in storage space and transmission bandwidth.

[0066] Taking a point cloud video with a frame rate of 30fps as an example, each frame contains 700,000 points. Each point in each frame has coordinate information (xyz, float) and color information (RGB, uchar). Therefore, the data size of a 10-second point cloud video is approximately 0.7 million × (4 bytes × 3 + 1 byte × 3) × 30fps × 10s = 3.15GB. In contrast, a 10-second 1280×720 two-dimensional video with a YUV sampling format of 4:2:0 and a frame rate of 24fps has a data size of approximately 1280×720 × 12 bits × 24 frames × 10s ≈ 0.33GB. A 10-second two-view 3D video has a data size of approximately 0.33 × 2 = 0.66GB. It is clear that the data size of a point cloud video far exceeds that of two-dimensional and three-dimensional videos of the same length. Therefore, in order to better achieve data management, save server storage space, and reduce the transmission traffic and transmission time between the server and the client, point cloud compression has become a key issue in promoting the development of the point cloud industry.

[0067] Point cloud compression typically employs separate compression of point cloud geometric information and attribute information. At the encoding end, the geometric encoder first encodes the point cloud geometric information, and then the reconstructed geometric information is input as supplementary information into the attribute encoder to assist in point cloud attribute compression. At the decoding end, the geometric decoder first decodes the point cloud geometric information, and then the decoded geometric information is input as supplementary information into the attribute decoder to assist in point cloud attribute compression. The entire encoder-decoder system consists of preprocessing / post-processing, geometric encoding / decoding, and attribute encoding / decoding.

[0068] For example, point clouds can be encoded and decoded using various types of encoding and decoding frameworks. As examples, the encoding / decoding framework can be the Geometry Point Cloud Compression (G-PCC) or Video Point Cloud Compression (V-PCC) framework provided by the Moving Picture Experts Group (MPEG), or the AVS-PCC or Point Cloud Compression Reference Platform (PCRM) framework provided by the Audio Video Standard (AVS) task group. The G-PCC framework can be used for compression of first-type static point clouds and third-type dynamically acquired point clouds, while the V-PCC framework can be used for compression of second-type dynamic point clouds. The G-PCC framework is also known as the point cloud codec TMC13, and the V-PCC framework is also known as the point cloud codec TMC2. Both G-PCC and AVS-PCC are designed for static, sparse point clouds, and their encoding frameworks are largely the same.

[0069] The following uses the PCRM framework as an example to illustrate the encoding and decoding frameworks applicable to the embodiments of this application.

[0070] Figure 4 This is a schematic block diagram of the coding framework provided in the embodiments of this application.

[0071] like Figure 4 As shown, in the encoding framework, the geometric information of the point cloud and the attribute information corresponding to each point are encoded separately.

[0072] In the geometric encoding part of the encoding end, firstly, the original geometric information is preprocessed. This involves normalizing the geometric origin to the minimum position in the point cloud space through coordinate translation, and converting the geometric information from floating-point numbers to integers through coordinate quantization to facilitate subsequent regularization processing. Since quantization rounding results in some points having the same geometric information, it is necessary to decide whether to remove duplicate points, which is also part of the preprocessing. Then, the regularized geometric information is geometrically encoded. This involves recursively dividing the point cloud space using an octree structure. Each time, the current block is divided into eight sub-blocks of the same size, and the occupancy codeword status of each sub-block is determined. If a sub-block does not contain any points, it is marked as empty; otherwise, it is marked as non-empty. The occupancy codeword information of all blocks is recorded at the last level of the recursive division and then encoded. In other words, the geometric information expressed by the octree structure is input into the geometric entropy encoder to form a geometric code stream, and is also used to reconstruct the geometric information and encode the attribute information based on the reconstructed geometric information.

[0073] In the attribute encoding section, firstly, it is determined whether a color space conversion is needed. If the attribute information being processed is color information, the original color needs to be transformed into the YUV color space, which is more consistent with the visual characteristics of the human eye. Then, in the case of geometrically lossy encoding, since the geometric information changes after geometric encoding, attribute values ​​need to be reassigned to each point after geometric encoding to minimize the attribute error between the reconstructed point cloud and the original point cloud. This process is called attribute interpolation or attribute recoloring. Next, attribute encoding is performed on the preprocessed attribute information. In the attribute encoding process, the point cloud first needs to be reordered using Morton code. Therefore, the traversal order of attribute encoding is Morton order. Then, single-point prediction is performed based on Morton order, that is, following Morton order, backtracking one point from the current point to be encoded. The point found is the prediction reference point for the current point to be encoded. Then, the attribute reconstruction value of the prediction reference point is used as the attribute prediction value. The attribute residual is the difference between the attribute value of the current point to be encoded and the attribute prediction value. Finally, the residual is quantized and input into the attribute entropy encoder to form the attribute code stream.

[0074] Figures 5 to 7 The arrangement of Morton codes in two-dimensional space is shown.

[0075] like Figure 5 As shown, the encoder can use a "z"-shaped Morton arrangement in a two-dimensional space formed by 2*2 blocks. For example... Figure 6 As shown, the encoder can use a "z"-shaped Morton arrangement in a two-dimensional space formed by four 2*2 blocks. Furthermore, a "z"-shaped Morton arrangement can also be used within each 2*2 block two-dimensional space, ultimately yielding the Morton arrangement used by the encoder in a 4*4 block two-dimensional space. Figure 7 As shown, the encoder can adopt a "z" shaped Morton arrangement in a two-dimensional space formed by four 4*4 blocks. The "z" shaped Morton arrangement can also be adopted in a two-dimensional space formed by four 2*2 blocks and in a two-dimensional space formed by each 2*2 block. Finally, the Morton arrangement can be obtained in a two-dimensional space formed by eight*8 blocks.

[0076] Figure 8 The arrangement of Morton codes in three-dimensional space is shown.

[0077] like Figure 8 As shown, the Morton permutation order is not only applicable to two-dimensional space, but can also be extended to three-dimensional space, for example... Figure 8 The image shows 16 points. Within each "z" shape, the Morton arrangement between each "z" is first encoded along the x-axis, then along the y-axis, and finally along the z-axis.

[0078] Figure 9 This is a schematic block diagram of the decoding framework provided in the embodiments of this application.

[0079] like Figure 9 As shown, at the decoding end, the same approach of decoding geometry and attributes separately is adopted. In the geometry decoding part, entropy decoding is first performed on the geometry bitstream to obtain the geometric information of each point. Then, an octree structure is constructed in the same way as the geometry encoding. Combined with the decoded geometry, the geometric information expressed by the coordinate transformation through the octree structure is reconstructed. On the one hand, this information is dequantized and inversely translated to obtain the decoded geometry information. On the other hand, it is used as additional information input into the attribute decoder. In the attribute decoding part, the Morton order is constructed in the same way as the encoding end. First, entropy decoding is performed on the attribute bitstream to obtain the quantized residual information. Then, dequantization is performed to obtain the point cloud residual. Similarly, in the same way as the attribute encoding, the attribute prediction value of the current point to be decoded is obtained. Then, the attribute prediction value is added to the residual value to recover the YUV attribute value of the current point to be decoded. Finally, the decoded attribute information is obtained through inverse color space transformation.

[0080] It should be noted that the predicted value of the attribute at the current point to be encoded can also be called the predicted value of the attribute information or the predicted color. The attribute value at the current point to be encoded can also be called the true value of the attribute information or the original color value of the current point. The residual value at the current point to be encoded can also be called the difference between the attribute value and the predicted attribute value of the current point, or the residual color value of the current point. The reconstructed value of the attribute at the current point to be encoded can also be called the reconstructed attribute value or the reconstructed color value of the current point.

[0081] There are four types of test conditions for the encoding / decoding framework:

[0082] Condition 1: Geometric position is finitely lossy, and properties are lossy.

[0083] Condition 2: Geometric position is lossless, but attributes are lossy.

[0084] Condition 3: Geometric position is lossless, but attribute loss is limited.

[0085] Condition 4: Geometric position is lossless and attribute is lossless.

[0086] The general test sequences of the encoding and decoding framework include five categories: Cat1A, Cat1B, Cat1C, Cat2-frame, and Cat3. Among them, Cat1A and Cat2-frame point clouds only contain reflectivity attribute information, Cat1B and Cat3 point clouds only contain color attribute information, and Cat1B point cloud contains both color and reflectivity attribute information.

[0087] When compressing the attribute information of point clouds, the encoding and decoding framework can be divided into the following technical routes based on the algorithm used.

[0088] Technical approach 1: Predictive branch.

[0089] Attribute compression employs an intra-frame prediction-based method. At the encoding end, when processing points in the point cloud according to a specific order (original point cloud acquisition order, Morton order, Hilbert order, etc.), a prediction algorithm is first used to obtain attribute prediction values. Then, attribute residuals are obtained based on the attribute values ​​and the attribute prediction values. These residuals are then quantized to generate quantized residuals, which are finally encoded. At the decoding end, points in the point cloud are processed in a similar order (original point cloud acquisition order, Morton order, Hilbert order, etc.). First, a prediction algorithm is used to obtain attribute prediction values. Then, the quantized residuals are decoded and obtained. These residuals are then dequantized. Finally, attribute reconstructed values ​​are obtained based on the attribute prediction values ​​and the dequantized residuals.

[0090] Technical route 2: Predicts transformation branches but is resource-constrained.

[0091] Attribute compression employs a method based on intra-frame prediction and DCT transform. When encoding the quantized transform coefficients, there is a maximum limit of X points (e.g., 4096), meaning that a maximum of X points are encoded as a group. At the encoding end, the points in the point cloud are processed according to a certain order (original point cloud acquisition order, Morton order, Hilbert order, etc.). First, the entire point cloud is divided into several small groups with a maximum length of Y (e.g., 2). Then, these small groups are combined into several large groups (each large group contains no more than X points, e.g., 4096). A prediction algorithm is then used to obtain attribute prediction values. Based on the attribute values ​​and attribute prediction values, attribute residuals are obtained. DCT transform is performed on the attribute residuals in groups to generate transform coefficients. These transform coefficients are then quantized to generate quantized transform coefficients. Finally, the quantized transform coefficients are processed in large groups. The coefficients are encoded. At the decoding end, the points in the point cloud are processed in a certain order (original point cloud acquisition order, Morton order, Hilbert order, etc.). First, the entire point cloud is divided into several small groups with a maximum length of Y (e.g., 2). Then, these small groups are combined into several large groups (the number of points in each large group does not exceed X, e.g., 4096). The quantized transform coefficients are obtained by decoding the large groups. Then, the attribute prediction value is obtained by using a prediction algorithm. Then, the quantized transform coefficients are dequantized and detransformed in units of small groups. Finally, the attribute reconstruction value is obtained based on the attribute prediction value and the dequantized and detransformed coefficients.

[0092] Technical route 3: Predicting transformation branches with unlimited resources.

[0093] Attribute compression uses a method based on intra-frame prediction and DCT transform. When encoding the quantized transform coefficients, there is no limit to the maximum number of points X, meaning that all coefficients are encoded together. At the encoding end, the points in the point cloud are processed in a certain order (original point cloud acquisition order, Morton order, Hilbert order, etc.). First, the entire point cloud is divided into several groups with a maximum length of Y (e.g., 2). Then, a prediction algorithm is used to obtain attribute prediction values. Based on the attribute values ​​and attribute prediction values, attribute residuals are obtained. DCT transformation is performed on the attribute residuals in groups to generate transformation coefficients. Then, the transformation coefficients are quantized to generate quantized transformation coefficients. Finally, the quantized transformation coefficients of the entire point cloud are encoded. At the decoding end, the points in the point cloud are processed in a certain order (original point cloud acquisition order, Morton order, Hilbert order, etc.). First, the entire point cloud is divided into several groups with a maximum length of Y (e.g., 2). The quantized transformation coefficients of the entire point cloud are obtained by decoding. Then, a prediction algorithm is used to obtain attribute prediction values. Then, the quantized transformation coefficients are dequantized and detransformed in groups. Finally, the attribute reconstruction values ​​are obtained based on the attribute prediction values ​​and the dequantized and detransformed coefficients.

[0094] Technical route 4: Multi-layer transformation branch.

[0095] Attribute compression adopts a method based on multi-layer wavelet transform. At the encoding end, the entire point cloud is subjected to multi-layer wavelet transform to generate transform coefficients, and then the transform coefficients are quantized to generate quantized transform coefficients. Finally, the quantized transform coefficients of the entire point cloud are encoded. At the decoding end, the quantized transform coefficients of the entire point cloud are obtained through decoding, and then the quantized transform coefficients are dequantized and inverse-transformed to obtain the attribute reconstruction value.

[0096] When the encoding and decoding framework performs entropy encoding or entropy decoding, the encoding and decoding algorithms or entropy encoding and decoding methods adopted include but are not limited to: unary code, truncated unary code, K-order exponential Golomb coding, and Huffman coding. For the convenience of understanding the technical solution of this application, various entropy encoding and decoding methods are briefly introduced below.

[0097] 1. Unary coding algorithm.

[0098] For the symbol "x" >= 0 to be encoded, unary coding encodes it as x "1"s followed by a "0". For example, assuming x = 5, after unary coding, it is encoded as "111110".

[0099] 2. Truncated unary coding algorithm.

[0100] The truncated unary coding algorithm is a variant of the unary coding algorithm and is used when the maximum value Max of the syntax element to be encoded is known. Assume the symbol to be encoded is x: If 0 < x < Max, x is binary-coded in the way of unary code; if x = Max, the binary string of x binary-coding consists entirely of 1s and has a length of Max. For example, assuming Max = 6, when encoding the symbol "6", the result is "111111", and when encoding the symbol "3", according to the encoding method of unary code, the result is "1110".

[0101] 3. K-order exponential Golomb coding algorithm.

[0102] The main coding format of K-order exponential Golomb coding is the structure of [prefix 0][1][bit information]. The coding steps are as follows:

[0103] (1) Represent the data to be encoded in binary form, remove the lowest k bits, then add 1 to get a new value T1, check how many bits T1 contains, and subtract 1 from this value, which is the number of prefix 0s;

[0104] (2) Add the lowest K bits removed in the first step to T1, and temporarily call it T2;

[0105] (3) Add a prefix 0 before T2 to complete the encoding.

[0106] For example, suppose we perform first-order exponential Golomb coding on 7, then k = 1. First, we calculate the number of prefix zeros: the binary representation of 7 is 111, removing the least significant bit gives 11, then adding 1 gives T1 = 100. T1 contains 3 bits, 3 - 1 = 2, so the number of prefix zeros is 2; adding the removed bit gives T2 = 1001; adding two prefix zeros before T2 gives 001001, which is the final coding result 001001.

[0107] Figure 10 This is a schematic flowchart of the decoding method 300 provided in an embodiment of this application. It should be understood that this decoding method 300 can be executed by a decoder or a decoding framework. For example, it can be applied to... Figure 9 The decoding framework 200 is shown below. For ease of description, the following explanation uses a decoder as an example.

[0108] like Figure 10 As shown, the decoding method 300 may include:

[0109] S310, obtains the value to be decoded based on the bitstream of point cloud;

[0110] S320, the value to be decoded is decoded using at least one entropy decoding algorithm maintained by the decoder to obtain a target decoded value; the target decoded value is a zero run value or the quotient of the zero run value; wherein, the quotient of the zero run value is determined according to the ratio between the zero run value and a preset value.

[0111] For example, when the target decoded value is a zero run length value, the decoder uses a zero run length coding algorithm to perform entropy decoding on the zero run length values ​​in the sequence to be decoded. Of course, in other alternative embodiments, the target decoded value is the quotient of the zero run length value; for example, the quotient of the zero run length value can be the ratio of the zero run length value to a preset value. For example, the quotient of the zero run length value and the zero run length value to be decoded can be represented as the run length.

[0112] For example, if the symbol sequence output by the at least one entropy decoding algorithm is 0(r)4 0(r)5 3(r)20(r)1 1(r)2, then the zero-run values ​​in 0(r)4 0(r)5 3(r)2 0(r)1 1(r)2 include 0 0 3 0 1, where r represents a zero-run value. Further, after decoding the zero-run values ​​using the zero-run decoding algorithm, the symbol sequence 4 5 0 0 0 2 1 0 2 can be obtained. If the symbol sequence 4 5 0 0 0 2 1 0 2 is the attribute residual sequence of the point cloud, then each value in the symbol sequence 4 5 0 0 0 2 1 0 2 represents the attribute residual of a point. It is worth noting that the symbols in the symbol sequence 0(r)4 0(r)5 3(r)2 0(r)1 1(r)2, excluding the zero run value, can be decoded using the quotient decoding method of this application or using a separate quotient decoding method. This application does not make any specific limitations on this.

[0113] In this embodiment, combining at least one entropy decoding algorithm maintained by the decoder into the zero-run-length decoding process can improve the entropy decoding performance.

[0114] The results of testing the scheme provided in this application are explained below with reference to Tables 1 and 2.

[0115] Table 1 shows the bit distortion (BD-rate) of each component of Cat1B, Cat1C, and Cat3 under limited-lossy geometry compression and lossy attribute compression. Table 2 shows the BD-rate of each component of Cat1B, Cat1C, and Cat3 under lossless geometry compression and lossy attribute compression. Bit distortion (BD-rate) is an indicator of algorithm performance or coding performance, representing the changes in bit rate and PSNR of the coding algorithm provided in this application compared to the original coding algorithm. A negative value indicates improved performance. L, Cb, and Cr (also called Y, U, V) represent the performance of the luminance and chrominance components of the point cloud color.

[0116] Table 1

[0117]

[0118] As shown in Table 1, under the constraints of lossy geometric compression and lossy attribute compression, the performance of each component of Cat1C and Cat3 is improved, that is, the solution provided in this application can improve decoding performance.

[0119] Table 2

[0120]

[0121] As shown in Table 1, the performance of each component of Cat1B, Cat1C, and Cat3 is improved under both lossless geometric compression and lossy attribute compression, meaning that the solution provided in this application can improve decoding performance.

[0122] In some embodiments, the at least one entropy decoding algorithm is a single entropy decoding algorithm; wherein, S320 may include:

[0123] If the preset conditions are met, the single entropy decoding algorithm with the decoding parameter set to the first value is used to decode the value to be decoded to obtain the target decoded value; otherwise, the single entropy decoding algorithm with the decoding parameter set to the second value is used to decode the value to be decoded to obtain the target decoded value.

[0124] Wherein, the first value is not equal to the second value.

[0125] For example, assuming the single entropy decoding algorithm is an exponential Golomb decoding algorithm, and the decoding parameter is the order of the exponential Golomb decoding algorithm; in this case, if a preset condition is met, the decoder uses a K1-order (e.g., 1st, 2nd, 3rd, etc.) exponential Golomb algorithm to decode the value to be decoded, obtaining the target decoded value; otherwise, the decoder uses a K2-order (e.g., 1st, 2nd, 3rd, etc.) exponential Golomb algorithm to decode the value to be decoded, obtaining the target decoded value. Here, K1 is different from K2.

[0126] In this embodiment, the decoder only needs to maintain a single entropy decoding algorithm, which is beneficial for device implementation and can reduce device complexity and decoding costs. Furthermore, by introducing preset conditions and decoding parameters, it is possible to use different values ​​of decoding parameters for different situations, thereby improving entropy decoding performance.

[0127] In some embodiments, the first value or the second value is G; wherein G is a preset value, or G is a value determined based on the attribute information of the point cloud and / or the quantization variable used by the decoder. For example, G is a value determined based on the quantization residuals of the decoded points in the point cloud. For example, G is based on the maximum, minimum, or average value of the quantization residuals of the decoded points in the point cloud.

[0128] In some embodiments, the first value and / or the second value are default values; or, the first value and / or the second value are values ​​obtained by decoding the bitstream. The default value may also be referred to as the default value.

[0129] For example, the first value and / or the second value may be a default value or G written into the bitstream by the encoding end.

[0130] For example, the first value and / or the second value may be default values ​​relative to the encoder and decoder.

[0131] In some embodiments, the absolute value of the difference between the first value and the second value is less than or equal to a preset upper threshold, or the absolute value of the difference between the first value and the second value lies within a preset value range. For example, the absolute value of the difference between the first value and the second value is greater than or equal to a preset lower threshold, but less than or equal to a preset upper threshold. For example, the preset value range can be a set of preset values, or a range formed by the upper and lower thresholds.

[0132] In some embodiments, the at least one entropy decoding algorithm is a single entropy decoding algorithm; wherein, S320 may include:

[0133] The target decoded value is obtained by using the single entropy decoding algorithm with the decoding parameters set to the target value.

[0134] For example, assuming the single entropy decoding algorithm is an exponential Golomb decoding algorithm, and the decoding parameter is the order of the exponential Golomb decoding algorithm; in this case, the decoder can directly use a K-order (e.g., 1st, 2nd, 3rd, etc.) exponential Golomb algorithm to decode the value to be decoded, and obtain the target decoded value. That is to say, the decoder can directly use a K-order (e.g., 1st, 2nd, 3rd, etc.) exponential Golomb algorithm to decode the value to be decoded, and obtain the target decoded value, without needing to determine whether the point cloud meets the preset conditions.

[0135] In this embodiment, the decoder only needs to maintain a single entropy decoding algorithm and a single decoding parameter, which is beneficial for device implementation and can reduce device complexity and decoding cost.

[0136] In some embodiments, the target value is G, a default value, or a value obtained by decoding the bitstream; wherein G is a preset value, or G is a value determined based on the attribute information of the point cloud and / or the quantization variable used by the decoder. For example, G is a value determined based on the quantization residuals of the decoded points in the point cloud. For example, G is based on the maximum, minimum, or average value of the quantization residuals of the decoded points in the point cloud.

[0137] For example, the target value can be a default value or G written into the bitstream at the encoding end.

[0138] For example, the target value may be a default value relative to the encoder and decoder.

[0139] In some embodiments, when the single entropy decoding algorithm is the exponential Columbus decoding algorithm, the decoding parameter is the order of the exponential Columbus decoding algorithm.

[0140] Of course, in other alternative embodiments, the single entropy decoding algorithm may also be other entropy decoding algorithms, such as arithmetic decoding algorithm or Huffman decoding algorithm. In this case, the decoding parameters may also be adjusted to the parameters used by other decoding algorithms. This application does not make specific limitations in this regard.

[0141] In some embodiments, the at least one entropy decoding algorithm is a plurality of entropy decoding algorithms; wherein, S320 may include:

[0142] If the preset conditions are met, the first entropy decoding algorithm among the multiple entropy decoding algorithms is used to decode the value to be decoded to obtain the target decoded value; otherwise, the second entropy decoding algorithm among the multiple entropy decoding algorithms is used to decode the value to be decoded to obtain the target decoded value.

[0143] For example, suppose the plurality of entropy decoding algorithms are K-order (e.g., 1, 2, 3, etc.) exponential Golomb decoding algorithms and arithmetic decoding algorithms. In this case, as one implementation, the first entropy decoding algorithm is a K-order (e.g., 1, 2, 3, etc.) exponential Golomb algorithm, and the second entropy decoding algorithm is an arithmetic decoding algorithm. That is, if a preset condition is met, the decoder uses the K-order (e.g., 1, 2, 3, etc.) exponential Golomb algorithm to decode the value to be decoded to obtain the target decoded value; otherwise, the decoder uses the arithmetic decoding algorithm to decode the value to be decoded to obtain the target decoded value. As another implementation, the first entropy decoding algorithm is an arithmetic decoding algorithm, and the second entropy decoding algorithm is a K-order (e.g., 1, 2, 3, etc.) exponential Golomb algorithm. That is, if a preset condition is met, the decoder uses the arithmetic decoding algorithm to decode the value to be decoded to obtain the target decoded value; otherwise, the decoder uses the K-order (e.g., 1, 2, 3, etc.) exponential Golomb algorithm to decode the value to be decoded to obtain the target decoded value.

[0144] In this embodiment, by introducing multiple entropy decoding algorithms, it is beneficial to use different entropy decoding algorithms for different situations, thereby improving the entropy decoding performance.

[0145] In some embodiments, when the first entropy decoding algorithm or the second entropy decoding algorithm is an exponential Columbus decoding algorithm, the order of the exponential Columbus decoding algorithm is equal to G; wherein, G is a preset value, or G is a value determined based on the attribute information of the point cloud and / or the quantization variable used by the decoder. For example, G is a value determined based on the quantization residuals of the decoded points in the point cloud. For example, G is based on the maximum, minimum, or average value of the quantization residuals of the decoded points in the point cloud.

[0146] In some embodiments, the preset conditions include at least one of the following:

[0147] G≤T;

[0148] G = T;

[0149] G≥T;

[0150] Wherein, G is a preset value, or G is a value determined based on the attribute information of the point cloud and / or the quantization variable used by the decoder, and T is a preset threshold.

[0151] For example, G is a value determined based on the quantization residuals of the decoded points in the point cloud. For example, G is the maximum, minimum, or average value of the quantization residuals of the decoded points in the point cloud. For example, when G is a preset value, the value of G can be different for different types of point clouds.

[0152] For example, the value determined by the G encoder is correspondingly obtained by the decoder by parsing the bitstream.

[0153] For example, the encoder can determine G in the following way:

[0154] res = Max - Min;

[0155] int index=ceilLog2(res>>(attrQuantParam / 8));

[0156] G = KthIndex[index-1].

[0157] Where Max represents the maximum value of the point cloud's attribute information, Min represents the minimum value of the point cloud's attribute information, ceil() represents the rounding operation, attrQuantParam represents the quantization variable used by the encoder, >> represents the right shift operation, and KthIndex[] represents a predefined table. For example, after the encoder calculates the index, it looks up the predefined table based on the index to obtain G. For example, the encoder can determine the index-1 value in the table as G. For example, if KthIndex

[13] = {1,1,1,2,2,2,3,3,3,4,5,6,7}, when index = 3, G = 1, and when index = 4, G = 2.

[0158] Of course, in other alternative embodiments, the preset condition may be other conditions, and this application does not specifically limit it.

[0159] In some embodiments, the entropy decoding algorithm in the at least one entropy decoding algorithm is the default entropy decoding algorithm. The default entropy decoding algorithm may also be referred to as the default entropy decoding algorithm.

[0160] In other words, the at least one entropy decoding algorithm is the default entropy decoding algorithm.

[0161] For example, the default entropy decoding algorithm may be the exponential Columbus decoding algorithm. For instance, when the at least one entropy decoding algorithm is a single entropy decoding algorithm, the single entropy decoding algorithm defaults to the exponential Columbus decoding algorithm. Of course, the default entropy decoding algorithm may also be other decoding algorithms, and this application does not specifically limit it.

[0162] In some embodiments, the decoding performance of the entropy decoding algorithm in the at least one entropy decoding algorithm is higher than that of the reference entropy decoding algorithm. For example, the binarization efficiency of the entropy decoding algorithm in the at least one entropy decoding algorithm is higher than that of the reference entropy decoding algorithm. For example, the reference entropy decoding algorithm can be a univariate entropy decoding algorithm, or other entropy decoding algorithms; this application does not specifically limit its application in this regard.

[0163] In some embodiments, the method 300 may further include:

[0164] Based on the bitstream, obtain N flag bits of the value to be decoded;

[0165] Wherein, when the value of the i-th flag bit among the N flag bits is the third value, it is used to indicate that the target decoded value is not equal to i-1 or to indicate that the target decoded value is greater than i-1; when the value of the i-th flag bit among the N flag bits is the fourth value, it is used to indicate that the target decoded value is equal to i-1 or to indicate that the target decoded value is not greater than i-1; N is an integer greater than 0;

[0166] Based on the N flag bits, determine whether to use the at least one entropy decoding algorithm to decode the value to be decoded.

[0167] For example, the decoder obtains the N flag bits before performing entropy decoding on the decoded value using the at least one entropy decoding algorithm.

[0168] For example, the value of the i-th flag bit among the N flag bits is used to indicate that the target decoded value is not equal to i-1, or the value of the i-th flag bit among the N flag bits is used to indicate that the target decoded value is equal to i-1, the third value is 0, and the fourth value is 1.

[0169] For example, the value of the i-th flag bit among the N flag bits is used to indicate that the target decoded value is a value greater than i-1, the value of the i-th flag bit among the N flag bits is used to indicate that the target decoded value is not greater than i-1, the third value is 1, and the fourth value is 0.

[0170] For example, i is an integer greater than 0.

[0171] For example, after the decoder sequentially acquires the i-th flag bit, it determines whether to acquire the (i+1)-th flag bit based on the value of the i-th flag bit. For instance, if the value of the i-th flag bit is the third value, the decoder continues to acquire the (i+1)-th flag bit; if the value of the i-th flag bit is the fourth value, the decoder determines not to use the at least one entropy decoding algorithm to decode the value to be decoded. For instance, the decoder can determine i-1 as the target decoding value and end the decoding of the value to be decoded.

[0172] For example, the third value is 0 and the fourth value is 1; or the third value is 1 and the fourth value is 0.

[0173] In some embodiments, if the values ​​of the N flag bits are all the third value, then it is determined that the at least one entropy decoding algorithm is used to decode the value to be decoded.

[0174] For example, suppose the N flag bits include: "isZero", used to indicate whether the target decoded value is equal to 0, with a value of '0' indicating that the target decoded value is not equal to 0, and a value of '1' indicating that the target decoded value is equal to 0. When "isZero" does not appear, its default value is 0; "isOne", used to indicate whether the target decoded value is equal to 1, with a value of '0' indicating that the target decoded value is not equal to 1, and a value of '1' indicating that the target decoded value is equal to 1. When "isOne" does not appear, its default value is 0; "isTwo", used to indicate whether the target decoded value is equal to 2, with a value of '0' indicating that the target decoded value is not equal to 2, and a value of '1' indicating that the target decoded value is equal to 2. When "isTwo" does not appear, its default value is 0. At this point, the decoder decodes the "isZero" flag. If it is 1, it means the value to be decoded is equal to 0, and the decoding is complete. Otherwise, it decodes the "isOne" flag. If it is 1, it means the value to be decoded is equal to 1, and the decoding is complete. Otherwise, it decodes the "isTwo" flag. If it is 1, it means the value to be decoded is equal to 2, and the decoding is complete. Otherwise, the at least one entropy decoding algorithm is used to decode the value to be decoded.

[0175] For example, suppose the N flag bits include: "gtZero", used to indicate whether the target decoded value is greater than 0, with a value of '0' indicating that the target decoded value is not greater than 0, and a value of '1' indicating that the target decoded value is greater than 0. When this syntax element does not appear, its default value is 0; "gtOne", used to indicate whether the target decoded value is greater than 1, with a value of '0' indicating that the target decoded value is not greater than 1, and a value of '1' indicating that the target decoded value is greater than 1. When this syntax element does not appear, its default value is 0; "gtTwo", used to indicate whether the target decoded value is greater than 2. The value of 'gtZero' indicates that the target decoded value is no greater than 2, and the value of '1' indicates that the target decoded value is greater than 2. When this syntax element does not appear, its default value is 0. In this case, the decoder decodes the "gtZero" flag. If it is 0, it means that the target decoded value is equal to 0, and the decoding is complete. Otherwise, it decodes the "gtOne" flag. If it is 0, it means that the target decoded value is equal to 1, and the decoding is complete. Otherwise, it decodes the "gtTwo" flag. If it is 0, it means that the target decoded value is equal to 2, and the decoding is complete. Otherwise, the at least one entropy decoding algorithm is used to decode the value to be decoded.

[0176] Of course, in other alternative embodiments, the N flag bits may also include a number of flag bits greater than 3 or less than 3, and this application does not specifically limit this.

[0177] In some embodiments, S320 may include:

[0178] The value to be decoded is decoded using at least one entropy decoding algorithm to obtain a fifth value;

[0179] The fifth value is left-shifted to obtain the sixth value;

[0180] Based on the sixth value and N, the target decoded value is determined.

[0181] For example, the number of bits in the left shift operation is a preset value, such as 1 or other values.

[0182] In some embodiments, before the decoder decodes the value to be decoded using the at least one entropy decoding algorithm to obtain the fifth value, it first obtains a first flag bit based on the bitstream; the first flag bit is used to indicate the parity of the target decoded value. Based on this, when the decoder determines the target decoded value based on the sixth value and N, it can determine the target decoded value by the sum of the sixth value, N, and the value of the first flag bit.

[0183] Of course, in other alternative embodiments, the decoder may first decode the value to be decoded and then obtain the first flag bit based on the bitstream; or, the decoder may decode the value to be decoded while obtaining the first flag bit based on the bitstream. This application does not specifically limit this.

[0184] For example, the decoder determines whether to decode the first flag bit or acquire the first flag bit based on the N flag bits mentioned above. For instance, after the decoder acquires the i-th flag bit from the N flag bits mentioned above in sequence, it determines whether to acquire the (i+1)-th flag bit based on the value of the i-th flag bit. For instance, if the value of the i-th flag bit is the third value, the decoder continues to acquire the (i+1)-th flag bit; if the value of the i-th flag bit is the fourth value, the decoder determines not to decode the first flag bit or not to acquire the first flag bit; for instance, the decoder determines i-1 as the target decoding value and ends the decoding of the value to be decoded.

[0185] For example, when the decoder does not decode the first flag bit, the value of the first flag bit is a default value. For example, the default value can be 0.

[0186] In some embodiments, the target decoded value is a zero run value or the quotient of the zero run value; wherein the quotient of the zero run value is determined based on the ratio between the zero run value and a preset value.

[0187] For example, the quotient of the zero run value can be a value obtained by rounding down the ratio between the zero run value and a preset value. Of course, in other alternative embodiments, the quotient of the zero run value can be a value obtained by rounding up the ratio between the zero run value and the preset value.

[0188] For example, assuming the zero run value is 7 and the preset value is 2, the quotient of the zero run value can be either 3 or 4. Preferably, the quotient of the zero run value can be 3.

[0189] The decoding method according to the embodiments of this application has been described in detail above from the perspective of the decoder. The following will combine... Figure 11 The encoding method according to embodiments of this application is described from the perspective of the encoder.

[0190] Figure 11 This is a schematic flowchart of the encoding method 400 provided in an embodiment of this application. It should be understood that this encoding method 400 can be executed by an encoder. For example, it can be applied to… Figure 1 The encoding framework 100 is shown below. For ease of description, the encoder will be used as an example for illustration.

[0191] S410, determine the value to be encoded based on the zero run value;

[0192] S420, the value to be encoded is encoded using at least one entropy coding algorithm maintained by the encoder.

[0193] In some embodiments, the at least one entropy coding algorithm is a single entropy coding algorithm; wherein, S420 may include:

[0194] If the preset conditions are met, the single entropy encoding algorithm with the encoding parameter set to the first value is used to encode the value to be encoded; otherwise, the single entropy encoding algorithm with the encoding parameter set to the second value is used to encode the value to be encoded.

[0195] Wherein, the first value is not equal to the second value.

[0196] In some embodiments, the first value or the second value is G; wherein G is a preset value, or G is a value determined based on the attribute information of the point cloud and / or the quantization variable used by the encoder.

[0197] In some embodiments, the first value and / or the second value are default values.

[0198] In some embodiments, the method 400 may further include:

[0199] Encode the first value and / or the second value.

[0200] In some embodiments, the absolute value of the difference between the first value and the second value is less than or equal to a preset upper limit threshold, or the absolute value of the difference between the first value and the second value is within a preset numerical range.

[0201] In some embodiments, the at least one entropy coding algorithm is a single entropy coding algorithm; wherein, S420 may include:

[0202] The value to be encoded is encoded using the single entropy encoding algorithm with the encoding parameters set as the target value.

[0203] In some embodiments, the target value is G or the target value is a default value; wherein G is a preset value, or G is a value determined based on the attribute information of the point cloud and / or the quantization variable used by the encoder.

[0204] In some embodiments, the method 400 may further include:

[0205] The target value is encoded.

[0206] In some embodiments, when the single entropy coding algorithm is the exponential Golomb coding algorithm, the coding parameter is the order of the exponential Golomb coding algorithm.

[0207] In some embodiments, the at least one entropy coding algorithm is a plurality of entropy coding algorithms; wherein, S420 may include:

[0208] If the preset conditions are met, the first entropy coding algorithm in the entropy coding algorithm is used to encode the value to be encoded; otherwise, the second entropy coding algorithm in the entropy coding algorithm is used to encode the value to be encoded.

[0209] In some embodiments, when the first entropy coding algorithm or the second entropy coding algorithm is an exponential Golomb coding algorithm, the order of the exponential Golomb coding algorithm is equal to G; wherein, G is a preset value, or G is a value determined according to the attribute information of the point cloud and / or the quantization variable used by the encoder.

[0210] In some embodiments, the preset conditions include at least one of the following:

[0211] G≤T;

[0212] G = T;

[0213] G≥T;

[0214] Wherein, G is a preset value, or G is a value determined based on the attribute information of the point cloud and / or the quantization variable used by the encoder, and T is a preset threshold.

[0215] In some embodiments, the entropy coding algorithm in the at least one entropy coding algorithm is the default entropy coding algorithm.

[0216] In some embodiments, the encoding performance of the entropy coding algorithm in the at least one entropy coding algorithm is higher than that of the reference entropy coding algorithm.

[0217] In some embodiments, prior to S420, the method 400 may further include:

[0218] Determine N flag bits;

[0219] Wherein, when the value of the i-th flag bit among the N flag bits is the third value, it is used to indicate that the value to be encoded is not equal to i-1 or to indicate that the value to be encoded is greater than i-1; when the value of the i-th flag bit among the N flag bits is the fourth value, it is used to indicate that the value to be encoded is equal to i-1 or to indicate that the value to be encoded is not greater than i-1; N is an integer greater than 0;

[0220] Based on the N flag bits, determine whether to use the at least one entropy coding algorithm to encode the value to be encoded.

[0221] In some embodiments, if the values ​​of the N flag bits are all the third value, then it is determined that the at least one entropy coding algorithm is used to encode the value to be encoded.

[0222] S420 may include:

[0223] The N flag bits are encoded and the value to be encoded is encoded using at least one entropy encoding algorithm.

[0224] For example, the encoder first encodes the N flag bits, and then uses the at least one entropy coding algorithm to encode the value to be encoded to obtain the bitstream. Of course, in other alternative embodiments, the value to be encoded can be encoded first, and then the N flag bits can be encoded, or the N flag bits and the value to be encoded can be encoded simultaneously. This application does not specifically limit this.

[0225] For example, if the N flag bits include a target flag bit with the value of the fourth value, then it is determined that the at least one entropy coding algorithm will not be used to encode the value to be encoded; in this case, the flag bits located before the target flag bit and the target flag bit among the N flag bits can be directly encoded to obtain the bitstream.

[0226] In some embodiments, S420 may include:

[0227] By subtracting N from the value to be encoded, the seventh value is obtained;

[0228] The seventh value is shifted to the right to obtain the eighth value;

[0229] The eighth value is encoded using at least one entropy coding algorithm.

[0230] For example, the number of bits in the right shift operation is a preset value, such as 1 or other values.

[0231] In some embodiments, S420 may include:

[0232] The first flag bit is encoded and the value to be encoded is encoded using the at least one entropy encoding algorithm; the first flag bit is used to indicate the parity of the value to be encoded.

[0233] For example, the encoder first encodes the first flag bit, and then uses the at least one entropy coding algorithm to encode the value to be encoded to obtain the bitstream. Of course, in other alternative embodiments, the value to be encoded can be encoded first, and then the first flag bit can be encoded, or the first flag bit and the value to be encoded can be encoded simultaneously. This application does not specifically limit this.

[0234] For example, the encoder can determine whether to encode the first flag bit based on the N flag bits mentioned above. For instance, if all N flag bits have the third value, then it is determined that the first flag bit will be encoded; if the N flag bits include a target flag bit with the fourth value, then it is determined that the first flag bit will not be encoded. In this case, the flag bits preceding the target flag bit and the target flag bit can be directly encoded to obtain the bitstream.

[0235] In some embodiments, S410 may include:

[0236] The zero-run value is determined as the value to be encoded; or

[0237] The quotient of the zero run value is determined as the value to be encoded, and the quotient of the zero run value is determined according to the ratio between the zero run value and a preset value.

[0238] It should be understood that since the encoding process is the inverse or reverse operation of the decoding process, the implementation method and related terminology of the method 400 can be referred to the relevant content of the method 300. To avoid repetition, they will not be repeated here.

[0239] The preferred embodiments provided in this application will be described below with reference to the encoding and decoding ends.

[0240] Example 1:

[0241] In this embodiment, the encoder employs at least one entropy coding algorithm to entropy code the zero run value or the quotient of the zero run value to obtain the bitstream of the point cloud. Correspondingly, the decoder employs at least one entropy decoding algorithm to entropy decode the value to be decoded to obtain the zero run value or the quotient of the zero run value; wherein, the quotient of the zero run value is determined based on the ratio between the zero run value and a preset value. For example, the quotient of the zero run value can be a value obtained by rounding down the ratio between the zero run value and the preset value. For ease of description, the zero run value and the quotient of the zero run value are collectively referred to as the value to be encoded by the encoder / the target decoded value obtained by the decoder after entropy decoding of the value to be decoded, i.e., the value to be encoded / the target decoded value.

[0242] The meanings of the flag bits involved in this embodiment are as follows:

[0243] "isZero" is used to indicate whether the value to be encoded / the target decoded value is equal to 0. A value of '0' indicates that the value to be encoded / the target decoded value is not equal to 0, and a value of '1' indicates that the value to be encoded / the target decoded value is equal to 0. When this syntax element does not appear, its default value is 0.

[0244] "isOne" is used to indicate whether the value to be encoded / the target decoded value is equal to 1. Its value of '0' indicates that the value to be encoded / the target decoded value is not equal to 1, and its value of '1' indicates that the value to be encoded / the target decoded value is equal to 1. When this syntax element does not appear, its default value is 0.

[0245] "isTwo" is used to indicate whether the value to be encoded / the target decoded value is equal to 2. Its value of '0' indicates that the value to be encoded / the target decoded value is not equal to 2, and its value of '1' indicates that the value to be encoded / the target decoded value is equal to 2. When this syntax element does not appear, its default value is 0.

[0246] "parity" is used to indicate the parity of the value to be encoded / the target value to be decoded.

[0247] The meanings of the symbols involved in this embodiment are as follows:

[0248] "GolombNum", where G is a preset value, or G represents a value determined based on the attribute information and / or quantization variables of the point cloud. For example, G represents a value determined based on the quantization residuals of the encoded / decoded points in the point cloud. For example, G represents the maximum, minimum, or average value of the quantization residuals of the encoded / decoded points in the point cloud.

[0249] "Threshold" is a pre-set threshold, such as 1, 2, etc.

[0250] At the encoding end, the encoding process is as follows:

[0251] a) Encode the "isZero" flag. If it is 1, the encoding is complete; otherwise, proceed to step b).

[0252] b) Encode the "isOne" flag. If it is 1, the encoding is complete; otherwise, proceed to step c).

[0253] c) Encode the "isTwo" flag. If it is 1, the encoding is complete; otherwise, proceed to step d).

[0254] d) In this example, parity = (length-3)%2. Parity of 1 indicates that the value to be encoded is even, and parity of 0 indicates that the value to be encoded is odd. Encode "parity" and proceed to step e).

[0255] e) If GolombNum≤Threshold, use the K1 (e.g., 1, 2, 3, etc.) exponential Golomb coding algorithm to encode the value (to (length-3)>>1); otherwise, use the K2 (e.g., 1, 2, 3, etc.) exponential Golomb coding algorithm (K1 and K2 are not equal) to encode the value (to (length-3)>>1). Encoding is complete.

[0256] On the decoding end, the decoding process is as follows:

[0257] a) Decode the "isZero" flag. If it is 1, it means that the value to be decoded is equal to 0, then the decoding is complete; otherwise, proceed to step b).

[0258] b) Decode the "isOne" flag. If it is 1, it means that the value to be decoded is equal to 1, then the decoding is complete; otherwise, proceed to step c).

[0259] c) Decode the "isTwo" flag. If it is 1, it means that the value to be decoded is equal to 2, then the decoding is complete; otherwise, proceed to step d).

[0260] d) Decode the "parity" flag and proceed to step e);

[0261] e) If GolombNum≤Threshold, use the K1 (e.g., 1, 2, 3, etc.) exponential Golomb decoding algorithm to decode the value; otherwise, use the K2 (e.g., 1, 2, 3, etc.) exponential Golomb decoding algorithm (K1 and K2 are not equal) to decode the value. Decoding is complete.

[0262] Is the zero-run length value zero_run_length equal to residual_zero_run_length_equal_zero? 0:

[0263] (residual_zero_run_length_equal_one?1:

[0264] (residual_zero_run_length_equal_two? 2:

[0265] (3+parity+(value<<1)))).

[0266] Or zero run length value zero_run_length = [(residual_zero_run_length_equal_zero?0:

[0267] (residual_zero_run_length_equal_one?1:

[0268] (residual_zero_run_length_equal_two? 2:

[0269] (3+parity+(value<<1)))))<<1]+remainder.

[0270] Here, remainder represents the remainder of the ratio between the zero run value and a preset value. For example, the preset value is 2.

[0271] It is worth noting that when the "isZero", "isOne", or "isTwo" flags are 1, the value of parity is the default value, which is 0.

[0272] In this embodiment, the decoder only needs to maintain the exponential Columbus decoding algorithm, which is beneficial for device implementation and can reduce device complexity and decoding cost. Furthermore, by introducing preset conditions and different order values, it is beneficial to use different order values ​​for different situations, thereby improving entropy decoding performance.

[0273] Example 2:

[0274] In this embodiment, the encoder employs at least one entropy coding algorithm to entropy code the zero run value or the quotient of the zero run value to obtain the bitstream of the point cloud. Correspondingly, the decoder employs at least one entropy decoding algorithm to entropy decode the value to be decoded to obtain the zero run value or the quotient of the zero run value; wherein, the quotient of the zero run value is determined based on the ratio between the zero run value and a preset value. For example, the quotient of the zero run value can be a value obtained by rounding down the ratio between the zero run value and the preset value. For ease of description, the zero run value and the quotient of the zero run value are collectively referred to as the value to be encoded by the encoder / the target decoded value obtained by the decoder after entropy decoding of the value to be decoded, i.e., the value to be encoded / the target decoded value.

[0275] The meanings of the flag bits involved in this embodiment are as follows:

[0276] "gtZero" is used to indicate whether the value to be encoded / the target decoded value is greater than 0. A value of '0' indicates that the value to be encoded / the target decoded value is not greater than 0, and a value of '1' indicates that the value to be encoded / the target decoded value is greater than 0. When this syntax element does not appear, its default value is 0.

[0277] "gtOne" is used to indicate whether the value to be encoded / the target decoded value is greater than 1. Its value of '0' indicates that the value to be encoded / the target decoded value is not greater than 1, and its value of '1' indicates that the value to be encoded / the target decoded value is greater than 1. When this syntax element does not appear, its default value is 0.

[0278] "gtTwo" is used to indicate whether the ratio of the value to be encoded to the target decoded value is greater than 2. A value of '0' indicates that the ratio of the value to be encoded to the target decoded value is not greater than 2, and a value of '1' indicates that the ratio of the value to be encoded to the target decoded value is greater than 2. When this syntax element does not appear, its default value is 0.

[0279] "parity" is used to indicate the parity of the value to be encoded / the target value to be decoded.

[0280] The meanings of the symbols involved in this embodiment are as follows:

[0281] "GolombNum", where G is a preset value, or G represents a value determined based on the attribute information and / or quantization variables of the point cloud. For example, G represents a value determined based on the quantization residuals of the encoded / decoded points in the point cloud. For example, G represents the maximum, minimum, or average value of the quantization residuals of the encoded / decoded points in the point cloud.

[0282] "Threshold" is a pre-set threshold, such as 1, 2, etc.

[0283] At the encoding end, the encoding process is as follows:

[0284] a) Encode the "gtZero" flag. If it is 0, the encoding is complete; otherwise, proceed to step b).

[0285] b) Encode the "gtOne" flag. If it is 0, the encoding is complete; otherwise, proceed to step c).

[0286] c) Encode the "gtTwo" flag. If it is 0, the encoding is complete; otherwise, proceed to step d).

[0287] d) In this example, parity = (length-3)%2. Parity of 1 indicates that the value to be encoded is even, and parity of 0 indicates that the value to be encoded is odd. Encode "parity" and proceed to step e).

[0288] e) If GolombNum≤Threshold, use the K1 (e.g., 1, 2, 3, etc.) exponential Golomb coding algorithm to encode the value (to (length-3)>>1); otherwise, use the K2 (e.g., 1, 2, 3, etc.) exponential Golomb coding algorithm (K1 and K2 are not equal) to encode the value (to (length-3)>>1). Encoding is complete.

[0289] On the decoding end, the decoding process is as follows:

[0290] a) Decode the "gtZero" flag. If it is 0, it means that the value to be decoded is equal to 0, then the decoding is complete; otherwise, proceed to step b).

[0291] b) Decode the "gtOne" flag. If it is 0, it means that the value to be decoded is equal to 1, then the decoding is complete; otherwise, proceed to step c).

[0292] c) Decode the "gtTwo" flag. If it is 0, it means that the value to be decoded is equal to 2, then the decoding is complete; otherwise, proceed to step d).

[0293] d) Decode the "parity" flag and proceed to step e);

[0294] e) If GolombNum≤Threshold, use the K1 (e.g., 1, 2, 3, etc.) exponential Golomb decoding algorithm to decode the value; otherwise, use the K2 (e.g., 1, 2, 3, etc.) exponential Golomb decoding algorithm (K1 and K2 are not equal) to decode the value. Decoding is complete.

[0295] Zero run length = residual_zero_run_length_gt_zero +

[0296] residual_zero_run_length_gt_one+

[0297] residual_zero_run_length_gt_two+

[0298] parity+(value<<1).

[0299] Or zero run length value zero_run_length = [(residual_zero_run_length_gt_zero+

[0300] residual_zero_run_length_gt_one+

[0301] residual_zero_run_length_gt_two)+

[0302] parity+(value<<1))<<1]+remainder.

[0303] Here, remainder represents the remainder of the ratio between the zero run value and a preset value. For example, the preset value is 2.

[0304] It is worth noting that when the "gtZero", "gtOne", or "gtTwo" flags are 0, the parity value is the default value, which is 0.

[0305] In this embodiment, the decoder only needs to maintain the exponential Columbus decoding algorithm, which is beneficial for device implementation and can reduce device complexity and decoding cost. Furthermore, by introducing preset conditions and different order values, it is beneficial to use different order values ​​for different situations, thereby improving entropy decoding performance.

[0306] Example 3:

[0307] In this embodiment, the encoder employs at least one entropy coding algorithm to entropy code the zero run value or the quotient of the zero run value to obtain the bitstream of the point cloud. Correspondingly, the decoder employs at least one entropy decoding algorithm to entropy decode the value to be decoded to obtain the zero run value or the quotient of the zero run value; wherein, the quotient of the zero run value is determined based on the ratio between the zero run value and a preset value. For example, the quotient of the zero run value can be a value obtained by rounding down the ratio between the zero run value and the preset value. For ease of description, the zero run value and the quotient of the zero run value are collectively referred to as the value to be encoded by the encoder / the target decoded value obtained by the decoder after entropy decoding of the value to be decoded, i.e., the value to be encoded / the target decoded value.

[0308] The meanings of the flag bits involved in this embodiment are as follows:

[0309] "isZero" is used to indicate whether the value to be encoded / the target decoded value is equal to 0. A value of '0' indicates that the value to be encoded / the target decoded value is not equal to 0, and a value of '1' indicates that the value to be encoded / the target decoded value is equal to 0. When this syntax element does not appear, its default value is 0.

[0310] "isOne" is used to indicate whether the value to be encoded / the target decoded value is equal to 1. Its value of '0' indicates that the value to be encoded / the target decoded value is not equal to 1, and its value of '1' indicates that the value to be encoded / the target decoded value is equal to 1. When this syntax element does not appear, its default value is 0.

[0311] "isTwo" is used to indicate whether the value to be encoded / the target decoded value is equal to 2. Its value of '0' indicates that the value to be encoded / the target decoded value is not equal to 2, and its value of '1' indicates that the value to be encoded / the target decoded value is equal to 2. When this syntax element does not appear, its default value is 0.

[0312] "parity" is used to indicate the parity of the value to be encoded / the target value to be decoded.

[0313] At the encoding end, the encoding process is as follows:

[0314] a) Encode the "isZero" flag. If it is 1, the encoding is complete; otherwise, proceed to step b).

[0315] b) Encode the "isOne" flag. If it is 1, the encoding is complete; otherwise, proceed to step c).

[0316] c) Encode the "isTwo" flag. If it is 1, the encoding is complete; otherwise, proceed to step d).

[0317] d) In this example, parity = (length-3)%2. Parity of 1 indicates that the value to be encoded is even, and parity of 0 indicates that the value to be encoded is odd. Encode "parity" and proceed to step e).

[0318] e) Encode the value using the K-order (e.g., 1, 2, 3, etc.) exponential Golomb coding algorithm (to (length-3)>>1), and the encoding is complete.

[0319] On the decoding end, the decoding process is as follows:

[0320] a) Decode the "isZero" flag. If it is 1, it means that the value to be decoded is equal to 0, then the decoding is complete; otherwise, proceed to step b).

[0321] b) Decode the "isOne" flag. If it is 1, it means that the value to be decoded is equal to 1, then the decoding is complete; otherwise, proceed to step c).

[0322] c) Decode the "isTwo" flag. If it is 1, it means that the value to be decoded is equal to 2, then the decoding is complete; otherwise, proceed to step d).

[0323] d) Decode the "parity" flag and proceed to step e);

[0324] e) Use the K-order (e.g., 1, 2, 3, etc.) exponential Golomb decoding algorithm to decode the value, and the decoding is complete.

[0325] Is the zero-run length value zero_run_length equal to residual_zero_run_length_equal_zero? 0:

[0326] (residual_zero_run_length_equal_one?1:

[0327] (residual_zero_run_length_equal_two? 2:

[0328] (3+parity+(value<<1)))).

[0329] Or zero run length value zero_run_length = [(residual_zero_run_length_equal_zero?0:

[0330] (residual_zero_run_length_equal_one?1:

[0331] (residual_zero_run_length_equal_two? 2:

[0332] (3+parity+(value<<1)))))<<1]+remainder.

[0333] Here, remainder represents the remainder of the ratio between the zero run value and a preset value. For example, the preset value is 2.

[0334] It is worth noting that when the "isZero", "isOne", or "isTwo" flags are 1, the value of parity is the default value, which is 0.

[0335] In this embodiment, the decoder only needs to maintain a single exponential Columbus decoding algorithm and a single decoding parameter K, which is beneficial for device implementation and can reduce device complexity and decoding cost.

[0336] Example 4:

[0337] In this embodiment, the encoder employs at least one entropy coding algorithm to entropy code the zero run value or the quotient of the zero run value to obtain the bitstream of the point cloud. Correspondingly, the decoder employs at least one entropy decoding algorithm to entropy decode the value to be decoded to obtain the zero run value or the quotient of the zero run value; wherein, the quotient of the zero run value is determined based on the ratio between the zero run value and a preset value. For example, the quotient of the zero run value can be a value obtained by rounding down the ratio between the zero run value and the preset value. For ease of description, the zero run value and the quotient of the zero run value are collectively referred to as the value to be encoded by the encoder / the target decoded value obtained by the decoder after entropy decoding of the value to be decoded, i.e., the value to be encoded / the target decoded value.

[0338] The meanings of the flag bits involved in this embodiment are as follows:

[0339] "gtZero" is used to indicate whether the value to be encoded / the target decoded value is greater than 0. A value of '0' indicates that the value to be encoded / the target decoded value is not greater than 0, and a value of '1' indicates that the value to be encoded / the target decoded value is greater than 0. When this syntax element does not appear, its default value is 0.

[0340] "gtOne" is used to indicate whether the value to be encoded / the target decoded value is greater than 1. Its value of '0' indicates that the value to be encoded / the target decoded value is not greater than 1, and its value of '1' indicates that the value to be encoded / the target decoded value is greater than 1. When this syntax element does not appear, its default value is 0.

[0341] "gtTwo" is used to indicate whether the ratio of the value to be encoded to the target decoded value is greater than 2. A value of '0' indicates that the ratio of the value to be encoded to the target decoded value is not greater than 2, and a value of '1' indicates that the ratio of the value to be encoded to the target decoded value is greater than 2. When this syntax element does not appear, its default value is 0.

[0342] "parity" is used to indicate the parity of the value to be encoded / the target value to be decoded.

[0343] At the encoding end, the encoding process is as follows:

[0344] a) Encode the "gtZero" flag. If it is 0, the encoding is complete; otherwise, proceed to step b).

[0345] b) Encode the "gtOne" flag. If it is 0, the encoding is complete; otherwise, proceed to step c).

[0346] c) Encode the "gtTwo" flag. If it is 0, the encoding is complete; otherwise, proceed to step d).

[0347] d) In this example, parity = (length-3)%2. Parity of 1 indicates that the value to be encoded is even, and parity of 0 indicates that the value to be encoded is odd. Encode "parity" and proceed to step e).

[0348] e) Encode the value using the K-order (e.g., 1, 2, 3, etc.) exponential Golomb coding algorithm (to (length-3)>>1), and the encoding is complete.

[0349] On the decoding end, the decoding process is as follows:

[0350] a) Decode the "gtZero" flag. If it is 0, it means that the value to be decoded is equal to 0, then the decoding is complete; otherwise, proceed to step b).

[0351] b) Decode the "gtOne" flag. If it is 0, it means that the value to be decoded is equal to 1, then the decoding is complete; otherwise, proceed to step c).

[0352] c) Decode the "gtTwo" flag. If it is 0, it means that the value to be decoded is equal to 2, then the decoding is complete; otherwise, proceed to step d).

[0353] d) Decode the "parity" flag and proceed to step e);

[0354] e) Use the K-order (e.g., 1, 2, 3, etc.) exponential Golomb decoding algorithm to decode the value, and the decoding is complete.

[0355] Zero run length = residual_zero_run_length_gt_zero +

[0356] residual_zero_run_length_gt_one+

[0357] residual_zero_run_length_gt_two+

[0358] parity+(value<<1).

[0359] Or zero run length value zero_run_length = [(residual_zero_run_length_gt_zero+

[0360] residual_zero_run_length_gt_one+

[0361] residual_zero_run_length_gt_two)+

[0362] parity+(value<<1))<<1]+remainder.

[0363] Here, remainder represents the remainder of the ratio between the zero run value and a preset value. For example, the preset value is 2.

[0364] It is worth noting that when the "gtZero", "gtOne", or "gtTwo" flags are 0, the parity value is the default value, which is 0.

[0365] In this embodiment, the decoder only needs to maintain a single exponential Columbus decoding algorithm and a single decoding parameter K, which is beneficial for device implementation and can reduce device complexity and decoding cost.

[0366] Example 5:

[0367] In this embodiment, the encoder employs at least one entropy coding algorithm to entropy code the zero run value or the quotient of the zero run value to obtain the bitstream of the point cloud. Correspondingly, the decoder employs at least one entropy decoding algorithm to entropy decode the value to be decoded to obtain the zero run value or the quotient of the zero run value; wherein, the quotient of the zero run value is determined based on the ratio between the zero run value and a preset value. For example, the quotient of the zero run value can be a value obtained by rounding down the ratio between the zero run value and the preset value. For ease of description, the zero run value and the quotient of the zero run value are collectively referred to as the value to be encoded by the encoder / the target decoded value obtained by the decoder after entropy decoding of the value to be decoded, i.e., the value to be encoded / the target decoded value.

[0368] The meanings of the flag bits involved in this embodiment are as follows:

[0369] "isZero" is used to indicate whether the value to be encoded / the target decoded value is equal to 0. A value of '0' indicates that the value to be encoded / the target decoded value is not equal to 0, and a value of '1' indicates that the value to be encoded / the target decoded value is equal to 0. When this syntax element does not appear, its default value is 0.

[0370] "isOne" is used to indicate whether the value to be encoded / the target decoded value is equal to 1. Its value of '0' indicates that the value to be encoded / the target decoded value is not equal to 1, and its value of '1' indicates that the value to be encoded / the target decoded value is equal to 1. When this syntax element does not appear, its default value is 0.

[0371] "isTwo" is used to indicate whether the value to be encoded / the target decoded value is equal to 2. Its value of '0' indicates that the value to be encoded / the target decoded value is not equal to 2, and its value of '1' indicates that the value to be encoded / the target decoded value is equal to 2. When this syntax element does not appear, its default value is 0.

[0372] "parity" is used to indicate the parity of the value to be encoded / the target value to be decoded.

[0373] The meanings of the symbols involved in this embodiment are as follows:

[0374] "GolombNum", where G is a preset value, or G represents a value determined based on the attribute information and / or quantization variables of the point cloud. For example, G represents a value determined based on the quantization residuals of the encoded / decoded points in the point cloud. For example, G represents the maximum, minimum, or average value of the quantization residuals of the encoded / decoded points in the point cloud.

[0375] "Threshold" is a pre-set threshold, such as 1, 2, etc.

[0376] At the encoding end, the encoding process is as follows:

[0377] a) Encode the "isZero" flag. If it is 1, the encoding is complete; otherwise, proceed to step b).

[0378] b) Encode the "isOne" flag. If it is 1, the encoding is complete; otherwise, proceed to step c).

[0379] c) Encode the "isTwo" flag. If it is 1, the encoding is complete; otherwise, proceed to step d).

[0380] d) Encode the "parity" flag, parity = (length-3)%2, parity is 1 to indicate that the value to be encoded is even, and parity is 0 to indicate that the value to be encoded is odd. Encode "parity" and proceed to step e);

[0381] e) If GolombNum≤Threshold, use the second-order exponential Golomb coding algorithm to encode the value (as (length-3)>>1); otherwise, use the arithmetic coding algorithm to encode the value (as (length-3)>>1). Encoding is complete.

[0382] On the decoding end, the decoding process is as follows:

[0383] a) Decode the "isZero" flag. If it is 1, it means that the value to be decoded is equal to 0, then the decoding is complete; otherwise, proceed to step b).

[0384] b) Decode the "isOne" flag. If it is 1, it means that the value to be decoded is equal to 1, then the decoding is complete; otherwise, proceed to step c).

[0385] c) Decode the "isTwo" flag. If it is 1, it means that the value to be decoded is equal to 2, then the decoding is complete; otherwise, proceed to step d).

[0386] d) Decode the "parity" flag and proceed to step e);

[0387] e) If GolombNum≤Threshold, use the second-order exponential Golomb decoding algorithm to decode the value; otherwise, use the arithmetic decoding algorithm to decode the value. Decoding is complete.

[0388] Is the zero-run length value zero_run_length equal to residual_zero_run_length_equal_zero? 0:

[0389] (residual_zero_run_length_equal_one?1:

[0390] (residual_zero_run_length_equal_two? 2:

[0391] (3+parity+(value<<1)))).

[0392] Or zero run length value zero_run_length = [(residual_zero_run_length_equal_zero?0:

[0393] (residual_zero_run_length_equal_one?1:

[0394] (residual_zero_run_length_equal_two? 2:

[0395] (3+parity+(value<<1)))))<<1]+remainder.

[0396] Here, remainder represents the remainder of the ratio between the zero run value and a preset value. For example, the preset value is 2.

[0397] It is worth noting that when the "isZero", "isOne", or "isTwo" flags are 1, the value of parity is the default value, which is 0.

[0398] In this embodiment, the introduction of the second-order exponential Columbus decoding algorithm and the arithmetic decoding algorithm is beneficial to improving the entropy decoding performance. Of course, in other alternative embodiments, the arithmetic decoding algorithm can also be replaced by other entropy decoding algorithms, and this application does not specifically limit this.

[0399] The preferred embodiments of this application have been described in detail above with reference to the accompanying drawings. However, this application is not limited to the specific details of the above embodiments. Within the scope of the technical concept of this application, various simple modifications can be made to the technical solutions of this application, and these simple modifications all fall within the protection scope of this application. For example, the various specific technical features described in the above specific embodiments can be combined in any suitable manner without contradiction. To avoid unnecessary repetition, this application will not describe the various possible combinations separately. Furthermore, various different embodiments of this application can also be arbitrarily combined, as long as they do not violate the spirit of this application, they should also be considered as the content disclosed in this application. It should also be understood that in the various method embodiments of this application, the sequence number of each process does not imply the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of this application.

[0400] The method embodiments of this application have been described in detail above. The following description, in conjunction with... Figures 11 to 10 The following describes in detail the device embodiments of this application.

[0401] Figure 12 This is a schematic block diagram of the decoder 500 according to an embodiment of this application.

[0402] like Figure 12 As shown, the decoder 500 may include:

[0403] The acquisition unit 510 is used to acquire the value to be decoded based on the bit stream of the point cloud;

[0404] Decoding unit 520 is used to decode the value to be decoded using at least one entropy decoding algorithm maintained by the decoder to obtain a target decoded value; the target decoded value is a zero run value or the quotient of the zero run value; wherein the quotient of the zero run value is determined according to the ratio between the zero run value and a preset value.

[0405] In some embodiments, the at least one entropy decoding algorithm is a single entropy decoding algorithm;

[0406] Specifically, the decoding unit 520 is used for:

[0407] If the preset conditions are met, the single entropy decoding algorithm with the decoding parameter set to the first value is used to decode the value to be decoded to obtain the target decoded value; otherwise, the single entropy decoding algorithm with the decoding parameter set to the second value is used to decode the value to be decoded to obtain the target decoded value.

[0408] Wherein, the first value is not equal to the second value.

[0409] In some embodiments, the first value or the second value is G; wherein G is a preset value, or G is a value determined based on the attribute information of the point cloud and / or the quantization variable used by the decoder.

[0410] In some embodiments, the first value and / or the second value are default values; or, the first value and / or the second value are values ​​obtained by decoding the bitstream.

[0411] In some embodiments, the absolute value of the difference between the first value and the second value is less than or equal to a preset upper limit threshold, or the absolute value of the difference between the first value and the second value is within a preset numerical range.

[0412] In some embodiments, the at least one entropy decoding algorithm is a single entropy decoding algorithm;

[0413] Specifically, the decoding unit 520 is used for:

[0414] The target decoded value is obtained by using the single entropy decoding algorithm with the decoding parameters set to the target value.

[0415] In some embodiments, the target value is G, a default value, or a value obtained by decoding the bitstream; wherein G is a preset value, or G is a value determined based on the attribute information of the point cloud and / or the quantization variable used by the decoder.

[0416] In some embodiments, when the single entropy decoding algorithm is the exponential Columbus decoding algorithm, the decoding parameter is the order of the exponential Columbus decoding algorithm.

[0417] In some embodiments, the at least one entropy decoding algorithm is a plurality of entropy decoding algorithms;

[0418] Specifically, the decoding unit 520 is used for:

[0419] If the preset conditions are met, the first entropy decoding algorithm among the multiple entropy decoding algorithms is used to decode the value to be decoded to obtain the target decoded value; otherwise, the second entropy decoding algorithm among the multiple entropy decoding algorithms is used to decode the value to be decoded to obtain the target decoded value.

[0420] In some embodiments, when the first entropy decoding algorithm or the second entropy decoding algorithm is an exponential Columbus decoding algorithm, the order of the exponential Columbus decoding algorithm is equal to G; wherein, G is a preset value, or G is a value determined according to the attribute information of the point cloud and / or the quantization variable used by the decoder.

[0421] In some embodiments, the preset conditions include at least one of the following:

[0422] G≤T;

[0423] G = T;

[0424] G≥T;

[0425] Wherein, G is a preset value, or G is a value determined based on the attribute information of the point cloud and / or the quantization variable used by the decoder, and T is a preset threshold.

[0426] In some embodiments, the entropy decoding algorithm in the at least one entropy decoding algorithm is the default entropy decoding algorithm.

[0427] In some embodiments, the decoding performance of the entropy decoding algorithm in the at least one entropy decoding algorithm is higher than that of the reference entropy decoding algorithm.

[0428] In some embodiments, the decoding unit 520 is further configured to:

[0429] Based on the bitstream, obtain N flag bits of the value to be decoded;

[0430] Wherein, when the value of the i-th flag bit among the N flag bits is the third value, it is used to indicate that the target decoded value is not equal to i-1 or to indicate that the target decoded value is greater than i-1; when the value of the i-th flag bit among the N flag bits is the fourth value, it is used to indicate that the target decoded value is equal to i-1 or to indicate that the target decoded value is not greater than i-1; N is an integer greater than 0;

[0431] Based on the N flag bits, determine whether to use the at least one entropy decoding algorithm to decode the value to be decoded.

[0432] In some embodiments, the decoding unit 520 is specifically used for:

[0433] If all N flag bits are the third value, then it is determined that the at least one entropy decoding algorithm will be used to decode the value to be decoded.

[0434] In some embodiments, the decoding unit 520 is specifically used for:

[0435] The value to be decoded is decoded using at least one entropy decoding algorithm to obtain a fifth value;

[0436] The fifth value is left-shifted to obtain the sixth value;

[0437] Based on the sixth value and N, the target decoded value is determined.

[0438] In some embodiments, before the decoding unit 520 decodes the value to be decoded using the at least one entropy decoding algorithm to obtain the fifth value, it is further configured to:

[0439] A first flag bit is obtained based on the bitstream; the first flag bit is used to indicate the parity of the target decoded value.

[0440] When the decoding unit 520 determines the target decoding value based on the sixth value and N, it determines the target decoding value by summing the sixth value, N, and the value of the first flag bit.

[0441] In some embodiments, the target decoded value is a zero run value or the quotient of the zero run value; wherein the quotient of the zero run value is determined based on the ratio between the zero run value and a preset value.

[0442] Figure 13 This is a schematic block diagram of the encoder 600 according to an embodiment of this application.

[0443] like Figure 13 As shown, the encoder 600 may include:

[0444] Acquisition unit 610 is used to determine the value to be encoded based on the zero run value;

[0445] The encoding unit 620 is used to encode the value to be encoded using at least one entropy encoding algorithm maintained by the encoder.

[0446] In some embodiments, the at least one entropy coding algorithm is a single entropy coding algorithm;

[0447] Specifically, the encoding unit 620 is used for:

[0448] If the preset conditions are met, the single entropy encoding algorithm with the encoding parameter set to the first value is used to encode the value to be encoded; otherwise, the single entropy encoding algorithm with the encoding parameter set to the second value is used to encode the value to be encoded.

[0449] Wherein, the first value is not equal to the second value.

[0450] In some embodiments, the first value or the second value is G; wherein G is a preset value, or G is a value determined based on the attribute information of the point cloud and / or the quantization variable used by the encoder.

[0451] In some embodiments, the first value and / or the second value are default values.

[0452] In some embodiments, the encoding unit 620 is further configured to:

[0453] Encode the first value and / or the second value.

[0454] In some embodiments, the absolute value of the difference between the first value and the second value is less than or equal to a preset upper limit threshold, or the absolute value of the difference between the first value and the second value is within a preset numerical range.

[0455] In some embodiments, the at least one entropy coding algorithm is a single entropy coding algorithm;

[0456] Specifically, the encoding unit 620 is used for:

[0457] The value to be encoded is encoded using the single entropy encoding algorithm with the encoding parameters set as the target value.

[0458] In some embodiments, the target value is G or the target value is a default value; wherein G is a preset value, or G is a value determined based on the attribute information of the point cloud and / or the quantization variable used by the encoder.

[0459] In some embodiments, the encoding unit 620 is further configured to:

[0460] The target value is encoded.

[0461] In some embodiments, when the single entropy coding algorithm is the exponential Golomb coding algorithm, the coding parameter is the order of the exponential Golomb coding algorithm.

[0462] In some embodiments, the at least one entropy coding algorithm is a plurality of entropy coding algorithms;

[0463] Specifically, the encoding unit 620 is used for:

[0464] If the preset conditions are met, the first entropy coding algorithm in the entropy coding algorithm is used to encode the value to be encoded; otherwise, the second entropy coding algorithm in the entropy coding algorithm is used to encode the value to be encoded.

[0465] In some embodiments, when the first entropy coding algorithm or the second entropy coding algorithm is an exponential Golomb coding algorithm, the order of the exponential Golomb coding algorithm is equal to G; wherein, G is a preset value, or G is a value determined according to the attribute information of the point cloud and / or the quantization variable used by the encoder.

[0466] In some embodiments, the preset conditions include at least one of the following:

[0467] G≤T;

[0468] G = T;

[0469] G≥T;

[0470] Wherein, G is a preset value, or G is a value determined based on the attribute information of the point cloud and / or the quantization variable used by the encoder, and T is a preset threshold.

[0471] In some embodiments, the entropy coding algorithm in the at least one entropy coding algorithm is the default entropy coding algorithm.

[0472] In some embodiments, the encoding performance of the entropy coding algorithm in the at least one entropy coding algorithm is higher than that of the reference entropy coding algorithm.

[0473] In some embodiments, before the encoding unit 620 encodes the value to be encoded using at least one entropy coding algorithm maintained by the encoder, it is further configured to:

[0474] Determine N flag bits;

[0475] Wherein, when the value of the i-th flag bit among the N flag bits is the third value, it is used to indicate that the value to be encoded is not equal to i-1 or to indicate that the value to be encoded is greater than i-1; when the value of the i-th flag bit among the N flag bits is the fourth value, it is used to indicate that the value to be encoded is equal to i-1 or to indicate that the value to be encoded is not greater than i-1; N is an integer greater than 0;

[0476] Based on the N flag bits, determine whether to use the at least one entropy coding algorithm to encode the value to be encoded.

[0477] In some embodiments, the encoding unit 620 is specifically used for:

[0478] If all N flag bits are the third value, then it is determined that the at least one entropy coding algorithm will be used to encode the value to be encoded.

[0479] The N flag bits are encoded and the value to be encoded is encoded using at least one entropy encoding algorithm.

[0480] In some embodiments, the encoding unit 620 is specifically used for:

[0481] By subtracting N from the value to be encoded, the seventh value is obtained;

[0482] The seventh value is shifted to the right to obtain the eighth value;

[0483] The eighth value is encoded using at least one entropy coding algorithm.

[0484] In some embodiments, the encoding unit 620 is further configured to:

[0485] The first flag bit is encoded and the value to be encoded is encoded using the at least one entropy encoding algorithm; the first flag bit is used to indicate the parity of the value to be encoded.

[0486] In some embodiments, the acquisition unit 610 is specifically used for:

[0487] The zero-run value is determined as the value to be encoded; or

[0488] The quotient of the zero run value is determined as the value to be encoded, and the quotient of the zero run value is determined according to the ratio between the zero run value and a preset value.

[0489] It should be understood that the device embodiments and method embodiments can correspond to each other, and similar descriptions can be found in the method embodiments. To avoid repetition, further details are omitted here. Specifically, Figure 12 The decoder 500 shown can correspond to the corresponding subject in the method 300 of the embodiments of this application, and the foregoing and other operations and / or functions of each unit in the decoder 500 are respectively for implementing the corresponding processes in the various methods such as method 300. Figure 13 The encoder 600 shown can correspond to the corresponding subject in the method 400 of the embodiments of this application, that is, the foregoing and other operations and / or functions of each unit in the encoder 600 are respectively for implementing the corresponding processes in the various methods such as method 400.

[0490] It should also be understood that the various units in the decoder 500 or encoder 600 involved in the embodiments of this application can be individually or entirely merged into one or more other units, or some of the units can be further divided into multiple functionally smaller units. This can achieve the same operation without affecting the technical effect of the embodiments of this application. The above units are based on logical function division. In practical applications, the function of one unit can also be implemented by multiple units, or the function of multiple units can be implemented by one unit. In other embodiments of this application, the decoder 500 or encoder 600 may also include other units. In practical applications, these functions can also be implemented with the assistance of other units, and can be implemented by multiple units working together. According to another embodiment of this application, the decoder 500 or encoder 600 involved in the embodiments of this application, and the encoding method or decoding method of the embodiments of this application can be implemented by running a computer program (including program code) capable of performing the steps involved in the corresponding method on a general-purpose computing device including processing elements and storage elements such as a central processing unit (CPU), random access storage medium (RAM), and read-only storage medium (ROM). Computer programs can be recorded on, for example, a computer-readable storage medium, loaded into an electronic device via the computer-readable storage medium, and run therein to implement the corresponding methods of the embodiments of this application.

[0491] In other words, the units mentioned above can be implemented in hardware, in software instructions, or in a combination of hardware and software. Specifically, the steps of the method embodiments in this application can be completed by the integrated logic circuits in the processor's hardware and / or by software instructions. The steps of the method disclosed in the embodiments of this application can be directly manifested as being executed by a hardware decoding processor, or executed by a combination of hardware and software in the decoding processor. Optionally, the software can reside in a mature storage medium in the art, such as random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, etc. This storage medium is located in memory, and the processor reads the information in the memory and completes the steps in the above method embodiments in conjunction with its hardware.

[0492] Figure 14 This is a schematic structural diagram of the electronic device 700 provided in the embodiments of this application.

[0493] like Figure 14As shown, the electronic device 700 includes at least a processor 710 and a computer-readable storage medium 720. The processor 710 and the computer-readable storage medium 720 can be connected via a bus or other means. The computer-readable storage medium 720 stores a computer program 721, which includes computer instructions. The processor 710 executes the computer instructions stored in the computer-readable storage medium 720. The processor 710 is the computing and control core of the electronic device 700, and is suitable for implementing one or more computer instructions, specifically for loading and executing one or more computer instructions to achieve a corresponding method flow or function.

[0494] As an example, processor 710 may also be referred to as a central processing unit (CPU). Processor 710 may include, but is not limited to: general-purpose processors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc.

[0495] As an example, the computer-readable storage medium 720 may be a high-speed RAM memory or a non-volatile memory, such as at least one disk storage device; optionally, it may also be at least one computer-readable storage medium located remotely from the aforementioned processor 710. Specifically, the computer-readable storage medium 720 includes, but is not limited to, volatile memory and / or non-volatile memory. The non-volatile memory may be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. The volatile memory may be random access memory (RAM), which serves as an external cache. By way of example, but not limitation, many forms of RAM are available, such as Static RAM (SRAM), Dynamic RAM (DRAM), Synchronous DRAM (SDRAM), Double Data Rate SDRAM (DDR SDRAM), Enhanced Synchronous DRAM (ESDRAM), Synchronous Link DRAM (SLDRAM), and Direct Rambus RAM (DR RAM).

[0496] In one implementation, the electronic device 700 may be an encoder or encoding framework as described in the embodiments of this application; the computer-readable storage medium 720 stores first computer instructions; the processor 710 loads and executes the first computer instructions stored in the computer-readable storage medium 720 to implement the corresponding steps in the encoding method provided in the embodiments of this application; in other words, the first computer instructions in the computer-readable storage medium 720 are loaded and executed by the processor 710 to implement the corresponding steps, which will not be described again here to avoid repetition.

[0497] In one implementation, the electronic device 700 may be the decoder or decoding framework involved in the embodiments of this application; the computer-readable storage medium 720 stores second computer instructions; the processor 710 loads and executes the second computer instructions stored in the computer-readable storage medium 720 to implement the corresponding steps in the decoding method provided in the embodiments of this application; in other words, the second computer instructions in the computer-readable storage medium 720 are loaded and executed by the processor 710 to implement the corresponding steps, which will not be described again here to avoid repetition.

[0498] According to another aspect of this application, embodiments of this application also provide an encoding / decoding system, including the encoder and decoder mentioned above.

[0499] According to another aspect of this application, embodiments of this application also provide a computer-readable storage medium (Memory), which is a memory device in electronic device 700 for storing programs and data. For example, a computer-readable storage medium 720. It is understood that the computer-readable storage medium 720 here may include both the built-in storage medium in electronic device 700 and extended storage media supported by electronic device 700. The computer-readable storage medium provides storage space that stores the operating system of electronic device 700. Furthermore, the storage space also stores one or more computer instructions suitable for loading and execution by processor 710, which may be one or more computer programs 721 (including program code).

[0500] According to another aspect of this application, a computer program product or computer program is provided, which includes computer instructions stored in a computer-readable storage medium. For example, computer program 721. In this case, the data processing device 700 may be a computer, and the processor 710 reads the computer instructions from the computer-readable storage medium 720, executes the computer instructions, causing the computer to perform the encoding or decoding methods provided in the various alternative embodiments described above.

[0501] In other words, when implemented using software, it can be implemented entirely or partially in the form of a computer program product. This computer program product includes one or more computer instructions. When these computer program instructions are loaded and executed on a computer, all or part of the processes of the embodiments of this application are run or the functions of the embodiments of this application are implemented. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another. For example, the computer instructions can be transmitted from one website, computer, server, or data center to another via wired (e.g., coaxial cable, fiber optic, digital subscriber line (DSL)) or wireless (e.g., infrared, wireless, microwave, etc.) means.

[0502] Those skilled in the art will recognize that the units and process steps of the various examples described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.

[0503] Finally, it should be noted that the above content is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any variations or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this application should be included within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.

Claims

1. A decoding method, characterized in that, The method is applicable to a decoder, and the method includes: Obtain the value to be decoded from the bitstream of point cloud; The value to be decoded is decoded using at least one entropy decoding algorithm maintained by the decoder to obtain a target decoded value; the target decoded value is a zero run value or the quotient of the zero run value; wherein, the quotient of the zero run value is determined according to the ratio between the zero run value and a preset value; Wherein, the at least one entropy decoding algorithm is a single entropy decoding algorithm; the step of using the at least one entropy decoding algorithm maintained by the decoder to decode the value to be decoded to obtain the target decoded value includes: The target decoded value is obtained by using the single entropy decoding algorithm with the decoding parameters set to the target value. Wherein, when the single entropy decoding algorithm is the exponential Columbus decoding algorithm, the decoding parameter is the order of the exponential Columbus decoding algorithm, and the order of the exponential Columbus decoding algorithm is 2.

2. The method according to claim 1, characterized in that, The method further includes: Based on the bitstream, obtain N flag bits of the value to be decoded; Wherein, when the value of the i-th flag bit among the N flag bits is the third value, it is used to indicate that the target decoded value is not equal to i-1 or to indicate that the target decoded value is greater than i-1; when the value of the i-th flag bit among the N flag bits is the fourth value, it is used to indicate that the target decoded value is equal to i-1 or to indicate that the target decoded value is not greater than i-1; N is an integer greater than 0; Based on the N flag bits, determine whether to use the at least one entropy decoding algorithm to decode the value to be decoded.

3. The method according to claim 2, characterized in that, The step of determining whether to use at least one entropy decoding algorithm to decode the value to be decoded based on the N flag bits includes: If all N flag bits are the third value, then it is determined that the at least one entropy decoding algorithm will be used to decode the value to be decoded.

4. The method according to claim 2 or 3, characterized in that, The step of decoding the value to be decoded using at least one entropy decoding algorithm maintained by the decoder to obtain the target decoded value includes: The value to be decoded is decoded using at least one entropy decoding algorithm to obtain a fifth value; The fifth value is left-shifted to obtain the sixth value; Based on the sixth value and N, the target decoded value is determined.

5. The method according to claim 4, characterized in that, Before decoding the value to be decoded using the at least one entropy decoding algorithm to obtain the fifth value, the method further includes: A first flag bit is obtained based on the bitstream; the first flag bit is used to indicate the parity of the target decoded value. The step of determining the target decoded value based on the sixth numerical value and N includes: The sum of the sixth value, N, and the value of the first flag bit is determined as the target decoded value.

6. An encoding method, characterized in that, The method is applicable to encoders, and the method includes: The value to be encoded is determined based on the zero run value; The value to be encoded is encoded using at least one entropy coding algorithm maintained by the encoder; Wherein, the at least one entropy coding algorithm is a single entropy coding algorithm; the encoding of the value to be encoded using the at least one entropy coding algorithm maintained by the encoder includes: The value to be encoded is encoded using the single entropy encoding algorithm with the encoding parameters set as the target value; Wherein, when the single entropy coding algorithm is the exponential Golomb coding algorithm, the coding parameter is the order of the exponential Golomb coding algorithm, and the order of the exponential Golomb coding algorithm is 2.

7. The method according to claim 6, characterized in that, The method further includes: The target value is encoded.

8. The method according to claim 6, characterized in that, The method further includes: Determine N flag bits; Wherein, when the value of the i-th flag bit among the N flag bits is the third value, it is used to indicate that the value to be encoded is not equal to i-1 or to indicate that the value to be encoded is greater than i-1; when the value of the i-th flag bit among the N flag bits is the fourth value, it is used to indicate that the value to be encoded is equal to i-1 or to indicate that the value to be encoded is not greater than i-1; N is an integer greater than 0; Based on the N flag bits, determine whether to use the at least one entropy coding algorithm to encode the value to be encoded.

9. The method according to claim 8, characterized in that, The step of determining whether to use at least one entropy coding algorithm to encode the value to be encoded based on the N flag bits includes: If all N flag bits are the third value, then it is determined that the at least one entropy coding algorithm will be used to encode the value to be encoded. The step of encoding the value to be encoded using at least one entropy coding algorithm maintained by the encoder includes: The N flag bits are encoded and the value to be encoded is encoded using at least one entropy encoding algorithm.

10. The method according to claim 8 or 9, characterized in that, Encoding the value to be encoded using at least one entropy coding algorithm maintained by the encoder includes: By subtracting N from the value to be encoded, the seventh value is obtained; The seventh value is shifted to the right to obtain the eighth value; The eighth value is encoded using at least one entropy coding algorithm.

11. The method according to any one of claims 6 to 9, characterized in that, Encoding the value to be encoded using at least one entropy coding algorithm maintained by the encoder includes: The first flag bit is encoded and the value to be encoded is encoded using the at least one entropy encoding algorithm; the first flag bit is used to indicate the parity of the value to be encoded.

12. The method according to any one of claims 6 to 9, characterized in that, The process of determining the value to be encoded based on the zero run value includes: The zero-run value is determined as the value to be encoded; or The quotient of the zero run value is determined as the value to be encoded, and the quotient of the zero run value is determined according to the ratio between the zero run value and a preset value.

13. A decoder, characterized in that, include: The acquisition unit is used to acquire the value to be decoded based on the bit stream of the point cloud; A decoding unit is configured to decode the value to be decoded using at least one entropy decoding algorithm maintained by the decoder to obtain a target decoded value; the target decoded value is a zero run value or the quotient of the zero run value; wherein the quotient of the zero run value is determined according to the ratio between the zero run value and a preset value; Wherein, the at least one entropy decoding algorithm is a single entropy decoding algorithm; the decoding unit is further configured to decode the value to be decoded using the single entropy decoding algorithm with the decoding parameter being the target value, to obtain the target decoded value; Wherein, when the single entropy decoding algorithm is the exponential Columbus decoding algorithm, the decoding parameter is the order of the exponential Columbus decoding algorithm, and the order of the exponential Columbus decoding algorithm is 2.

14. An encoder, characterized in that, include: The acquisition unit is used to determine the value to be encoded based on the zero run value; An encoding unit is configured to encode the value to be encoded using at least one entropy encoding algorithm maintained by the encoder; Wherein, the at least one entropy coding algorithm is a single entropy coding algorithm; the coding unit is further configured to encode the value to be encoded using the single entropy coding algorithm with the coding parameter being the target value; Wherein, when the single entropy coding algorithm is the exponential Golomb coding algorithm, the coding parameter is the order of the exponential Golomb coding algorithm, and the order of the exponential Golomb coding algorithm is 2.

15. A decoder, characterized in that, include: A processor, adapted to execute computer programs; A computer-readable storage medium storing a computer program that, when executed by the processor, implements the method as described in any one of claims 1 to 5.

16. An encoder, characterized in that, include: A processor, adapted to execute computer programs; A computer-readable storage medium storing a computer program that, when executed by the processor, implements the method as described in any one of claims 6 to 12.

17. A computer-readable storage medium, characterized in that, Used to store a computer program that causes a computer to perform the method as claimed in any one of claims 1 to 5 or the method as claimed in any one of claims 6 to 12.

18. A computer program product comprising a computer program / instructions, characterized in that, When the computer program / instructions are executed by the processor, they implement the method as described in any one of claims 1 to 5 or the method as described in any one of claims 6 to 12.