WO2024168611A1 - Procédé de décodage, procédé de codage, décodeur et codeur - Google Patents
Procédé de décodage, procédé de codage, décodeur et codeur Download PDFInfo
- Publication number
- WO2024168611A1 WO2024168611A1 PCT/CN2023/076257 CN2023076257W WO2024168611A1 WO 2024168611 A1 WO2024168611 A1 WO 2024168611A1 CN 2023076257 W CN2023076257 W CN 2023076257W WO 2024168611 A1 WO2024168611 A1 WO 2024168611A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- value
- parameter
- zero
- binary number
- run
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/161—Encoding, multiplexing or demultiplexing different image signal components
Definitions
- Embodiments of the present application relate to the field of coding and decoding technology, and more specifically, to a decoding method, an encoding method, a decoder, and an encoder.
- Point clouds have begun to be popularized in various fields, such as virtual/augmented reality, robotics, geographic information systems, and medicine. With the continuous improvement of the accuracy and speed of scanning equipment, a large number of point clouds on the surface of objects can be accurately obtained, and often hundreds of thousands of points can correspond to one scene. Such a large number of points also brings challenges to computer storage and transmission. Therefore, point compression has become a hot issue.
- the encoder For the compression of point clouds, it is mainly necessary to compress their geometric information and attribute information. Specifically, the encoder first divides the geometric information of the point cloud into octrees, and then uses an entropy coding algorithm to entropy encode the geometric information expressed by the octree structure to obtain a geometric code stream.
- the encoder reconstructs the geometric information based on the geometric information expressed by the octree structure, and 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 value of the attribute information, and then quantizes the residual to obtain a quantized residual, and uses an entropy coding algorithm to entropy encode the quantized residual to obtain an attribute code stream.
- the embodiments of the present application provide a decoding method, an encoding method, a decoder and an encoder, which can improve encoding and decoding performance.
- an embodiment of the present application provides a decoding method, including:
- N is a positive integer
- a first zero-run value is determined.
- an embodiment of the present application provides an encoding method, including:
- N is a positive integer
- the second parameter is encoded based on the first entropy coding algorithm.
- an embodiment of the present application provides a decoder, including:
- An acquisition unit used for acquiring N first parameters; N is a positive integer;
- a first determining unit configured to determine a first entropy decoding algorithm based on the N first parameters
- a decoding unit configured to determine a second parameter based on the first entropy decoding algorithm
- the second determining unit is used to determine a first zero-run value based on the second parameter.
- an encoder including:
- An acquisition unit used for acquiring N first parameters; N is a positive integer;
- a first determining unit configured to determine a first entropy coding algorithm based on the N first parameters
- a second determining unit configured to determine a second parameter based on the first zero-run value
- the encoding unit is used to encode the second parameter based on the first entropy encoding algorithm.
- an embodiment of the present application provides a decoder, including:
- a processor adapted to implement computer instructions
- a computer-readable storage medium stores computer instructions, wherein the computer instructions are suitable for being loaded by a processor and executing the decoding method in the above-mentioned first aspect or its various implementation modes.
- the number of the processor is one or more, and the number of the memory is one or more.
- the computer-readable storage medium may be integrated with the processor, or the computer-readable storage medium may be disposed separately from the processor.
- an encoder including:
- a processor adapted to implement computer instructions
- a computer-readable storage medium stores computer instructions, wherein the computer instructions are suitable for being loaded by a processor and executing the encoding method in the second aspect or its various implementation modes.
- the number of the processor is one or more, and the number of the memory is one or more.
- the computer-readable storage medium may be integrated with the processor, or the computer-readable storage medium may be disposed separately from the processor.
- an embodiment of the present application provides a computer-readable storage medium, which stores computer instructions.
- the computer instructions When the computer instructions are read and executed by a processor of a computer device, the computer device executes the decoding method involved in the first aspect or the encoding method involved in the second aspect.
- an embodiment of the present application provides a computer program product or a computer program, the computer program product or the computer program including computer instructions, the computer instructions being stored in a computer-readable storage medium.
- a processor of a computer device reads the computer instructions from the computer-readable storage medium, and the processor executes the computer instructions, so that the computer device executes the decoding method involved in the first aspect or the encoding method involved in the second aspect.
- an embodiment of the present application provides a code stream, which is a code stream involved in the method described in the first aspect or a code stream generated by the method described in the second aspect.
- the decoder uses a first entropy decoding algorithm adapted to the N first parameters to determine The second parameter, and then determining the first zero-run value based on the second parameter, can reduce the encoding codeword, and then improve the encoding and decoding performance.
- FIG. 1 is an example of a point cloud image provided by an embodiment of the present application.
- FIG. 2 is a partial enlarged view of the point cloud image shown in FIG. 1 .
- FIG. 3 is an example of a point cloud image with six viewing angles provided by an embodiment of the present application.
- FIG4 is a schematic block diagram of a G-PCC coding framework provided in an embodiment of the present application.
- FIG5 is a schematic block diagram of a G-PCC decoding framework provided in an embodiment of the present application.
- Figure 6 is a schematic block diagram of the AVS PCC encoding framework provided in an embodiment of the present application.
- FIG. 7 is a schematic block diagram of the AVS PCC decoding framework provided in an embodiment of the present application.
- FIG8 is a schematic flowchart of a decoding method provided in an embodiment of the present application.
- FIG. 9 is a schematic flowchart of the encoding method provided in an embodiment of the present application.
- FIG10 is a schematic flow chart of a decoder provided in an embodiment of the present application.
- FIG. 11 is a schematic flow chart of an encoder provided in an embodiment of the present application.
- FIG. 12 is a schematic block diagram of an electronic device provided in an embodiment of the present application.
- Point Cloud is a set of irregularly distributed discrete points in space that express the spatial structure and surface properties of a three-dimensional object or three-dimensional scene.
- Figures 1 and 2 show a three-dimensional point cloud image and a local magnified image, respectively. It can be seen that the point cloud surface is composed of densely distributed points.
- each point in a point cloud has corresponding attribute information, usually RGB color value, which reflects the color of the object; for a point cloud, the attribute information corresponding to each point can be a reflectance value in addition to color, and the reflectance value reflects the surface material of the object.
- Each point in a point cloud can include geometric information and attribute information, wherein the geometric information of each point in a point cloud refers to the Cartesian three-dimensional coordinate data of the point, and the attribute information of each point in a point cloud 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 information in any color space.
- color information can be red, green, blue (RGB) information.
- color information can also be brightness and chromaticity (YCbCr, YUV) information.
- Y represents brightness (Luma)
- Cb (U) represents the blue chromaticity component
- Cr (V) represents the red chromaticity component.
- Each point in the point cloud has the same amount of attribute information.
- each point in the point cloud has two types of attribute information: color information and laser reflection intensity.
- each point in the point cloud has three types of attribute information: color information, material information, and laser reflection intensity information.
- a point cloud image can have multiple viewing angles, for example, the point cloud image shown in FIG3 can have six viewing angles.
- the data storage format of a point cloud image consists of a file header information part and a data part.
- the header information includes the data format, data representation type, the total number of point cloud points, and the content represented by the point cloud.
- the data storage format of the point cloud image can be implemented in the following format:
- the data storage format of the above point cloud image is ".ply" format, represented by ASCII code, with a total number of points of 207242, and each point has three-dimensional position information xyz and three-dimensional color information rgb.
- Point clouds can flexibly and conveniently express the spatial structure and surface properties of three-dimensional objects or scenes. Point clouds are obtained by directly sampling real objects, so they can provide a strong sense of reality while ensuring accuracy. Therefore, they are widely used, including virtual reality games, computer-aided design, geographic information systems, automatic navigation systems, digital cultural heritage, free viewpoint broadcasting, three-dimensional immersive remote presentation, and three-dimensional reconstruction of biological tissues and organs.
- point clouds can be divided into two categories based on application scenarios, namely machine-perceived point clouds and human-eye-perceived point clouds.
- Application scenarios of machine-perceived point clouds include, but are not limited to, point cloud application scenarios such as autonomous navigation systems, real-time inspection systems, geographic information systems, visual sorting robots, and disaster relief robots.
- Application scenarios of human-eye-perceived point clouds include, but are not limited to, point cloud application scenarios such as digital cultural heritage, free viewpoint broadcasting, three-dimensional immersive communication, and three-dimensional immersive interaction.
- point clouds can be divided into dense point clouds and sparse point clouds based on the acquisition method of point clouds; point clouds can also be divided into static point clouds and dynamic point clouds based on the acquisition method of point clouds, and more specifically, they can be divided into three types of point clouds, namely, the first static point cloud, the second type of dynamic point cloud, and the third type of dynamically acquired point cloud.
- the first static point cloud the object is stationary, and the device that acquires the point cloud is also stationary
- the second type of dynamic point cloud the object is moving, but the device that acquires the point cloud is stationary
- the third type of dynamically acquired point cloud the device that acquires the point cloud is moving.
- point cloud collection methods include, but are not limited to: computer generation, 3D laser scanning, 3D photogrammetry, etc.
- Computers can generate point clouds of virtual three-dimensional objects and scenes;
- 3D laser scanning can obtain point clouds of static real-world three-dimensional objects or scenes, and can obtain millions of point clouds per second;
- 3D photogrammetry can obtain point clouds of dynamic real-world three-dimensional objects or scenes, and can obtain tens of millions of point clouds per second.
- point clouds on the surface of objects can be collected through acquisition equipment such as photoelectric radars, lidars, laser scanners, and multi-view cameras.
- the point cloud obtained according to the laser measurement principle may include points Three-dimensional coordinate information and the laser reflection intensity (reflectance) of the point.
- the point cloud obtained according to the principle of photogrammetry may include the three-dimensional coordinate information of the point and the color information of the point.
- the point cloud obtained by combining laser measurement and photogrammetry principles may include the three-dimensional coordinate information of the point, the laser reflection intensity (reflectance) of the point, and the color information of the point.
- FPS Frame Per Second
- Point cloud compression generally adopts the method of compressing point cloud geometry information and attribute information separately.
- the point cloud geometry information is first encoded in the geometry encoder, and then the reconstructed geometry information is input into the attribute encoder as additional information to assist in the attribute compression of the point cloud;
- the point cloud geometry information is first decoded in the geometry decoder, and then the decoded geometry information is input into the attribute decoder as additional information to assist in the attribute compression of the point cloud.
- the entire codec consists of pre-processing/post-processing, geometry encoding/decoding, and attribute encoding/decoding.
- the point cloud can be encoded and decoded by various types of encoding frameworks and decoding frameworks, respectively.
- the encoding and decoding framework can be a geometry point cloud compression (G-PCC) encoding and decoding framework or a video point cloud compression (V-PCC) encoding and decoding framework provided by the Moving Picture Experts Group (MPEG), or it can be an AVS-PCC encoding and decoding framework or a point cloud compression reference platform (PCRM) framework provided by the Audio Video Standard (AVS) Task Force.
- G-PCC geometry point cloud compression
- V-PCC video point cloud compression
- PCM point cloud compression reference platform
- the G-PCC encoding and decoding framework can be used to compress the first static point cloud and the third type of dynamically acquired point cloud, and the V-PCC encoding and decoding framework can be used to compress the second type of dynamic point cloud.
- the G-PCC encoding and decoding framework is also called the point cloud codec TMC13, and the V-PCC encoding and decoding framework is also called the point cloud codec TMC2.
- Both G-PCC and AVS-PCC can be used to compress static sparse point clouds, and their encoding frameworks are roughly the same.
- the following uses the G-PCC framework and the AVS PCC framework as examples to illustrate the applicable coding and decoding frameworks of the embodiments of the present application.
- FIG4 is a schematic block diagram of a G-PCC coding framework provided in an embodiment of the present application.
- the input point cloud is first divided into slices, and then the slices obtained are independently encoded.
- the slices the geometric information of the point cloud and the attribute information corresponding to the points in the point cloud are encoded separately.
- the G-PCC coding framework first performs coordinate transformation on the geometric information so that all point clouds are contained in a bounding box; then quantization is performed. This step of quantization mainly plays a role in scaling. Due to quantization rounding, the geometric information of some points is the same. Whether to remove duplicate points is determined based on parameters. The process of quantization and removal of duplicate points is also called voxelization. Next, the bounding box is divided based on the octree. According to the different depths of the octree division level, the coding of geometric information is divided into a geometric information coding framework based on the octree and a geometric information coding framework based on the triangle soup (trisoup).
- the bounding box is first divided into eight equal parts, that is, 8 sub-cubes, and the placeholder bits of the sub-cubes are recorded (1 is non-empty, 0 is empty), and the non-empty sub-cubes are continued to be divided into eight equal parts.
- the division is stopped when the leaf node obtained by the division is a 1x1x1 unit cube.
- the spatial correlation between the node and the surrounding nodes is used to perform intra-frame prediction on the placeholder bits, and the corresponding binary arithmetic encoder is selected based on the prediction result for arithmetic coding to implement context-based adaptive binary arithmetic coding (CABAC) and generate a binary code stream.
- CABAC context-based adaptive binary arithmetic coding
- octree division In the geometric information coding framework based on triangle face sets, octree division must also be performed first. However, unlike the geometric information coding framework based on octree, the geometric information coding framework based on triangle face sets does not need to divide the point cloud into unit cubes with a side length of 1x1x1 step by step. Instead, the division is stopped when the block has a side length of W. Based on the surface formed by the distribution of the point cloud in each block, at most twelve intersections (vertexes) generated by the surface and the twelve edges of the block are obtained, and then the coordinates of the intersection of each block are encoded in turn to generate a binary code stream.
- the G-PCC coding framework After completing the geometric information encoding, the G-PCC coding framework reconstructs the geometric information and uses the reconstructed geometric information to encode the attribute information of the point cloud.
- the attribute encoding of the point cloud mainly encodes the color information of the point in the point cloud.
- the G-PCC coding framework can perform color space conversion on the color information of the point. For example, when the color information of the point in the input point cloud is represented by the RGB color space, the G-PCC coding framework can convert the color information from the RGB color space to the YUV color space. Then, the G-PCC coding framework uses the reconstructed geometric information to recolor the point cloud so that the unencoded attribute information corresponds to the reconstructed geometric information.
- FIG5 is a schematic block diagram of a G-PCC decoding framework provided in an embodiment of the present application.
- the G-PCC decoding framework can obtain the code stream of the point cloud from the G-PCC encoding framework, and obtain the position information and attribute information of the points in the point cloud by parsing the code.
- the decoding of the point cloud includes position decoding and attribute decoding.
- the process of position decoding includes: performing arithmetic decoding on the geometric code stream; reconstructing the octree based on the decoded data, and then reconstructing the position information of the point to obtain the reconstructed information of the position information of the point; performing coordinate transformation on the reconstructed information of the position information of the point to obtain the position information of the point.
- the position information of the point can also be called the geometric information of the point.
- the attribute decoding process includes: obtaining the residual value of the attribute information of the point in the point cloud by parsing the attribute code stream; obtaining the residual value of the attribute information of the point after dequantization by dequantizing the residual value of the attribute information of the point; selecting one of the three prediction modes for point cloud prediction based on the reconstructed information of the position information of the point obtained in the position decoding process to obtain the attribute reconstruction value of the point; performing color space inverse transformation on the attribute reconstruction value of the point to obtain the decoded point cloud.
- the general test conditions for G-PCC may include the following aspects:
- Test conditions which include the following 4 types:
- Condition 1 The geometric position is lossless, but the attributes are lossy;
- the attribute coding framework of MPEG G-PCC is distinguished by the algorithm used for attribute compression, which can be divided into the following three types:
- the attribute residual coefficients are obtained by using the prediction method of the prediction branch, and entropy coding is performed on the attribute residual coefficients.
- entropy decoding obtains the attribute residual coefficients, and the prediction method of the prediction branch is used to restore the original values.
- the attribute transformation coefficients are obtained by using the prediction lifting transformation branch method, and the attribute transformation coefficients are entropy encoded.
- entropy decoding is used to obtain the attribute transformation coefficients, and the original values are restored using the prediction lifting transformation branch method.
- RAHT Region Adaptive Hierarchal Transform
- the attribute transformation coefficients are obtained by using the RAHT branch method, and entropy coding is performed on the attribute transformation coefficients.
- entropy decoding is used to obtain the attribute transformation coefficients, and the RAHT branch method is used to restore the original values.
- attribute entropy encoding and decoding are performed.
- Figure 6 is a schematic block diagram of the AVS PCC encoding framework provided in an embodiment of the present application.
- the geometric information of the point cloud and the attribute information corresponding to each point are encoded separately.
- the original geometric information is preprocessed, that is, the geometric origin is normalized to the minimum position in the point cloud space through coordinate translation, and the geometric information is converted from floating point numbers to integers through coordinate quantization to facilitate subsequent regular processing. Since the geometric information of some points is the same due to quantization and rounding, it is necessary to decide whether to remove duplicate points. Removing duplicate points also belongs to the preprocessing process; then, the regularized geometric information is geometrically encoded, that is, the point cloud space is recursively divided by an octree structure, and the current block is divided into eight sub-blocks of the same size each time, and the occupation codeword of each sub-block is judged.
- the occupation codeword information of all blocks is recorded in the last layer of the recursive division and encoded; that is, the geometric information expressed by the octree structure is input into the geometric entropy encoder to form a geometric code stream on the one hand, and is used to reconstruct the geometric information on the other hand, and the attribute information is encoded based on the reconstructed geometric information.
- the attribute encoding part first, determine whether to perform color space conversion. If the attribute information to be processed is color information, the original color needs to be transformed into a YUV color space that is more in line with the visual characteristics of the human eye. Then, in the case of lossy geometric coding, since the geometric information changes after geometric coding, it is necessary to reallocate attribute values for each point after geometric coding so that the attribute error between the reconstructed point cloud and the original point cloud is minimized. 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 needs to be reordered first.
- the reordering method is Morton code, so the traversal order of attribute encoding is Morton order. Then, single-point prediction based on Morton order is performed, that is, one point is traced back from the current point to be encoded according to the Morton order. The point found is the prediction reference point of the current point to be encoded. Then, the attribute reconstruction value of the prediction reference point is used as the attribute prediction value, and 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 the quantized residual is input into the attribute entropy encoder to form an attribute code stream.
- FIG. 7 is a schematic block diagram of the AVS PCC decoding framework provided in an embodiment of the present application.
- the method of separately decoding geometry and attributes is also adopted.
- the geometry decoding part the geometry bitstream is first entropy decoded to obtain the geometry information of each point, and then the octree structure is reconstructed in the same way as the geometry encoding.
- the geometry information expressed by the octree structure after coordinate transformation is reconstructed in combination with the decoded geometry.
- the coordinates of this information are dequantized and detranslated to obtain the decoded geometry information, and on the other hand, it is input into the attribute decoder as additional information.
- the attribute decoding part the Morton order is constructed in the same way as the encoding end.
- the attribute bitstream is first entropy decoded to obtain the quantized residual information; then dequantization is performed to obtain the point cloud residual; similarly, the attribute prediction value of the current point to be decoded is obtained in the same way as the attribute encoding, and then the attribute prediction value is added to the residual value to restore the YUV attribute value of the current point to be decoded; finally, the decoded attribute information is obtained through the inverse transformation of the color space.
- the general test conditions of AVS PCC may include the following aspects:
- Test conditions which include the following 4 types:
- Condition 2 The geometric position is lossless, but the attributes are lossy.
- Condition 4 The geometric position and attributes are lossless.
- Cat1A and Cat2-frame point clouds only contain reflectivity attribute information
- Cat1B and Cat3 point clouds only contain color attribute information
- Cat1B point cloud contains color and reflectivity attribute information.
- the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, the Morton order, the Hilbert order, etc.), and the prediction algorithm is first used to obtain the attribute prediction value, and the attribute residual is obtained according to the attribute value and the attribute prediction value. Then, the attribute residual is quantized to generate a quantized residual, and finally the quantized residual is encoded;
- the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.).
- the prediction algorithm is first used to obtain the attribute prediction value, and then the decoding is performed to obtain the quantized residual.
- the quantized residual is then dequantized, and finally the attribute reconstruction value is obtained based on the attribute prediction value and the dequantized residual.
- the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.).
- the entire point cloud is divided into several small groups with a maximum length of Y (such as 2), and then these small groups are combined into several large groups (the number of points in each large group does not exceed X, such as 4096).
- the prediction algorithm is used to obtain the attribute prediction value, and the attribute residual is obtained according to the attribute value and the attribute prediction value.
- the attribute residual is transformed by DCT in small groups to generate transformation coefficients, and then the transformation coefficients are quantized to generate quantized transformation coefficients.
- the quantized transformation coefficients are encoded in large groups.
- the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.).
- the entire point cloud is divided into several small groups with a maximum length of Y (such as 2), and then these small groups are combined into several large groups (the number of points in each large group does not exceed X, such as 4096).
- the quantized transform coefficients are decoded in large groups, and then the prediction algorithm is used to obtain the attribute prediction value.
- the quantized transform coefficients are dequantized and inversely transformed in small groups.
- the attribute reconstruction value is obtained based on the attribute prediction value and the dequantized and inversely transformed coefficients.
- the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.).
- the entire point cloud is divided into several small groups with a maximum length of Y (such as 2), and then the prediction algorithm is used to obtain the attribute prediction value.
- the attribute residual is obtained according to the attribute value and the attribute prediction value.
- the attribute residual is DCT transformed in groups to generate transformation coefficients, and then the transformation coefficients are quantized to generate quantized transformation coefficients.
- the quantized transformation coefficients of the entire point cloud are encoded.
- the points in the point cloud are processed in a certain order (the original acquisition order of the point cloud, Morton order, Hilbert order, etc.).
- the entire point cloud is divided into several small groups with a maximum length of Y (such as 2), and the quantized transformation coefficients of the entire point cloud are obtained by decoding.
- the prediction algorithm is used to obtain the attribute prediction value, and then the quantized transformation coefficients are dequantized and inversely transformed in groups.
- the attribute reconstruction value is obtained based on the attribute prediction value and the dequantized and inversely transformed coefficients.
- multi-layer wavelet transform is performed on the entire point cloud to generate transform coefficients, and then the transform coefficients are quantized to generate quantized transform coefficients, and finally the quantized transform coefficients of the entire point cloud are encoded.
- decoding obtains the quantized transform coefficients of the entire point cloud, and then dequantizes and inversely transforms the quantized transform coefficients to obtain attribute reconstruction values.
- the encoder needs to compress its position information and attribute information; specifically, the encoder first performs octree-based encoding on the position information of the point cloud; at the same time, the encoder selects neighbor points for predicting the attribute value of the current point from the encoded points according to the encoded position information of the current point, and predicts the current point with reference to the selected neighbor points to obtain the attribute prediction value of the current point, and then calculates the residual value of the current point based on the attribute prediction value of the current point and the original attribute value of the current point, and then the encoder quantizes the residual value of the current point and obtains the quantized residual value, and finally the encoder transmits the quantized residual value of the current point to the decoding end in the form of a code stream; the decoding end can obtain the quantized residual value of the current point by receiving and parsing the code stream, and obtains the residual value
- the predicted value of the attribute of the current point to be coded can also be called the predicted value of the attribute information or the predicted color value (predictedColor); the attribute value of the current point to be coded can also be called the true value of the attribute coefficient of the current point or the original color value.
- the residual value of the current point to be coded can also be called the difference between the attribute value of the current point to be coded and the predicted attribute value of the current point, or, it can also be called the color residual value of the current point (residualColor); the reconstructed value of the attribute of the current point to be coded (reconstructedvalue) can also be called the reconstructed value of the attribute of the current point to be coded or the reconstructed color value (reconstructedColor).
- the encoder can perform zero-run encoding on the quantized residual value (or the transformed coefficient after quantization) similar to the way the G-PCC framework encodes the value, and obtain the attribute bit stream.
- runlength is equal to runlength minus 3;
- runlength is equal to runlength minus 8.
- K-order e.g., 2nd-order
- 2nd-order Exponential Golomb encoding
- the runlength to be encoded can be converted into a binary number using a fixed context encoding and encoded using a K-order (e.g., 2-order) exponential Golomb encoding.
- a K-order e.g., 2-order
- the converted binary number encoded using the fixed context and the value encoded using the K-order (e.g., 2nd-order) exponential Golomb coding are: 0, 10, 110, 111-00, 111-01, 111-100, 111-101, 111-1100, 111-1101, 111-11100, 111-11101, 111-1111-0, 111-1111-1, 111-1111-2.
- the encoder updates the runlength to be encoded.
- runlength is equal to runlength plus one, and the loop continues.
- runlength is equal to runlength plus the decoded bit and ends decoding.
- the current value of runlength is the final value of runlength
- runlength is equal to runlength plus 2, and the loop continues.
- the decoded value is obtained by using K-order (eg 2nd order) exponential Golomb decoding
- runlength is equal to runlength plus the decoded value obtained by using K-order (eg 2nd order) exponential Golomb decoding
- the decoding is ended, and the current runlength value is the value of runlength.
- the values obtained by decoding using a fixed context and the values obtained by exponential Golomb decoding of order K can be converted to runlength.
- the decoded values are 0, 10, 110, 111-00, 111-01, 111-100, 111-101, 111-1100, 111-1101, 111-11100, 111-11101, 111-1111-0, 111-1111-1, 111-1111-2
- the decoded runlength is 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13.
- the decoder decodes another binary number (i.e., 0) and sets the final value of runlength to the sum (i.e., 3) of the current value of runlength (i.e., 3) and this binary number (i.e., 0).
- the decoder decodes another binary number (i.e., 1) and sets the final value of runlength to the sum of the current value of runlength (i.e., 9) and this binary number (i.e., 1) (i.e., 10).
- the decoder uses a K-order (e.g., 2nd-order) exponential Golomb algorithm to decode and obtain a decimal number 0, and sets the final value of runlength to the sum (i.e., 11) of the current value of runlength (i.e., 11) and this decimal number (i.e., 0) (i.e., 11).
- K-order e.g., 2nd-order
- the decoder uses a K-order (e.g., 2nd-order) exponential Golomb algorithm to decode and obtain a decimal number 1, and the final value of runlength is the sum (i.e., 12) of the current value of runlength (i.e., 11) and this decimal number (i.e., 1).
- K-order e.g., 2nd-order
- the decoder uses a K-order (e.g., 2nd-order) exponential Golomb algorithm to decode and obtain the decimal number 2, and the final value of runlength is the sum (i.e., 13) of the current value of runlength (i.e., 11) and this decimal number (i.e., 2).
- the main encoding format of K-order exponential Golomb coding is the structure of [prefix 0][1][bit information].
- the encoding steps are as follows:
- the decoding end can decode the attribute code stream in the following manner to obtain the quantized residual value (or the quantized transform coefficient):
- the embodiment of the present application provides a decoding method, an encoding method, a decoder and an encoder, which can reduce the decoding codeword by splitting and decoding two parameters and then determining the zero run value based on the two parameters, thereby improving encoding and decoding performance.
- FIG8 is a schematic flow chart of a decoding method 100 provided in an embodiment of the present application. It should be understood that the decoding method 100 can be performed by a decoder or a decoding framework. For example, it is applied to the decoding framework shown in FIG5 or FIG7. For ease of description, the decoding method 100 is exemplarily described below using a decoder as an example.
- the decoding method 100 may include:
- the decoder obtains N first parameters; N is a positive integer.
- the N first parameters may be values obtained by the decoder based on decoding the code stream.
- the first parameter may be a point-level parameter, such as the decoded values of the N points obtained by the decoder decoding the code stream, and the code stream may be the code stream of the current point cloud.
- the N points include points arranged in the first N positions according to the decoding order of the current point cloud.
- the N points include parameters of the N decoded points that are located before the current point according to the decoding order of the current point cloud.
- the N points may also be N points located at any position before the current point according to the decoding order of the current point cloud, and the present application does not make specific limitations on this.
- the first parameter may be an attribute coefficient or other parameter.
- the first parameter may be a parameter corresponding to one or more points, for example, the first parameter may be a zero run value.
- the first parameter may be a decimal number or a multi-digit binary number.
- the decoder determines a first entropy decoding algorithm based on the N first parameters.
- the first entropy decoding algorithm is an entropy decoding algorithm adapted to the N first parameters.
- the first entropy decoding algorithm may also be any other entropy decoding algorithm capable of decoding a binary string, which is not specifically limited in the present application.
- the first entropy decoding algorithm may be a Columbus decoding algorithm.
- the first entropy decoding algorithm may also be a unary decoding algorithm, a truncated unary decoding algorithm, a fixed-length decoding algorithm, a variable-length decoding algorithm, a decoding algorithm that performs entropy decoding based on a table lookup, or an entropy decoding algorithm that performs joint decoding using multiple entropy decoding algorithms.
- the unary decoding algorithm is an entropy decoding algorithm for decoding the encoding result of the unary encoding algorithm.
- the truncated unary decoding algorithm is an entropy decoding algorithm for decoding the encoding and decoding of the truncated unary encoding algorithm.
- the truncated unary encoding algorithm is a variant of the unary encoding algorithm and is used when the maximum value Max of the syntax element to be encoded is known.
- the decoder determines a second parameter based on the first entropy decoding algorithm.
- the decoder decodes the code stream based on the first entropy decoding algorithm to obtain the second parameter.
- the second parameter may be a parameter corresponding to one or more points, for example, the second parameter may be a zero run value.
- the first parameter may be a decimal number or a multi-digit binary number.
- S140 The decoder determines a first zero-run value based on the second parameter.
- the second parameter is less than the first zero-run value.
- the method 100 further comprises:
- the decoder determines the first zero-run value as the number of points whose attribute coefficients are zero and continuous.
- the decoder may obtain the second parameter based on the code stream, and determine the first zero-run value based on the second parameter, and then determine the number of points whose attribute coefficients are zero and continuous based on the first zero-run value. For example, if the first zero-run value is N 1 , the decoder may determine the number of points whose attribute coefficients are zero and continuous to be N 1. The encoder may determine the first zero-run value based on the number of points whose attribute coefficients are zero and continuous, and then determine the second parameter based on the first zero-run value, and encode the second parameter to obtain the code stream. For example, if the encoder determines that the attribute coefficients of N 1 consecutive points are zero, the first zero-run value is N 1 .
- the symbol sequence obtained by zero-run decoding is (0)4(0)5(3)2(0)1(1)2
- the value in the brackets in (0)4(0)5(3)2(0)1(1)2 is the zero-run value, that is, the zero-run value in (0)4(0)5(3)2(0)1(1)2 includes 0 0 3 0 1; that is, the first zero-run value can be any one of 0 0 3 0 1.
- the symbol sequence 4 5 0 0 0 2 1 0 2 can be obtained.
- each value in the symbol sequence 4 5 0 0 0 2 1 0 2 represents the attribute coefficient of a point.
- the symbols in the symbol sequence that are not zero-run values can use the decoding method provided in the present application, that is, the same entropy decoding method as the zero-run value can be used, or an entropy decoding method different from the decoding algorithm provided in the present application can be used.
- the CABAC decoding algorithm can be directly used to decode symbols that are not zero-run values. The present application does not make specific limitations on this.
- the attribute coefficient being zero includes all color components being zero.
- the decoder may determine the first zero-run value as the number of points where all color components are zero and continuous.
- the property coefficient being zero includes a reflectivity of zero.
- the decoder may determine the first zero-run value as the number of points whose reflectivity is zero and continuous.
- the first zero-run value can be used by the decoder to determine the number of points where the attribute coefficient (for example, the color attribute coefficient or the reflectance attribute coefficient including all color components) is zero and continuous
- the attribute coefficient involved in the present application can be an attribute residual coefficient, an absolute value of an attribute residual coefficient, an attribute transformation coefficient, or an absolute value of an attribute transformation coefficient.
- the decoder can obtain the attribute residual coefficient, the absolute value of the attribute residual coefficient, the attribute transformation coefficient, or the number of points where the absolute value of the attribute transformation coefficient is zero and continuous based on the first zero-run value.
- the attribute coefficient involved in the present application can be the attribute residual coefficient involved in any one of the technical routes described in the G-PCC above, the absolute value of the attribute residual coefficient, the attribute transformation coefficient, or the absolute value of the attribute transformation coefficient, or it can be the attribute residual coefficient involved in any one of the technical routes described in the AVS PCC above, the absolute value of the attribute residual coefficient, the attribute transformation coefficient, or the absolute value of the attribute transformation coefficient.
- the attribute coefficient can be the coefficient of any attribute.
- the attribute coefficient can be a color attribute coefficient, a reflectance attribute coefficient, or other attribute coefficient, which is not specifically limited in the present application.
- the first zero-run value may also be a zero-run value defined for the first color component in the attribute coefficient.
- the decoder may determine the first zero-run value as the number of points where the first color component is zero and continuous.
- the first color component may be any one of Y, U, and V.
- the decoder determines the second parameter using a first entropy decoding algorithm adapted to the N first parameters, and then determines the first zero-run value based on the second parameter, which can reduce the encoding codeword and thus improve encoding and decoding performance.
- the end-to-end attribute rate distortion (End-to-End Bit distortion, End-to-End BD-rate) is an indicator to measure the performance of the algorithm or the coding performance, which indicates the change in the bit rate and PSNR of the coding algorithm provided by the present application relative to the original coding algorithm. A negative value as a whole indicates that the performance has improved.
- the end-to-end attribute Hausdorff rate distortion is a unique criterion for judging performance under the condition of limited attribute loss. It indicates the maximum difference between attribute values, and when the overall value is negative, it indicates that the performance of the new algorithm has improved.
- the end-to-end attribute Hausdorff rate distortion of the Solid sequence and the Dense sequence has performance improvements in geometry, color attributes, and reflectivity attributes; the average value of the end-to-end attribute Hausdorff rate distortion of each sequence has performance improvements of 0.1, 0.1, and 0.1 in geometry, color attributes, and reflectivity attributes, respectively.
- the encoding time and decoding time can also be reduced; that is, the solution provided in the present application can improve encoding performance and decoding performance.
- the method before S120, the method further includes:
- the decoder determines a second zero-run value based on the first parameter.
- the decoder may obtain the first parameter based on the code stream, and determine the second zero-run value based on the first parameter, and then determine the attribute coefficient of one or more points based on the second zero-run value. For example, if the second zero-run value is N 2 , the decoder may determine that the attribute coefficients of N 2 consecutive points are zero. The encoder may determine the second zero-run value based on the attribute coefficients of the one or more points, and then determine the first parameter based on the second zero-run value, and encode the first parameter to obtain the code stream. For example, if the encoder determines that the attribute coefficients of N 2 consecutive points are zero, the second zero-run value is N 2 .
- the N first parameters include the first N decoded zero-run values.
- the N first parameters include first N zero-run values determined by decoding a code stream of the current point cloud.
- the N first parameters include zero-run values corresponding to the first M decoded points, where M is a positive integer.
- the N first parameters include zero-run values corresponding to the first M points determined by the decoder when decoding the code stream of the current point cloud, where M may be greater than N or may be equal to N.
- this embodiment does not limit the specific implementation of the decoding method of the zero-run values corresponding to the first M points.
- the N first parameters include the first N decoded zero-run values or the zero-run values corresponding to the first M decoded points, it is equivalent to that the first parameter is a zero-run value.
- the first parameter may not be a zero-run value.
- the first parameter may be used to determine the second zero-run value.
- the decoder determines the second zero-run value as the sum of the first parameter and O; O is a positive integer.
- the value of O may be a predefined value, a value indicated by a bitstream, or a value determined by negotiation between the encoder and the decoder, and this application does not impose any specific limitation on this.
- the second zero-run value is a value greater than or equal to 0.
- the decoder may determine the second zero-run value based on the first parameter in the following manner:
- the first parameter bit is shifted left by P bits to obtain a first intermediate value; P is a positive integer;
- the second zero-run value is determined.
- the first parameter may be a multi-bit binary number or a decimal value. If the first parameter is a decimal number, the decoder may first convert the first parameter into a multi-bit binary number, and then perform a bit shift left by P bits on the converted multi-bit binary number to obtain a first intermediate value. If the first parameter is a multi-bit binary number, the decoder may directly perform a bit shift left by P bits on the first parameter to obtain the first intermediate value.
- the value of P may be a predefined value, a value obtained by decoding the bitstream, or a value determined by negotiation between the decoder and the encoder, which is not specifically limited in the present application.
- pre-definition of terms involved in this application can be implemented by pre-saving corresponding codes, tables or other methods that can be used to indicate relevant information in a device (for example, including a decoder), and this application does not limit its specific implementation method.
- pre-definition can refer to the definition in the protocol.
- the "protocol" can refer to a standard protocol in the field of coding and decoding, for example, it can include the field of image coding and decoding, the field of video coding and decoding, the field of hardware video coding and decoding, the field of dedicated circuit video coding and decoding, and the field of real-time video coding and decoding, as well as related protocols used in future coding and decoding systems, and this application does not limit this.
- the third parameter is a P-bit binary number.
- the decoder may default the third parameter to be a P-bit binary number, that is, the decoder defaults the third parameter to be a binary string of length P.
- the decoder adds the first intermediate value and the third parameter to obtain the second intermediate value.
- the decoder assumes that the third parameter is a P-bit binary number
- the first intermediate value is added to the P-bit binary number to obtain the second intermediate value.
- the third parameter is P binary numbers.
- the decoder may default the third parameter to be P binary numbers, that is, the decoder defaults the third parameter to be P binary numbers with a length of 1.
- the decoder determines the number of shift bits of the i-th binary number in the third parameter; then, based on the number of shift bits of the i-th binary number, the i-th binary number is left-shifted to obtain a fourth parameter corresponding to each binary number in the third parameter; then, the first intermediate value and the fourth parameter corresponding to each binary number in the third parameter are summed to obtain the second intermediate value.
- the number of shifts of each binary number is positively correlated with the serial number of each binary number in the decoding order.
- the number of shifts of the i-th binary number in the P binary numbers is positively correlated with the value of i; that is, the smaller the value of i, the smaller the number of shifts of the i-th binary number; or, in other words, the larger the value of i, the larger the number of shifts of the i-th binary number.
- the number of shifts of each binary number and the serial number of each binary number in the decoding order may also be negatively correlated.
- the number of shifts of the i-th binary number in the P binary numbers is negatively correlated with the value of i; that is, the smaller the value of i, the larger the number of shifts of the i-th binary number; or, in other words, the larger the value of i, the smaller the number of shifts of the i-th binary number.
- the decoder determines i-1 as the number of shift bits of the i-th binary number; i is a positive integer.
- the decoder determines i-1 as the number of shift bits of the binary number located at the i-th position in the P binary numbers according to the decoding order of the P binary numbers. In other words, the decoder assigns the number of shift bits of the i-th binary number in the P binary numbers to i-1 according to the decoding order of the P binary numbers. In other words, for the P binary numbers, the binary number that the decoder decodes first has a smaller number of shift bits; conversely, the binary number that the decoder decodes later has a larger number of shift bits.
- the decoder may determine the second intermediate value based on the first intermediate value and the third parameter in the following manner:
- V 1 represents the first parameter
- V 1 ⁇ P represents the first intermediate value
- W 1 represents the binary number located at the first position according to the decoding order of the P binary numbers and the number of shifts is 0
- W 2 represents the binary number located at the second position according to the decoding order of the P binary numbers and the number of shifts is 1
- W P represents the binary number located at the Pth position according to the decoding order of the P binary numbers and the number of shifts is P-1.
- W 1 can be equivalently replaced by W 1 ⁇ 0.
- the initial value of i may also be 0, in which case the decoder may determine i as the number of shift bits of the i-th binary number among the P binary numbers.
- the decoder determines P-i as the number of shift bits of the i-th binary number; i is a positive integer.
- the decoder determines P-i as the number of shift bits of the binary number located at the i-th position in the P binary numbers according to the decoding order of the P binary numbers. In other words, the decoder assigns the number of shift bits of the i-th binary number in the P binary numbers to P-i according to the decoding order of the P binary numbers. In other words, for the P binary numbers, the binary number that the decoder decodes first has a larger number of shift bits; conversely, the binary number that the decoder decodes later has a smaller number of shift bits.
- the decoder may determine the second intermediate value based on the first intermediate value and the third parameter in the following manner:
- V 1 represents the first parameter
- V 1 ⁇ P represents the first intermediate value
- W 1 represents the binary number located at the 1st position according to the decoding order of the P binary numbers and the number of shifts is P-1
- W 2 represents the binary number located at the 2nd position according to the decoding order of the P binary numbers and the number of shifts is P-2
- W P represents the binary number located at the Pth position according to the decoding order of the P binary numbers and the number of shifts is 0.
- W P can be equivalently replaced by W P ⁇ 0.
- the initial value of i may also be 0, in which case the decoder may determine P-i-1 as the number of shift bits of the i-th binary number among the P binary numbers.
- the decoder determines the second intermediate value as the second zero-run value.
- the decoder shifts the first parameter bit left by P bits to obtain a first intermediate value; then determines a second intermediate value based on the first intermediate value and the third parameter; and determines the second intermediate value as the second zero-run value. For example, the decoder determines the second intermediate value as the second zero-run value by default.
- the decoding end can directly sum the first intermediate value and the decimal value to obtain the second intermediate value.
- the decoder adds the second intermediate value to O to obtain the second zero-run value; O is a positive integer.
- the decoder shifts the first parameter bit left by P bits to obtain a first intermediate value; then determines a second intermediate value based on the first intermediate value and the third parameter; and adds the second intermediate value to 0 to obtain the second zero-run value.
- the decoder defaults to adding the second intermediate value to 0 to obtain the second zero-run value.
- the value of O may be a predefined value, a value indicated by a bitstream, or a value determined by negotiation between the encoder and the decoder, and this application does not impose any specific limitation on this.
- the second zero-run value is a value greater than or equal to 0.
- the decoder obtains a first value of the first variable; and then determines the sum of the first value and the second intermediate value as the second zero-run value.
- the decoder obtains the value of the first variable, and when the value of the first variable is equal to the first value, the decoder can obtain the first parameter and the third parameter, and shift the first parameter left by P bits to obtain a first intermediate value, and then obtain a second intermediate value based on the first intermediate value and the third parameter, and then determine the sum of the second intermediate value and the first value as the second zero-run value.
- the initial value of the first variable is 0 or other numerical values.
- the first value is greater than or equal to an initial value of the first variable.
- the first value may be a predefined value, or a value obtained by decoding the bitstream, or a value determined by negotiation between the decoder and the encoder, which is not specifically limited in the present application.
- the decoder determines the first value in the following manner:
- the value of the first variable is determined to be the first value
- E and G are both positive integers.
- the decoder obtains the value of the first variable, and if the value of the first variable is greater than or equal to E, the value of the second variable is determined; if the value of the second variable is greater than or equal to G, the decoder can obtain the first parameter and the third parameter, and shift the first parameter left by P bits to obtain a first intermediate value, and then obtain a second intermediate value based on the first intermediate value and the third parameter, and then determine the sum of the second intermediate value and the value of the first variable as the second zero-run value.
- the value of the first variable and the value of the second variable can be updated by the result of decoding the bitstream.
- the decoder obtains the initial value of the first variable, and when the value of the first variable is less than E, based on the result of decoding the code stream, the value of the first variable can be increased according to a certain strategy until the value of the first variable is greater than or equal to G.
- the decoder obtains the initial value of the second variable, and when the value of the second variable is less than G, based on the result of decoding the code stream, the value of the first variable and the value of the second variable can be increased according to a certain strategy until the value of the second variable is greater than or equal to G, and the value of the first variable is determined as the first value.
- the initial value of the first variable and the initial value of the second variable can be 0 or other values.
- the value of E and/or F may be a predefined value, or a value obtained by decoding the bitstream, or a value determined by negotiation between the decoder and the encoder, which is not specifically limited in the present application.
- the values of E and F may be 3 and 1, respectively.
- the values of E and F may also be other values, which are not specifically limited in the embodiments of the present application.
- O E ⁇ F+G ⁇ H, wherein G and H are both positive integers.
- the decoder when the decoder obtains the value of the first variable, and the value of the first variable is equal to E ⁇ F+G ⁇ H, the decoder can obtain the first parameter and the third parameter, and shift the first parameter left by P bits to obtain a first intermediate value, and then obtain a second intermediate value based on the first intermediate value and the third parameter, and then determine the sum of the second intermediate value and E ⁇ F+G ⁇ H as the second zero-run value.
- the value of G and/or H may be a predefined value, or a value obtained by decoding the bitstream, or a value determined by negotiation between the decoder and the encoder, which is not specifically limited in the present application.
- the values of G and H may be 4 and 2, respectively.
- the values of G and H may also be other values, which are not specifically limited in the embodiments of the present application.
- the method 100 may further include:
- the value of the first variable is determined as the second zero-run value.
- the decoder uses a fixed context to obtain a first binary number; if the first binary number is equal to U, the decoder determines the value of the first variable as the second zero-run value by default.
- U is 0 or 1.
- the value of U may be a predefined value, a value obtained by decoding a bitstream, or a value determined by negotiation between a decoder and an encoder, which is not specifically limited in the present application.
- the method 100 may further include:
- the value of the first variable is updated from the second value to the sum of the second value and F;
- F is a positive integer
- U is not equal to V.
- the decoder obtains the first binary number using a fixed context; if the first binary number is equal to U, the decoder determines the value of the first variable as the second zero-run value by default; if the first binary number is equal to V, F is added to the value of the first variable. Further, the decoder performs the next loop based on the value of the first variable until the value of the binary number obtained using the fixed context is equal to U, in which case the value of the first variable is determined as the second zero-run value, or until the value of the first variable is greater than or equal to E, in which case the second zero-run value is determined using other methods.
- V is 0 or 1.
- the value of V may be a predefined value, a value obtained by decoding the bitstream, or a value determined by negotiation between the decoder and the encoder, which is not specifically limited in the present application.
- F may also be any value other than 1.
- the method 100 may further include:
- the context index value used by the first binary number is different from the context index value used by the second binary number.
- the decoder uses a fixed context to obtain a first binary number; if the first binary number is equal to U, Then the decoder determines the value of the first variable as the second zero-run value; if the first binary number is equal to V, the value of the first variable is updated from the second value to the sum of the second value and F.
- the second binary number is obtained using a fixed context; wherein the context index value used by the first binary number is different from the context index value used by the second binary number; if the second binary number is equal to U, the decoder determines the value of the first variable (i.e., the sum of the second value and F) as the second zero-run value; if the second binary number is equal to V, the value of the first variable is updated from the sum of the second value and F to the sum of the second value and 2 ⁇ F (i.e., the decoder adds F to the value of the first variable); and so on, until the value of the binary number obtained using the fixed context is equal to U, the value of the first variable is determined as the second zero-run value, or until the value of the first variable is greater than or equal to E, the second zero-run value is determined by other means.
- the first variable i.e., the sum of the second value and F
- the decoder can determine the second zero-run value through the following for loop:
- E and/or U may also be other values, which are not specifically limited in the embodiments of the present application.
- the method 100 may further include:
- G is a positive integer
- the sum of the value of the first variable and the fourth binary number is determined as the second zero-run value.
- the decoder determines the value of the second variable; if the value of the second variable is less than G, a third binary number is obtained using a fixed context; if the third binary number is equal to U, a fourth binary number is obtained; and the sum of the value of the first variable and the fourth binary number is determined as the second zero-run value.
- the method 100 may further include:
- the value of the first variable is updated from the third value to the sum of the third value and H, and the value of the second variable is updated from the fourth value to the sum of the fourth value and L;
- H and L are both positive integers, and U is not equal to V.
- the decoder determines the value of the second variable; if the value of the second variable is less than G, the third binary number is obtained using a fixed context; if the third binary number is equal to U, a fourth binary number is obtained; the sum of the value of the first variable and the fourth binary number is determined as the second zero-run value; if the third binary number is equal to V, the value of the first variable is updated from the third value to the sum of the third value and H, and the value of the second variable is updated from the fourth value to the sum of the fourth value and L.
- the decoder performs the next loop based on the value of the second variable until the binary number obtained by the decoder using the fixed context is equal to U, and the sum of the value of the first variable and the next binary number is determined as the second zero-run value, or until the value of the second variable is greater than or equal to G, the decoder obtains a second parameter, and determines the second zero-run value based on the value of the first variable and the second parameter.
- the method 100 may further include:
- the context index value used by the third binary number is different from the context index value used by the fifth binary number.
- the decoder determines the value of the second variable; if the value of the second variable is less than G, the third binary number is obtained using a fixed context; if the third binary number is equal to V, the value of the first variable is updated from the third value to the sum of the third value and H, and the value of the second variable is updated from the fourth value to the sum of the fourth value and L; further, if the value of the second variable (i.e., the sum of the fourth value and L) is less than G, the first binary number after the third binary number (i.e., the fifth binary number) is obtained using a fixed context.
- the decoder obtains the second parameter, and determines the second zero-run value based on the value of the first variable and the second parameter.
- the decoder can determine the second zero-run value through the following for loop:
- the decoder ends decoding, and the value of r1 is the second zero-run value.
- the decoder can determine the second zero-run value through the following for loop:
- the decoder ends decoding, and the value of r1 is the second zero-run value.
- the S120 may include:
- the first entropy decoding algorithm is determined.
- the decoder takes the N first parameters as input and calculates the reference value using the calculation function of the reference value.
- the decoder may determine the entropy decoding algorithm corresponding to the reference value as the first entropy decoding algorithm, or may associate the reference value with a numerical interval, and then determine the entropy decoding algorithm corresponding to the numerical interval as the first entropy decoding algorithm.
- This application does not make any specific limitations on this.
- the reference value includes at least one of the following: an average value of the N first parameters, a median value of the N first parameters, a maximum value of the N first parameters, and a minimum value of the N first parameters.
- the reference value may also be determined by other methods, and this application does not make any specific limitation on this.
- the reference value may also be a parameter determined based on multiple values, for example, the multiple values include but are not limited to: an average value of the N first parameters, a median value of the N first parameters, a maximum value of the N first parameters, and a minimum value of the N first parameters.
- the reference value may be an average value of the maximum value of the N first parameters and the minimum value of the N first parameters.
- the decoder may determine the reference value based on the N first parameters in the following manner:
- the reference value is determined.
- the number of the first numerical values may be one or more, and this application does not limit this.
- the number of the first numerical values may be N, which is equivalent to that the decoder may use each of the N first parameters to subtract A to obtain N first numerical values; then, based on the N first numerical values, determine the reference value.
- the number of the first numerical values may be a value less than N, which is equivalent to that the decoder may use a preset number of first parameters (i.e., some of the N first parameters) in the N first parameters to subtract A to obtain a preset number of first numerical values; then, based on the preset number of first numerical values, determine the reference value.
- the decoder takes the first numerical value as input and calculates the reference value using the calculation function of the reference value.
- the reference value includes at least one of the following: an average value of the first numerical value, a median value of the first numerical value, a maximum value of the first numerical value, and a minimum value of the first numerical value.
- the reference value includes at least one of the following: the average value of the multiple first values, the median value of the multiple first values, the maximum value of the multiple first values, and the minimum value of the multiple first values. If there is only one first value, the average value of the first value, the median value of the first value, the maximum value of the first value, and the minimum value of the first value are all the one first value.
- the reference value includes at least one of the following: an average value of the first numerical value, a median value of the first numerical value, a maximum value of the first numerical value, and a minimum value of the first numerical value.
- the decoder may subtract A from each of the N first parameters to obtain N first numerical values; at this time, the reference value includes at least one of the following: the average value of the N first numerical values, the median value of the N first numerical values, the maximum value of the N first numerical values, and the minimum value of the N first numerical values.
- the reference value may also be determined by other methods, and this application does not make any specific limitation on this.
- the reference value may also be a parameter determined based on multiple values, for example, the multiple values include but are not limited to: the average value of the first value, the median value of the first value, the maximum value of the first value, and the minimum value of the first value.
- the reference value may be the average value of the maximum value of the first value and the minimum value of the first value.
- the decoder may also use the first parameter plus A to obtain the first value, which is not specifically limited in this application. For example, the decoder may use each of the N first parameters plus A to obtain the N first values; and then determine the reference value based on the N first values.
- the decoder may determine the reference value based on the N first parameters in the following manner:
- the reference value is determined.
- the number of the non-zero parameters may be one or more, which is not limited in the present application.
- the decoder takes the non-zero parameter as input and calculates the reference value using the calculation function of the reference value.
- the reference value includes at least one of the following: an average value of the non-zero parameter, a median value of the non-zero parameter, a maximum value of the non-zero parameter, and a minimum value of the non-zero parameter.
- the reference value includes at least one of the following: the average value of the multiple non-zero parameters, the median value of the multiple non-zero parameters, the maximum value of the multiple non-zero parameters, and the minimum value of the multiple non-zero parameters. If there is only one non-zero parameter, the average value of the non-zero parameter, the median value of the non-zero parameter, the maximum value of the non-zero parameter, and the minimum value of the non-zero parameter are all the one non-zero parameter.
- the reference value may also be determined by other methods, and this application does not make any specific limitation on this.
- the reference value may also be a parameter determined based on multiple values, for example, the multiple values include but are not limited to: the average value of the non-zero parameter, the median value of the non-zero parameter, the maximum value of the non-zero parameter, and the minimum value of the non-zero parameter.
- the reference value may be the average value of the maximum value of the non-zero parameter and the minimum value of the non-zero parameter.
- the decoder may determine the reference value based on the non-zero parameter in the following manner:
- the reference value is determined.
- the number of the second numerical values may be one or more, and the present application does not specifically limit this.
- the number of the second numerical values may be equal to the number of non-zero parameters, which is equivalent to that the decoder may use each non-zero parameter to subtract B to obtain a second numerical value equal to the number of non-zero parameters; then, based on the obtained second numerical value, determine the reference value.
- the number of the first numerical values may be a value less than the non-zero parameter, which is equivalent to that the decoder may use a preset number of non-zero parameters (i.e., some non-zero parameters) in the non-zero parameter to subtract B to obtain a preset number of second numerical values; then, based on the preset number of second numerical values, determine the reference value.
- a preset number of non-zero parameters i.e., some non-zero parameters
- the decoder takes the second numerical value as input and calculates the reference value using the calculation function of the reference value.
- the reference value includes at least one of the following: an average value of the second numerical value, a median value of the second numerical value, a maximum value of the second numerical value, and a minimum value of the second numerical value.
- the reference value includes at least one of the following: the average value of the multiple second values, the median value of the multiple second values, the maximum value of the multiple second values, and the minimum value of the multiple second values. If there is only one second value, the average value of the second value, the median value of the second value, the maximum value of the second value, and the minimum value of the second value are all the one second value.
- the reference value may also be determined by other methods, and this application does not make any specific limitation on this.
- the reference value may also be a parameter determined based on multiple values, for example, the multiple values include but are not limited to: the average value of the second value, the median value of the second value, the maximum value of the second value, and the minimum value of the second value.
- the reference value may be the average value of the maximum value of the second value and the minimum value of the second value.
- the decoder may also use the non-zero parameter plus B to obtain the second value, which is not specifically limited in this application.
- the decoder may determine the first entropy decoding algorithm based on the reference value in the following manner:
- the order of the first entropy decoding algorithm is determined based on the first reference interval.
- the first entropy decoding algorithm is an exponential Golomb algorithm, that is, the decoder may determine the exponential Golomb algorithm whose order is the value corresponding to the first reference interval as the first entropy decoding algorithm.
- the decoder may determine the first reference interval and the numerical value corresponding to the first reference interval according to a first mapping relationship, wherein the first mapping relationship includes a correspondence between at least one reference interval and at least one numerical value, wherein at least one reference interval in the first mapping relationship includes the first reference interval.
- the first mapping relationship may be implemented as information in the form of a mapping table or an array, and this application does not specifically limit this.
- the first mapping relationship may also be a corresponding relationship between at least one reference interval and at least one entropy decoding algorithm, which is not specifically limited in the present application.
- the decoder may determine the first entropy decoding algorithm based on the reference value in the following manner:
- the order of the first entropy decoding algorithm is determined based on the second reference interval.
- the first entropy decoding algorithm is an exponential Golomb algorithm, that is, the decoder may determine the exponential Golomb algorithm whose order is the value corresponding to the second reference interval as the first entropy decoding algorithm.
- the decoder may determine the second reference interval and the value corresponding to the second reference interval according to a second mapping relationship, wherein the second mapping relationship includes a correspondence between at least one reference interval and at least one value, wherein at least one reference interval in the second mapping relationship includes the second reference interval.
- the second mapping relationship may be implemented as information in the form of a mapping table or an array, and the present application does not specifically limit this.
- the second mapping relationship may also be a corresponding relationship between at least one reference interval and at least one entropy decoding algorithm, which is not specifically limited in the present application.
- the value of the third numerical value may be a predefined value, a value indicated by a bitstream, or a value determined by negotiation between the encoder and the decoder, which is not specifically limited in the present application.
- the third value is a positive integer.
- S110 may include:
- the N first parameters are determined based on a K-order exponential Golomb algorithm, where K is a predefined value.
- the decoder decodes the code stream based on a K-order exponential Golomb algorithm to obtain the N first parameters.
- the value of K may be a predefined value, a value indicated by a bitstream, or a value determined by negotiation between an encoder and a decoder, and this application does not impose any specific limitation on this.
- the S140 may include:
- the second parameter is determined as the first zero-run value.
- the decoder may determine the second parameter as the first zero-run value by default, that is, the decoder may directly decode the first zero-run value using the first entropy decoding algorithm.
- the second parameter may not be the first zero-run value.
- the second parameter may be used to determine the first zero-run value.
- the S140 may include:
- the sum of the second parameter and O is determined as the first zero-run value; O is a positive integer.
- the value of O may be a predefined value, a value indicated by a bitstream, or a value determined by negotiation between the encoder and the decoder, and this application does not impose any specific limitation on this.
- the first zero-run value is a value greater than or equal to 0.
- the S140 may include:
- the second parameter is bit-shifted left by P bits to obtain a third intermediate value;
- P is a positive integer;
- a first zero-run value is determined.
- the second parameter may be a multi-bit binary number or a decimal value. If the second parameter is a decimal number, the decoder may first convert the second parameter into a multi-bit binary number, and then perform a bit shift left by P bits on the converted multi-bit binary number to obtain the third intermediate value. If the second parameter is a multi-bit binary number, the decoder may directly perform a bit shift left by P bits on the second parameter to obtain the third intermediate value.
- the value of P may be a predefined value, a value obtained by decoding the bitstream, or a value determined by negotiation between the decoder and the encoder, which is not specifically limited in the present application.
- the fifth parameter is a P-bit binary number.
- the decoder may default the fifth parameter to be a P-bit binary number, that is, the decoder defaults the fifth parameter to be a binary string of length P.
- the decoder adds the third intermediate value and the fifth parameter to obtain the fourth intermediate value.
- the third intermediate value is added to the P-bit binary number to obtain the fourth intermediate value.
- the fifth parameter is P binary numbers.
- the decoder may default the fifth parameter to be P binary numbers, that is, the decoder defaults the fifth parameter to be P binary numbers with a length of 1.
- the decoder determines the number of shift bits of the i-th binary number in the fifth parameter; then, based on the number of shift bits of the i-th binary number, the i-th binary number is left-shifted to obtain a sixth parameter corresponding to each binary number in the fifth parameter; then, the third intermediate value and the sixth parameter corresponding to each binary number in the fifth parameter are summed to obtain the fourth intermediate value.
- the number of shifts of each binary number is positively correlated with the serial number of each binary number in the decoding order.
- the number of shifts of the i-th binary number in the P binary numbers is positively correlated with the value of i; that is, the smaller the value of i, the smaller the number of shifts of the i-th binary number; or, in other words, the larger the value of i, the larger the number of shifts of the i-th binary number.
- the number of shifts of each binary number and the serial number of each binary number in the decoding order may also be negatively correlated.
- the number of shifts of the i-th binary number in the P binary numbers is negatively correlated with the value of i; that is, the smaller the value of i, the larger the number of shifts of the i-th binary number; or, in other words, the larger the value of i, the smaller the number of shifts of the i-th binary number.
- the decoder determines i-1 as the number of shift bits of the i-th binary number; i is a positive integer.
- the decoder determines i-1 as the number of shift bits of the binary number located at the i-th position in the P binary numbers according to the decoding order of the P binary numbers. In other words, the decoder assigns the number of shift bits of the i-th binary number in the P binary numbers to i-1 according to the decoding order of the P binary numbers. In other words, for the P binary numbers, the binary number that the decoder decodes first has a smaller number of shift bits; conversely, the binary number that the decoder decodes later has a larger number of shift bits.
- the decoder may determine the fourth intermediate value based on the third intermediate value and the fifth parameter in the following manner:
- V 2 represents the second parameter
- V 2 ⁇ P represents the third intermediate value
- W 1 represents the binary number located at the first position according to the decoding order of the P binary numbers and the number of shifts is 0
- W 2 represents the binary number located at the second position according to the decoding order of the P binary numbers and the number of shifts is 1
- W P represents the binary number located at the Pth position according to the decoding order of the P binary numbers and the number of shifts is P-1.
- W 1 can be equivalently replaced by W 1 ⁇ 0.
- the fourth intermediate value i.e., the fourth intermediate value converted to a decimal number of 16.
- the initial value of i may also be 0, in which case the decoder may determine i as the number of shift bits of the i-th binary number among the P binary numbers.
- the decoder determines P-i as the number of shift bits of the i-th binary number; i is a positive integer.
- the decoder determines P-i as the number of shift bits of the binary number located at the i-th position in the P binary numbers according to the decoding order of the P binary numbers. In other words, the decoder assigns the number of shift bits of the i-th binary number in the P binary numbers to P-i according to the decoding order of the P binary numbers. In other words, for the P binary numbers, the binary number that the decoder decodes first has a larger number of shift bits; conversely, the binary number that the decoder decodes later has a smaller number of shift bits.
- the decoder may determine the fourth intermediate value based on the third intermediate value and the fifth parameter in the following manner:
- mid 4 represents the fourth intermediate value
- V 2 represents the second parameter
- V 1 ⁇ P represents the third intermediate value
- W 1 represents the binary number located at the first position according to the decoding order of the P binary numbers and the number of shifts is P-1
- W 2 represents the binary number located at the second position according to the decoding order of the P binary numbers and the number of shifts is P-2
- W P represents the binary number located at the Pth position according to the decoding order of the P binary numbers and the number of shifts is 0.
- W P can be equivalently replaced by W P ⁇ 0.
- the initial value of i may also be 0, in which case the decoder may determine P-i-1 as the number of shift bits of the i-th binary number among the P binary numbers.
- the decoder determines the fourth intermediate value as the first zero-run value.
- the decoder shifts the second parameter bit left by P bits to obtain a third intermediate value; then determines a fourth intermediate value based on the third intermediate value and the fifth parameter; and determines the fourth intermediate value as the first zero-run value. For example, the decoder determines the fourth intermediate value as the first zero-run value by default.
- the decoding end can directly sum the third intermediate value and the decimal value to obtain the fourth intermediate value.
- the decoder adds the fourth intermediate value and O to obtain the first zero-run value; O is a positive integer.
- the decoder shifts the second parameter bit left by P bits to obtain a third intermediate value; then determines a fourth intermediate value based on the third intermediate value and the fifth parameter; and adds the fourth intermediate value to 0 to obtain the first zero-run value.
- the decoder defaults to adding the fourth intermediate value to 0 to obtain the first zero-run value.
- the value of O may be a predefined value, a value indicated by a bitstream, or a value determined by negotiation between the encoder and the decoder, and this application does not impose any specific limitation on this.
- the first zero-run value is a value greater than or equal to 0.
- the decoder obtains a fifth value of the third variable; and then determines the sum of the fifth value and the fourth intermediate value as the first zero-run value.
- the decoder obtains the value of the third variable, and when the value of the third variable is equal to the fifth value, the decoder can obtain the second parameter and the fifth parameter, and shift the second parameter left by P bits to obtain a third intermediate value, and then obtain a fourth intermediate value based on the third intermediate value and the fifth parameter, and then determine the sum of the fourth intermediate value and the fifth value as the first zero-run value.
- the initial value of the third variable is 0 or other values.
- the fifth value is greater than or equal to the initial value of the third variable.
- the fifth value may be a predefined value, or a value obtained by decoding the bitstream, or a value determined by negotiation between the decoder and the encoder, which is not specifically limited in the present application.
- the decoder determines the fifth value in the following manner:
- the value of the third variable is determined as the fifth value
- E and G are both positive integers.
- the decoder obtains the value of the third variable, and if the value of the third variable is greater than or equal to E, the value of the fourth variable is determined; if the value of the fourth variable is greater than or equal to G, the decoder can obtain the second parameter and the fifth parameter, and shift the second parameter left by P bits to obtain a third intermediate value, and then obtain a fourth intermediate value based on the third intermediate value and the fifth parameter, and then determine the sum of the fourth intermediate value and the value of the third variable as the first zero-run value.
- the value of the third variable and the value of the fourth variable can be updated by the result of decoding the bitstream.
- the decoder obtains the initial value of the third variable, and when the value of the third variable is less than E, based on the result of decoding the code stream, the value of the third variable can be increased according to a certain strategy until the value of the third variable is greater than or equal to G.
- the decoder obtains the initial value of the fourth variable, and when the value of the fourth variable is less than G, based on the result of decoding the code stream, the value of the third variable and the value of the fourth variable can be increased according to a certain strategy until the value of the fourth variable is greater than or equal to G, and the value of the third variable is determined as the fifth value.
- the initial value of the third variable and the initial value of the fourth variable can be 0 or other values.
- the value of E and/or F may be a predefined value, or a value obtained by decoding the bitstream, or a value determined by negotiation between the decoder and the encoder, which is not specifically limited in the present application.
- the values of E and F may be 3 and 1, respectively.
- the values of E and F may also be other values, which are not specifically limited in the embodiments of the present application.
- O E ⁇ F+G ⁇ H, wherein G and H are both positive integers.
- the decoder when the decoder obtains the value of the third variable, and the value of the third variable is equal to E ⁇ F+G ⁇ H, the decoder can obtain the second parameter and the fifth parameter, and shift the second parameter left by P bits to obtain a third intermediate value, and then obtain a fourth intermediate value based on the third intermediate value and the fifth parameter, and then determine the sum of the fourth intermediate value and E ⁇ F+G ⁇ H as the first zero-run value.
- the value of G and/or H may be a predefined value, or a value obtained by decoding the bitstream, or a value determined by negotiation between the decoder and the encoder, which is not specifically limited in the present application.
- the values of G and H may be 4 and 2, respectively.
- the values of G and H may also be other values, which are not specifically limited in the embodiments of the present application.
- the method 100 may further include:
- the value of the third variable is determined to be the first zero-run value.
- the decoder uses a fixed context to obtain a sixth binary number; if the sixth binary number is equal to U, the decoder determines the value of the third variable as the first zero-run value by default.
- U is 0 or 1.
- the value of U may be a predefined value, a value obtained by decoding a bitstream, or a value determined by negotiation between a decoder and an encoder, which is not specifically limited in the present application.
- the method 100 may further include:
- the value of the third variable is updated from the sixth value to the sum of the sixth value and F;
- F is a positive integer
- U is not equal to V.
- the decoder uses the fixed context to obtain the sixth binary number; if the sixth binary number is equal to U, The decoder determines the value of the third variable as the first zero-run value by default; if the sixth binary number is equal to V, the value of the third variable is added by F. Further, the decoder performs the next loop based on the value of the third variable until the value of the binary number obtained by using the fixed context is equal to U, and the value of the third variable is determined as the first zero-run value, or until the value of the third variable is greater than or equal to E, and the first zero-run value is determined by other methods.
- V is 0 or 1.
- the value of V may be a predefined value, a value obtained by decoding the bitstream, or a value determined by negotiation between the decoder and the encoder, which is not specifically limited in the present application.
- F may also be any value other than 1.
- the method 100 may further include:
- the seventh binary number is obtained using the fixed context
- the context index value used by the sixth binary number is different from the context index value used by the seventh binary number.
- the decoder uses a fixed context to obtain the sixth binary number; if the sixth binary number is equal to U, the decoder determines the value of the third variable as the first zero-run value; if the sixth binary number is equal to V, the value of the third variable is updated from the sixth value to the sum of the sixth value and F.
- the seventh binary number is obtained using a fixed context; wherein the context index value used by the sixth binary number is different from the context index value used by the seventh binary number; if the seventh binary number is equal to U, the decoder determines the value of the third variable (i.e., the sum of the sixth value and F) as the first zero-run value; if the seventh binary number is equal to V, the value of the third variable is updated from the sum of the sixth value and F to the sum of the sixth value and 2 ⁇ F (i.e., the decoder adds F to the value of the third variable); and so on, until the value of the binary number obtained using a fixed context is equal to U, the value of the third variable is determined as the first zero-run value, or until the value of the third variable is greater than or equal to E, the first zero-run value is determined by other means.
- the third variable i.e., the sum of the sixth value and F
- the decoder can determine the first zero-run value through the following for loop:
- E and/or U may also be other values, which are not specifically limited in the embodiments of the present application.
- the method 100 may further include:
- the eighth binary number is obtained using the fixed context; G is a positive integer;
- the sum of the value of the third variable and the ninth binary number is determined as the first zero-run value.
- the decoder determines the value of the fourth variable; if the value of the fourth variable is less than G, the eighth binary number is obtained using a fixed context; if the eighth binary number is equal to U, the ninth binary number is obtained; and the sum of the value of the third variable and the ninth binary number is determined as the first zero-run value.
- the method 100 may further include:
- the eighth binary number is equal to V
- the value of the third variable is updated from the seventh value to the sum of the seventh value and H
- the value of the fourth variable is updated from the eighth value to the sum of the eighth value and L;
- H and L are both positive integers, and U is not equal to V.
- the decoder determines the value of the fourth variable; if the value of the fourth variable is less than G, the eighth binary number is obtained using the fixed context; if the eighth binary number is equal to U, the ninth binary number is obtained; the sum of the value of the third variable and the ninth binary number is determined as the first zero-run value; if the eighth binary number is equal to V, the value of the third variable is updated from the third value to the sum of the third value and H, and the value of the fourth variable is updated from the fourth value to the sum of the fourth value and L.
- the decoder performs the next loop based on the value of the fourth variable until the binary number obtained by the decoder using the fixed context is equal to U, and the sum of the value of the third variable and the next binary number is determined as the first zero-run value, or until the value of the fourth variable is greater than or equal to G, the decoder obtains the second parameter, and determines the first zero-run value based on the value of the third variable and the second parameter.
- the method 100 may further include:
- the eleventh binary number is obtained using the fixed context
- the context index value used by the eighth binary number is different from the context index value used by the tenth binary number.
- the decoder determines the value of the fourth variable; if the value of the fourth variable is less than G, the eighth binary number is obtained using a fixed context; if the eighth binary number is equal to V, the value of the third variable is updated from the third value to the sum of the third value and H, and the value of the fourth variable is updated from the fourth value to the sum of the fourth value and L; further, if the value of the fourth variable (i.e., the sum of the fourth value and L) is less than G, the first binary number after the eighth binary number (i.e., the tenth binary number) is obtained using a fixed context.
- the decoder obtains the second parameter, and determines the first zero-run value based on the value of the third variable and the second parameter.
- the decoder can determine the first zero run value through the following for loop:
- the decoder ends decoding, and the value of r 3 is the first zero-run value.
- the decoder can determine the first zero run value through the following for loop:
- the decoder ends decoding, and the value of r 3 is the first zero-run value.
- the method 100 may further include:
- the value of the first flag bit indicates whether a first entropy decoding algorithm is determined based on the N first parameters.
- the first flag bit may be a flag bit at the point cloud level. That is, the value of the first flag bit indicates whether the second parameter in the current point cloud is determined using the first entropy decoding algorithm adapted to the N first parameters. For example, if the value of the first flag bit indicates that the second parameter in the bitstream of the current point cloud is determined using the first entropy decoding algorithm adapted to the N first parameters, the decoder determines the second parameter in the bitstream of the current point cloud using the first entropy decoding algorithm adapted to the N first parameters.
- the first flag bit may be a flag bit at the slice level. That is, the value of the first flag bit indicates whether to use the first entropy decoding algorithm adapted to the N first parameters to determine the second parameter in the slice stream of the current point cloud. For example, if the value of the first flag bit indicates that the second parameter in the slice stream of the current point cloud is determined using the first entropy decoding algorithm adapted to the N first parameters, the decoder uses the first entropy decoding algorithm adapted to the N first parameters to determine the second parameter in the slice stream of the current point cloud.
- the first flag bit may be a flag bit at the parameter level. That is, the value of the first flag bit indicates whether the current second parameter in the chip stream of the current point cloud is determined using the first entropy decoding algorithm adapted to the N first parameters. For example, if the value of the first flag bit indicates that the current second parameter in the chip stream of the current point cloud is determined using the first entropy decoding algorithm adapted to the N first parameters, the decoder determines the current second parameter using the first entropy decoding algorithm adapted to the N first parameters.
- the first flag is used to indicate whether it is enabled or not.
- the first flag is placed in the attribute header of the high-level syntax element.
- the first flag can be enabled (i.e., appears in the code stream) under certain specific conditions (e.g., a specific type of point cloud), and the first flag may not appear in the code stream under certain specific conditions (e.g., a specific type of point cloud).
- the value of the first flag may be a fixed value (i.e., a default value). In other words, the decoder needs to decode the first flag. If the first flag does not appear in the code stream, it will not be decoded, i.e., it is defaulted to a fixed value.
- the decoder needs to obtain the second parameter and determine the first zero run value based on the value of r 3 and the second parameter.
- the decoder obtains N first parameters.
- the decoder uses a fixed K-order (eg, 2nd-order) Exponential Golomb decoding to decode the N first parameters.
- the first parameter may be a second zero-run value (e.g., the zero-run values corresponding to the first M points of the current point cloud, or the first N zero-run values); or, the value obtained by adding the constant O to the first parameter is the second zero-run value (e.g., see method 1-1 described below); or, the first parameter is shifted left by P bits and combined with a third parameter (e.g., obtained by decoding the bitstream) and then added with the constant O to obtain a second zero-run value (e.g., see method 1-2 described below).
- a second zero-run value e.g., the zero-run values corresponding to the first M points of the current point cloud, or the first N zero-run values
- the value obtained by adding the constant O to the first parameter is the second zero-run value (e.g., see method 1-1 described below)
- the first parameter is shifted left by P bits and combined with a third parameter (e.g., obtained by decoding the bitstream) and then added with the
- the decoder can calculate the N first parameters, each of the N first parameters minus A reference value of at least one of the N first numerical values obtained by constant A, a non-zero parameter among the N first parameters, and N second numerical values obtained by subtracting B from each first parameter among the N first parameters.
- the reference value may be an average value, a median value, a maximum value, or a minimum value.
- the decoder may calculate the reference value for each component separately, or may calculate the reference value for the three attribute components, which is not specifically limited in this embodiment.
- the decoder selects an order that is compatible with the calculated reference value for a second parameter following the N first parameters, and decodes the second parameter using an exponential Golomb algorithm.
- the second parameter may be the first zero-run value; or, the value obtained by adding the second parameter to the constant O is the first zero-run value (for example, see the following method 2-1); or, the second parameter is bit-shifted left by P bits and combined with the fifth parameter (for example, obtained by decoding the bit stream) and then added to the constant O to obtain the first zero-run value (for example, see the following method 2-2).
- this embodiment does not specifically limit the specific implementation methods of the above-mentioned methods 1-1, 1-2, 2-1, and 2-2.
- the method 1-1 can be implemented as the following process:
- the decoder ends decoding, and the value of r1 is the second zero-run value.
- the method 1-2 can be implemented as the following process:
- the decoder ends decoding, and the value of r1 is the second zero-run value.
- a decoded value (i.e., a first parameter) is obtained by using K-order (e.g., 2nd-order) exponential Columbus decoding.
- K-order e.g., 2nd-order
- the decoder determines a third parameter using a fixed context, no context, or an adaptive context. Then, c is shifted left by P bits to obtain a first intermediate value, and the first intermediate value is combined with the third parameter (obtained by decoding the bitstream) to obtain a second intermediate value. Then, the sum of the second intermediate value and the value of r 1 (i.e., O) is determined as the second zero-run value.
- this embodiment does not specifically limit the combination of the first intermediate value and the second parameter.
- the decoder may combine the first intermediate value with the third intermediate value in any one of the following ways:
- the decoder determines the sum of the first intermediate value and the third parameter as the second intermediate value.
- mid 2 represents the second intermediate value
- V 1 represents the first parameter
- V 1 ⁇ P represents the first intermediate value
- W 1 represents the binary number that is located at the 1st position according to the decoding order of the P binary numbers and has a shift bit number of 1
- W 2 represents the binary number that is located at the 2nd position according to the decoding order of the P binary numbers and has a shift bit number of 1
- W P represents the binary number that is located at the Pth position according to the decoding order of the P binary numbers and has a shift bit number of P-1.
- mid 2 represents the second intermediate value
- V 1 represents the first parameter
- V 1 ⁇ P represents the first intermediate value
- W 1 represents the binary number located at the first position according to the decoding order of the P binary numbers and the number of shifts is P-1
- W 2 represents the binary number located at the second position according to the decoding order of the P binary numbers and the number of shifts is P-2
- W P represents the binary number located at the Pth position according to the decoding order of the P binary numbers and the number of shifts is 0. Base number.
- the method 2-1 can be implemented as the following process:
- the decoder ends decoding, and the value of r 3 is the first zero-run value.
- the method 2-2 can be implemented as the following process:
- the decoder ends decoding, and the value of r 3 is the first zero-run value.
- this embodiment does not specifically limit the combination of the third intermediate value and the fifth parameter.
- the decoder may combine the first intermediate value with the third intermediate value in any one of the following ways:
- the decoder determines the sum of the third intermediate value and the fifth parameter as the fourth intermediate value.
- the decoder determines the fourth intermediate value based on the second parameter and the fifth parameter in the following manner:
- mid 4 represents the fourth intermediate value
- V 2 represents the second parameter
- V 2 ⁇ P represents the third intermediate value
- W 1 represents the binary number that is located at the 1st position according to the decoding order of the P binary numbers and has a shift bit number of 1
- W 2 represents the binary number that is located at the 2nd position according to the decoding order of the P binary numbers and has a shift bit number of 1
- W P represents the binary number that is located at the Pth position according to the decoding order of the P binary numbers and has a shift bit number of P-1.
- the decoder determines the fourth intermediate value based on the second parameter and the fifth parameter in the following manner:
- mid 4 represents the fourth intermediate value
- V 2 represents the second parameter
- V 1 ⁇ P represents the third intermediate value
- W 1 represents the binary number that is at the 1st position according to the decoding order of the P binary numbers and has a shift bit number of P-1
- W 2 represents the binary number that is at the 2nd position according to the decoding order of the P binary numbers and has a shift bit number of P-2
- W P represents the binary number that is at the Pth position according to the decoding order of the P binary numbers and has a shift bit number of 0.
- this embodiment does not specifically limit the implementation method of the decoder determining the Golomb algorithm (such as the order) adapted to the reference value.
- the decoder may select different exponential Golomb orders based on the reference value according to method 3-1 or method 3-1:
- the corresponding exponential Golomb order is selected using the interval in which the reference value (such as the average value or the median value or the maximum value or the minimum value) lies.
- the reference value (such as the average value, median value, maximum value, or minimum value) is added or subtracted from S, and then the corresponding exponential Golomb order is selected based on the interval in which the obtained value lies.
- S can be a value carried in the bitstream, a predefined value, or a value determined by negotiation between the decoder and the encoder.
- the numerical value of is not specifically limited in this embodiment.
- the decoder determines the corresponding zero-run value (i.e., the second zero-run value) based on the following process:
- the decoder ends decoding, and the value of r1 is the second zero-run value.
- the decoder After the decoder obtains the N first parameters (i.e., the zero run values corresponding to the first 10,000 points), it calculates the average value of the non-zero parameters in the N first parameters (i.e., the average value of the non-zero values of the first 10,000 points), and determines the order of the exponential Golomb algorithm based on the average value of the non-zero parameters in the N first parameters (i.e., the average value of the non-zero values of the first 10,000 points). For example, if the decoder uses the above method 3-1 to determine the order of the exponential Golomb algorithm, the order of the exponential Golomb algorithm can be determined specifically in the following manner:
- the decoder may also determine the order of the exponential Golomb algorithm in the following manner:
- the decoder can determine the zero-run value corresponding to the point after the first 10,000 points (i.e., the first zero-run value) according to the following method:
- the decoder ends decoding, and the value of r 3 is the first zero-run value.
- the decoding method according to the embodiment of the present application is described in detail above from the perspective of the decoder.
- the encoding method according to the embodiment of the present application will be described from the perspective of the encoder in conjunction with FIG. 9 .
- FIG9 is a schematic flow chart of a coding method 200 provided in an embodiment of the present application. It should be understood that the coding method 200 can be executed by an encoder. For example, it is applied to the coding framework shown in FIG4 or FIG6. For ease of description, the coding method 200 is exemplarily described below using an encoder as an example.
- the encoding method 200 may include:
- S240 Encode the second parameter based on the first entropy coding algorithm.
- the N first parameters include the first N encoded zero-run values; or the N first parameters include the zero-run values corresponding to the first M encoded points, where M is a positive integer.
- the method 200 may further include:
- the first parameter is encoded.
- the second zero-run value is subtracted from O to obtain a fifth intermediate value; O is a positive integer; and the first parameter is determined based on the fifth intermediate value.
- the fifth intermediate value is determined as the first parameter.
- the fifth intermediate value bit is shifted right by P bits to obtain the first parameter and the third parameter; the first parameter is the value obtained after the fifth intermediate value bit is shifted right by P bits; the third parameter includes the P-bit binary number shifted out when the fifth intermediate value bit is shifted right by P bits; P is a positive integer.
- the fifth intermediate value is bit-shifted right P times to obtain the first parameter and the third parameter; the number of shifts of each bit of the fifth intermediate value is 1, and the first parameter is the value obtained after the fifth intermediate value is bit-shifted right P times; the third parameter includes P binary numbers shifted out when the fifth intermediate value is bit-shifted right P times; P is a positive integer.
- a difference between the second zero-run value and E ⁇ F+G ⁇ H is determined as the fifth intermediate value
- E, F, H, and G are all positive integers.
- the method 200 may further include:
- a binary number whose value is V is encoded using a fixed context, and L is added to the value of the fifth variable;
- the first minimum value is the minimum value of the second zero-run value and E, and L is a positive integer.
- the method 200 may further include:
- the method 200 may further include:
- the value obtained by subtracting E ⁇ F from the second zero-run value is divided by H to obtain a first quotient value
- a binary number whose value is V is encoded using a fixed context, and L is added to the current value of the sixth variable;
- the second minimum value is the minimum value of the first quotient and G.
- the method 200 may further include:
- the first zero-run value is less than E ⁇ F+G ⁇ H, a binary number with a value of U is encoded using a fixed context, and the remainder of the first quotient value is encoded.
- the S220 may include:
- the first entropy coding algorithm is determined.
- the reference value includes at least one of the following: an average value of the N first parameters, a median value of the N first parameters, a maximum value of the N first parameters, and a minimum value of the N first parameters.
- the first value is obtained by subtracting A from the first parameter; A is a positive integer; and the reference value is determined based on the first value.
- the reference value includes at least one of the following: an average value of the first numerical value, a median value of the first numerical value, a maximum value of the first numerical value, and a minimum value of the first numerical value.
- S220 may include:
- the reference value is determined.
- the reference value includes at least one of the following: an average value of the non-zero parameter, a median value of the non-zero parameter, a maximum value of the non-zero parameter, and a minimum value of the non-zero parameter.
- the non-zero parameter is used to subtract B to obtain a second value; B is a positive integer; and the reference value is determined based on the second value.
- the reference value includes at least one of the following: an average value of the second numerical value, a median value of the second numerical value, a maximum value of the second numerical value, and a minimum value of the second numerical value.
- a first reference interval to which the reference value belongs is determined; and an order of the first entropy coding algorithm is determined based on the first reference interval.
- a fourth value is obtained by subtracting a third value from the reference value; a second reference interval to which the fourth value belongs is determined; and an order of the first entropy coding algorithm is determined based on the second reference interval.
- S210 may include:
- the N first parameters are determined based on a K-order exponential Golomb algorithm, where K is a predefined value.
- S230 may include:
- the first zero-run value is determined as the second parameter.
- S230 may include:
- the second parameter is determined.
- the sixth intermediate value is determined as the second parameter.
- the sixth intermediate value bit is shifted right by P bits to obtain the second parameter and the fourth parameter; the second parameter is the value obtained after the sixth intermediate value bit is shifted right by P bits; the fourth parameter includes the P-bit binary number shifted out when the sixth intermediate value bit is shifted right by P bits; P is a positive integer.
- the sixth intermediate value is bit-shifted right P times to obtain the second parameter and the fourth parameter; the sixth intermediate value is bit-shifted right each time The number of bits is 1, the second parameter is the value obtained after the sixth intermediate value bit is shifted right P times; the fourth parameter includes P binary numbers shifted out when the sixth intermediate value bit is shifted right P times; P is a positive integer.
- a difference between the first zero-run value and E ⁇ F+G ⁇ H is determined as the sixth intermediate value
- E, F, H, and G are all positive integers.
- the method 200 may further include:
- a binary number whose value is V is encoded using a fixed context, and L is added to the value of the seventh variable;
- the third minimum value is the minimum value of the first zero-run value and E, and L is a positive integer.
- the method 200 may further include:
- the method 200 may further include:
- the value obtained by subtracting E ⁇ F from the first zero-run value is divided by H to obtain a second quotient value
- the fourth minimum value is the minimum value of the second quotient and G.
- the method 200 may further include:
- S210 may include:
- the number of points whose attribute coefficients are zero and continuous is determined as the first zero-run value.
- the attribute coefficient being zero includes each color component being zero; or the attribute coefficient being zero includes reflectivity being zero.
- the decoding method 100 is the reverse process or reverse operation of the encoding method 200, so the steps in the encoding method 200 can refer to the corresponding steps in the decoding method 100, and for the sake of brevity, they will not be repeated here.
- the encoder obtains N first parameters.
- the encoder uses a fixed K-order (eg, 2nd-order) exponential Golomb encoding to encode the N first parameters.
- the first parameter of the encoder using a fixed K-order (e.g., 2nd order) exponential Columbus encoding may be: the second zero-run value (e.g., the N first parameters may be the zero-run values corresponding to the first M points of the current point cloud, or the first N zero-run values); or, the value obtained by subtracting the constant O from the second zero-run value (e.g., the N first parameters may be the zero-run values corresponding to the first M points of the current point cloud, or the first N zero-run values) (e.g., see method 4-1 below); or, the value obtained by subtracting the constant O from the second zero-run value (e.g., the N first parameters may be the zero-run values corresponding to the first M points of the current point cloud, or the first N zero-run values) and then shifting right by P bits (e.g., see method 4-2 below).
- the second zero-run value e.g., the N first parameters may be the zero-run values corresponding to the first M points
- the encoder can calculate a reference value of at least one of the N first parameters, the N first values obtained by subtracting a constant A from each of the N first parameters, the non-zero parameters among the N first parameters, and the N second values obtained by subtracting B from each of the N first parameters.
- the reference value can be an average value, a median value, a maximum value, or a minimum value.
- the encoder can calculate the reference value for each component separately, and can also calculate the reference value for the three attribute components, which is not specifically limited in this embodiment.
- the encoder selects an order that is compatible with the calculated reference value for a second parameter following the N first parameters, and encodes the second parameter using an exponential Golomb algorithm.
- the second parameter may be the first zero-run value (i.e., the zero-run value to be encoded); or, the value obtained by subtracting the constant O from the first zero-run value (i.e., the zero-run value to be encoded) is the second parameter (for example, see method 5-1 described below); or, the value obtained by subtracting the constant O from the first zero-run value (i.e., the zero-run value to be encoded) and then shifting it right by P bits is the first zero-run value (for example, see method 5-2 described below).
- this embodiment does not specifically limit the specific implementation methods of the above-mentioned methods 4-1, 4-2, 5-1, and 5-2.
- the method 4-1 can be implemented as the following process:
- the encoding ends with the coded binary number U of the fixed context.
- K-order for example, 2nd order
- Exponential Golomb encoding Z 2 -(E ⁇ F+G ⁇ H) that is, the first parameter is Z 2 -(E ⁇ F+G ⁇ H).
- Z 2 -E ⁇ F is less than G ⁇ H
- the binary number U is encoded using a fixed context and the remainder of (Z 2 -E ⁇ F)/H is encoded.
- Z 2 -E ⁇ F is less than G ⁇ H
- the encoder uses a K-order (e.g., 2nd-order) exponential Golomb code to encode Z 2 -(E ⁇ F+G ⁇ H).
- the method 4-2 can be implemented as the following process:
- the encoding ends with the coded binary number U of the fixed context.
- the first parameter and the third parameter are determined based on Z 2 -(E ⁇ F+G ⁇ H), the first parameter is encoded using K-order (eg, 2nd-order) exponential Golomb coding, and the third parameter is encoded using a fixed context, no context, or an adaptive context.
- K-order eg, 2nd-order
- Golomb coding e.g, Golomb coding
- the fixed context is used to encode the binary number U and encode the remainder of (Z 2 -E ⁇ F)/H. If Z 2 -E ⁇ F is less than G ⁇ H, it does not hold, then the fixed context is used to encode the binary number U.
- -(E ⁇ F+G ⁇ H) determines the first parameter and the third parameter, encodes the first parameter using K-order (eg, 2nd-order) exponential Golomb encoding, and encodes the third parameter using a fixed context, no context, or an adaptive context.
- this embodiment does not specifically limit the implementation method of determining the first parameter and the third parameter based on Z 2 -(E ⁇ F+G ⁇ H).
- the encoder may determine the first parameter and the third parameter based on Z 2 -(E ⁇ F+G ⁇ H) in any one of the following ways:
- the Z 2 -(E ⁇ F+G ⁇ H) bit is shifted right by P bits to obtain the first parameter and the third parameter;
- the first parameter is a value obtained after the Z 2 -(E ⁇ F+G ⁇ H) bit is shifted right by P bits;
- the third parameter includes a P-bit binary number shifted out when the Z 2 -(E ⁇ F+G ⁇ H) bit is shifted right by P bits; P is a positive integer.
- the Z 2 -(E ⁇ F+G ⁇ H) bits are shifted right P times to obtain the first parameter and the third parameter; the number of shift bits of each Z 2 -(E ⁇ F+G ⁇ H) bit right shift is 1, and the first parameter is a value obtained after the Z 2 -(E ⁇ F+G ⁇ H) bits are shifted right P times; the third parameter includes P binary numbers shifted out when the Z 2 -(E ⁇ F+G ⁇ H) bits are shifted right P times; P is a positive integer.
- this embodiment does not specifically limit the encoding order of the first parameter and the third parameter.
- the method 5-1 can be implemented as the following process:
- the encoding ends with the coded binary number U of the fixed context.
- Z 1 -E ⁇ F If Z 1 -E ⁇ F is less than G ⁇ H, encode the binary number U using the fixed context and encode the remainder of (Z 1 -E ⁇ F)/H. If Z 1 -E ⁇ F is less than G ⁇ H, the encoder encodes Z 1 -(E ⁇ F+G ⁇ H) using K-order (e.g., 2nd-order) exponential Golomb code.
- K-order e.g., 2nd-order
- the method 4-2 can be implemented as the following process:
- the encoding ends with the coded binary number U of the fixed context.
- the second parameter and the fifth parameter are determined based on Z 1 -(E ⁇ F+G ⁇ H), the second parameter is encoded using K-order (eg, 2nd-order) exponential Golomb coding, and the fifth parameter is encoded using a fixed context, no context, or an adaptive context.
- K-order eg, 2nd-order
- Golomb coding e.g, Golomb coding
- the fixed context is used to encode the binary number U and encode the remainder of (Z 1 -E ⁇ F)/H. If Z 1 -E ⁇ F is less than G ⁇ H, it does not hold, then the fixed context is used to encode the binary number U.
- -(E ⁇ F+G ⁇ H) determines the second parameter and the fifth parameter, encodes the second parameter using K-order (eg, 2-order) exponential Golomb encoding, and encodes the fifth parameter using a fixed context, no context, or an adaptive context.
- this embodiment does not specifically limit the implementation method of determining the second parameter and the fifth parameter based on Z 1 -(E ⁇ F+G ⁇ H).
- the encoder may determine the second parameter and the fifth parameter based on Z 1 -(E ⁇ F+G ⁇ H) in any one of the following ways:
- the Z 1 -(E ⁇ F+G ⁇ H) bit is shifted right by P bits to obtain the second parameter and the fifth parameter;
- the second parameter is a value obtained after the Z 1 -(E ⁇ F+G ⁇ H) bit is shifted right by P bits;
- the fifth parameter includes a P-bit binary number shifted out when the Z 1 -(E ⁇ F+G ⁇ H) bit is shifted right by P bits; P is a positive integer.
- the second parameter and the fifth parameter are obtained by right shifting Z 1 -(E ⁇ F+G ⁇ H) bits P times; the number of shift bits of each right shift of Z 1 -(E ⁇ F+G ⁇ H) bits is 1, and the second parameter is a value obtained after the right shift of Z 1 -(E ⁇ F+G ⁇ H) bits P times; the fifth parameter includes P binary numbers shifted out when the Z 1 -(E ⁇ F+G ⁇ H) bits are right shifted P times; P is a positive integer.
- this embodiment does not specifically limit the encoding order of the second parameter and the fifth parameter.
- this embodiment does not specifically limit the implementation method of the encoder determining the Golomb algorithm (such as the order) adapted to the reference value.
- the encoder may select different exponential Golomb orders based on the reference value according to method 6-1 or method 6-1:
- the corresponding exponential Golomb order is selected using the interval in which the reference value (such as the average value or the median value or the maximum value or the minimum value) lies.
- the reference value (such as the average value, median value, maximum value, or minimum value) is added or subtracted from S, and then the corresponding exponential Golomb order is selected based on the interval in which the obtained value is located.
- S can be a value carried in the bitstream, a predefined value, or a value determined by negotiation between the encoder and the encoder, which is not specifically limited in this embodiment.
- the encoder determines the corresponding zero run value (i.e., the second zero run value) based on the following process:
- Z 2 -3 is less than 8
- the binary number U is encoded using a fixed context and the remainder of (Z 2 -3)/2 is encoded. If Z 2 -3 is not less than 8, the encoder uses a K-order (e.g., 2nd-order) exponential Golomb code to encode Z 2 -(3+8).
- K-order e.g., 2nd-order
- the encoder After the encoder encodes the N first parameters (i.e., the zero run values corresponding to the first 10,000 points), it calculates the average value of the non-zero parameters in the N first parameters (i.e., the average value of the non-zero values of the first 10,000 points), and determines the order of the exponential Golomb algorithm based on the average value of the non-zero parameters in the N first parameters (i.e., the average value of the non-zero values of the first 10,000 points). For example, if the encoder uses the above method 3-1 to determine the order of the exponential Golomb algorithm, the order of the exponential Golomb algorithm can be determined specifically in the following manner:
- the encoder may also determine the order of the exponential Golomb algorithm in the following manner:
- the encoder may encode the zero-run value corresponding to the point after the first 10,000 points (ie, the first zero-run value, assuming it is recorded as Z 1 ) in the following method:
- Z 1 -3 is less than 8
- the binary number U is encoded using a fixed context and the remainder of (Z 1 -3)/2 is encoded. If Z 1 -3 is not less than 8, the encoder uses a K-order (e.g., 2nd-order) exponential Golomb code Z 1 -(3+8).
- the size of the sequence number of the above-mentioned processes does not mean 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 the present application.
- FIG. 10 is a schematic block diagram of a decoder 300 according to an embodiment of the present application.
- the decoder 300 may include:
- the acquisition unit 310 is used to acquire N first parameters, where N is a positive integer;
- a first determining unit 320 configured to determine a first entropy decoding algorithm based on the N first parameters
- a decoding unit 330 configured to determine a second parameter based on the first entropy decoding algorithm
- the second determining unit 340 is configured to determine the first zero-run value based on the second parameter.
- the N first parameters include the first N decoded zero-run values; or the N first parameters include the zero-run values corresponding to the first M decoded points, where M is a positive integer.
- the first determining unit 320 before determining the first entropy decoding algorithm, is further configured to:
- a second zero-run value is determined.
- the first determining unit 320 is specifically configured to:
- the sum of the first parameter and O is determined as the second zero-run value; O is a positive integer.
- the first determining unit 320 is specifically configured to:
- the first parameter bit is shifted left by P bits to obtain a first intermediate value; P is a positive integer;
- the second zero-run value is determined.
- the third parameter is a P-bit binary number.
- the first determining unit 320 is specifically configured to:
- the first intermediate value and the third parameter are added to obtain the second intermediate value.
- the third parameter is P binary numbers.
- the first determining unit 320 is specifically configured to:
- the first intermediate value and a fourth parameter corresponding to each binary number in the third parameter are summed to obtain the second intermediate value.
- the first determining unit 320 is specifically configured to:
- i-1 be the number of shifts of the i-th binary number; i is a positive integer.
- the first determining unit 320 is specifically configured to:
- P-i be the number of shifts of the i-th binary number; i is a positive integer.
- the first determining unit 320 is specifically configured to:
- the second intermediate value is determined as the second zero-run value.
- the first determining unit 320 is specifically configured to:
- the second intermediate value is added to O to obtain the second zero-run value;
- O is a positive integer.
- the first determining unit 320 is specifically configured to:
- the sum of the first value and the second intermediate value is determined as the second zero-run value.
- the first determining unit 320 is specifically configured to:
- the value of the first variable is determined to be the first value
- E and G are both positive integers.
- O E ⁇ F+G ⁇ H, wherein G and H are both positive integers.
- the first determining unit 320 is further configured to:
- the value of the first variable is determined as the second zero-run value.
- the first determining unit 320 is further configured to:
- the value of the first variable is updated from the second value to the sum of the second value and F;
- F is a positive integer
- U is not equal to V.
- the first determining unit 320 is further configured to:
- the context index value used by the first binary number is different from the context index value used by the second binary number.
- the first determining unit 320 is further configured to:
- G is a positive integer
- the sum of the value of the first variable and the fourth binary number is determined as the second zero-run value.
- the first determining unit 320 is further configured to:
- the value of the first variable is updated from the third value to the sum of the third value and H, and the value of the second variable is updated from the fourth value to the sum of the fourth value and L;
- H and L are both positive integers, and U is not equal to V.
- the first determining unit 320 is further configured to:
- the context index value used by the third binary number is different from the context index value used by the fifth binary number.
- the first determining unit 320 is specifically configured to:
- the first entropy decoding algorithm is determined.
- the reference value includes at least one of the following: an average value of the N first parameters, a median value of the N first parameters, a maximum value of the N first parameters, and a minimum value of the N first parameters.
- the first determining unit 320 is specifically configured to:
- the reference value is determined.
- the reference value includes at least one of the following: an average value of the first numerical value, a median value of the first numerical value, a maximum value of the first numerical value, and a minimum value of the first numerical value.
- the first determining unit 320 is specifically configured to:
- the reference value is determined.
- the reference value includes at least one of the following: an average value of the non-zero parameter, a median value of the non-zero parameter, a maximum value of the non-zero parameter, and a minimum value of the non-zero parameter.
- the first determining unit 320 is specifically configured to:
- the reference value is determined.
- the reference value includes at least one of the following: an average value of the second numerical value, a median value of the second numerical value, a maximum value of the second numerical value, and a minimum value of the second numerical value.
- the first determining unit 320 is specifically configured to:
- An order of the first entropy decoding algorithm is determined based on the first reference interval.
- the first determining unit 320 is specifically configured to:
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Des modes de réalisation de la présente demande proposent un procédé de décodage, un procédé de codage, un décodeur et un codeur. Le procédé de décodage consiste à : acquérir N premiers paramètres, N étant un nombre entier positif ; déterminer un premier algorithme de décodage entropique sur la base des N premiers paramètres ; déterminer un second paramètre sur la base du premier algorithme de décodage entropique ; et déterminer une première valeur d'exécution nulle sur la base du second paramètre. Dans le procédé de décodage, le décodeur détermine le second paramètre à l'aide du premier algorithme de décodage entropique adapté aux N premiers paramètres, puis détermine la première valeur d'exécution nulle sur la base du second paramètre, de telle sorte que des mots de code codés peuvent être réduits, ce qui permet d'améliorer les performances de codage et de décodage.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/CN2023/076257 WO2024168611A1 (fr) | 2023-02-15 | 2023-02-15 | Procédé de décodage, procédé de codage, décodeur et codeur |
| CN202380090912.XA CN120500858A (zh) | 2023-02-15 | 2023-02-15 | 解码方法、编码方法、解码器以及编码器 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/CN2023/076257 WO2024168611A1 (fr) | 2023-02-15 | 2023-02-15 | Procédé de décodage, procédé de codage, décodeur et codeur |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2024168611A1 true WO2024168611A1 (fr) | 2024-08-22 |
Family
ID=92421530
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2023/076257 Ceased WO2024168611A1 (fr) | 2023-02-15 | 2023-02-15 | Procédé de décodage, procédé de codage, décodeur et codeur |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN120500858A (fr) |
| WO (1) | WO2024168611A1 (fr) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112565734A (zh) * | 2020-12-03 | 2021-03-26 | 西安电子科技大学 | 基于混合编码的点云属性编解码方法及装置 |
| CN112995662A (zh) * | 2021-03-12 | 2021-06-18 | 北京大学深圳研究生院 | 一种点云的属性熵编码和熵解码的方法及设备 |
| US20210319593A1 (en) * | 2020-04-14 | 2021-10-14 | Apple Inc. | Significant coefficient flag encoding for point cloud attribute compression |
| CN115379190A (zh) * | 2022-08-19 | 2022-11-22 | 腾讯科技(深圳)有限公司 | 一种点云处理方法、装置及计算机设备、存储介质 |
| CN115699771A (zh) * | 2020-06-09 | 2023-02-03 | 高通股份有限公司 | G-pcc中的属性残差编码 |
-
2023
- 2023-02-15 WO PCT/CN2023/076257 patent/WO2024168611A1/fr not_active Ceased
- 2023-02-15 CN CN202380090912.XA patent/CN120500858A/zh active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210319593A1 (en) * | 2020-04-14 | 2021-10-14 | Apple Inc. | Significant coefficient flag encoding for point cloud attribute compression |
| CN115699771A (zh) * | 2020-06-09 | 2023-02-03 | 高通股份有限公司 | G-pcc中的属性残差编码 |
| CN112565734A (zh) * | 2020-12-03 | 2021-03-26 | 西安电子科技大学 | 基于混合编码的点云属性编解码方法及装置 |
| CN112995662A (zh) * | 2021-03-12 | 2021-06-18 | 北京大学深圳研究生院 | 一种点云的属性熵编码和熵解码的方法及设备 |
| CN115379190A (zh) * | 2022-08-19 | 2022-11-22 | 腾讯科技(深圳)有限公司 | 一种点云处理方法、装置及计算机设备、存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN120500858A (zh) | 2025-08-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN116708769A (zh) | 点云编解码方法与系统、及点云编码器与点云解码器 | |
| US20250024040A1 (en) | Method for index determination and decoder | |
| WO2024168613A1 (fr) | Procédé de décodage, procédé de codage, décodeur, et codeur | |
| CN118075464A (zh) | 点云属性的预测方法、装置及编解码器 | |
| WO2024174086A1 (fr) | Procédé de décodage, procédé de codage, décodeurs et codeurs | |
| WO2024168611A1 (fr) | Procédé de décodage, procédé de codage, décodeur et codeur | |
| WO2024145953A1 (fr) | Procédé de décodage, procédé de codage, décodeur, et codeur | |
| WO2024168607A1 (fr) | Procédé de décodage, procédé de codage, décodeur et codeur | |
| WO2023159428A1 (fr) | Procédé de codage, codeur et support de stockage | |
| US20250024041A1 (en) | Method for index determination, decoder, encoder, and bitstream | |
| CN117751574A (zh) | 解码方法、编码方法、解码器以及编码器 | |
| CN115733990A (zh) | 点云编解码方法、设备及存储介质 | |
| WO2023240660A1 (fr) | Procédé de décodage, procédé de codage, décodeur et codeur | |
| WO2025010590A1 (fr) | Procédé de décodage, procédé de codage, décodeur et codeur | |
| WO2024103304A1 (fr) | Procédé d'encodage de nuage de points, procédé de décodage de nuage de points, encodeur, décodeur, flux de code, et support de stockage | |
| WO2024187380A1 (fr) | Procédé de codage, procédé de décodage, flux de code, codeur, décodeur et support de stockage | |
| WO2024077548A1 (fr) | Procédé de décodage de nuage de points, procédé de codage de nuage de points, décodeur et codeur | |
| WO2024207235A1 (fr) | Procédé de codage/décodage, train de bits, codeur, décodeur et support de stockage | |
| WO2023240662A1 (fr) | Procédé de codage, procédé de décodage, codeur, décodeur, et support de stockage | |
| WO2024216649A1 (fr) | Procédé de codage et de décodage de nuage de points, codeur, décodeur, flux de code et support de stockage | |
| WO2024212228A1 (fr) | Procédé de codage, codeur, dispositif électronique et support de stockage | |
| WO2024082152A1 (fr) | Procédés et appareils de codage et de décodage, codeur et décodeur, flux de code, dispositif et support de stockage | |
| HK40083057A (en) | Point cloud encoding and decoding method, device and storage medium | |
| WO2024065406A1 (fr) | Procédés de codage et de décodage, train de bits, codeur, décodeur et support de stockage | |
| WO2025039113A1 (fr) | Procédé de codage, procédé de décodage, flux de code, codeur, décodeur, et support de stockage |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 23921774 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 202380090912.X Country of ref document: CN |
|
| WWP | Wipo information: published in national office |
Ref document number: 202380090912.X Country of ref document: CN |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |